يعد محرك إغلاق التطابق الخاص بـ Z3 مكونًا رئيسيًا في المحاليل ، وهو مسؤول عن الحفاظ على فئات التكافؤ من المصطلحات القائمة على المساواة. إنه يضمن أنه إذا تم العثور على فترتين متساويتين ، فإنها تعامل على أنها مكافئة خلال عملية الحل. إليك كيف تعمل:
1. التهيئة وهيكل البيانات: يستخدم المحرك بنية بيانات تسمى الإلكترونية لتمثيل المصطلحات في الصيغة. تحتوي كل عقدة إلكترونية على حقول تساعد في تنفيذ عمليات الثقة النقابية ، والتي تعد حاسمة لإدارة فئات التكافؤ. يستخدم المحرك جدول التجزئة ، المعروف باسم etable ، لتعيين تطبيقات الوظائف لجذور إغلاق التطابق الخاصة بهم [1] [3].
2. عمليات الاتحاد النقابي: يقوم محرك الإغلاق بالتطابق بعمليات الثياب النقابية بكفاءة باستخدام ضغط المسار والاتحاد حسب الرتبة. هذا يضمن أن الوصول إلى جذر فئة التكافؤ بسرعة وأن دمج فئات أصغر في فئة أكبر فعال [1].
3. الكشف عن التكافؤ: عندما يواجه Solver مساواة بين المصطلحات ، يتحقق محرك إغلاق التطابق إذا كانت هذه المصطلحات تنتمي إلى نفس فئة التكافؤ. إذا لم يكن الأمر كذلك ، فإنه يدمج فصولهم ، مما يضمن معاملة جميع المصطلحات في الفئة المدمجة على أنها متساوية [3] [4].
4. التكامل مع المنطق المنطقي: تم دمج محرك إغلاق التطابق بإحكام مع جوهر الرضا المنطقي لـ Z3. يساعد في نشر المساواة واكتشاف عدم الرضا من خلال ضمان معالجة المصطلحات المتساوية باستمرار عبر الصيغة [5].
5. حل الصراع: في سياق CDCL (T) (تعلم جملة النزاع مع النظريات) ، يلعب محرك إغلاق التطابق دورًا في حل الصراع من خلال ضمان تطبيق المساواة باستمرار أثناء البحث عن مهمة مرضية أو دليل من عدم الرضا [1].
بشكل عام ، يعد محرك إغلاق التطابق الخاص بـ Z3 ضروريًا للتعامل مع المساواة بكفاءة وضمان أن المحاليل يعامل المصطلحات المكافئة باستمرار ، وهو أمر بالغ الأهمية لحل الصيغ المعقدة التي تنطوي على نظريات متعددة.
الاستشهادات:[1] https://z3prover.github.io/papers/z3internals.html
[2] https://www.researchgate.net/publication/266654073_z3-str_a_z3 bired_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