Công cụ đóng cửa đồng dạng của Z3 là một thành phần chính của người giải quyết, chịu trách nhiệm duy trì các loại thuật ngữ tương đương dựa trên sự bình đẳng. Nó đảm bảo rằng nếu hai thuật ngữ được tìm thấy bằng nhau, chúng được coi là tương đương trong suốt quá trình giải quyết. Đây là cách nó hoạt động:
1. Khởi tạo và cấu trúc dữ liệu: Động cơ sử dụng cấu trúc dữ liệu được gọi là nút điện tử để biểu diễn các thuật ngữ trong công thức. Mỗi nút điện tử chứa các trường giúp thực hiện các hoạt động công đoàn, rất quan trọng để quản lý các lớp tương đương. Động cơ sử dụng bảng băm, được gọi là ETABLE, để ánh xạ các ứng dụng chức năng cho rễ đóng đồng dạng của chúng [1] [3].
2. Các hoạt động của Union-Find: Công cụ đóng cửa đồng hành thực hiện các hoạt động công đoàn một cách hiệu quả bằng cách sử dụng nén đường dẫn và liên minh theo cấp bậc. Điều này đảm bảo rằng việc truy cập gốc của một lớp tương đương là nhanh và hợp nhất các lớp nhỏ hơn thành các lớp lớn hơn là hiệu quả [1].
3. Phát hiện tương đương: Khi người giải gặp sự bình đẳng giữa các điều khoản, công cụ đóng đồng quy sẽ kiểm tra xem các thuật ngữ này có thuộc cùng một lớp tương đương hay không. Nếu không, nó hợp nhất các lớp của họ, đảm bảo rằng tất cả các thuật ngữ trong lớp được hợp nhất được coi là bằng nhau [3] [4].
4. Tích hợp với lý luận Boolean: Công cụ đóng cửa đồng hồ được tích hợp chặt chẽ với lõi thỏa mãn Boolean của Z3. Nó giúp truyền bá sự bình đẳng và phát hiện không thỏa mãn bằng cách đảm bảo rằng các thuật ngữ bằng nhau được đối xử liên tục trên công thức [5].
5. Giải quyết xung đột: Trong bối cảnh CDCL (t) (học điều khoản theo xung đột với các lý thuyết), công cụ đóng cửa đồng thời đóng vai trò trong giải quyết xung đột bằng cách đảm bảo rằng sự bình đẳng được áp dụng một cách nhất quán trong quá trình tìm kiếm một bài tập thỏa mãn hoặc bằng chứng không hài lòng [1].
Nhìn chung, công cụ đóng cửa phù hợp của Z3 là rất cần thiết để xử lý hiệu quả sự bình đẳng và đảm bảo rằng bộ giải xử lý các thuật ngữ tương đương một cách nhất quán, điều này rất quan trọng để giải quyết các công thức phức tạp liên quan đến nhiều lý thuyết.
Trích dẫn:[1] https://z3prover.github.io/papers/z3Internals.html
[2] https://www.researchgate.net/publication/266654073_Z3-str_a_z3-based_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