%------------------------------------------------------------------------------ % File : cvc5---1.3.4 % Problem : KLE030+1 : TPTP v9.2.1. Released v4.0.0. % Transfm : none % Format : tptp:raw % Command : /export/starexec/sandbox2/solver/bin/do_cvc5 /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM % Computer : n008.cluster.edu % Model : x86_64 x86_64 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz % Memory : 8042.1875MB % OS : Linux 3.10.0-693.el7.x86_64 % CPULimit : 300s % WCLimit : 300s % DateTime : Wed Jun 3 08:28:09 AM UTC 2026 % Result : Theorem 155.54s 155.80s % Output : Proof 155.54s % Verified : % SZS Type : - % Comments : %------------------------------------------------------------------------------ %----WARNING: Could not form TPTP format derivation %------------------------------------------------------------------------------ %----ORIGINAL SYSTEM OUTPUT % 0.00/0.12 % Problem : KLE030+1 : TPTP v9.2.1. Released v4.0.0. % 0.12/0.13 % Command : /export/starexec/sandbox2/solver/bin/do_cvc5 /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM % 0.17/0.34 % Computer : n008.cluster.edu % 0.17/0.34 % Model : x86_64 x86_64 % 0.17/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz % 0.17/0.34 % Memory : 8042.1875MB % 0.17/0.34 % OS : Linux 3.10.0-693.el7.x86_64 % 0.17/0.34 % CPULimit : 300 % 0.17/0.34 % WCLimit : 300 % 0.17/0.34 % DateTime : Tue Jun 2 05:10:48 EDT 2026 % 0.17/0.34 % CPUTime : % 0.33/0.50 %----Proving TF0_NAR, FOF, or CNF % 155.54/155.80 --- Run --decision=internal --simplification=none --no-inst-no-entail --no-cbqi --full-saturate-quant at 15... % 155.54/155.80 --- Run --no-e-matching --full-saturate-quant at 6... % 155.54/155.80 --- Run --no-e-matching --enum-inst-sum --full-saturate-quant at 6... % 155.54/155.80 --- Run --finite-model-find --uf-ss=no-minimal at 6... % 155.54/155.80 --- Run --multi-trigger-when-single --full-saturate-quant at 30... % 155.54/155.80 --- Run --trigger-sel=max --full-saturate-quant at 15... % 155.54/155.80 --- Run --multi-trigger-when-single --multi-trigger-priority --full-saturate-quant at 33... % 155.54/155.80 --- Run --multi-trigger-cache --full-saturate-quant at 15... % 155.54/155.80 --- Run --prenex-quant=none --full-saturate-quant at 30... % 155.54/155.80 % SZS status Theorem % 155.54/155.80 % SZS output start Proof % 155.54/155.80 ( % 155.54/155.80 (declare-sort $$unsorted 0) % 155.54/155.80 (declare-const tptp.ismeetu (-> $$unsorted $$unsorted $$unsorted Bool)) % 155.54/155.80 (declare-const tptp.ismeet (-> $$unsorted $$unsorted $$unsorted Bool)) % 155.54/155.80 (declare-const tptp.c (-> $$unsorted $$unsorted)) % 155.54/155.80 (declare-const tptp.test (-> $$unsorted Bool)) % 155.54/155.80 (declare-const tptp.complement (-> $$unsorted $$unsorted Bool)) % 155.54/155.80 (declare-const tptp.multiplication (-> $$unsorted $$unsorted $$unsorted)) % 155.54/155.80 (declare-const tptp.leq (-> $$unsorted $$unsorted Bool)) % 155.54/155.80 (declare-const tptp.zero $$unsorted) % 155.54/155.80 (declare-const tptp.one $$unsorted) % 155.54/155.80 (declare-const tptp.addition (-> $$unsorted $$unsorted $$unsorted)) % 155.54/155.80 (define @t1 () (@var "A" $$unsorted)) % 155.54/155.80 (define @t2 () (@var "B" $$unsorted)) % 155.54/155.80 (define @t3 () (tptp.addition @t1 @t2)) % 155.54/155.80 (define @t4 () (@list @t1 @t2)) % 155.54/155.80 (define @t5 () (@var "C" $$unsorted)) % 155.54/155.80 (define @t6 () (tptp.addition @t2 @t5)) % 155.54/155.80 (define @t7 () (tptp.addition @t1 tptp.zero)) % 155.54/155.80 (define @t8 () (@list @t1)) % 155.54/155.80 (define @t9 () (forall @t8 (= @t7 @t1))) % 155.54/155.80 (define @t10 () (tptp.addition @t1 @t1)) % 155.54/155.80 (define @t11 () (forall @t8 (= @t10 @t1))) % 155.54/155.80 (define @t12 () (tptp.multiplication @t1 @t2)) % 155.54/155.80 (define @t13 () (tptp.multiplication @t2 @t5)) % 155.54/155.80 (define @t14 () (@list @t1 @t2 @t5)) % 155.54/155.80 (define @t15 () (tptp.multiplication tptp.one @t1)) % 155.54/155.80 (define @t16 () (forall @t8 (= @t15 @t1))) % 155.54/155.80 (define @t17 () (tptp.multiplication @t1 @t5)) % 155.54/155.80 (define @t18 () (tptp.multiplication tptp.zero @t1)) % 155.54/155.80 (define @t19 () (forall @t8 (= @t18 tptp.zero))) % 155.54/155.80 (define @t20 () (tptp.leq @t1 @t2)) % 155.54/155.80 (define @t21 () (= @t20 (= @t3 @t2))) % 155.54/155.80 (define @t22 () (forall @t4 @t21)) % 155.54/155.80 (define @t23 () (@var "X0" $$unsorted)) % 155.54/155.80 (define @t24 () (@var "X1" $$unsorted)) % 155.54/155.80 (define @t25 () (tptp.complement @t24 @t23)) % 155.54/155.80 (define @t26 () (@list @t24)) % 155.54/155.80 (define @t27 () (exists @t26 @t25)) % 155.54/155.80 (define @t28 () (tptp.test @t23)) % 155.54/155.80 (define @t29 () (= @t28 @t27)) % 155.54/155.80 (define @t30 () (@list @t23)) % 155.54/155.80 (define @t31 () (forall @t30 @t29)) % 155.54/155.80 (define @t32 () (tptp.addition @t23 @t24)) % 155.54/155.80 (define @t33 () (tptp.multiplication @t24 @t23)) % 155.54/155.80 (define @t34 () (tptp.multiplication @t23 @t24)) % 155.54/155.80 (define @t35 () (and (= @t34 tptp.zero) (= @t33 tptp.zero) (= @t32 tptp.one))) % 155.54/155.80 (define @t36 () (= @t25 @t35)) % 155.54/155.80 (define @t37 () (@list @t23 @t24)) % 155.54/155.80 (define @t38 () (forall @t37 @t36)) % 155.54/155.80 (define @t39 () (tptp.c @t23)) % 155.54/155.80 (define @t40 () (@var "X2" $$unsorted)) % 155.54/155.80 (define @t41 () (@var "X3" $$unsorted)) % 155.54/155.80 (define @t42 () (tptp.leq @t41 @t40)) % 155.54/155.80 (define @t43 () (tptp.leq @t41 @t24)) % 155.54/155.80 (define @t44 () (tptp.leq @t41 @t23)) % 155.54/155.80 (define @t45 () (and @t44 @t43)) % 155.54/155.80 (define @t46 () (@list @t41)) % 155.54/155.80 (define @t47 () (forall @t46 (=> @t45 @t42))) % 155.54/155.80 (define @t48 () (tptp.leq @t40 @t24)) % 155.54/155.80 (define @t49 () (tptp.leq @t40 @t23)) % 155.54/155.80 (define @t50 () (and @t49 @t48 @t47)) % 155.54/155.80 (define @t51 () (tptp.ismeet @t40 @t23 @t24)) % 155.54/155.80 (define @t52 () (= @t51 @t50)) % 155.54/155.80 (define @t53 () (@list @t23 @t24 @t40)) % 155.54/155.80 (define @t54 () (forall @t53 @t52)) % 155.54/155.80 (define @t55 () (tptp.ismeet (tptp.multiplication @t41 @t23) (tptp.multiplication @t41 @t24) @t40)) % 155.54/155.80 (define @t56 () (tptp.ismeet @t23 @t24 @t40)) % 155.54/155.80 (define @t57 () (tptp.test @t41)) % 155.54/155.80 (define @t58 () (and @t57 @t56)) % 155.54/155.80 (define @t59 () (@list @t23 @t24 @t40 @t41)) % 155.54/155.80 (define @t60 () (forall @t59 (=> @t58 @t55))) % 155.54/155.80 (define @t61 () (not @t60)) % 155.54/155.80 (define @t62 () (not @t56)) % 155.54/155.80 (define @t63 () (not @t57)) % 155.54/155.80 (define @t64 () (or @t63 @t62 @t55)) % 155.54/155.80 (define @t65 () (forall @t59 @t64)) % 155.54/155.80 (define @t66 () (@quantifiers_skolemize @t65 3)) % 155.54/155.80 (define @t67 () (forall @t26 (not (tptp.complement @t24 @t66)))) % 155.54/155.80 (define @t68 () (@quantifiers_skolemize @t67 0)) % 155.54/155.80 (define @t69 () (@list @t66)) % 155.54/155.80 (define @t70 () (tptp.test @t66)) % 155.54/155.80 (define @t71 () (@quantifiers_skolemize @t65 2)) % 155.54/155.80 (define @t72 () (@quantifiers_skolemize @t65 1)) % 155.54/155.80 (define @t73 () (tptp.multiplication @t66 @t72)) % 155.54/155.80 (define @t74 () (@quantifiers_skolemize @t65 0)) % 155.54/155.80 (define @t75 () (tptp.multiplication @t66 @t74)) % 155.54/155.80 (define @t76 () (tptp.ismeet @t75 @t73 @t71)) % 155.54/155.80 (define @t77 () (tptp.ismeet @t74 @t72 @t71)) % 155.54/155.80 (define @t78 () (not @t77)) % 155.54/155.80 (define @t79 () (not @t70)) % 155.54/155.80 (define @t80 () (or @t79 @t78 @t76)) % 155.54/155.80 (define @t81 () (@list true)) % 155.54/155.80 (define @t82 () (@list @t80)) % 155.54/155.80 (define @t83 () (not @t67)) % 155.54/155.80 (define @t84 () (= @t70 @t83)) % 155.54/155.80 (define @t85 () (@list false false)) % 155.54/155.80 (define @t86 () (tptp.complement @t68 @t66)) % 155.54/155.80 (define @t87 () (not @t86)) % 155.54/155.80 (define @t88 () (not @t87)) % 155.54/155.80 (define @t89 () (tptp.addition @t66 @t68)) % 155.54/155.80 (define @t90 () (= tptp.one @t89)) % 155.54/155.80 (define @t91 () (tptp.multiplication @t68 @t66)) % 155.54/155.80 (define @t92 () (= tptp.zero @t91)) % 155.54/155.80 (define @t93 () (tptp.multiplication @t66 @t68)) % 155.54/155.80 (define @t94 () (= tptp.zero @t93)) % 155.54/155.80 (define @t95 () (and @t94 @t92 @t90)) % 155.54/155.80 (define @t96 () (= @t86 @t95)) % 155.54/155.80 (define @t97 () (not @t95)) % 155.54/155.80 (define @t98 () (@list false)) % 155.54/155.80 (define @t99 () (@list @t95)) % 155.54/155.80 (define @t100 () (@list @t72)) % 155.54/155.80 (define @t101 () (not (tptp.leq @t41 @t71))) % 155.54/155.80 (define @t102 () (forall @t46 (or (not (tptp.leq @t41 @t73)) @t101 (tptp.leq @t41 @t75)))) % 155.54/155.80 (define @t103 () (@quantifiers_skolemize @t102 0)) % 155.54/155.80 (define @t104 () (@list @t103 @t75)) % 155.54/155.80 (define @t105 () (tptp.multiplication @t68 @t103)) % 155.54/155.80 (define @t106 () (@list @t103)) % 155.54/155.80 (define @t107 () (tptp.multiplication @t66 @t103)) % 155.54/155.80 (define @t108 () (not @t43)) % 155.54/155.80 (define @t109 () (not @t44)) % 155.54/155.80 (define @t110 () (forall @t46 (or (not (tptp.leq @t41 @t72)) @t101 (tptp.leq @t41 @t74)))) % 155.54/155.80 (define @t111 () (tptp.leq @t74 @t71)) % 155.54/155.80 (define @t112 () (tptp.leq @t74 @t72)) % 155.54/155.80 (define @t113 () (and @t112 @t111 @t110)) % 155.54/155.80 (define @t114 () (= @t77 @t113)) % 155.54/155.80 (define @t115 () (not @t113)) % 155.54/155.80 (define @t116 () (@list @t113)) % 155.54/155.80 (define @t117 () (tptp.addition @t74 @t71)) % 155.54/155.80 (define @t118 () (= @t71 @t117)) % 155.54/155.80 (define @t119 () (= @t111 @t118)) % 155.54/155.80 (define @t120 () (tptp.multiplication @t68 @t74)) % 155.54/155.80 (define @t121 () (tptp.addition @t75 @t120)) % 155.54/155.80 (define @t122 () (= @t71 (tptp.addition @t75 @t71))) % 155.54/155.80 (define @t123 () (tptp.leq @t75 @t71)) % 155.54/155.80 (define @t124 () (= @t123 @t122)) % 155.54/155.80 (define @t125 () (= @t72 (tptp.addition @t74 @t72))) % 155.54/155.80 (define @t126 () (= @t112 @t125)) % 155.54/155.80 (define @t127 () (= @t73 (tptp.addition @t75 @t73))) % 155.54/155.80 (define @t128 () (tptp.leq @t75 @t73)) % 155.54/155.80 (define @t129 () (= @t128 @t127)) % 155.54/155.80 (define @t130 () (and @t128 @t123 @t102)) % 155.54/155.80 (define @t131 () (= @t76 @t130)) % 155.54/155.80 (define @t132 () (not @t130)) % 155.54/155.80 (define @t133 () (@list true false)) % 155.54/155.80 (define @t134 () (tptp.leq @t103 @t73)) % 155.54/155.80 (define @t135 () (tptp.leq @t103 @t75)) % 155.54/155.80 (define @t136 () (tptp.leq @t103 @t71)) % 155.54/155.80 (define @t137 () (not @t136)) % 155.54/155.80 (define @t138 () (not @t134)) % 155.54/155.80 (define @t139 () (or @t138 @t137 @t135)) % 155.54/155.80 (define @t140 () (@list @t139)) % 155.54/155.80 (define @t141 () (tptp.addition @t103 @t73)) % 155.54/155.80 (define @t142 () (= @t73 @t141)) % 155.54/155.80 (define @t143 () (= @t134 @t142)) % 155.54/155.80 (define @t144 () (tptp.addition @t103 @t75)) % 155.54/155.80 (define @t145 () (= @t75 @t144)) % 155.54/155.80 (define @t146 () (= @t135 @t145)) % 155.54/155.80 (define @t147 () (not @t145)) % 155.54/155.80 (define @t148 () (tptp.multiplication tptp.one @t72)) % 155.54/155.80 (define @t149 () (tptp.addition @t73 @t72)) % 155.54/155.80 (define @t150 () (= @t72 (tptp.addition @t103 @t72))) % 155.54/155.80 (define @t151 () (tptp.leq @t103 @t72)) % 155.54/155.80 (define @t152 () (= @t151 @t150)) % 155.54/155.80 (define @t153 () (tptp.leq @t103 @t74)) % 155.54/155.80 (define @t154 () (not @t151)) % 155.54/155.80 (define @t155 () (or @t154 @t137 @t153)) % 155.54/155.80 (define @t156 () (tptp.addition @t103 @t74)) % 155.54/155.80 (define @t157 () (= @t74 @t156)) % 155.54/155.80 (define @t158 () (= @t153 @t157)) % 155.54/155.80 (define @t159 () (= tptp.zero (tptp.multiplication tptp.zero @t72))) % 155.54/155.80 (define @t160 () (tptp.multiplication @t91 @t72)) % 155.54/155.80 (define @t161 () (tptp.multiplication @t68 @t73)) % 155.54/155.80 (define @t162 () (= @t161 @t160)) % 155.54/155.80 (define @t163 () (tptp.addition @t105 @t161)) % 155.54/155.80 (define @t164 () (= (tptp.multiplication @t68 @t141) @t163)) % 155.54/155.80 (define @t165 () (= @t144 (tptp.addition @t75 @t103))) % 155.54/155.80 (define @t166 () (= @t105 (tptp.addition @t105 tptp.zero))) % 155.54/155.80 (define @t167 () (= @t103 (tptp.multiplication tptp.one @t103))) % 155.54/155.80 (define @t168 () (tptp.addition @t74 @t103)) % 155.54/155.80 (define @t169 () (= @t168 @t156)) % 155.54/155.80 (define @t170 () (tptp.addition @t75 @t107)) % 155.54/155.80 (define @t171 () (= (tptp.multiplication @t66 @t168) @t170)) % 155.54/155.80 (define @t172 () (= @t107 (tptp.addition @t107 tptp.zero))) % 155.54/155.80 (define @t173 () (tptp.multiplication @t89 @t103)) % 155.54/155.80 (define @t174 () (= @t173 (tptp.addition @t107 @t105))) % 155.54/155.80 (define @t175 () (tptp.addition @t107 @t93)) % 155.54/155.80 (define @t176 () (and @t94 @t92 @t90 @t159 @t162 @t142 @t164 @t165 @t166 @t167 @t169 @t157 @t171 @t172 @t174)) % 155.54/155.80 (assume @p1 (forall @t4 (= @t3 (tptp.addition @t2 @t1)))) % 155.54/155.80 (assume @p2 (forall (@list @t5 @t2 @t1) (= (tptp.addition @t1 @t6) (tptp.addition @t3 @t5)))) % 155.54/155.80 (assume @p3 @t9) % 155.54/155.80 (assume @p4 @t11) % 155.54/155.80 (assume @p5 (forall @t14 (= (tptp.multiplication @t1 @t13) (tptp.multiplication @t12 @t5)))) % 155.54/155.80 (assume @p6 (forall @t8 (= (tptp.multiplication @t1 tptp.one) @t1))) % 155.54/155.80 (assume @p7 @t16) % 155.54/155.80 (assume @p8 (forall @t14 (= (tptp.multiplication @t1 @t6) (tptp.addition @t12 @t17)))) % 155.54/155.80 (assume @p9 (forall @t14 (= (tptp.multiplication @t3 @t5) (tptp.addition @t17 @t13)))) % 155.54/155.80 (assume @p10 (forall @t8 (= (tptp.multiplication @t1 tptp.zero) tptp.zero))) % 155.54/155.80 (assume @p11 @t19) % 155.54/155.80 (assume @p12 @t22) % 155.54/155.80 (assume @p13 @t31) % 155.54/155.80 (assume @p14 @t38) % 155.54/155.80 (assume @p15 (forall @t37 (=> @t28 (= (= @t39 @t24) (tptp.complement @t23 @t24))))) % 155.54/155.80 (assume @p16 (forall @t30 (=> (not @t28) (= @t39 tptp.zero)))) % 155.54/155.80 (assume @p17 @t54) % 155.54/155.80 (assume @p18 (forall @t53 (= (tptp.ismeetu @t40 @t23 @t24) (forall @t46 (= @t45 @t42))))) % 155.54/155.80 (assume @p19 @t61) % 155.54/155.80 (assume @p20 true) % 155.54/155.80 (step @p21 :rule eq-symm :args (@t32 tptp.one)) % 155.54/155.80 (step @p22 :rule eq-symm :args (@t33 tptp.zero)) % 155.54/155.80 (step @p23 :rule eq-symm :args (@t34 tptp.zero)) % 155.54/155.80 (step @p24 :rule nary_cong :premises (@p23 @p22 @p21) :args (@t35)) % 155.54/155.80 (step @p25 :rule refl :args (@t25)) % 155.54/155.80 (step @p26 :rule cong :premises (@p25 @p24) :args (@t36)) % 155.54/155.80 (step @p27 :rule cong :premises (@p26) :args (@t38)) % 155.54/155.80 (step @p28 :rule eq_resolve :premises (@p14 @p27)) % 155.54/155.80 (step @p29 :rule instantiate :premises (@p28) :args ((@list @t66 @t68))) % 155.54/155.80 (step @p30 :rule exists-elim :args ((= @t27 (not (forall @t26 (not @t25)))))) % 155.54/155.80 (step @p31 :rule refl :args (@t28)) % 155.54/155.80 (step @p32 :rule cong :premises (@p31 @p30) :args (@t29)) % 155.54/155.80 (step @p33 :rule cong :premises (@p32) :args (@t31)) % 155.54/155.80 (step @p34 :rule eq_resolve :premises (@p13 @p33)) % 155.54/155.80 (step @p35 :rule instantiate :premises (@p34) :args (@t69)) % 155.54/155.80 (step @p36 :rule aci_norm :args ((= (or (or @t63 @t62) @t55) @t64))) % 155.54/155.80 (step @p37 :rule refl :args (@t55)) % 155.54/155.80 (step @p38 :rule bool-and-de-morgan :args (@t57 @t56 true)) % 155.54/155.80 (step @p39 :rule nary_cong :premises (@p38 @p37) :args ((or (not @t58) @t55))) % 155.54/155.80 (step @p40 :rule trans :premises (@p39 @p36)) % 155.54/155.80 (step @p41 :rule bool-impl-elim :args (@t58 @t55)) % 155.54/155.80 (step @p42 :rule trans :premises (@p41 @p40)) % 155.54/155.80 (step @p43 :rule cong :premises (@p42) :args (@t60)) % 155.54/155.80 (step @p44 :rule cong :premises (@p43) :args (@t61)) % 155.54/155.80 (step @p45 :rule eq_resolve :premises (@p19 @p44)) % 155.54/155.80 (step @p46 :rule skolemize :premises (@p45)) % 155.54/155.80 (step @p47 :rule bool-double-not-elim :args (@t70)) % 155.54/155.80 (step @p48 :rule refl :args (@t80)) % 155.54/155.80 (step @p49 :rule nary_cong :premises (@p48 @p47) :args ((or @t80 (not @t79)))) % 155.54/155.80 (step @p50 :rule cnf_or_neg :args (@t80 0)) % 155.54/155.80 (step @p51 :rule eq_resolve :premises (@p50 @p49)) % 155.54/155.80 (step @p52 :rule reordering :premises (@p51) :args ((or @t70 @t80))) % 155.54/155.80 (step @p53 :rule chain_m_resolution :premises (@p52 @p46) :args (@t70 @t81 @t82)) % 155.54/155.80 (step @p54 :rule cnf_equiv_pos1 :args (@t84)) % 155.54/155.80 (step @p55 :rule reordering :premises (@p54) :args ((or @t79 @t83 (not @t84)))) % 155.54/155.80 (step @p56 :rule chain_m_resolution :premises (@p55 @p53 @p35) :args (@t83 @t85 (@list @t70 @t84))) % 155.54/155.80 (step @p57 :rule refl :args (@t86)) % 155.54/155.80 (step @p58 :rule bool-double-not-elim :args (@t67)) % 155.54/155.80 (step @p59 :rule nary_cong :premises (@p58 @p57) :args ((or (not @t83) @t86))) % 155.54/155.80 (step @p60 :rule bool-double-not-elim :args (@t86)) % 155.54/155.80 (step @p61 :rule refl :args (@t83)) % 155.54/155.80 (step @p62 :rule cong :premises (@p61 @p60) :args ((=> @t83 @t88))) % 155.54/155.80 (assume-push @p318 @t83) % 155.54/155.80 (step @p64 :rule skolemize :premises (@p56)) % 155.54/155.80 (step-pop @p319 :rule scope :premises (@p64)) % 155.54/155.80 (step @p65 :rule process_scope :premises (@p319) :args (@t88)) % 155.54/155.80 (step @p67 :rule eq_resolve :premises (@p65 @p62)) % 155.54/155.80 (step @p68 :rule implies_elim :premises (@p67)) % 155.54/155.80 (step @p69 :rule eq_resolve :premises (@p68 @p59)) % 155.54/155.80 (step @p70 :rule chain_m_resolution :premises (@p69 @p56) :args (@t86 @t81 (@list @t67))) % 155.54/155.80 (step @p71 :rule cnf_equiv_pos1 :args (@t96)) % 155.54/155.80 (step @p72 :rule reordering :premises (@p71) :args ((or @t87 @t95 (not @t96)))) % 155.54/155.80 (step @p73 :rule chain_m_resolution :premises (@p72 @p70 @p29) :args (@t95 @t85 (@list @t86 @t96))) % 155.54/155.80 (step @p74 :rule cnf_and_pos :args (@t95 0)) % 155.54/155.80 (step @p75 :rule reordering :premises (@p74) :args ((or @t94 @t97))) % 155.54/155.80 (step @p76 :rule chain_m_resolution :premises (@p75 @p73) :args (@t94 @t98 @t99)) % 155.54/155.80 (step @p77 :rule cnf_and_pos :args (@t95 1)) % 155.54/155.80 (step @p78 :rule reordering :premises (@p77) :args ((or @t92 @t97))) % 155.54/155.80 (step @p79 :rule chain_m_resolution :premises (@p78 @p73) :args (@t92 @t98 @t99)) % 155.54/155.80 (step @p80 :rule cnf_and_pos :args (@t95 2)) % 155.54/155.80 (step @p81 :rule reordering :premises (@p80) :args ((or @t90 @t97))) % 155.54/155.80 (step @p82 :rule chain_m_resolution :premises (@p81 @p73) :args (@t90 @t98 @t99)) % 155.54/155.80 (step @p83 :rule eq-symm :args (@t18 tptp.zero)) % 155.54/155.80 (step @p84 :rule cong :premises (@p83) :args (@t19)) % 155.54/155.80 (step @p85 :rule eq_resolve :premises (@p11 @p84)) % 155.54/155.80 (step @p86 :rule instantiate :premises (@p85) :args (@t100)) % 155.54/155.80 (step @p87 :rule instantiate :premises (@p5) :args ((@list @t68 @t66 @t72))) % 155.54/155.80 (step @p88 :rule instantiate :premises (@p8) :args ((@list @t68 @t103 @t73))) % 155.54/155.80 (step @p89 :rule instantiate :premises (@p1) :args (@t104)) % 155.54/155.80 (step @p90 :rule eq-symm :args (@t7 @t1)) % 155.54/155.80 (step @p91 :rule cong :premises (@p90) :args (@t9)) % 155.54/155.80 (step @p92 :rule eq_resolve :premises (@p3 @p91)) % 155.54/155.80 (step @p93 :rule instantiate :premises (@p92) :args ((@list @t105))) % 155.54/155.80 (step @p94 :rule eq-symm :args (@t15 @t1)) % 155.54/155.80 (step @p95 :rule cong :premises (@p94) :args (@t16)) % 155.54/155.80 (step @p96 :rule eq_resolve :premises (@p7 @p95)) % 155.54/155.80 (step @p97 :rule instantiate :premises (@p96) :args (@t106)) % 155.54/155.80 (step @p98 :rule instantiate :premises (@p1) :args ((@list @t74 @t103))) % 155.54/155.80 (step @p99 :rule instantiate :premises (@p8) :args ((@list @t66 @t74 @t103))) % 155.54/155.80 (step @p100 :rule instantiate :premises (@p92) :args ((@list @t107))) % 155.54/155.80 (step @p101 :rule instantiate :premises (@p9) :args ((@list @t66 @t68 @t103))) % 155.54/155.80 (step @p102 :rule eq-symm :args (@t3 @t2)) % 155.54/155.80 (step @p103 :rule refl :args (@t20)) % 155.54/155.80 (step @p104 :rule cong :premises (@p103 @p102) :args (@t21)) % 155.54/155.80 (step @p105 :rule cong :premises (@p104) :args (@t22)) % 155.54/155.80 (step @p106 :rule eq_resolve :premises (@p12 @p105)) % 155.54/155.80 (step @p107 :rule instantiate :premises (@p106) :args ((@list @t103 @t73))) % 155.54/155.80 (step @p108 :rule instantiate :premises (@p106) :args ((@list @t75 @t71))) % 155.54/155.80 (step @p109 :rule instantiate :premises (@p106) :args ((@list @t74 @t71))) % 155.54/155.80 (step @p110 :rule aci_norm :args ((= (or (or @t109 @t108) @t42) (or @t109 @t108 @t42)))) % 155.54/155.80 (step @p111 :rule refl :args (@t42)) % 155.54/155.80 (step @p112 :rule bool-and-de-morgan :args (@t44 @t43 true)) % 155.54/155.80 (step @p113 :rule nary_cong :premises (@p112 @p111) :args ((or (not @t45) @t42))) % 155.54/155.80 (step @p114 :rule trans :premises (@p113 @p110)) % 155.54/155.80 (step @p115 :rule bool-impl-elim :args (@t45 @t42)) % 155.54/155.80 (step @p116 :rule trans :premises (@p115 @p114)) % 155.54/155.80 (step @p117 :rule cong :premises (@p116) :args (@t47)) % 155.54/155.80 (step @p118 :rule refl :args (@t48)) % 155.54/155.80 (step @p119 :rule refl :args (@t49)) % 155.54/155.80 (step @p120 :rule nary_cong :premises (@p119 @p118 @p117) :args (@t50)) % 155.54/155.80 (step @p121 :rule refl :args (@t51)) % 155.54/155.80 (step @p122 :rule cong :premises (@p121 @p120) :args (@t52)) % 155.54/155.80 (step @p123 :rule cong :premises (@p122) :args (@t54)) % 155.54/155.80 (step @p124 :rule eq_resolve :premises (@p17 @p123)) % 155.54/155.80 (step @p125 :rule instantiate :premises (@p124) :args ((@list @t72 @t71 @t74))) % 155.54/155.80 (step @p126 :rule bool-double-not-elim :args (@t77)) % 155.54/155.80 (step @p127 :rule nary_cong :premises (@p48 @p126) :args ((or @t80 (not @t78)))) % 155.54/155.80 (step @p128 :rule cnf_or_neg :args (@t80 1)) % 155.54/155.80 (step @p129 :rule eq_resolve :premises (@p128 @p127)) % 155.54/155.80 (step @p130 :rule reordering :premises (@p129) :args ((or @t77 @t80))) % 155.54/155.80 (step @p131 :rule chain_m_resolution :premises (@p130 @p46) :args (@t77 @t81 @t82)) % 155.54/155.80 (step @p132 :rule cnf_equiv_pos1 :args (@t114)) % 155.54/155.80 (step @p133 :rule reordering :premises (@p132) :args ((or @t78 @t113 (not @t114)))) % 155.54/155.80 (step @p134 :rule chain_m_resolution :premises (@p133 @p131 @p125) :args (@t113 @t85 (@list @t77 @t114))) % 155.54/155.80 (step @p135 :rule cnf_and_pos :args (@t113 1)) % 155.54/155.80 (step @p136 :rule reordering :premises (@p135) :args ((or @t111 @t115))) % 155.54/155.80 (step @p137 :rule chain_m_resolution :premises (@p136 @p134) :args (@t111 @t98 @t116)) % 155.54/155.80 (step @p138 :rule cnf_equiv_pos1 :args (@t119)) % 155.54/155.80 (step @p139 :rule reordering :premises (@p138) :args ((or (not @t111) @t118 (not @t119)))) % 155.54/155.80 (step @p140 :rule chain_m_resolution :premises (@p139 @p137 @p109) :args (@t118 @t85 (@list @t111 @t119))) % 155.54/155.80 (step @p141 :rule symm :premises (@p140)) % 155.54/155.80 (step @p142 :rule refl :args (@t75)) % 155.54/155.80 (step @p143 :rule cong :premises (@p142 @p141) :args ((tptp.addition @t75 @t117))) % 155.54/155.80 (step @p144 :rule instantiate :premises (@p2) :args ((@list @t71 @t74 @t75))) % 155.54/155.80 (step @p145 :rule symm :premises (@p144)) % 155.54/155.80 (step @p146 :rule refl :args (@t71)) % 155.54/155.80 (step @p147 :rule instantiate :premises (@p96) :args ((@list @t74))) % 155.54/155.80 (step @p148 :rule symm :premises (@p147)) % 155.54/155.80 (step @p149 :rule refl :args (@t74)) % 155.54/155.80 (step @p150 :rule symm :premises (@p82)) % 155.54/155.80 (step @p151 :rule cong :premises (@p150 @p149) :args ((tptp.multiplication @t89 @t74))) % 155.54/155.80 (step @p152 :rule instantiate :premises (@p9) :args ((@list @t66 @t68 @t74))) % 155.54/155.80 (step @p153 :rule symm :premises (@p152)) % 155.54/155.80 (step @p154 :rule trans :premises (@p153 @p151 @p148)) % 155.54/155.80 (step @p155 :rule cong :premises (@p142 @p154) :args ((tptp.addition @t75 @t121))) % 155.54/155.80 (step @p156 :rule instantiate :premises (@p2) :args ((@list @t120 @t75 @t75))) % 155.54/155.80 (step @p157 :rule symm :premises (@p156)) % 155.54/155.80 (step @p158 :rule refl :args (@t120)) % 155.54/155.80 (step @p159 :rule instantiate :premises (@p9) :args ((@list @t66 @t66 @t74))) % 155.54/155.80 (step @p160 :rule eq-symm :args (@t10 @t1)) % 155.54/155.80 (step @p161 :rule cong :premises (@p160) :args (@t11)) % 155.54/155.80 (step @p162 :rule eq_resolve :premises (@p4 @p161)) % 155.54/155.80 (step @p163 :rule instantiate :premises (@p162) :args (@t69)) % 155.54/155.80 (step @p164 :rule cong :premises (@p163 @p149) :args (@t75)) % 155.54/155.80 (step @p165 :rule trans :premises (@p164 @p159)) % 155.54/155.80 (step @p166 :rule cong :premises (@p165 @p158) :args (@t121)) % 155.54/155.80 (step @p167 :rule symm :premises (@p151)) % 155.54/155.80 (step @p168 :rule trans :premises (@p147 @p167 @p152 @p166 @p157 @p155)) % 155.54/155.80 (step @p169 :rule cong :premises (@p168 @p146) :args (@t117)) % 155.54/155.80 (step @p170 :rule trans :premises (@p140 @p169 @p145 @p143)) % 155.54/155.80 (step @p171 :rule cnf_equiv_pos2 :args (@t124)) % 155.54/155.80 (step @p172 :rule reordering :premises (@p171) :args ((or @t123 (not @t122) (not @t124)))) % 155.54/155.80 (step @p173 :rule chain_m_resolution :premises (@p172 @p170 @p108) :args (@t123 @t85 (@list @t122 @t124))) % 155.54/155.80 (step @p174 :rule instantiate :premises (@p106) :args ((@list @t75 @t73))) % 155.54/155.80 (step @p175 :rule instantiate :premises (@p8) :args ((@list @t66 @t74 @t72))) % 155.54/155.80 (step @p176 :rule instantiate :premises (@p106) :args ((@list @t74 @t72))) % 155.54/155.80 (step @p177 :rule cnf_and_pos :args (@t113 0)) % 155.54/155.80 (step @p178 :rule reordering :premises (@p177) :args ((or @t112 @t115))) % 155.54/155.80 (step @p179 :rule chain_m_resolution :premises (@p178 @p134) :args (@t112 @t98 @t116)) % 155.54/155.80 (step @p180 :rule cnf_equiv_pos1 :args (@t126)) % 155.54/155.80 (step @p181 :rule reordering :premises (@p180) :args ((or (not @t112) @t125 (not @t126)))) % 155.54/155.80 (step @p182 :rule chain_m_resolution :premises (@p181 @p179 @p176) :args (@t125 @t85 (@list @t112 @t126))) % 155.54/155.80 (step @p183 :rule refl :args (@t66)) % 155.54/155.80 (step @p184 :rule cong :premises (@p183 @p182) :args (@t73)) % 155.54/155.80 (step @p185 :rule trans :premises (@p184 @p175)) % 155.54/155.80 (step @p186 :rule cnf_equiv_pos2 :args (@t129)) % 155.54/155.80 (step @p187 :rule reordering :premises (@p186) :args ((or @t128 (not @t127) (not @t129)))) % 155.54/155.80 (step @p188 :rule chain_m_resolution :premises (@p187 @p185 @p174) :args (@t128 @t85 (@list @t127 @t129))) % 155.54/155.80 (step @p189 :rule instantiate :premises (@p124) :args ((@list @t73 @t71 @t75))) % 155.54/155.80 (step @p190 :rule cnf_or_neg :args (@t80 2)) % 155.54/155.80 (step @p191 :rule chain_m_resolution :premises (@p190 @p46) :args ((not @t76) @t81 @t82)) % 155.54/155.80 (step @p192 :rule cnf_equiv_pos2 :args (@t131)) % 155.54/155.80 (step @p193 :rule reordering :premises (@p192) :args ((or @t76 @t132 (not @t131)))) % 155.54/155.80 (step @p194 :rule chain_m_resolution :premises (@p193 @p191 @p189) :args (@t132 @t133 (@list @t76 @t131))) % 155.54/155.80 (step @p195 :rule cnf_and_neg :args (@t130)) % 155.54/155.80 (step @p196 :rule chain_m_resolution :premises (@p195 @p194 @p188 @p173) :args ((not @t102) (@list true false false) (@list @t130 @t128 @t123))) % 155.54/155.80 (step @p197 :rule skolemize :premises (@p196)) % 155.54/155.80 (step @p198 :rule bool-double-not-elim :args (@t134)) % 155.54/155.80 (step @p199 :rule refl :args (@t139)) % 155.54/155.80 (step @p200 :rule nary_cong :premises (@p199 @p198) :args ((or @t139 (not @t138)))) % 155.54/155.80 (step @p201 :rule cnf_or_neg :args (@t139 0)) % 155.54/155.80 (step @p202 :rule eq_resolve :premises (@p201 @p200)) % 155.54/155.80 (step @p203 :rule reordering :premises (@p202) :args ((or @t134 @t139))) % 155.54/155.80 (step @p204 :rule chain_m_resolution :premises (@p203 @p197) :args (@t134 @t81 @t140)) % 155.54/155.80 (step @p205 :rule cnf_equiv_pos1 :args (@t143)) % 155.54/155.80 (step @p206 :rule reordering :premises (@p205) :args ((or @t138 @t142 (not @t143)))) % 155.54/155.80 (step @p207 :rule chain_m_resolution :premises (@p206 @p204 @p107) :args (@t142 @t85 (@list @t134 @t143))) % 155.54/155.80 (step @p208 :rule instantiate :premises (@p106) :args (@t104)) % 155.54/155.80 (step @p209 :rule cnf_or_neg :args (@t139 2)) % 155.54/155.80 (step @p210 :rule chain_m_resolution :premises (@p209 @p197) :args ((not @t135) @t81 @t140)) % 155.54/155.80 (step @p211 :rule cnf_equiv_pos2 :args (@t146)) % 155.54/155.80 (step @p212 :rule reordering :premises (@p211) :args ((or @t135 @t147 (not @t146)))) % 155.54/155.80 (step @p213 :rule chain_m_resolution :premises (@p212 @p210 @p208) :args (@t147 @t133 (@list @t135 @t146))) % 155.54/155.80 (step @p214 :rule instantiate :premises (@p106) :args ((@list @t103 @t74))) % 155.54/155.80 (step @p215 :rule cnf_and_pos :args (@t113 2)) % 155.54/155.80 (step @p216 :rule reordering :premises (@p215) :args ((or @t110 @t115))) % 155.54/155.80 (step @p217 :rule chain_m_resolution :premises (@p216 @p134) :args (@t110 @t98 @t116)) % 155.54/155.80 (step @p218 :rule instantiate :premises (@p217) :args (@t106)) % 155.54/155.80 (step @p219 :rule instantiate :premises (@p106) :args ((@list @t103 @t72))) % 155.54/155.80 (step @p220 :rule instantiate :premises (@p96) :args (@t100)) % 155.54/155.80 (step @p221 :rule symm :premises (@p220)) % 155.54/155.80 (step @p222 :rule refl :args (@t73)) % 155.54/155.80 (step @p223 :rule cong :premises (@p222 @p221) :args ((tptp.addition @t73 @t148))) % 155.54/155.80 (step @p224 :rule instantiate :premises (@p9) :args ((@list @t66 tptp.one @t72))) % 155.54/155.80 (step @p225 :rule refl :args (@t72)) % 155.54/155.80 (step @p226 :rule cong :premises (@p183 @p150) :args ((tptp.addition @t66 @t89))) % 155.54/155.80 (step @p227 :rule instantiate :premises (@p2) :args ((@list @t68 @t66 @t66))) % 155.54/155.80 (step @p228 :rule symm :premises (@p227)) % 155.54/155.80 (step @p229 :rule refl :args (@t68)) % 155.54/155.80 (step @p230 :rule cong :premises (@p163 @p229) :args (@t89)) % 155.54/155.80 (step @p231 :rule trans :premises (@p82 @p230 @p228 @p226)) % 155.54/155.80 (step @p232 :rule cong :premises (@p231 @p225) :args (@t148)) % 155.54/155.80 (step @p233 :rule trans :premises (@p220 @p232 @p224 @p223)) % 155.54/155.80 (step @p234 :rule symm :premises (@p233)) % 155.54/155.80 (step @p235 :rule refl :args (@t103)) % 155.54/155.80 (step @p236 :rule cong :premises (@p235 @p234) :args ((tptp.addition @t103 @t149))) % 155.54/155.80 (step @p237 :rule instantiate :premises (@p2) :args ((@list @t72 @t73 @t103))) % 155.54/155.80 (step @p238 :rule symm :premises (@p237)) % 155.54/155.80 (step @p239 :rule cong :premises (@p207 @p225) :args (@t149)) % 155.54/155.80 (step @p240 :rule trans :premises (@p233 @p239 @p238 @p236)) % 155.54/155.80 (step @p241 :rule cnf_equiv_pos2 :args (@t152)) % 155.54/155.80 (step @p242 :rule reordering :premises (@p241) :args ((or @t151 (not @t150) (not @t152)))) % 155.54/155.80 (step @p243 :rule chain_m_resolution :premises (@p242 @p240 @p219) :args (@t151 @t85 (@list @t150 @t152))) % 155.54/155.80 (step @p244 :rule bool-double-not-elim :args (@t136)) % 155.54/155.80 (step @p245 :rule nary_cong :premises (@p199 @p244) :args ((or @t139 (not @t137)))) % 155.54/155.80 (step @p246 :rule cnf_or_neg :args (@t139 1)) % 155.54/155.80 (step @p247 :rule eq_resolve :premises (@p246 @p245)) % 155.54/155.80 (step @p248 :rule reordering :premises (@p247) :args ((or @t136 @t139))) % 155.54/155.80 (step @p249 :rule chain_m_resolution :premises (@p248 @p197) :args (@t136 @t81 @t140)) % 155.54/155.80 (step @p250 :rule cnf_or_pos :args (@t155)) % 155.54/155.80 (step @p251 :rule reordering :premises (@p250) :args ((or @t137 @t154 @t153 (not @t155)))) % 155.54/155.80 (step @p252 :rule chain_m_resolution :premises (@p251 @p249 @p243 @p218) :args (@t153 (@list false false false) (@list @t136 @t151 @t155))) % 155.54/155.80 (step @p253 :rule cnf_equiv_pos1 :args (@t158)) % 155.54/155.80 (step @p254 :rule reordering :premises (@p253) :args ((or (not @t153) @t157 (not @t158)))) % 155.54/155.80 (step @p255 :rule chain_m_resolution :premises (@p254 @p252 @p214) :args (@t157 @t85 (@list @t153 @t158))) % 155.54/155.80 (assume-push @p320 @t94) % 155.54/155.80 (assume-push @p321 @t92) % 155.54/155.80 (assume-push @p322 @t90) % 155.54/155.80 (assume-push @p323 @t159) % 155.54/155.80 (assume-push @p324 @t162) % 155.54/155.81 (assume-push @p325 @t142) % 155.54/155.81 (assume-push @p326 @t164) % 155.54/155.81 (assume-push @p327 @t165) % 155.54/155.81 (assume-push @p328 @t166) % 155.54/155.81 (assume-push @p329 @t167) % 155.54/155.81 (assume-push @p330 @t169) % 155.54/155.81 (assume-push @p331 @t157) % 155.54/155.81 (assume-push @p332 @t171) % 155.54/155.81 (assume-push @p333 @t172) % 155.54/155.81 (assume-push @p334 @t174) % 155.54/155.81 (step @p271 :rule symm :premises (@p89)) % 155.54/155.81 (step @p272 :rule symm :premises (@p97)) % 155.54/155.81 (step @p273 :rule cong :premises (@p150 @p235) :args (@t173)) % 155.54/155.81 (step @p274 :rule symm :premises (@p101)) % 155.54/155.81 (step @p275 :rule symm :premises (@p93)) % 155.54/155.81 (step @p276 :rule symm :premises (@p86)) % 155.54/155.81 (step @p277 :rule symm :premises (@p79)) % 155.54/155.81 (step @p278 :rule cong :premises (@p277 @p225) :args (@t160)) % 155.54/155.81 (step @p279 :rule trans :premises (@p87 @p278 @p276)) % 155.54/155.81 (step @p280 :rule refl :args (@t105)) % 155.54/155.81 (step @p281 :rule cong :premises (@p280 @p279) :args (@t163)) % 155.54/155.81 (step @p282 :rule cong :premises (@p229 @p207) :args (@t161)) % 155.54/155.81 (step @p283 :rule symm :premises (@p87)) % 155.54/155.81 (step @p284 :rule symm :premises (@p278)) % 155.54/155.81 (step @p285 :rule symm :premises (@p76)) % 155.54/155.81 (step @p286 :rule trans :premises (@p285 @p86 @p284 @p283 @p282 @p88 @p281 @p275)) % 155.54/155.81 (step @p287 :rule refl :args (@t107)) % 155.54/155.81 (step @p288 :rule cong :premises (@p287 @p286) :args (@t175)) % 155.54/155.81 (step @p289 :rule cong :premises (@p287 @p285) :args (@t175)) % 155.54/155.81 (step @p290 :rule symm :premises (@p289)) % 155.54/155.81 (step @p291 :rule trans :premises (@p100 @p290 @p288 @p274 @p273 @p272)) % 155.54/155.81 (step @p292 :rule cong :premises (@p142 @p291) :args (@t170)) % 155.54/155.81 (step @p293 :rule symm :premises (@p98)) % 155.54/155.81 (step @p294 :rule trans :premises (@p255 @p293)) % 155.54/155.81 (step @p295 :rule cong :premises (@p183 @p294) :args (@t75)) % 155.54/155.81 (step @p296 :rule trans :premises (@p295 @p99 @p292 @p271)) % 155.54/155.81 (step-pop @p335 :rule scope :premises (@p296)) % 155.54/155.81 (step-pop @p336 :rule scope :premises (@p335)) % 155.54/155.81 (step-pop @p337 :rule scope :premises (@p336)) % 155.54/155.81 (step-pop @p338 :rule scope :premises (@p337)) % 155.54/155.81 (step-pop @p339 :rule scope :premises (@p338)) % 155.54/155.81 (step-pop @p340 :rule scope :premises (@p339)) % 155.54/155.81 (step-pop @p341 :rule scope :premises (@p340)) % 155.54/155.81 (step-pop @p342 :rule scope :premises (@p341)) % 155.54/155.81 (step-pop @p343 :rule scope :premises (@p342)) % 155.54/155.81 (step-pop @p344 :rule scope :premises (@p343)) % 155.54/155.81 (step-pop @p345 :rule scope :premises (@p344)) % 155.54/155.81 (step-pop @p346 :rule scope :premises (@p345)) % 155.54/155.81 (step-pop @p347 :rule scope :premises (@p346)) % 155.54/155.81 (step-pop @p348 :rule scope :premises (@p347)) % 155.54/155.81 (step-pop @p349 :rule scope :premises (@p348)) % 155.54/155.81 (step @p297 :rule process_scope :premises (@p349) :args (@t145)) % 155.54/155.81 (step @p313 :rule implies_elim :premises (@p297)) % 155.54/155.81 (step @p314 :rule cnf_and_neg :args (@t176)) % 155.54/155.81 (step @p315 :rule resolution :premises (@p314 @p313) :args (true @t176)) % 155.54/155.81 (step @p316 :rule reordering :premises (@p315) :args ((or (not @t94) (not @t92) (not @t90) (not @t159) (not @t162) @t145 (not @t142) (not @t164) (not @t165) (not @t166) (not @t167) (not @t169) (not @t157) (not @t171) (not @t172) (not @t174)))) % 155.54/155.81 (step @p317 false :rule chain_m_resolution :premises (@p316 @p255 @p213 @p207 @p101 @p100 @p99 @p98 @p97 @p93 @p89 @p88 @p87 @p86 @p82 @p79 @p76) :args (false (@list false true false false false false false false false false false false false false false false) (@list @t157 @t145 @t142 @t174 @t172 @t171 @t169 @t167 @t166 @t165 @t164 @t162 @t159 @t90 @t92 @t94))) % 155.54/155.81 ) % 155.54/155.81 % SZS output end Proof % 155.54/155.81 % cvc5 exiting %------------------------------------------------------------------------------