E-graf
Inom datavetenskap är en e-graf en datastruktur som lagrar en ekvivalensrelation över termer av något språk.
Definition och verksamhet
Låt vara en uppsättning funktionssymboler, låt vara delmängden av som består av symboler för arity . Låt vara en räknebar uppsättning ogenomskinliga identifierare som kan jämföras för likhet, kallade e-klass-ID:n . Då är en e-nod en -är funktionssymbol tillsammans med e-klass-ID. En e-nod med -är funktionssymbol och e-klass-ID: betecknas . En e-klass är en uppsättning e-noder. En e-graf innehåller en union-find- struktur över e-klass-ID:n med standardoperationer , , och .
Ett e-klass-ID är kanoniskt om . En e-nod (med ) är kanonisk om varje är kanonisk ( i ).
En e-graf är kombinationen av:
- union-find-strukturen ,
- en hashcons (dvs en mappning) från kanoniska e-noder till e-klass-ID, och
- en e-klasskarta som mappar e-klass-ID:n till e-klasser, så att mappar motsvarande ID:n till samma uppsättning e-noder:
Invarianter
Förutom ovanstående struktur överensstämmer en giltig e-graf med flera datastrukturinvarianter . Två e-noder är likvärdiga om de är i samma e-klass. Kongruensinvarianten graf måste säkerställa att ekvivalensen stängs under kongruens , där två e-noder , kongruenta när . Hashcons -invarianten anger att hashcons mappar kanoniska e-noder till deras e-klass-ID.
Operationer
E-grafer exponerar omslag runt a , , och displaystyle från det fackliga fyndet som bevarar e-grafens invarianter. Den sista operationen, e-matchning, beskrivs nedan.
E-matchning
Låt vara en uppsättning variabler och låt vara den minsta uppsättningen som inkluderar 0-aritetsfunktionssymbolerna (även kallade konstanter ), inkluderar variablerna och stängs under tillämpning av funktionssymbolerna. Med andra ord, är den minsta mängden så att , och när och , sedan . En term som innehåller variabler kallas ett mönster , en term utan variabler kallas mark .
En e-graf representerar en grundterm om en av dess e- klasser representerar . En e-klass representerar om någon e-nod gör det. En e-nod representerar en term om och varje e-klass representerar termen ( i ).
e-matchning är en operation som tar ett mönster och en e-graf , och ger alla par där är en substitutionsmappning av variablerna i till e-klass-ID och är ett e-klass-ID så att varje term representeras av . Det finns flera kända algoritmer för e-matchning.
Jämställdhetsmättnad
Jämlikhetsmättnad är en teknik för att bygga optimera kompilatorer med hjälp av e-grafer. Den fungerar genom att tillämpa en uppsättning omskrivningar med e-matchning tills e-grafen är mättad, en timeout nås, en e-grafstorleksgräns har nåtts, ett fast antal iterationer överskrids eller något annat stopptillstånd uppnås. Efter omskrivning extraheras en optimal term från e-grafen enligt någon kostnadsfunktion, vanligtvis relaterad till AST- storlek eller prestandaöverväganden.
Ansökningar
E-grafer används vid automatiserad satsbevisning . De är en avgörande del av moderna SMT-lösare som Z3 och CVC4 . De används också i Simplify theorem prover av ESC/Java .
Jämlikhetsmättnad används i specialiserade optimeringskompilatorer , t.ex. för djupinlärning och linjär algebra . Jämlikhetsmättnad har också använts för översättningsvalidering tillämpad på LLVM -verktygskedjan.
E-grafer har tillämpats på flera problem i programanalys , inklusive fuzzing, abstrakt tolkning och biblioteksinlärning.
- de Moura, Leonardo; Bjørner, Nikolaj (2007). Pfenning, Frank (red.). "Effektiv e-matchning för SMT-lösare" . Automatiskt avdrag – CADE-21 . Föreläsningsanteckningar i datavetenskap. Berlin, Heidelberg: Springer. 4603 : 183–198. doi : 10.1007/978-3-540-73595-3_13 . ISBN 978-3-540-73595-3 .
- Willsey, Max; Nandi, Chandrakana; Wang, Yisu Remy; Flatt, Oliver; Tatlock, Zachary; Panchekha, Pavel (2021-01-04). "ägg: Snabb och utvidgbar jämställdhetsmättnad" . Proceedings of ACM on Programming Languages . 5 (POPL): 23:1–23:29. arXiv : 2004.03082 . doi : 10.1145/3434304 . S2CID 226282597 .
- Tate, Ross; Stepp, Michael; Tatlock, Zachary; Lerner, Sorin (2009-01-21). "Jämställdhetsmättnad: ett nytt tillvägagångssätt för optimering" . Handlingar från det 36:e årliga ACM SIGPLAN-SIGACT-symposiet om principer för programmeringsspråk . POPL '09. Savannah, GA, USA: Association for Computing Machinery: 264–276. doi : 10.1145/1480881.1480915 . ISBN 978-1-60558-379-2 . S2CID 2138086 .