0.08/0.12 % Problem : theBenchmark.p : TPTP v0.0.0. Released v0.0.0. 0.08/0.12 % Command : twee %s --tstp --casc --quiet --explain-encoding --conditional-encoding if --smaller --drop-non-horn 0.12/0.33 % Computer : n006.cluster.edu 0.12/0.33 % Model : x86_64 x86_64 0.12/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 0.12/0.33 % Memory : 8042.1875MB 0.12/0.33 % OS : Linux 3.10.0-693.el7.x86_64 0.12/0.33 % CPULimit : 180 0.12/0.33 % DateTime : Thu Aug 29 14:32:39 EDT 2019 0.12/0.33 % CPUTime : 3.65/3.86 % SZS status Theorem 3.65/3.86 3.65/3.86 % SZS output start Proof 3.65/3.86 Take the following subset of the input axioms: 3.65/3.86 fof(goals_13, conjecture, ![X17, X18]: '+'(X18, '==>'(X18, X17))='+'(X17, '==>'(X17, X18))). 3.65/3.86 fof(sos_01, axiom, ![A, B, C]: '+'(A, '+'(B, C))='+'('+'(A, B), C)). 3.65/3.86 fof(sos_02, axiom, ![A, B]: '+'(A, B)='+'(B, A)). 3.65/3.86 fof(sos_03, axiom, ![A]: '+'(A, '0')=A). 3.65/3.86 fof(sos_04, axiom, ![A]: '>='(A, A)). 3.65/3.86 fof(sos_06, axiom, ![X3, X4]: (X4=X3 <= ('>='(X3, X4) & '>='(X4, X3)))). 3.65/3.86 fof(sos_07, axiom, ![X5, X6, X7]: ('>='(X6, '==>'(X5, X7)) <=> '>='('+'(X5, X6), X7))). 3.65/3.86 fof(sos_08, axiom, ![A]: '>='(A, '0')). 3.65/3.86 fof(sos_09, axiom, ![X8, X9, X10]: ('>='('+'(X8, X10), '+'(X9, X10)) <= '>='(X8, X9))). 3.65/3.86 fof(sos_11, axiom, ![X14, X15, X16]: ('>='(X14, X15) => '>='('==>'(X16, X14), '==>'(X16, X15)))). 3.65/3.86 fof(sos_12, axiom, ![A, B, C]: '+'('+'(A, '==>'(A, B)), '==>'('+'(A, '==>'(A, B)), C))='+'(A, '==>'(A, '+'(B, '==>'(B, C))))). 3.65/3.86 3.65/3.86 Now clausify the problem and encode Horn clauses using encoding 3 of 3.65/3.86 http://www.cse.chalmers.se/~nicsma/papers/horn.pdf. 3.65/3.86 We repeatedly replace C & s=t => u=v by the two clauses: 3.65/3.86 fresh(y, y, x1...xn) = u 3.65/3.86 C => fresh(s, t, x1...xn) = v 3.65/3.86 where fresh is a fresh function symbol and x1..xn are the free 3.65/3.86 variables of u and v. 3.65/3.86 A predicate p(X) is encoded as p(X)=true (this is sound, because the 3.65/3.86 input problem has no model of domain size 1). 3.65/3.86 3.65/3.86 The encoding turns the above axioms into the following unit equations and goals: 3.65/3.86 3.65/3.86 Axiom 1 (sos_06): fresh(X, X, Y, Z) = Y. 3.65/3.86 Axiom 2 (sos_06): fresh2(X, X, Y, Z) = Z. 3.65/3.86 Axiom 3 (sos_07): fresh6(X, X, Y, Z, W) = true. 3.65/3.86 Axiom 4 (sos_07_1): fresh9(X, X, Y, Z, W) = true. 3.65/3.86 Axiom 5 (sos_09): fresh5(X, X, Y, Z, W) = true. 3.65/3.86 Axiom 6 (sos_11): fresh3(X, X, Y, Z, W) = true. 3.65/3.86 Axiom 7 (sos_02): X + Y = Y + X. 3.65/3.86 Axiom 8 (sos_07_1): fresh9((X + Y) >= Z, true, X, Y, Z) = Y >= (X ==> Z). 3.65/3.86 Axiom 9 (sos_07): fresh6(X >= (Y ==> Z), true, Y, X, Z) = (Y + X) >= Z. 3.65/3.86 Axiom 10 (sos_09): fresh5(X >= Y, true, X, Y, Z) = (X + Z) >= (Y + Z). 3.65/3.87 Axiom 11 (sos_06): fresh2(X >= Y, true, Y, X) = fresh(Y >= X, true, Y, X). 3.65/3.87 Axiom 12 (sos_04): X >= X = true. 3.65/3.87 Axiom 13 (sos_08): X >= 0 = true. 3.65/3.87 Axiom 14 (sos_01): X + (Y + Z) = (X + Y) + Z. 3.65/3.87 Axiom 15 (sos_11): fresh3(X >= Y, true, X, Y, Z) = (Z ==> X) >= (Z ==> Y). 3.65/3.87 Axiom 16 (sos_12): (X + (X ==> Y)) + ((X + (X ==> Y)) ==> Z) = X + (X ==> (Y + (Y ==> Z))). 3.65/3.88 Axiom 17 (sos_03): X + 0 = X. 3.65/3.88 3.65/3.88 Lemma 18: (X + (X ==> Y)) >= Y = true. 3.65/3.88 Proof: 3.65/3.88 (X + (X ==> Y)) >= Y 3.65/3.88 = { by axiom 9 (sos_07) } 3.65/3.88 fresh6((X ==> Y) >= (X ==> Y), true, X, X ==> Y, Y) 3.65/3.88 = { by axiom 12 (sos_04) } 3.65/3.88 fresh6(true, true, X, X ==> Y, Y) 3.65/3.88 = { by axiom 3 (sos_07) } 3.65/3.88 true 3.65/3.88 3.65/3.88 Lemma 19: X ==> (X + (X ==> Y)) = X ==> Y. 3.65/3.88 Proof: 3.65/3.88 X ==> (X + (X ==> Y)) 3.65/3.88 = { by axiom 1 (sos_06) } 3.65/3.88 fresh(true, true, X ==> (X + (X ==> Y)), X ==> Y) 3.65/3.88 = { by axiom 6 (sos_11) } 3.65/3.88 fresh(fresh3(true, true, X + (X ==> Y), Y, X), true, X ==> (X + (X ==> Y)), X ==> Y) 3.65/3.88 = { by lemma 18 } 3.65/3.88 fresh(fresh3((X + (X ==> Y)) >= Y, true, X + (X ==> Y), Y, X), true, X ==> (X + (X ==> Y)), X ==> Y) 3.65/3.88 = { by axiom 15 (sos_11) } 3.65/3.88 fresh((X ==> (X + (X ==> Y))) >= (X ==> Y), true, X ==> (X + (X ==> Y)), X ==> Y) 3.65/3.88 = { by axiom 7 (sos_02) } 3.65/3.88 fresh((X ==> ((X ==> Y) + X)) >= (X ==> Y), true, X ==> (X + (X ==> Y)), X ==> Y) 3.65/3.88 = { by axiom 7 (sos_02) } 3.65/3.88 fresh((X ==> ((X ==> Y) + X)) >= (X ==> Y), true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 11 (sos_06) } 3.65/3.88 fresh2((X ==> Y) >= (X ==> ((X ==> Y) + X)), true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 7 (sos_02) } 3.65/3.88 fresh2((X ==> Y) >= (X ==> (X + (X ==> Y))), true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 8 (sos_07_1) } 3.65/3.88 fresh2(fresh9((X + (X ==> Y)) >= (X + (X ==> Y)), true, X, X ==> Y, X + (X ==> Y)), true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 12 (sos_04) } 3.65/3.88 fresh2(fresh9(true, true, X, X ==> Y, X + (X ==> Y)), true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 4 (sos_07_1) } 3.65/3.88 fresh2(true, true, X ==> ((X ==> Y) + X), X ==> Y) 3.65/3.88 = { by axiom 2 (sos_06) } 3.65/3.90 X ==> Y 3.65/3.90 3.65/3.90 Lemma 20: (X + (X ==> Y)) >= (Y + (Y ==> X)) = true. 3.65/3.90 Proof: 3.65/3.90 (X + (X ==> Y)) >= (Y + (Y ==> X)) 3.65/3.90 = { by lemma 19 } 3.65/3.90 (X + (X ==> (X + (X ==> Y)))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 17 (sos_03) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + 0)))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 2 (sos_06) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(true, true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 4 (sos_07_1) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(true, true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 5 (sos_09) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(fresh5(true, true, X ==> Y, 0, X), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 13 (sos_08) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(fresh5((X ==> Y) >= 0, true, X ==> Y, 0, X), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 10 (sos_09) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(((X ==> Y) + X) >= (0 + X), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 7 (sos_02) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9((X + (X ==> Y)) >= (0 + X), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 17 (sos_03) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(((X + (X ==> Y)) + 0) >= (0 + X), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 7 (sos_02) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(((X + (X ==> Y)) + 0) >= (X + 0), true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 17 (sos_03) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(fresh9(((X + (X ==> Y)) + 0) >= X, true, X + (X ==> Y), 0, X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 8 (sos_07_1) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh2(0 >= ((X + (X ==> Y)) ==> X), true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 11 (sos_06) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh(((X + (X ==> Y)) ==> X) >= 0, true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 13 (sos_08) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + fresh(true, true, (X + (X ==> Y)) ==> X, 0))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 1 (sos_06) } 3.65/3.90 (X + (X ==> (X + ((X ==> Y) + ((X + (X ==> Y)) ==> X))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 14 (sos_01) } 3.65/3.90 (X + (X ==> ((X + (X ==> Y)) + ((X + (X ==> Y)) ==> X)))) >= (Y + (Y ==> X)) 3.65/3.90 = { by axiom 16 (sos_12) } 3.65/3.90 (X + (X ==> (X + (X ==> (Y + (Y ==> X)))))) >= (Y + (Y ==> X)) 3.65/3.90 = { by lemma 19 } 3.65/3.90 (X + (X ==> (Y + (Y ==> X)))) >= (Y + (Y ==> X)) 3.65/3.90 = { by lemma 18 } 3.65/3.90 true 3.65/3.90 3.65/3.90 Goal 1 (goals_13): sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17) = sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18). 3.65/3.90 Proof: 3.65/3.90 sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17) 3.65/3.90 = { by axiom 1 (sos_06) } 3.65/3.90 fresh(true, true, sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17), sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)) 3.65/3.90 = { by lemma 20 } 3.65/3.90 fresh((sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17)) >= (sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)), true, sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17), sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)) 3.65/3.90 = { by axiom 11 (sos_06) } 3.65/3.90 fresh2((sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)) >= (sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17)), true, sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17), sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)) 3.65/3.90 = { by lemma 20 } 3.65/3.90 fresh2(true, true, sK1_goals_13_X18 + (sK1_goals_13_X18 ==> sK2_goals_13_X17), sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18)) 3.65/3.90 = { by axiom 2 (sos_06) } 3.65/3.90 sK2_goals_13_X17 + (sK2_goals_13_X17 ==> sK1_goals_13_X18) 3.65/3.90 % SZS output end Proof 3.65/3.90 3.65/3.90 RESULT: Theorem (the conjecture is true). 3.65/3.91 EOF