z3-solver 사용법 정리해오기 (1000자 이상)


z3는 마이크로소프트에서 개발한 수식 해석 도구로, 방정식 같은 수학적인 식을 해결할 수 있게 해줍니다. 정확히는 특별하고 효율적인 알고리즘을 가진 SMT 솔버입니다.

설치

pip install z3-solver

pip를 통해 z3-solver 을 설치해주면 됩니다.

z3-solver 모듈을 불러올 땐 아래의 코드로 불러올 수 있습니다.

from z3 import *

정수인 미지수(Int)

👾\정수인 미지수를 선언할 때에는 Int() 함수를 통해 선언할 수 있습니다. 예를 들어 변수명이 x인 정수인 미지수를 선언할 때에는 아래의 코드를 사용할 수 있습니다.

x = Int('x')
y = Int('y')

이 때 int()Int() 대소문자를 구분해야 합니다. 소문자 int() 의 경우 파이썬에서 int형으로 자료형을 변환할 때 사용됩니다. 대문자 Int() 를 사용해야 z3에서 정수인 미지수를 선언할 수 있습니다.

실수인 미지수(Real)

실수형인 미지수를 선언할 때에는 Real() 함수를 통해 선언할 수 있습니다. 정수인 미지수를 선언할 때와 마찬가지로 아래의 코드를 사용할 수 있습니다.

x = Real('x')
y = Real('y')

논리형 미지수(Bool)

논리형 미지수를 선언할 때에는 Bool() 함수를 통해 선언할 수 있습니다. 선언 코드는 아래와 같습니다.

x = Bool('x')
y = Bool('y')

Bool 은 Boolean을 줄인 말로, 0과 1을 저장합니다. 따라서 0과 1로 이루어진 미지수를 and, or, xor 등의 논리 게이트 형식으로 계산할 수 있습니다.

비트벡터(BitVec)