0.12/0.12 % Problem : theBenchmark.p : TPTP v0.0.0. Released v0.0.0. 0.12/0.13 % Command : parallel-twee %s --tstp --conditional-encoding if --smaller --drop-non-horn --give-up-on-saturation --explain-encoding --formal-proof 0.13/0.34 % Computer : n004.cluster.edu 0.13/0.34 % Model : x86_64 x86_64 0.13/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 0.13/0.34 % Memory : 8042.1875MB 0.13/0.34 % OS : Linux 3.10.0-693.el7.x86_64 0.13/0.34 % CPULimit : 1200 0.13/0.34 % WCLimit : 120 0.13/0.34 % DateTime : Wed Jul 14 13:07:24 EDT 2021 0.13/0.35 % CPUTime : 8.42/1.42 % SZS status Theorem 8.42/1.42 8.42/1.43 % SZS output start Proof 8.42/1.43 Take the following subset of the input axioms: 8.42/1.43 fof(ax1, axiom, ![U]: (![V]: (ssItem(V) => (neq(U, V) <=> U!=V)) <= ssItem(U))). 8.42/1.43 fof(ax13, axiom, ![U]: ((duplicatefreeP(U) <=> ![V]: (![W]: (![X]: (ssList(X) => ![Y]: (ssList(Y) => ![Z]: (ssList(Z) => (W!=V <= app(app(X, cons(V, Y)), cons(W, Z))=U)))) <= ssItem(W)) <= ssItem(V))) <= ssList(U))). 8.42/1.43 fof(ax15, axiom, ![U]: (![V]: ((U!=V <=> neq(U, V)) <= ssList(V)) <= ssList(U))). 8.42/1.43 fof(ax17, axiom, ssList(nil)). 8.42/1.43 fof(ax18, axiom, ![U]: (ssList(U) => ![V]: (U!=cons(V, U) <= ssItem(V)))). 8.42/1.43 fof(ax21, axiom, ![U]: (ssList(U) => ![V]: (nil!=cons(V, U) <= ssItem(V)))). 8.42/1.43 fof(ax33, axiom, ![U]: (![V]: ((lt(U, V) => ~lt(V, U)) <= ssItem(V)) <= ssItem(U))). 8.42/1.43 fof(ax38, axiom, ![U]: (~memberP(nil, U) <= ssItem(U))). 8.42/1.43 fof(ax5, axiom, ![U]: (ssList(U) => ![V]: (ssList(V) => (?[W]: (ssList(W) & app(V, W)=U) <=> frontsegP(U, V))))). 8.42/1.43 fof(ax8, axiom, ![U]: ((cyclefreeP(U) <=> ![V]: (ssItem(V) => ![W]: (![X]: (![Y]: (![Z]: (ssList(Z) => (~(leq(V, W) & leq(W, V)) <= app(app(X, cons(V, Y)), cons(W, Z))=U)) <= ssList(Y)) <= ssList(X)) <= ssItem(W)))) <= ssList(U))). 8.42/1.43 fof(ax84, axiom, ![U]: (ssList(U) => app(U, nil)=U)). 8.42/1.43 fof(ax90, axiom, ![U]: (ssItem(U) => ~lt(U, U))). 8.42/1.43 fof(ax93, axiom, ![U]: (![V]: (((leq(U, V) & V!=U) <=> lt(U, V)) <= ssItem(V)) <= ssItem(U))). 8.42/1.44 fof(ax94, axiom, ![U]: (ssItem(U) => ![V]: (ssItem(V) => (~gt(V, U) <= gt(U, V))))). 8.42/1.44 fof(co1, conjecture, ![U]: (![V]: (ssList(V) => ![W]: (ssList(W) => ![X]: (ssList(X) => (X!=V | (W!=U | (~frontsegP(X, W) | (~equalelemsP(W) | (?[Y]: (?[Z]: (?[X1]: (ssList(X1) & (U=app(Y, X1) & V=app(app(Y, Z), X1))) & ssList(Z)) & ssList(Y)) | ?[X2]: (ssList(X2) & (segmentP(X2, W) & (equalelemsP(X2) & (frontsegP(X, X2) & neq(W, X2))))))))))))) <= ssList(U))). 8.42/1.44 8.42/1.44 Now clausify the problem and encode Horn clauses using encoding 3 of 8.42/1.44 http://www.cse.chalmers.se/~nicsma/papers/horn.pdf. 8.42/1.44 We repeatedly replace C & s=t => u=v by the two clauses: 8.42/1.44 fresh(y, y, x1...xn) = u 8.42/1.44 C => fresh(s, t, x1...xn) = v 8.42/1.44 where fresh is a fresh function symbol and x1..xn are the free 8.42/1.44 variables of u and v. 8.42/1.44 A predicate p(X) is encoded as p(X)=true (this is sound, because the 8.42/1.44 input problem has no model of domain size 1). 8.42/1.44 8.42/1.44 The encoding turns the above axioms into the following unit equations and goals: 8.42/1.44 8.42/1.44 Axiom 1 (co1): w = u. 8.42/1.44 Axiom 2 (co1_1): x = v. 8.42/1.44 Axiom 3 (ax17): ssList(nil) = true2. 8.42/1.44 Axiom 4 (co1_4): ssList(w) = true2. 8.42/1.44 Axiom 5 (co1_5): ssList(x) = true2. 8.42/1.44 Axiom 6 (co1_7): frontsegP(x, w) = true2. 8.42/1.44 Axiom 7 (ax84): fresh3(X, X, Y) = Y. 8.42/1.44 Axiom 8 (ax5_2): fresh259(X, X, Y, Z) = true2. 8.42/1.44 Axiom 9 (ax5_1): fresh257(X, X, Y, Z) = Y. 8.42/1.44 Axiom 10 (ax5_1): fresh39(X, X, Y, Z) = app(Z, w9(Y, Z)). 8.42/1.44 Axiom 11 (ax5_2): fresh38(X, X, Y, Z) = ssList(w9(Y, Z)). 8.42/1.44 Axiom 12 (ax84): fresh3(ssList(X), true2, X) = app(X, nil). 8.42/1.44 Axiom 13 (ax5_2): fresh258(X, X, Y, Z) = fresh259(ssList(Y), true2, Y, Z). 8.42/1.44 Axiom 14 (ax5_1): fresh256(X, X, Y, Z) = fresh257(ssList(Y), true2, Y, Z). 8.42/1.44 Axiom 15 (ax5_2): fresh258(frontsegP(X, Y), true2, X, Y) = fresh38(ssList(Y), true2, X, Y). 8.42/1.44 Axiom 16 (ax5_1): fresh256(frontsegP(X, Y), true2, X, Y) = fresh39(ssList(Y), true2, X, Y). 8.42/1.44 8.42/1.44 Goal 1 (co1_8): tuple7(u, v, ssList(X), ssList(Y), ssList(Z)) = tuple7(app(X, Z), app(app(X, Y), Z), true2, true2, true2). 8.42/1.44 The goal is true when: 8.42/1.44 X = w 8.42/1.44 Y = w9(x, w) 8.42/1.44 Z = nil 8.42/1.44 8.42/1.44 Proof: 8.42/1.44 tuple7(u, v, ssList(w), ssList(w9(x, w)), ssList(nil)) 8.42/1.44 = { by axiom 1 (co1) R->L } 8.42/1.44 tuple7(w, v, ssList(w), ssList(w9(x, w)), ssList(nil)) 8.42/1.44 = { by axiom 2 (co1_1) R->L } 8.42/1.44 tuple7(w, x, ssList(w), ssList(w9(x, w)), ssList(nil)) 8.42/1.44 = { by axiom 3 (ax17) } 8.42/1.44 tuple7(w, x, ssList(w), ssList(w9(x, w)), true2) 8.42/1.44 = { by axiom 4 (co1_4) } 8.42/1.44 tuple7(w, x, true2, ssList(w9(x, w)), true2) 8.42/1.44 = { by axiom 11 (ax5_2) R->L } 8.42/1.44 tuple7(w, x, true2, fresh38(true2, true2, x, w), true2) 8.42/1.44 = { by axiom 4 (co1_4) R->L } 8.42/1.44 tuple7(w, x, true2, fresh38(ssList(w), true2, x, w), true2) 8.42/1.44 = { by axiom 15 (ax5_2) R->L } 8.42/1.44 tuple7(w, x, true2, fresh258(frontsegP(x, w), true2, x, w), true2) 8.42/1.44 = { by axiom 6 (co1_7) } 8.42/1.44 tuple7(w, x, true2, fresh258(true2, true2, x, w), true2) 8.42/1.44 = { by axiom 13 (ax5_2) } 8.42/1.44 tuple7(w, x, true2, fresh259(ssList(x), true2, x, w), true2) 8.42/1.44 = { by axiom 5 (co1_5) } 8.42/1.44 tuple7(w, x, true2, fresh259(true2, true2, x, w), true2) 8.42/1.44 = { by axiom 8 (ax5_2) } 8.42/1.44 tuple7(w, x, true2, true2, true2) 8.42/1.44 = { by axiom 7 (ax84) R->L } 8.42/1.44 tuple7(w, fresh3(true2, true2, x), true2, true2, true2) 8.42/1.44 = { by axiom 5 (co1_5) R->L } 8.42/1.44 tuple7(w, fresh3(ssList(x), true2, x), true2, true2, true2) 8.42/1.44 = { by axiom 12 (ax84) } 8.42/1.44 tuple7(w, app(x, nil), true2, true2, true2) 8.42/1.44 = { by axiom 7 (ax84) R->L } 8.42/1.44 tuple7(fresh3(true2, true2, w), app(x, nil), true2, true2, true2) 8.42/1.44 = { by axiom 4 (co1_4) R->L } 8.42/1.44 tuple7(fresh3(ssList(w), true2, w), app(x, nil), true2, true2, true2) 8.42/1.44 = { by axiom 12 (ax84) } 8.42/1.44 tuple7(app(w, nil), app(x, nil), true2, true2, true2) 8.42/1.44 = { by axiom 9 (ax5_1) R->L } 8.42/1.44 tuple7(app(w, nil), app(fresh257(true2, true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 5 (co1_5) R->L } 8.42/1.44 tuple7(app(w, nil), app(fresh257(ssList(x), true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 14 (ax5_1) R->L } 8.42/1.44 tuple7(app(w, nil), app(fresh256(true2, true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 6 (co1_7) R->L } 8.42/1.44 tuple7(app(w, nil), app(fresh256(frontsegP(x, w), true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 16 (ax5_1) } 8.42/1.44 tuple7(app(w, nil), app(fresh39(ssList(w), true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 4 (co1_4) } 8.42/1.44 tuple7(app(w, nil), app(fresh39(true2, true2, x, w), nil), true2, true2, true2) 8.42/1.44 = { by axiom 10 (ax5_1) } 8.42/1.44 tuple7(app(w, nil), app(app(w, w9(x, w)), nil), true2, true2, true2) 8.42/1.44 % SZS output end Proof 8.42/1.44 8.42/1.44 RESULT: Theorem (the conjecture is true). 8.42/1.45 EOF