23
Hình 2-1: Kiến trúc của Z3 [11]
Simplifier – Bộ giản hóa: Biểu thức đầu vào trước tiên được xử lý thông qua bộ giản hóa. Bộ giản hóa này sẽ áp dụng một số quy tắc giảm bớt đại số chuẩn như: P true -> P.
Compiler – Bộ biên dịch: Cấu trúc dạng cây đơn giản khi qua bộ giản hóa được chuyển về một cấu trúc khác bao gồm các mệnh đề và các nút (node).
Congruence Closure core – Lõi kết thúc tương đẳng: Sẽ nhận các lệnh thực sự từ công cụ tìm lời giải SAT đến các nguyên tử (atoms). Các nguyên tử sẽ được phân loại trên các đẳng thức và các biểu thức nguyên tử, như bất đẳng thức số học. Các đẳng thức được xác nhận bởi SAT sẽ được mở rộng bằng lõi kết thúc tương đẳng, và sử dụng một cấu trúc dữ liệu gọi là lược đồ E (E-graph) [5]. Mỗi một nút trong lược đồ này sẽ trỏ vào một công cụ tìm lời giải lý thuyết (Theory Solver).
Theory Combination - Phối hợp lý thuyết: Các phương thức truyền thống cho việc phối hợp các lý thuyết dựa trên khả năng của các công cụ tìm lời giải để đưa ra được các đẳng thức gợi ý hoặc các bước tiền xử lý, sau đó giới thiệu các công thức nguyên tử bổ xung vào không gian tìm kiếm. Z3 sử dụng một phương pháp mới để phối hợp lý thuyết.
24
SAT Solver: SAT tích hợp các phương pháp tìm kiếm lược bớt chuẩn như học lema sử dụng các mệnh đề mâu thuẫn, caching giai đoạn để hướng dẫn việc chia các trường hợp.