Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā darbojas Z3 kongruences slēgšanas motors


Kā darbojas Z3 kongruences slēgšanas motors


Z3 kongruences slēgšanas dzinējs ir galvenā risinātāja sastāvdaļa, kas ir atbildīga par līdztiesības līmeņa līdzvērtības klases uzturēšanu. Tas nodrošina, ka, ja divi termini tiek atzīti par vienādiem, tie tiek uzskatīti par līdzvērtīgiem visā risināšanas procesā. Lūk, kā tas darbojas:

1. Inicializācija un datu struktūra: motors izmanto datu struktūru, ko sauc par e-mezgli, lai attēlotu terminus formulā. Katrā e-mezglā ir lauki, kas palīdz ieviest arodbiedrības un atrašanas operācijas, kas ir izšķirošas, lai pārvaldītu ekvivalences nodarbības. Dzinējs izmanto hash tabulu, kas pazīstama kā eTable, lai kartētu funkciju lietojumprogrammas to kongruences slēgšanas saknēs [1] [3].

2. Union-Find operācijas: Saderības slēgšanas dzinējs efektīvi veic arodbiedrības un atrašanas operācijas, izmantojot ceļa saspiešanu un savienību pēc ranga. Tas nodrošina, ka piekļuve ekvivalences klases saknei ir ātra un mazāku klašu apvienošana lielākās ir efektīvas [1].

3. Ekvivalences noteikšana: Kad risinātājs sastopas ar vienādībām starp terminiem, kongruences slēgšanas dzinējs pārbauda, ​​vai šie termini pieder vienai un tai pašai ekvivalences klasei. Ja nē, tas apvieno viņu klases, nodrošinot, ka visi apvienotās klases termini tiek uzskatīti par vienādiem [3] [4].

4. Integrācija ar Būla argumentāciju: Saderības slēgšanas dzinējs ir cieši integrēts ar Būla Apmierinātības kodolu Z3. Tas palīdz pavairot vienlīdzību un atklāt neapmierinātību, nodrošinot, ka vienādi termini tiek konsekventi ārstēti visā formulā [5].

5. Konfliktu risināšana: CDCL (T) kontekstā (uz konfliktu balstīta klauzulas mācīšanās ar teorijām) kongruences slēgšanas motoram ir nozīme konfliktu risināšanā, nodrošinot, ka vienlīdzība tiek konsekventi piemērota apmierinoša uzdevuma meklēšanas laikā vai pierādījums par neapmierināmību [1].

Kopumā Z3 kongruences slēgšanas motors ir būtisks, lai efektīvi apstrādātu vienlīdzību un nodrošinātu, ka risinātājs konsekventi ārstē līdzvērtīgus terminus, kas ir kritiski svarīgi, lai risinātu sarežģītas formulas, kas saistītas ar vairākām teorijām.

Atsauces:
[1] https://z3prover.github.io/papers/z3internals.html
[2] https://www.researchgate.net/publication/266654073_z3-str_a_z3 base_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