private TermAst CreateQuantifedFormula1(TypeSafeContext z3) { var x = z3.MkConst("x", z3.MkIntType()); var y = z3.MkConst("y", z3.MkIntType()); var z = z3.MkConst("z", z3.MkIntType()); return z3.MkForall(0, new TermAst[] { x, y }, new PatternAst[] { }, z3.MkImplies( z3.MkEq(x, y), z3.MkExists(0, new TermAst[] { z }, new PatternAst[] { }, z3.MkNot(z3.MkEq(x, z))))); }
private TermAst CreateQuantifedFormula1(TypeSafeContext z3) { var x = z3.MkConst("x", z3.MkIntType()); var y = z3.MkConst("y", z3.MkIntType()); var z = z3.MkConst("z", z3.MkIntType()); return (z3.MkForall(0, new TermAst[] { x, y }, new PatternAst[] { }, z3.MkImplies( z3.MkEq(x, y), z3.MkExists(0, new TermAst[] { z }, new PatternAst[] { }, z3.MkNot(z3.MkEq(x, z)))))); }
private TermAst CreateQuantifedFormula2(TypeSafeContext z3) { var x2 = z3.MkBound(2, z3.MkIntType()); var x1 = z3.MkBound(1, z3.MkIntType()); var y = z3.MkBound(0, z3.MkIntType()); var z = z3.MkBound(0, z3.MkIntType()); return (z3.MkForall(0, new PatternAst[] { }, new TypeAst[] { z3.MkIntType(), z3.MkIntType() }, new Symbol[] { z3.MkSymbol("x"), z3.MkSymbol("y") }, z3.MkImplies( z3.MkEq(x1, y), z3.MkExists(0, new PatternAst[] { }, new TypeAst[] { z3.MkIntType() }, new Symbol[] { z3.MkSymbol("z") }, z3.MkNot(z3.MkEq(x2, z)))))); }
private TermAst CreateQuantifedFormula2(TypeSafeContext z3) { var x2 = z3.MkBound(2, z3.MkIntType()); var x1 = z3.MkBound(1, z3.MkIntType()); var y = z3.MkBound(0, z3.MkIntType()); var z = z3.MkBound(0, z3.MkIntType()); return z3.MkForall(0, new PatternAst[] { }, new TypeAst[] { z3.MkIntType(), z3.MkIntType() }, new Symbol[] { z3.MkSymbol("x"), z3.MkSymbol("y") }, z3.MkImplies( z3.MkEq(x1, y), z3.MkExists(0, new PatternAst[] { }, new TypeAst[] { z3.MkIntType() }, new Symbol[] { z3.MkSymbol("z") }, z3.MkNot(z3.MkEq(x2, z))))); }