TSTP Solution File: SWB025+2 by Otter---3.3
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Otter---3.3
% Problem : SWB025+2 : TPTP v8.1.0. Released v5.2.0.
% Transfm : none
% Format : tptp:raw
% Command : otter-tptp-script %s
% Computer : n016.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 Jul 27 13:17:48 EDT 2022
% Result : Theorem 1.82s 1.99s
% Output : Refutation 1.82s
% Verified :
% SZS Type : Refutation
% Derivation depth : 3
% Number of leaves : 18
% Syntax : Number of clauses : 22 ( 19 unt; 0 nHn; 22 RR)
% Number of literals : 32 ( 0 equ; 11 neg)
% Maximal clause size : 8 ( 1 avg)
% Maximal term depth : 1 ( 1 avg)
% Number of predicates : 2 ( 1 usr; 1 prp; 0-3 aty)
% Number of functors : 17 ( 17 usr; 17 con; 0-0 aty)
% Number of variables : 12 ( 0 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(4,axiom,
( ~ iext(uri_rdf_first,A,B)
| ~ iext(uri_rdf_rest,A,C)
| ~ iext(uri_rdf_first,C,D)
| ~ iext(uri_rdf_rest,C,uri_rdf_nil)
| ~ iext(uri_owl_propertyChainAxiom,E,A)
| ~ iext(B,F,G)
| ~ iext(D,G,H)
| iext(E,F,H) ),
file('SWB025+2.p',unknown),
[] ).
cnf(11,axiom,
( ~ iext(uri_owl_inverseOf,A,B)
| iext(A,C,D)
| ~ iext(B,D,C) ),
file('SWB025+2.p',unknown),
[] ).
cnf(14,axiom,
( ~ iext(uri_ex_hasUncle,uri_ex_alice,uri_ex_charly)
| ~ iext(uri_ex_hasCousin,uri_ex_bob,uri_ex_alice) ),
file('SWB025+2.p',unknown),
[] ).
cnf(131,axiom,
iext(uri_owl_propertyChainAxiom,uri_ex_hasUncle,dollar_c5),
file('SWB025+2.p',unknown),
[] ).
cnf(132,axiom,
iext(uri_rdf_first,dollar_c5,uri_ex_hasCousin),
file('SWB025+2.p',unknown),
[] ).
cnf(133,axiom,
iext(uri_rdf_rest,dollar_c5,dollar_c4),
file('SWB025+2.p',unknown),
[] ).
cnf(134,axiom,
iext(uri_rdf_first,dollar_c4,uri_ex_hasFather),
file('SWB025+2.p',unknown),
[] ).
cnf(135,axiom,
iext(uri_rdf_rest,dollar_c4,uri_rdf_nil),
file('SWB025+2.p',unknown),
[] ).
cnf(136,axiom,
iext(uri_owl_propertyChainAxiom,uri_ex_hasCousin,dollar_c3),
file('SWB025+2.p',unknown),
[] ).
cnf(137,axiom,
iext(uri_rdf_first,dollar_c3,uri_ex_hasUncle),
file('SWB025+2.p',unknown),
[] ).
cnf(138,axiom,
iext(uri_rdf_rest,dollar_c3,dollar_c2),
file('SWB025+2.p',unknown),
[] ).
cnf(139,axiom,
iext(uri_rdf_first,dollar_c2,dollar_c1),
file('SWB025+2.p',unknown),
[] ).
cnf(140,axiom,
iext(uri_rdf_rest,dollar_c2,uri_rdf_nil),
file('SWB025+2.p',unknown),
[] ).
cnf(141,axiom,
iext(uri_owl_inverseOf,dollar_c1,uri_ex_hasFather),
file('SWB025+2.p',unknown),
[] ).
cnf(142,axiom,
iext(uri_ex_hasFather,uri_ex_alice,uri_ex_dave),
file('SWB025+2.p',unknown),
[] ).
cnf(143,axiom,
iext(uri_ex_hasCousin,uri_ex_alice,uri_ex_bob),
file('SWB025+2.p',unknown),
[] ).
cnf(144,axiom,
iext(uri_ex_hasFather,uri_ex_bob,uri_ex_charly),
file('SWB025+2.p',unknown),
[] ).
cnf(145,axiom,
iext(uri_ex_hasUncle,uri_ex_bob,uri_ex_dave),
file('SWB025+2.p',unknown),
[] ).
cnf(177,plain,
iext(dollar_c1,uri_ex_dave,uri_ex_alice),
inference(hyper,[status(thm)],[142,11,141]),
[iquote('hyper,142,11,141')] ).
cnf(179,plain,
iext(uri_ex_hasUncle,uri_ex_alice,uri_ex_charly),
inference(hyper,[status(thm)],[144,4,132,133,134,135,131,143]),
[iquote('hyper,144,4,132,133,134,135,131,143')] ).
cnf(180,plain,
iext(uri_ex_hasCousin,uri_ex_bob,uri_ex_alice),
inference(hyper,[status(thm)],[177,4,137,138,139,140,136,145]),
[iquote('hyper,177,4,137,138,139,140,136,145')] ).
cnf(185,plain,
$false,
inference(hyper,[status(thm)],[180,14,179]),
[iquote('hyper,180,14,179')] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12 % Problem : SWB025+2 : TPTP v8.1.0. Released v5.2.0.
% 0.03/0.13 % Command : otter-tptp-script %s
% 0.12/0.34 % Computer : n016.cluster.edu
% 0.12/0.34 % Model : x86_64 x86_64
% 0.12/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.34 % Memory : 8042.1875MB
% 0.12/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.12/0.34 % CPULimit : 300
% 0.12/0.34 % WCLimit : 300
% 0.12/0.34 % DateTime : Wed Jul 27 02:52:22 EDT 2022
% 0.12/0.34 % CPUTime :
% 1.72/1.95 ----- Otter 3.3f, August 2004 -----
% 1.72/1.95 The process was started by sandbox on n016.cluster.edu,
% 1.72/1.95 Wed Jul 27 02:52:22 2022
% 1.72/1.95 The command was "./otter". The process ID is 23368.
% 1.72/1.95
% 1.72/1.95 set(prolog_style_variables).
% 1.72/1.95 set(auto).
% 1.72/1.95 dependent: set(auto1).
% 1.72/1.95 dependent: set(process_input).
% 1.72/1.95 dependent: clear(print_kept).
% 1.72/1.95 dependent: clear(print_new_demod).
% 1.72/1.95 dependent: clear(print_back_demod).
% 1.72/1.95 dependent: clear(print_back_sub).
% 1.72/1.95 dependent: set(control_memory).
% 1.72/1.95 dependent: assign(max_mem, 12000).
% 1.72/1.95 dependent: assign(pick_given_ratio, 4).
% 1.72/1.95 dependent: assign(stats_level, 1).
% 1.72/1.95 dependent: assign(max_seconds, 10800).
% 1.72/1.95 clear(print_given).
% 1.72/1.95
% 1.72/1.95 formula_list(usable).
% 1.72/1.95 all P S1 P1 S2 P2 (iext(uri_rdf_first,S1,P1)&iext(uri_rdf_rest,S1,S2)&iext(uri_rdf_first,S2,P2)&iext(uri_rdf_rest,S2,uri_rdf_nil)-> (iext(uri_owl_propertyChainAxiom,P,S1)<->ip(P)&ip(P1)&ip(P2)& (all Y0 Y1 Y2 (iext(P1,Y0,Y1)&iext(P2,Y1,Y2)->iext(P,Y0,Y2))))).
% 1.72/1.95 all P1 P2 (iext(uri_owl_inverseOf,P1,P2)<->ip(P1)&ip(P2)& (all X Y (iext(P1,X,Y)<->iext(P2,Y,X)))).
% 1.72/1.95 -(iext(uri_ex_hasUncle,uri_ex_alice,uri_ex_charly)&iext(uri_ex_hasCousin,uri_ex_bob,uri_ex_alice)).
% 1.72/1.95 exists BNODE_l11 BNODE_l12 BNODE_l21 BNODE_l22 BNODE_l3 (iext(uri_owl_propertyChainAxiom,uri_ex_hasUncle,BNODE_l11)&iext(uri_rdf_first,BNODE_l11,uri_ex_hasCousin)&iext(uri_rdf_rest,BNODE_l11,BNODE_l12)&iext(uri_rdf_first,BNODE_l12,uri_ex_hasFather)&iext(uri_rdf_rest,BNODE_l12,uri_rdf_nil)&iext(uri_owl_propertyChainAxiom,uri_ex_hasCousin,BNODE_l21)&iext(uri_rdf_first,BNODE_l21,uri_ex_hasUncle)&iext(uri_rdf_rest,BNODE_l21,BNODE_l22)&iext(uri_rdf_first,BNODE_l22,BNODE_l3)&iext(uri_rdf_rest,BNODE_l22,uri_rdf_nil)&iext(uri_owl_inverseOf,BNODE_l3,uri_ex_hasFather)&iext(uri_ex_hasFather,uri_ex_alice,uri_ex_dave)&iext(uri_ex_hasCousin,uri_ex_alice,uri_ex_bob)&iext(uri_ex_hasFather,uri_ex_bob,uri_ex_charly)&iext(uri_ex_hasUncle,uri_ex_bob,uri_ex_dave)).
% 1.72/1.95 end_of_list.
% 1.72/1.95
% 1.72/1.95 -------> usable clausifies to:
% 1.72/1.95
% 1.72/1.95 list(usable).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,P,S1)|ip(P).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,P,S1)|ip(P1).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,P,S1)|ip(P2).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,P,S1)| -iext(P1,Y0,Y1)| -iext(P2,Y1,Y2)|iext(P,Y0,Y2).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,P,S1)| -ip(P)| -ip(P1)| -ip(P2)|iext(P1,$f3(P,S1,P1,S2,P2),$f2(P,S1,P1,S2,P2)).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,P,S1)| -ip(P)| -ip(P1)| -ip(P2)|iext(P2,$f2(P,S1,P1,S2,P2),$f1(P,S1,P1,S2,P2)).
% 1.72/1.95 0 [] -iext(uri_rdf_first,S1,P1)| -iext(uri_rdf_rest,S1,S2)| -iext(uri_rdf_first,S2,P2)| -iext(uri_rdf_rest,S2,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,P,S1)| -ip(P)| -ip(P1)| -ip(P2)| -iext(P,$f3(P,S1,P1,S2,P2),$f1(P,S1,P1,S2,P2)).
% 1.72/1.95 0 [] -iext(uri_owl_inverseOf,P1,P2)|ip(P1).
% 1.72/1.95 0 [] -iext(uri_owl_inverseOf,P1,P2)|ip(P2).
% 1.72/1.95 0 [] -iext(uri_owl_inverseOf,P1,P2)| -iext(P1,X,Y)|iext(P2,Y,X).
% 1.72/1.95 0 [] -iext(uri_owl_inverseOf,P1,P2)|iext(P1,X,Y)| -iext(P2,Y,X).
% 1.72/1.95 0 [] iext(uri_owl_inverseOf,P1,P2)| -ip(P1)| -ip(P2)|iext(P1,$f5(P1,P2),$f4(P1,P2))|iext(P2,$f4(P1,P2),$f5(P1,P2)).
% 1.72/1.95 0 [] iext(uri_owl_inverseOf,P1,P2)| -ip(P1)| -ip(P2)| -iext(P1,$f5(P1,P2),$f4(P1,P2))| -iext(P2,$f4(P1,P2),$f5(P1,P2)).
% 1.72/1.95 0 [] -iext(uri_ex_hasUncle,uri_ex_alice,uri_ex_charly)| -iext(uri_ex_hasCousin,uri_ex_bob,uri_ex_alice).
% 1.72/1.95 0 [] iext(uri_owl_propertyChainAxiom,uri_ex_hasUncle,$c5).
% 1.72/1.95 0 [] iext(uri_rdf_first,$c5,uri_ex_hasCousin).
% 1.72/1.95 0 [] iext(uri_rdf_rest,$c5,$c4).
% 1.72/1.95 0 [] iext(uri_rdf_first,$c4,uri_ex_hasFather).
% 1.72/1.95 0 [] iext(uri_rdf_rest,$c4,uri_rdf_nil).
% 1.72/1.95 0 [] iext(uri_owl_propertyChainAxiom,uri_ex_hasCousin,$c3).
% 1.72/1.95 0 [] iext(uri_rdf_first,$c3,uri_ex_hasUncle).
% 1.72/1.95 0 [] iext(uri_rdf_rest,$c3,$c2).
% 1.72/1.95 0 [] iext(uri_rdf_first,$c2,$c1).
% 1.72/1.95 0 [] iext(uri_rdf_rest,$c2,uri_rdf_nil).
% 1.72/1.95 0 [] iext(uri_owl_inverseOf,$c1,uri_ex_hasFather).
% 1.72/1.95 0 [] iext(uri_ex_hasFather,uri_ex_alice,uri_ex_dave).
% 1.72/1.95 0 [] iext(uri_ex_hasCousin,uri_ex_alice,uri_ex_bob).
% 1.72/1.95 0 [] iext(uri_ex_hasFather,uri_ex_bob,uri_ex_charly).
% 1.72/1.95 0 [] iext(uri_ex_hasUncle,uri_ex_bob,uri_ex_dave).
% 1.72/1.95 end_of_list.
% 1.72/1.95
% 1.72/1.95 SCAN INPUT: prop=0, horn=0, equality=0, symmetry=0, max_lits=9.
% 1.72/1.95
% 1.72/1.95 This is a non-Horn set without equality. The strategy will
% 1.72/1.95 be ordered hyper_res, unit deletion, and factoring, with
% 1.72/1.95 satellites in sos and with nuclei in usable.
% 1.72/1.95
% 1.72/1.95 dependent: set(hyper_res).
% 1.72/1.95 dependent: set(factor).
% 1.72/1.95 dependent: set(unit_deletion).
% 1.72/1.95
% 1.72/1.95 ------------> process usable:
% 1.72/1.95 ** KEPT (pick-wt=22): 1 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,E,A)|ip(E).
% 1.72/1.95 ** KEPT (pick-wt=22): 2 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,E,A)|ip(B).
% 1.72/1.95 ** KEPT (pick-wt=22): 3 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,E,A)|ip(D).
% 1.72/1.95 ** KEPT (pick-wt=32): 4 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)| -iext(uri_owl_propertyChainAxiom,E,A)| -iext(B,F,G)| -iext(D,G,H)|iext(E,F,H).
% 1.72/1.95 ** KEPT (pick-wt=40): 5 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,E,A)| -ip(E)| -ip(B)| -ip(D)|iext(B,$f3(E,A,B,C,D),$f2(E,A,B,C,D)).
% 1.72/1.95 ** KEPT (pick-wt=40): 6 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,E,A)| -ip(E)| -ip(B)| -ip(D)|iext(D,$f2(E,A,B,C,D),$f1(E,A,B,C,D)).
% 1.72/1.95 ** KEPT (pick-wt=40): 7 [] -iext(uri_rdf_first,A,B)| -iext(uri_rdf_rest,A,C)| -iext(uri_rdf_first,C,D)| -iext(uri_rdf_rest,C,uri_rdf_nil)|iext(uri_owl_propertyChainAxiom,E,A)| -ip(E)| -ip(B)| -ip(D)| -iext(E,$f3(E,A,B,C,D),$f1(E,A,B,C,D)).
% 1.72/1.95 ** KEPT (pick-wt=6): 8 [] -iext(uri_owl_inverseOf,A,B)|ip(A).
% 1.72/1.95 ** KEPT (pick-wt=6): 9 [] -iext(uri_owl_inverseOf,A,B)|ip(B).
% 1.72/1.95 ** KEPT (pick-wt=12): 10 [] -iext(uri_owl_inverseOf,A,B)| -iext(A,C,D)|iext(B,D,C).
% 1.72/1.95 ** KEPT (pick-wt=12): 11 [] -iext(uri_owl_inverseOf,A,B)|iext(A,C,D)| -iext(B,D,C).
% 1.72/1.95 ** KEPT (pick-wt=24): 12 [] iext(uri_owl_inverseOf,A,B)| -ip(A)| -ip(B)|iext(A,$f5(A,B),$f4(A,B))|iext(B,$f4(A,B),$f5(A,B)).
% 1.72/1.95 ** KEPT (pick-wt=24): 13 [] iext(uri_owl_inverseOf,A,B)| -ip(A)| -ip(B)| -iext(A,$f5(A,B),$f4(A,B))| -iext(B,$f4(A,B),$f5(A,B)).
% 1.72/1.95 ** KEPT (pick-wt=8): 14 [] -iext(uri_ex_hasUncle,uri_ex_alice,uri_ex_charly)| -iext(uri_ex_hasCousin,uri_ex_bob,uri_ex_alice).
% 1.72/1.95
% 1.72/1.95 ------------> process sos:
% 1.72/1.95 ** KEPT (pick-wt=4): 131 [] iext(uri_owl_propertyChainAxiom,uri_ex_hasUncle,$c5).
% 1.72/1.95 ** KEPT (pick-wt=4): 132 [] iext(uri_rdf_first,$c5,uri_ex_hasCousin).
% 1.72/1.95 ** KEPT (pick-wt=4): 133 [] iext(uri_rdf_rest,$c5,$c4).
% 1.72/1.95 ** KEPT (pick-wt=4): 134 [] iext(uri_rdf_first,$c4,uri_ex_hasFather).
% 1.72/1.95 ** KEPT (pick-wt=4): 135 [] iext(uri_rdf_rest,$c4,uri_rdf_nil).
% 1.72/1.95 ** KEPT (pick-wt=4): 136 [] iext(uri_owl_propertyChainAxiom,uri_ex_hasCousin,$c3).
% 1.72/1.95 ** KEPT (pick-wt=4): 137 [] iext(uri_rdf_first,$c3,uri_ex_hasUncle).
% 1.72/1.95 ** KEPT (pick-wt=4): 138 [] iext(uri_rdf_rest,$c3,$c2).
% 1.72/1.95 ** KEPT (pick-wt=4): 139 [] iext(uri_rdf_first,$c2,$c1).
% 1.72/1.95 ** KEPT (pick-wt=4): 140 [] iext(uri_rdf_rest,$c2,uri_rdf_nil).
% 1.72/1.95 ** KEPT (pick-wt=4): 141 [] iext(uri_owl_inverseOf,$c1,uri_ex_hasFather).
% 1.72/1.95 ** KEPT (pick-wt=4): 142 [] iext(uri_ex_hasFather,uri_ex_alice,uri_ex_dave).
% 1.72/1.95 ** KEPT (pick-wt=4): 143 [] iext(uri_ex_hasCousin,uri_ex_alice,uri_ex_bob).
% 1.72/1.95 ** KEPT (pick-wt=4): 144 [] iext(uri_ex_hasFather,uri_ex_bob,uri_ex_charly).
% 1.72/1.95 ** KEPT (pick-wt=4): 145 [] iext(uri_ex_hasUncle,uri_ex_bob,uri_ex_dave).
% 1.82/1.99
% 1.82/1.99 ======= end of input processing =======
% 1.82/1.99
% 1.82/1.99 =========== start of search ===========
% 1.82/1.99
% 1.82/1.99 -------- PROOF --------
% 1.82/1.99
% 1.82/1.99 -----> EMPTY CLAUSE at 0.07 sec ----> 185 [hyper,180,14,179] $F.
% 1.82/1.99
% 1.82/1.99 Length of proof is 3. Level of proof is 2.
% 1.82/1.99
% 1.82/1.99 ---------------- PROOF ----------------
% 1.82/1.99 % SZS status Theorem
% 1.82/1.99 % SZS output start Refutation
% See solution above
% 1.82/1.99 ------------ end of proof -------------
% 1.82/1.99
% 1.82/1.99
% 1.82/1.99 Search stopped by max_proofs option.
% 1.82/1.99
% 1.82/1.99
% 1.82/1.99 Search stopped by max_proofs option.
% 1.82/1.99
% 1.82/1.99 ============ end of search ============
% 1.82/1.99
% 1.82/1.99 -------------- statistics -------------
% 1.82/1.99 clauses given 24
% 1.82/1.99 clauses generated 387
% 1.82/1.99 clauses kept 184
% 1.82/1.99 clauses forward subsumed 231
% 1.82/1.99 clauses back subsumed 0
% 1.82/1.99 Kbytes malloced 976
% 1.82/1.99
% 1.82/1.99 ----------- times (seconds) -----------
% 1.82/1.99 user CPU time 0.07 (0 hr, 0 min, 0 sec)
% 1.82/1.99 system CPU time 0.00 (0 hr, 0 min, 0 sec)
% 1.82/1.99 wall-clock time 1 (0 hr, 0 min, 1 sec)
% 1.82/1.99
% 1.82/1.99 That finishes the proof of the theorem.
% 1.82/1.99
% 1.82/1.99 Process 23368 finished Wed Jul 27 02:52:23 2022
% 1.82/1.99 Otter interrupted
% 1.82/1.99 PROOF FOUND
%------------------------------------------------------------------------------