0.10/0.11 % Problem : theBenchmark.p : TPTP v0.0.0. Released v0.0.0. 0.10/0.12 % Command : parallel-twee %s --tstp --conditional-encoding if --smaller --drop-non-horn --give-up-on-saturation --explain-encoding --formal-proof 0.13/0.33 % Computer : n020.cluster.edu 0.13/0.33 % Model : x86_64 x86_64 0.13/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 0.13/0.33 % Memory : 8042.1875MB 0.13/0.33 % OS : Linux 3.10.0-693.el7.x86_64 0.13/0.33 % CPULimit : 1200 0.13/0.33 % WCLimit : 120 0.13/0.33 % DateTime : Tue Jul 13 13:43:51 EDT 2021 0.13/0.33 % CPUTime : 0.13/0.37 % SZS status Theorem 0.13/0.37 0.13/0.37 % SZS output start Proof 0.13/0.37 Take the following subset of the input axioms: 0.13/0.38 fof(thm147, conjecture, ~(![P, Q]: (~a_truth(implies(P, Q)) | (a_truth(Q) | ~a_truth(P))) & (![P, Q]: a_truth(implies(P, implies(Q, P))) & (![P, Q, R]: a_truth(implies(implies(P, implies(Q, R)), implies(implies(P, Q), implies(P, R)))) & (![P, Q]: a_truth(implies(implies(not(P), not(Q)), implies(Q, P))) & ?[A]: ~a_truth(implies(A, A))))))). 0.13/0.38 0.13/0.38 Now clausify the problem and encode Horn clauses using encoding 3 of 0.13/0.38 http://www.cse.chalmers.se/~nicsma/papers/horn.pdf. 0.13/0.38 We repeatedly replace C & s=t => u=v by the two clauses: 0.13/0.38 fresh(y, y, x1...xn) = u 0.13/0.38 C => fresh(s, t, x1...xn) = v 0.13/0.38 where fresh is a fresh function symbol and x1..xn are the free 0.13/0.38 variables of u and v. 0.13/0.38 A predicate p(X) is encoded as p(X)=true (this is sound, because the 0.13/0.38 input problem has no model of domain size 1). 0.13/0.38 0.13/0.38 The encoding turns the above axioms into the following unit equations and goals: 0.13/0.38 0.13/0.38 Axiom 1 (thm147_3): fresh2(X, X, Y) = true. 0.13/0.38 Axiom 2 (thm147_3): fresh(X, X, Y, Z) = a_truth(Z). 0.13/0.38 Axiom 3 (thm147): a_truth(implies(X, implies(Y, X))) = true. 0.13/0.38 Axiom 4 (thm147_3): fresh(a_truth(implies(X, Y)), true, X, Y) = fresh2(a_truth(X), true, Y). 0.13/0.38 Axiom 5 (thm147_1): a_truth(implies(implies(X, implies(Y, Z)), implies(implies(X, Y), implies(X, Z)))) = true. 0.13/0.38 0.13/0.38 Goal 1 (thm147_4): a_truth(implies(a, a)) = true. 0.13/0.38 Proof: 0.13/0.38 a_truth(implies(a, a)) 0.13/0.38 = { by axiom 2 (thm147_3) R->L } 0.13/0.38 fresh(true, true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 1 (thm147_3) R->L } 0.13/0.38 fresh(fresh2(true, true, implies(implies(a, implies(X, a)), implies(a, a))), true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 3 (thm147) R->L } 0.13/0.38 fresh(fresh2(a_truth(implies(a, implies(implies(X, a), a))), true, implies(implies(a, implies(X, a)), implies(a, a))), true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 4 (thm147_3) R->L } 0.13/0.38 fresh(fresh(a_truth(implies(implies(a, implies(implies(X, a), a)), implies(implies(a, implies(X, a)), implies(a, a)))), true, implies(a, implies(implies(X, a), a)), implies(implies(a, implies(X, a)), implies(a, a))), true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 5 (thm147_1) } 0.13/0.38 fresh(fresh(true, true, implies(a, implies(implies(X, a), a)), implies(implies(a, implies(X, a)), implies(a, a))), true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 2 (thm147_3) } 0.13/0.38 fresh(a_truth(implies(implies(a, implies(X, a)), implies(a, a))), true, implies(a, implies(X, a)), implies(a, a)) 0.13/0.38 = { by axiom 4 (thm147_3) } 0.13/0.38 fresh2(a_truth(implies(a, implies(X, a))), true, implies(a, a)) 0.13/0.38 = { by axiom 3 (thm147) } 0.13/0.38 fresh2(true, true, implies(a, a)) 0.13/0.38 = { by axiom 1 (thm147_3) } 0.13/0.38 true 0.13/0.38 % SZS output end Proof 0.13/0.38 0.13/0.38 RESULT: Theorem (the conjecture is true). 0.13/0.38 EOF