z3py를 사용하여 작업 및 사후 조건이 주어진 경우 가장 약한 전제 조건을 찾고 싶습니다. z3py를 사용하여 가장 약한 전제 조건 찾기
는 가장 약한 전제 조건 N의 ==이 방법은 일부 게시물 조건이 아닌 다른 사람을 위해 작동하는 전술solve-eqs
사용 4.
될 작업 N = N + 1
및 사후 조건 N == 5
을 감안할 때. 게시 조건 N < 5
을 사용할 때 [[Not(4 <= N)]]
이 나옵니다.
N == 5
을 사용하는 경우 [[]]
이 나올 때 N == 4
을 입력하십시오.
N2 = Int('N2') # N after the action
N = Int('N') # N before the action
weakestPreconditionGoal = Goal()
# 'N2 == n + 1' action
# 'N2 == 5' post condition.
weakestPreconditionGoal.add(N2 == N + 1, N2 == 5)
t = Tactic('solve-eqs')
wp = t(weakestPreconditionGoal)
print(wp)
약한 전제 조건을 찾는 가장 좋은 방법입니까?
나는 여러 가지 방법을 시도했지만 Z3에 익숙하지 않으며 취할 접근법이나 구현 방법을 알 수 없습니다.
빠른 응답을 주셔서 감사합니다. 솔루션이 완벽하게 작동합니다. – bettsmatt