def test_boolean(self): x, y, z = Symbol("x"), Symbol("y"), Symbol("z") f = Or(And(Not(x), Iff(x, y)), Implies(x, z)) self.assertEqual(f.to_smtlib(daggify=False), "(or (and (not x) (= x y)) (=> x z))") self.assertEqual(f.to_smtlib(daggify=True), "(let ((.def_0 (=> x z))) (let ((.def_1 (= x y))) (let ((.def_2 (not x))) (let ((.def_3 (and .def_2 .def_1))) (let ((.def_4 (or .def_3 .def_0))) .def_4)))))")
def test_int(self): p, q = Symbol("p", INT), Symbol("q", INT) f = Or(Equals(Times(p, Int(5)), Minus(p,q)), LT(p,q), LE(Int(6), Int(1))) self.assertEqual(f.to_smtlib(daggify=False), "(or (= (* p 5) (- p q)) (< p q) (<= 6 1))") self.assertEqual(f.to_smtlib(daggify=True), "(let ((.def_0 (<= 6 1))) (let ((.def_1 (< p q))) (let ((.def_2 (- p q))) (let ((.def_3 (* p 5))) (let ((.def_4 (= .def_3 .def_2))) (let ((.def_5 (or .def_4 .def_1 .def_0))) .def_5))))))")
def test_boolean(self): x, y, z = Symbol("x"), Symbol("y"), Symbol("z") f = Or(And(Not(x), Iff(x, y)), Implies(x, z)) self.assertEqual(f.to_smtlib(daggify=False), "(or (and (not x) (= x y)) (=> x z))") self.assertEqual( f.to_smtlib(daggify=True), "(let ((.def_0 (=> x z))) (let ((.def_1 (= x y))) (let ((.def_2 (not x))) (let ((.def_3 (and .def_2 .def_1))) (let ((.def_4 (or .def_3 .def_0))) .def_4)))))" )
def test_int(self): p, q = Symbol("p", INT), Symbol("q", INT) f = Or(Equals(Times(p, Int(5)), Minus(p, q)), LT(p, q), LE(Int(6), Int(1))) self.assertEqual(f.to_smtlib(daggify=False), "(or (= (* p 5) (- p q)) (< p q) (<= 6 1))") self.assertEqual( f.to_smtlib(daggify=True), "(let ((.def_0 (<= 6 1))) (let ((.def_1 (< p q))) (let ((.def_2 (- p q))) (let ((.def_3 (* p 5))) (let ((.def_4 (= .def_3 .def_2))) (let ((.def_5 (or .def_4 .def_1 .def_0))) .def_5))))))" )