0.04/0.09 % Problem : theBenchmark.p : TPTP v0.0.0. Released v0.0.0. 0.04/0.10 % Command : twee %s --tstp --casc --quiet --explain-encoding --conditional-encoding if --smaller --drop-non-horn 0.09/0.30 % Computer : n015.cluster.edu 0.09/0.30 % Model : x86_64 x86_64 0.09/0.30 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 0.09/0.30 % Memory : 8042.1875MB 0.09/0.30 % OS : Linux 3.10.0-693.el7.x86_64 0.09/0.30 % CPULimit : 960 0.09/0.30 % WCLimit : 120 0.09/0.30 % DateTime : Thu Jul 2 07:29:15 EDT 2020 0.09/0.30 % CPUTime : 0.15/0.50 % SZS status Theorem 0.15/0.50 0.15/0.50 % SZS output start Proof 0.15/0.50 Take the following subset of the input axioms: 0.15/0.51 fof('DIFF-abs-app', axiom, ![VVar0, VExp0, VExp1, VTyp0, VExp2]: vapp(VExp1, VExp2)!=vabs(VVar0, VTyp0, VExp0)). 0.15/0.51 fof('DIFF-empty-bind', axiom, ![VVar0, VTyp0, VCtx0]: vbind(VVar0, VTyp0, VCtx0)!=vempty). 0.15/0.51 fof('DIFF-noExp-someExp', axiom, ![VExp0]: vnoExp!=vsomeExp(VExp0)). 0.15/0.51 fof('DIFF-noType-someType', axiom, ![VTyp0]: vsomeType(VTyp0)!=vnoType). 0.15/0.51 fof('DIFF-var-abs', axiom, ![VVar0, VExp0, VTyp0, VVar1]: vabs(VVar1, VTyp0, VExp0)!=vvar(VVar0)). 0.15/0.51 fof('DIFF-var-app', axiom, ![VVar0, VExp0, VExp1]: vapp(VExp0, VExp1)!=vvar(VVar0)). 0.15/0.51 fof('fresh-unequal-var-3', conjecture, ![Ve, Ve1, Vx, Vfresh]: (Vfresh!=Vx <= vgensym(vapp(vapp(Ve, Ve1), vvar(Vx)))=Vfresh)). 0.15/0.51 fof('gensym-is-fresh', axiom, ![Ve, Vv]: (~visFreeVar(Vv, Ve) <= vgensym(Ve)=Vv)). 0.15/0.51 fof('reduce-INV', axiom, ![VExp0, RESULT]: ((?[Ve1, Ve2, Ve1red]: (RESULT=vsomeExp(vapp(vgetSomeExp(Ve1red), Ve2)) & (vreduce(Ve1)=Ve1red & (VExp0=vapp(Ve1, Ve2) & (![VVx0, VVS0, VVe10]: vabs(VVx0, VVS0, VVe10)!=Ve1 & visSomeExp(Ve1red))))) | (?[Ve1, Ve2, Vx, VS, Ve2red]: (vnoExp=RESULT & (~visSomeExp(Ve2red) & (Ve2red=vreduce(Ve2) & (~visValue(Ve2) & VExp0=vapp(vabs(Vx, VS, Ve1), Ve2))))) | (?[Vx]: (vvar(Vx)=VExp0 & vnoExp=RESULT) | (?[Ve1, Ve2, Vx, VS, Ve2red]: (~visSomeExp(Ve2red) & (visValue(Ve2) & (vsomeExp(vsubst(Vx, Ve2, Ve1))=RESULT & (vreduce(Ve2)=Ve2red & VExp0=vapp(vabs(Vx, VS, Ve1), Ve2))))) | (?[Ve1, Ve2, Ve1red]: (vreduce(Ve1)=Ve1red & (vnoExp=RESULT & (~visSomeExp(Ve1red) & (![VVx0, VVS0, VVe10]: Ve1!=vabs(VVx0, VVS0, VVe10) & vapp(Ve1, Ve2)=VExp0)))) | (?[Ve1, Ve2, Vx, VS, Ve2red]: (vreduce(Ve2)=Ve2red & (visSomeExp(Ve2red) & (vsomeExp(vapp(vabs(Vx, VS, Ve1), vgetSomeExp(Ve2red)))=RESULT & vapp(vabs(Vx, VS, Ve1), Ve2)=VExp0))) | ?[Ve, Vx, VS]: (vnoExp=RESULT & VExp0=vabs(Vx, VS, Ve)))))))) <= RESULT=vreduce(VExp0))). 0.15/0.51 fof('subst-INV', axiom, ![VVar0, VExp0, VExp1, RESULT]: ((?[Ve, Ve1, Ve2, Vx]: (VExp1=vapp(Ve1, Ve2) & (Ve=VExp0 & (Vx=VVar0 & RESULT=vapp(vsubst(Vx, Ve, Ve1), vsubst(Vx, Ve, Ve2))))) | (?[VT, Ve, Ve1, Vx, Vy]: (VExp0=Ve & (VVar0=Vx & (Vx=Vy & (vabs(Vy, VT, Ve1)=RESULT & VExp1=vabs(Vy, VT, Ve1))))) | (?[Ve, Vx, Vy]: (RESULT=Ve & (VExp1=vvar(Vy) & (Vx=VVar0 & (VExp0=Ve & Vy=Vx)))) | (?[Ve, Vx, Vy]: (vvar(Vy)=VExp1 & (vvar(Vy)=RESULT & (Vx!=Vy & (VVar0=Vx & VExp0=Ve)))) | (?[VT, Ve, Ve1, Vx, Vy, Vfresh]: (Vy!=Vx & (VVar0=Vx & (VExp0=Ve & (VExp1=vabs(Vy, VT, Ve1) & (RESULT=vsubst(Vx, Ve, vabs(Vfresh, VT, vsubst(Vy, vvar(Vfresh), Ve1))) & (vgensym(vapp(vapp(Ve, Ve1), vvar(Vx)))=Vfresh & visFreeVar(Vy, Ve))))))) | ?[VT, Ve, Ve1, Vx, Vy]: (Ve=VExp0 & (RESULT=vabs(Vy, VT, vsubst(Vx, Ve, Ve1)) & (~visFreeVar(Vy, Ve) & (Vx=VVar0 & (Vx!=Vy & vabs(Vy, VT, Ve1)=VExp1)))))))))) <= vsubst(VVar0, VExp0, VExp1)=RESULT)). 0.15/0.51 fof(isFreeVar0, axiom, ![VVar0, VExp0, Vv, Vx]: ((VVar0=Vv & VExp0=vvar(Vx)) => ((visFreeVar(VVar0, VExp0) => Vx=Vv) & (visFreeVar(VVar0, VExp0) <= Vv=Vx)))). 0.15/0.51 fof(isFreeVar1, axiom, ![VVar0, VExp0, VT, Ve, Vv, Vx]: ((((Vv!=Vx & visFreeVar(Vv, Ve)) => visFreeVar(VVar0, VExp0)) & (visFreeVar(VVar0, VExp0) => (Vx!=Vv & visFreeVar(Vv, Ve)))) <= (Vv=VVar0 & VExp0=vabs(Vx, VT, Ve)))). 0.15/0.51 fof(isFreeVar2, axiom, ![VVar0, VExp0, Ve1, Ve2, Vv]: ((((visFreeVar(Vv, Ve1) | visFreeVar(Vv, Ve2)) => visFreeVar(VVar0, VExp0)) & (visFreeVar(VVar0, VExp0) => (visFreeVar(Vv, Ve2) | visFreeVar(Vv, Ve1)))) <= (VExp0=vapp(Ve1, Ve2) & Vv=VVar0))). 0.15/0.51 fof(isSomeExp0, axiom, ![VOptExp0]: (VOptExp0=vnoExp => ~visSomeExp(VOptExp0))). 0.15/0.51 fof(isSomeType0, axiom, ![VOptTyp0]: (vnoType=VOptTyp0 => ~visSomeType(VOptTyp0))). 0.15/0.51 fof(isValue1, axiom, ![VExp0, Vx]: (VExp0=vvar(Vx) => ~visValue(VExp0))). 0.15/0.51 fof(isValue2, axiom, ![VExp0, Ve1, Ve2]: (vapp(Ve1, Ve2)=VExp0 => ~visValue(VExp0))). 0.15/0.51 0.15/0.51 Now clausify the problem and encode Horn clauses using encoding 3 of 0.15/0.51 http://www.cse.chalmers.se/~nicsma/papers/horn.pdf. 0.15/0.51 We repeatedly replace C & s=t => u=v by the two clauses: 0.15/0.51 fresh(y, y, x1...xn) = u 0.15/0.51 C => fresh(s, t, x1...xn) = v 0.15/0.51 where fresh is a fresh function symbol and x1..xn are the free 0.15/0.51 variables of u and v. 0.15/0.51 A predicate p(X) is encoded as p(X)=true (this is sound, because the 0.15/0.51 input problem has no model of domain size 1). 0.15/0.51 0.15/0.51 The encoding turns the above axioms into the following unit equations and goals: 0.15/0.51 0.15/0.51 Axiom 1 (isFreeVar0): fresh74(X, X, Y, Z) = true2. 0.15/0.51 Axiom 2 (isFreeVar2_2): fresh69(X, X, Y, Z, W, V) = visFreeVar(Y, Z). 0.15/0.51 Axiom 3 (isFreeVar2_2): fresh68(X, X, Y, Z) = true2. 0.15/0.51 Axiom 4 (isFreeVar2_2): fresh69(visFreeVar(X, Y), true2, X, Z, W, Y) = fresh68(Z, vapp(W, Y), X, Z). 0.15/0.51 Axiom 5 (isFreeVar0): fresh74(X, vvar(Y), X, Y) = visFreeVar(Y, X). 0.15/0.51 Axiom 6 (fresh-unequal-var-3): vgensym(vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx))) = sK3_fresh-unequal-var-3_Vfresh. 0.15/0.51 Axiom 7 (fresh-unequal-var-3_1): sK3_fresh-unequal-var-3_Vfresh = sK4_fresh-unequal-var-3_Vx. 0.15/0.51 0.15/0.51 Goal 1 (gensym-is-fresh): tuple2(vgensym(X), visFreeVar(Y, X)) = tuple2(Y, true2). 0.15/0.51 The goal is true when: 0.15/0.51 X = vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)) 0.15/0.51 Y = sK4_fresh-unequal-var-3_Vx 0.15/0.51 0.15/0.51 Proof: 0.15/0.51 tuple2(vgensym(vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx))), visFreeVar(sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)))) 0.15/0.51 = { by axiom 6 (fresh-unequal-var-3) } 0.15/0.51 tuple2(sK3_fresh-unequal-var-3_Vfresh, visFreeVar(sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)))) 0.15/0.51 = { by axiom 7 (fresh-unequal-var-3_1) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, visFreeVar(sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)))) 0.15/0.51 = { by axiom 2 (isFreeVar2_2) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, fresh69(true2, true2, sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)), vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx))) 0.15/0.51 = { by axiom 1 (isFreeVar0) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, fresh69(fresh74(vvar(sK4_fresh-unequal-var-3_Vx), vvar(sK4_fresh-unequal-var-3_Vx), vvar(sK4_fresh-unequal-var-3_Vx), sK4_fresh-unequal-var-3_Vx), true2, sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)), vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx))) 0.15/0.51 = { by axiom 5 (isFreeVar0) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, fresh69(visFreeVar(sK4_fresh-unequal-var-3_Vx, vvar(sK4_fresh-unequal-var-3_Vx)), true2, sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)), vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx))) 0.15/0.51 = { by axiom 4 (isFreeVar2_2) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, fresh68(vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)), vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)), sK4_fresh-unequal-var-3_Vx, vapp(vapp(sK2_fresh-unequal-var-3_Ve, sK1_fresh-unequal-var-3_Ve1), vvar(sK4_fresh-unequal-var-3_Vx)))) 0.15/0.51 = { by axiom 3 (isFreeVar2_2) } 0.15/0.51 tuple2(sK4_fresh-unequal-var-3_Vx, true2) 0.15/0.51 % SZS output end Proof 0.15/0.51 0.15/0.51 RESULT: Theorem (the conjecture is true). 0.15/0.52 EOF