Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak funguje motor uzavírání kongruence Z3


Jak funguje motor uzavírání kongruence Z3


Klíčovou součástí řešiče je z3 zodpovědná za udržování tříd pojmů založených na rovnicích z3. Zajišťuje, že pokud jsou shledány dva termíny, které jsou stejné, jsou v průběhu procesu řešení považovány za ekvivalentní. Takto to funguje:

1. Inicializace a struktura dat: Motor používá datovou strukturu zvanou e-uzly k reprezentaci termínů ve vzorci. Každý e-uzel obsahuje pole, která pomáhají při implementaci operací s názvem Unie, které jsou zásadní pro správu tříd ekvivalence. Motor používá hashovací tabulku, známou jako eTable, k mapování funkcí aplikací na jejich kořeny uzavření kongruence [1] [3].

2. Operace a zjišťování odborů: Motor uzavření kongruence provádí efektivně operace s názvem Union-Find pomocí komprese cesty a spojení podle hodnosti. Tím je zajištěno, že přístup ke kořenu třídy ekvivalence je rychlý a že sloučení menších tříd do větších je efektivní [1].

3. detekce ekvivalence: Když řešitel narazí na rovnosti mezi termíny, zavírací motor Kongruence zkontroluje, zda tyto podmínky patří do stejné třídy ekvivalence. Pokud ne, spojuje jejich třídy a zajišťuje, že se všemi termíny ve sloučené třídě jsou považovány za rovnocenné [3] [4].

4. Integrace s booleovským uvažováním: Engine Congruence je pevně integrován s jádrem Boolean Consuptiability of Z3. Pomáhá při šíření rovností a detekováním neuspokojivosti zajištěním toho, že se stejné pojmy budou trvale léčit napříč vzorem [5].

5. Usnesení konfliktů: V souvislosti s CDCL (T) (učení klauzule s teoriemi) hraje motor Kongruence roli v řešení konfliktů tím neuspokojivosti [1].

Celkově je motor uzavření kongruence Z3 nezbytný pro efektivní manipulaci s rovností a zajištění toho, aby řešitel důsledně zacházel s ekvivalentními pojmy, což je rozhodující pro řešení složitých vzorců zahrnujících více teorií.

Citace:
[1] https://z3prover.github.io/papers/Z3Internals.html
[2] https://www.researchgate.net/publication/266654073_Z3-STR_A_Z3 založeno na_string_solver_for_web_application_analysis
[3] https://www.cs.purdue.edu/homes/xyzhang/comp/fse13.pdf
[4] https://www.csl.sri.com/~tiwari/Papers/Thesis.pdf
[5] https://ceur-ws.org/vol-418/paper10.pdf
[6] https://theory.stanford.edu/~nikolaj/programmingz3.html
[7] https://arxiv.org/pdf/2209.03398.pdf
[8] http://algos.inesc.pt/projects/nanotime/ref12.pdf