Logic Z3为所有公式提供意外的UNSAT

Logic Z3为所有公式提供意外的UNSAT,logic,z3,z3py,theorem-proving,Logic,Z3,Z3py,Theorem Proving,我有下面的z3py代码片段 I = Int('I') x = Int('x') a = Int('a') O = Bool('O') constraint1 = Implies(x==0,O) constraint2 = Implies(And(x >= 6, O), x ==6) test = And(constraint1,constraint2,(O == I <= a), I==x) s = Solver() s.add(ForAll([x],test)) result =

我有下面的z3py代码片段

I = Int('I')
x = Int('x')
a = Int('a')
O = Bool('O')
constraint1 = Implies(x==0,O)
constraint2 = Implies(And(x >= 6, O), x ==6)

test = And(constraint1,constraint2,(O == I <= a), I==x)
s = Solver()
s.add(ForAll([x],test))
result = s.check()
print result
if result == sat:
    print s.model()
I=Int('I')
x=Int('x')
a=Int('a')
O=Bool('O')
constraint1=暗示(x==0,O)
约束2=暗示(和(x>=6,O),x==6)

test=和(constraint1,constraint2,(O==I约束未被满足

你有一个公式,它的形式是x和(…,I==x) 最后一个连词表示所有x.I==x,其中 因为我是从一组无限的数字中提取出来的,所以
这个无限集中的每个x都等于I,这是不可能的。

是的,你是对的。我想我想告诉z3要做的是让它知道我现在是x的占位符值,并且正在被全部量化。换句话说,它应该把我的公式解读为所有I。和(…)从映射I==x中,对于如何做到这一点的任何建议都将不胜感激。