Microsoft Research에서 개발 한 최첨단 만족도 모듈로 이론 (SMT) 솔버 인 Z3는 소프트웨어 검증 및 분석에 중요한 광범위한 이론을 지원합니다. 다음은 Z3가 지원하는 이론의 몇 가지 예입니다.
- 산술 : 여기에는 정수와 실제 산술이 모두 포함되어 Z3가 숫자와 관련된 방정식을 해결할 수 있습니다.
-고정 크기 비트 벡터 : 디지털 회로 및 이진 데이터를 모델링하는 데 유용하며 고정 된 길이의 비트 벡터입니다.
- 확장 배열 : 배열은 지수에서 값으로의 함수로 취급되어 Z3가 데이터 구조에 대한 이유가 있습니다.
- 데이터 유형 : Z3는 목록, 트리 및 레코드와 같은 복잡한 데이터 구조에 대한 추론을 지원합니다.
- 해석되지 않은 함수 : 이들은 동작이 정의되지 않은 기능이며 구현 세부 사항을 추상화하는 데 유용합니다.
- Quantifiers : Z3는 실존 및 범용 정량자를 모두 처리 할 수있어 도메인의 전부 또는 일부 요소에 적용되는 속성에 대해 추론 할 수 있습니다.
또한, Z3은 카디널리티 및 의사-부울 불평등과 같은 다른 이론과 함께 확장되거나 사용될 수 있으며, 이는 조합 문제에 유용합니다. 또한 인코딩 및 공리화 사용자 정의 이론을 지원하여 소프트웨어 검증 및 공식적인 방법의 다양한 응용 프로그램에 대해 다재다능합니다 [3] [4] [9] [10].
인용 :[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congress-specs/specs/alternative-engine-z3.html
[3] https://en.wikipedia.org/wiki/z3_theorem_prover
[4] https://ceur-ws.org/vol-418/paper10.pdf
[5] https://jfmc.github.io/z3-play/
[6] https://www21.in.tum.de/~boehmes/proofrec.pdf
[7] https://microsoft.github.io/z3guide/docs/logic/intro/
[8] https://stackoverflow.com/questions/73789804/theory-of-arrays-in-z3-1-model-is-difficult-t-do-not-know-ho
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas11.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navigate.html