https://git01.codeplex.com/z3 (89c1785b)의 마스터 브랜치에서 Z3의 최신 버전을 사용하여 매개 변수의 순서가 중요한 것으로 보이는 ctx-solver-simplify
에서 다소 놀라운 결과가 나타납니다.) :ctx-solver-simplify의 비대칭 성 동작
#!/usr/bin/python
import z3
a, b = z3.Bools('a b')
p = z3.Not(a)
q = z3.Or(a, b)
for e in z3.And(p, q), z3.And(q, p):
print e, '->', z3.Tactic('ctx-solver-simplify')(e)
가 생성됩니다
And(Not(a), Or(a, b)) -> [[Not(a), Or(a, b)]]
And(Or(a, b), Not(a)) -> [[b, Not(a)]]
이 Z3의 버그인가?
감사합니다. 사람이 읽을 수있는 수식의 공식을 생성하고 계산 시간이 중요하지 않은 경우 Z3에서 호출 할 수있는 API 또는 전술이 표현을 단순화하기 위해 "더 열심히"시도 할 것입니까? 아니면 ctx_solver_simplify_tactic.cpp를 수정하거나 내 자신의 전술을 작성해야합니까? – user1861926
사실'propagate-values'는 제 경우에 많은 도움이됩니다 - 다시 한번 감사드립니다! – user1861926