def test_problem_15(self): prover = Prover() prover.add_formula("forall(x,forall(y,forall(z,if(and(L(x,y),L(y,z))," "L(x,z)))))") prover.add_formula("forall(x,forall(y,if(L(x,y),L(y,x))))") prover.add_goal("forall(x,L(x,x))") self.assertFalse(prover.run_prover())
def test_problem_15(self): prover = Prover() prover.add_formula('if(L, M)') prover.add_formula('if(M, N)') prover.add_formula('if(N, L)') prover.add_goal('or(L, N)') self.assertFalse(prover.run_prover())
def test_problem_16(self): prover = Prover() prover.add_formula('if(S, T)') prover.add_formula('if(S, not(T))') prover.add_formula('if(not(T), S)') prover.add_goal('or(S, not(T))') self.assertFalse(prover.run_prover())
def test_problem_06(self): prover = Prover() prover.add_formula("or(A, and(B, C))") prover.add_formula("if(A, D)") prover.add_formula("if(D, C)") prover.add_goal("C") self.assertTrue(prover.run_prover())
def test_problem_04(self): prover = Prover() prover.add_formula("exists(x,and(A(x),not(B(x))))") prover.add_formula("exists(x,and(A(x),not(C(x))))") prover.add_formula("exists(x,and(not(B(x)),D(x)))") prover.add_goal("exists(x,and(and(A(x),not(B(x))),D(x)))") self.assertFalse(prover.run_prover())
def test_problem_17(self): prover = Prover() prover.add_formula("and(A, and(B, C))") prover.add_formula("if(A, or(D, E))") prover.add_formula("if(B, or(D, F))") prover.add_goal("or(D, and(E, F))") self.assertTrue(prover.run_prover())
def test_problem_15(self): prover = Prover() prover.add_formula("if(or(not(A), B), and(C, D))") prover.add_formula("not(or(A, E))") prover.add_formula("if(F, not(D))") prover.add_goal("not(F)") self.assertTrue(prover.run_prover())
def test_problem_03(self): prover = Prover() prover.add_formula('not(iff(A, B))') prover.add_formula('not(A)') prover.add_formula('not(B)') prover.add_goal('and(C, not(C))') self.assertTrue(prover.run_prover())
def test_problem_02(self): prover = Prover() prover.add_formula('if(K, H)') prover.add_formula('if(H, L)') prover.add_formula('if(L, M)') prover.add_goal('if(K, M)') self.assertTrue(prover.run_prover())
def test_problem_17(self): prover = Prover() prover.add_formula('if(W, X)') prover.add_formula('if(X, W)') prover.add_formula('if(X, Y)') prover.add_formula('if(Y, X)') prover.add_goal('iff(W, Y)') self.assertTrue(prover.run_prover())
def test_get_proof(self): prover = Prover() prover.add_formula("and(a,b)") prover.add_goal("a") prover.run_prover() proof = prover.get_proof() expected = [' 1) a ' ' Assumption', ' 3) ~a ' ' Assumption', ' 4) $$FALSE ' ' resolve(1,3)'] self.assertEqual(expected, proof)
def test_problem_12(self): prover = Prover() prover.add_formula("if(A, B)") prover.add_formula("if(not(B), not(C))") prover.add_formula("not(and(not(C), not(A)))") prover.add_goal("B") self.assertTrue(prover.run_prover())
def test_problem_05(self): prover = Prover() prover.add_formula("forall(x,if(A(x),F(x)))") prover.add_formula("if(exists(x,F(x)),not(exists(y,G(y))))") prover.add_goal("forall(x,if(exists(y,A(y)),not(G(x))))") self.assertTrue(prover.run_prover())
def test_problem_02(self): prover = Prover() prover.add_formula("forall(x,if(A(x),and(B(x),C(x))))") prover.add_formula("forall(x,if(A(x),not(C(x))))") prover.add_goal("not(A(a))") self.assertTrue(prover.run_prover())
def test_problem_03(self): prover = Prover() prover.add_formula("forall(x,if(A(x),B(x)))") prover.add_formula("forall(x,if(not(A(x)),C(x)))") prover.add_goal("forall(x,if(not(B(x)),not(C(x))))") self.assertFalse(prover.run_prover())
def test_problem_17(self): prover = Prover() prover.add_formula("forall(x,forall(y,if(and(A(x),B(y)),C(x,y))))") prover.add_formula("exists(y,and(F(y),forall(z,if(H(z),C(y,z)))))") prover.add_formula("forall(x,forall(y,forall(z,if(and(L(x,y),L(y,z))," "L(x,z)))))") prover.add_formula("forall(x,if(F(x),B(x)))") prover.add_goal("forall(z,forall(y,if(and(A(z),H(y)),C(z,y))))") self.assertFalse(prover.run_prover())
def test_problem_18(self): self.skipTest('Should work') prover = Prover() prover.add_formula("forall(x,if(exists(y,and(A(y),B(x,y))),C(x)))") prover.add_formula( "exists(y,and(D(y),exists(x,and(F(x),and(G(x),B(y,x))))))") prover.add_formula("forall(x,if(F(x),A(x)))") prover.add_formula( "if(exists(x,and(C(x),D(x))),if(exists(y,and(D(y),exists(z,B(y,z)))),forall(x,F(x))))" ) prover.add_goal("forall(x,A(x))") self.assertTrue(prover.run_prover())
def test_problem_13(self): prover = Prover() prover.add_formula("if(A, B)") prover.add_formula("if(not(C), not(B))") prover.add_formula("iff(C, D)") prover.add_goal("if(A, D)") self.assertTrue(prover.run_prover())
def test_prover_formula_error(self): prover = Prover() with self.assertRaises(TypeError): prover.add_formula(None)
def test_problem_08(self): prover = Prover() prover.add_formula("forall(x,exists(y,and(F(x),G(x,y))))") prover.add_goal("exists(y,forall(x,and(F(x),G(x,y))))") self.assertFalse(prover.run_prover())
def test_problem_06(self): prover = Prover() prover.add_formula("exists(x,or(A(x),not(B(x))))") prover.add_formula("forall(x,if(and(A(x),not(B(x))),C(x)))") prover.add_goal("exists(x,C(x))") self.assertFalse(prover.run_prover())
def test_prover_no_goal_error(self): prover = Prover() with self.assertRaises(Exception): prover.run_prover()
def test_problem_07(self): prover = Prover() prover.add_formula("forall(x,not(F(x,x)))") prover.add_formula("if(not(forall(x,G(x))),exists(y,F(y,a)))") prover.add_goal("exists(z,and(G(z),F(z,z)))") self.assertFalse(prover.run_prover())
def test_problem_10(self): prover = Prover() prover.add_formula("or(F(a),exists(y,G(y,a)))") prover.add_formula("or(F(b),exists(y,not(G(y,a))))") prover.add_goal("exists(y,G(y,a))") self.assertFalse(prover.run_prover())
def test_problem_09(self): prover = Prover() prover.add_formula("exists(x,and(F(x),forall(y,if(G(y),L(x,y)))))") prover.add_formula("forall(x,if(F(x),forall(y,if(M(y),not(L(x,y))))))") prover.add_goal("forall(x,if(G(x),not(M(x))))") self.assertTrue(prover.run_prover())
def test_problem_12(self): prover = Prover() prover.add_formula("forall(z,iff(L(z),H(z)))") prover.add_formula("forall(x,not(or(H(x),not(B(x)))))") prover.add_goal("not(L(b))") self.assertTrue(prover.run_prover())
def test_problem_11(self): prover = Prover() prover.add_formula("forall(x,not(J(x)))") prover.add_formula("if(exists(y,or(H(b,y),R(y,y))),exists(x,J(x)))") prover.add_goal("forall(y,not(or(H(b,y),R(y,y))))") self.assertTrue(prover.run_prover())
def test_problem_01(self): prover = Prover() prover.add_formula("forall(x,if(A(x),B(x)))") prover.add_formula("forall(x,if(B(x),C(x)))") prover.add_goal("forall(x,if(A(x),C(x)))") self.assertTrue(prover.run_prover())
def test_problem_13(self): prover = Prover() prover.add_formula("or(not(forall(x,K(x,x))),forall(y,H(y,y)))") prover.add_goal("exists(z,if(not(H(z,z)),not(K(z,z))))") self.assertTrue(prover.run_prover())
def test_problem_16(self): prover = Prover() prover.add_formula("forall(x,if(S(x),exists(y,and(S(y),forall(z," "iff(B(z,y),and(B(z,x),B(z,z))))))))") prover.add_formula("forall(x,not(B(x,x)))") prover.add_formula("exists(x,S(x))") prover.add_goal("exists(x,and(S(x),forall(y,not(B(y,x)))))") self.assertTrue(prover.run_prover())