Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Z3의 합동 폐쇄 엔진은 어떻게 작동합니까?


Z3의 합동 폐쇄 엔진은 어떻게 작동합니까?


Z3의 합동 클로저 엔진은 솔버의 핵심 구성 요소로, 평등성에 기초하여 동등성 클래스의 용어를 유지하는 것을 담당합니다. 두 용어가 동일하다고 판명되면 해결 프로세스 전반에 걸쳐 동등한 것으로 취급됩니다. 작동 방식은 다음과 같습니다.

1. 초기화 및 데이터 구조 : 엔진은 e-node라는 데이터 구조를 사용하여 공식에서 용어를 나타냅니다. 각 e- 노드에는 동등성 클래스를 관리하는 데 중요한 노조 찾기 작업을 구현하는 데 도움이되는 필드가 포함되어 있습니다. 엔진은 ETable로 알려진 해시 테이블을 사용하여 기능 응용 프로그램을 합동 폐쇄 루트에 매핑합니다 [1] [3].

2. Union-Find Operations : 합동 폐쇄 엔진은 경로 압축과 노조를 사용하여 노조 찾기 작업을 효율적으로 수행합니다. 이를 통해 등가 클래스의 루트에 액세스하는 것이 빠르며 작은 클래스를 더 큰 클래스로 병합하는 것이 효율적입니다 [1].

3. 동등성 감지 : 솔버가 용어간에 평등을 만나면 합동 폐쇄 엔진은이 용어가 동일한 동등한 클래스에 속하는지 확인합니다. 그렇지 않은 경우, 병합 된 클래스의 모든 용어가 동일하게 취급되도록하는 수업을 통합합니다 [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 기반_string_solver_for_web_application_analysy
[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