E-graf

Z testwiki
Skočit na navigaci Skočit na vyhledávání

V informatice je e-graf datová struktura, která ukládá relaci ekvivalence nad termy nějakého jazyka.

Definice a operace

Nechť jsou f,g, symboly funkcí v nějakém jazyce, a nechť jsou t1, 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 n identifikátory e-tříd. E-třída je množina e-uzlů. E-graf obsahuje datovou strukturu disjunktních množin U nad identifikátory e-tříd se standardními operacemi add, find, a merge.

Identifikátor e-tříd e je kanonický, pokud find(U,e)=e. E-uzel f(i1,,in) (kde i1,,in𝕚𝕕) je kanonický, pokud je každý ij kanonický (kde j je v 1,,n ).

E-graf je kombinací: [1]

  • struktury disjunktních množin U
  • hashcons H (tj. zobrazení) z kanonických e-uzlů na identifikátory e-tříd
  • zobrazení e-tříd M které zobrazuje identifikátory e-tříd na e-třídy tak, že M přiřadí ekvivalentním identifikátorům stejnou množinu e-uzlů: i,j𝕚𝕕,M[i]=M[j]find(U,i)=find(U,j)

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 f(i1,,in),f(j1,,jn) jsou kongruentní, když find(U,ik)=find(U,jk),k{1,,n}. Invarianta hashcons postuluje, že hashcons mapuje kanonické e-uzly na identifikátor jejich e-třídy.

Operace

E-grafy poskytují abstrakci kolem operací add, find, a merge 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:Překlad

Externí odkazy