Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Z3'ün Congruce Canline Motoru nasıl çalışır?


Z3'ün Congruce Canline Motoru nasıl çalışır?


Z3'ün Concruence Kapatma Motoru, eşitliklere dayalı eşdeğer terim sınıflarını korumaktan sorumlu çözücünün temel bir bileşenidir. İki terimin eşit olduğu tespit edilirse, çözme işlemi boyunca eşdeğer olarak muamele görmelerini sağlar. İşte böyle çalışıyor:

1. Başlatma ve Veri Yapısı: Motor, formüldeki terimleri temsil etmek için e-düğüm adı verilen bir veri yapısı kullanır. Her e-düğüm, eşdeğerlik sınıflarını yönetmek için çok önemli olan Birlik Bulma işlemlerinin uygulanmasına yardımcı olan alanlar içerir. Motor, işlev uygulamalarını uyum kapanma köklerine eşlemek için ETable olarak bilinen bir karma tablosu kullanır [1] [3].

2. Birlik bulma işlemleri: Congruence kapatma motoru, yol sıkıştırma ve birliği sıralamaya göre kullanarak birlik bulma işlemlerini verimli bir şekilde gerçekleştirir. Bu, bir denklik sınıfının köküne erişmenin hızlı olmasını ve daha küçük sınıfları daha büyük sınıflara birleştirmenin etkili olmasını sağlar [1].

3. Eşdeğerlik Tespiti: Çözücü terimler arasındaki eşitliklerle karşılaştığında, uyum kapatma motoru bu terimlerin aynı eşdeğerlik sınıfına ait olup olmadığını kontrol eder. Değilse, birleştirilmiş sınıftaki tüm terimlerin eşit olarak ele alınmasını sağlayarak sınıflarını birleştirir [3] [4].

4. Boolean Akıl Yürütme ile Entegrasyon: Congruence Clouce Engine, Z3'ün Boolean memnuniyeti çekirdeği ile sıkı bir şekilde entegre edilmiştir. Eşit terimlerin formül boyunca tutarlı bir şekilde ele alınmasını sağlayarak eşitliklerin yayılmasına ve memnuniyetsizliğin tespit edilmesine yardımcı olur [5].

5. Çatışma Çözümü: CDCL (T) (Teorilerle Çatışma Odaklı Madde Öğrenimi) bağlamında, Uyum Kapatma Motoru, tatmin edici bir ödev veya kanıt arayışı sırasında eşitliklerin sürekli olarak uygulanmasını sağlayarak çatışma çözümünde rol oynar. tatmin edici olmayan [1].

Genel olarak, Z3'ün uyum kapatma motoru, eşitlikleri verimli bir şekilde işlemek ve çözücünün eşdeğer terimleri tutarlı bir şekilde ele almasını sağlamak için gereklidir, bu da çoklu teori içeren karmaşık formülleri çözmek için kritiktir.

Alıntılar:
[1] https://z3prover.github.io/papers/z3internals.html
[2] https://www.researchgate.net/publication/266654073_z3-str_z3 consport_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