Ejemplo n.º 1
0
 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)))));
 }
Ejemplo n.º 2
0
        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))))));
        }
Ejemplo n.º 3
0
        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))))));
        }
Ejemplo n.º 4
0
 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)))));
 }