E-graf
V informatice je e-graf datová struktura, která ukládá relaci ekvivalence nad termy nějakého jazyka.
Definice a operace
Nechť jsou symboly funkcí v nějakém jazyce, a nechť jsou termy v tomtéž jazyce. Nechť je spočetná množina neprůhledných identifikátorů, u nichž lze ověřovat rovnost. Tuto množinu nazýváme identifikátory e-tříd. Potom e-uzel je symbol n-ární funkce společně s identifikátory e-tříd. E-třída je množina e-uzlů. E-graf obsahuje datovou strukturu disjunktních množin nad identifikátory e-tříd se standardními operacemi , , a .
Identifikátor e-tříd je kanonický, pokud . E-uzel (kde ) je kanonický, pokud je každý kanonický (kde je v ).
E-graf je kombinací: [1]
- struktury disjunktních množin
- hashcons (tj. zobrazení) z kanonických e-uzlů na identifikátory e-tříd
- zobrazení e-tříd které zobrazuje identifikátory e-tříd na e-třídy tak, že přiřadí ekvivalentním identifikátorům stejnou množinu e-uzlů:
Invarianty
Kromě výše uvedené struktury vyhovuje platný e-graf několika datovým invariantám. [1] Dva e-uzly jsou ekvivalentní, pokud jsou ve stejné e-třídě. Invarianta kongruence uvádí, že e-graf musí zajistit, aby byla ekvivalence uzavřena v rámci kongruence, kde dva e-uzly jsou kongruentní, když . Invarianta hashcons postuluje, že hashcons mapuje kanonické e-uzly na identifikátor jejich e-třídy.
Operace
E-grafy poskytují abstrakci kolem operací , , a ze struktury disjunktních množin, které zachovávají e-grafové invarianty. Další operací je e-párování. Ten mapuje „vzory“ (termy s proměnnými) na n-tice substitucí (od vzorů k identifikátorům e-tříd) a na identifikátory e-tříd tak, že vrácené e-třídy obsahují uzly, které odpovídají vstupnímu vzoru po aplikování substituce.
Saturace rovností
Saturace rovností je technika vytváření optimalizujících překladačů pomocí e-grafů. [2] Funguje tak, že aplikuje sadu přepisovacích pravidel pomocí e-párování, dokud není e-graf nasycený, nevyprší časový limit, není dosaženo limitu velikosti e-grafu, není překročen určitý počet iterací nebo není dosaženo jiné zastavovací podmínky. Po přepisování se z e-grafu extrahuje optimální term podle nějaké nákladové funkce, obvykle související s velikostí AST nebo výkonem.
Použití
E-grafy se používají v automatických důkazových systémech. Tvoří klíčovou součást moderních SMT solverů, jako jsou Z3 [3] a CVC4.
Saturace rovností se používá ve specializovaných optimalizujících kompilátorech, [4] např. pro hluboké učení [5] a lineární algebru. [6] Saturace rovností byla také použita při validaci překladu aplikovanou na sadu nástrojů LLVM. [7]
Reference
- Šablona:Citace elektronického periodika
- Šablona:Citace elektronického periodika
- Šablona:Citace elektronického periodika