0.05/0.09 % Problem : theBenchmark.p : TPTP v0.0.0. Released v0.0.0. 0.05/0.09 % Command : parallel-twee %s --tstp --conditional-encoding if --smaller --drop-non-horn --give-up-on-saturation --explain-encoding --formal-proof 0.09/0.29 % Computer : n029.cluster.edu 0.09/0.29 % Model : x86_64 x86_64 0.09/0.29 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 0.09/0.29 % Memory : 8042.1875MB 0.09/0.29 % OS : Linux 3.10.0-693.el7.x86_64 0.09/0.29 % CPULimit : 1200 0.09/0.29 % WCLimit : 120 0.09/0.29 % DateTime : Tue Jul 13 12:57:40 EDT 2021 0.09/0.29 % CPUTime : 10.93/1.71 % SZS status Theorem 10.93/1.71 10.93/1.72 % SZS output start Proof 10.93/1.72 Take the following subset of the input axioms: 10.93/1.72 fof(axiom_1, axiom, ?[Y24]: ![X19]: ((id(X19, Y24) & r1(X19)) | (~r1(X19) & ~id(X19, Y24)))). 10.93/1.72 fof(axiom_1a, axiom, ![X1, X8]: ?[Y4]: (?[Y5]: (?[Y15]: (r2(X8, Y15) & r3(X1, Y15, Y5)) & id(Y5, Y4)) & ?[Y7]: (r2(Y7, Y4) & r3(X1, X8, Y7)))). 10.93/1.72 fof(axiom_2a, axiom, ![X2, X9]: ?[Y2]: (?[Y3]: (?[Y14]: (r4(X2, Y14, Y3) & r2(X9, Y14)) & id(Y3, Y2)) & ?[Y6]: (r3(Y6, X2, Y2) & r4(X2, X9, Y6)))). 10.93/1.72 fof(axiom_4a, axiom, ![X4]: ?[Y9]: (?[Y16]: (r1(Y16) & r3(X4, Y16, Y9)) & id(Y9, X4))). 10.93/1.72 fof(axiom_5, axiom, ![X20]: id(X20, X20)). 10.93/1.72 fof(axiom_7a, axiom, ![X7, Y10]: (~r2(X7, Y10) | ![Y20]: (~id(Y20, Y10) | ~r1(Y20)))). 10.93/1.72 fof(axiom_9, axiom, ![X28, X29, X30, X31]: (~id(X29, X31) | ((r2(X28, X29) & r2(X30, X31)) | ((~r2(X28, X29) & ~r2(X30, X31)) | ~id(X28, X30))))). 10.93/1.72 fof(xplustwoidy, conjecture, ?[Y2, Y3, Y1]: (id(Y3, Y2) & ?[Y4]: (?[Y5]: (r2(Y5, Y4) & ?[Y6]: (r1(Y6) & r2(Y6, Y5))) & r3(Y1, Y4, Y3)))). 10.93/1.72 10.93/1.72 Now clausify the problem and encode Horn clauses using encoding 3 of 10.93/1.72 http://www.cse.chalmers.se/~nicsma/papers/horn.pdf. 10.93/1.72 We repeatedly replace C & s=t => u=v by the two clauses: 10.93/1.72 fresh(y, y, x1...xn) = u 10.93/1.72 C => fresh(s, t, x1...xn) = v 10.93/1.72 where fresh is a fresh function symbol and x1..xn are the free 10.93/1.72 variables of u and v. 10.93/1.72 A predicate p(X) is encoded as p(X)=true (this is sound, because the 10.93/1.72 input problem has no model of domain size 1). 10.93/1.72 10.93/1.72 The encoding turns the above axioms into the following unit equations and goals: 10.93/1.72 10.93/1.72 Axiom 1 (axiom_5): id(X, X) = true2. 10.93/1.72 Axiom 2 (axiom_4a_2): r1(y16(X)) = true2. 10.93/1.72 Axiom 3 (axiom_1_1): fresh17(X, X, Y) = true2. 10.93/1.72 Axiom 4 (axiom_2a_4): r2(X, y14(Y, X)) = true2. 10.93/1.72 Axiom 5 (axiom_9_1): fresh32(X, X, Y, Z) = true2. 10.93/1.72 Axiom 6 (axiom_1_1): fresh17(r1(X), true2, X) = id(X, y24). 10.93/1.72 Axiom 7 (axiom_1a_1): r3(X, Y, y7(X, Y)) = true2. 10.93/1.72 Axiom 8 (axiom_9_1): fresh(X, X, Y, Z, W) = r2(Y, Z). 10.93/1.72 Axiom 9 (axiom_9_1): fresh31(X, X, Y, Z, W, V) = fresh32(id(Y, W), true2, Y, Z). 10.93/1.72 Axiom 10 (axiom_9_1): fresh31(r2(X, Y), true2, Z, W, X, Y) = fresh(id(W, Y), true2, Z, W, X). 10.93/1.72 10.93/1.72 Goal 1 (xplustwoidy): tuple(id(X, Y), r3(Z, W, X), r2(V, W), r2(U, V), r1(U)) = tuple(true2, true2, true2, true2, true2). 10.93/1.72 The goal is true when: 10.93/1.72 X = y7(W, y14(Z, y14(Y, y24))) 10.93/1.72 Y = y7(W, y14(Z, y14(Y, y24))) 10.93/1.72 Z = W 10.93/1.72 W = y14(Z, y14(Y, y24)) 10.93/1.72 V = y14(Y, y24) 10.93/1.72 U = y16(X) 10.93/1.72 10.93/1.72 Proof: 10.93/1.72 tuple(id(y7(W, y14(Z, y14(Y, y24))), y7(W, y14(Z, y14(Y, y24)))), r3(W, y14(Z, y14(Y, y24)), y7(W, y14(Z, y14(Y, y24)))), r2(y14(Y, y24), y14(Z, y14(Y, y24))), r2(y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 1 (axiom_5) } 10.93/1.72 tuple(true2, r3(W, y14(Z, y14(Y, y24)), y7(W, y14(Z, y14(Y, y24)))), r2(y14(Y, y24), y14(Z, y14(Y, y24))), r2(y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 7 (axiom_1a_1) } 10.93/1.72 tuple(true2, true2, r2(y14(Y, y24), y14(Z, y14(Y, y24))), r2(y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 4 (axiom_2a_4) } 10.93/1.72 tuple(true2, true2, true2, r2(y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 8 (axiom_9_1) R->L } 10.93/1.72 tuple(true2, true2, true2, fresh(true2, true2, y16(X), y14(Y, y24), y24), r1(y16(X))) 10.93/1.72 = { by axiom 1 (axiom_5) R->L } 10.93/1.72 tuple(true2, true2, true2, fresh(id(y14(Y, y24), y14(Y, y24)), true2, y16(X), y14(Y, y24), y24), r1(y16(X))) 10.93/1.72 = { by axiom 10 (axiom_9_1) R->L } 10.93/1.72 tuple(true2, true2, true2, fresh31(r2(y24, y14(Y, y24)), true2, y16(X), y14(Y, y24), y24, y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 4 (axiom_2a_4) } 10.93/1.72 tuple(true2, true2, true2, fresh31(true2, true2, y16(X), y14(Y, y24), y24, y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 9 (axiom_9_1) } 10.93/1.72 tuple(true2, true2, true2, fresh32(id(y16(X), y24), true2, y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 6 (axiom_1_1) R->L } 10.93/1.72 tuple(true2, true2, true2, fresh32(fresh17(r1(y16(X)), true2, y16(X)), true2, y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 2 (axiom_4a_2) } 10.93/1.72 tuple(true2, true2, true2, fresh32(fresh17(true2, true2, y16(X)), true2, y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 3 (axiom_1_1) } 10.93/1.72 tuple(true2, true2, true2, fresh32(true2, true2, y16(X), y14(Y, y24)), r1(y16(X))) 10.93/1.72 = { by axiom 5 (axiom_9_1) } 10.93/1.72 tuple(true2, true2, true2, true2, r1(y16(X))) 10.93/1.72 = { by axiom 2 (axiom_4a_2) } 10.93/1.72 tuple(true2, true2, true2, true2, true2) 10.93/1.72 % SZS output end Proof 10.93/1.72 10.93/1.72 RESULT: Theorem (the conjecture is true). 10.93/1.73 EOF