TSTP Solution File: GRP089-1 by Otter---3.3
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Otter---3.3
% Problem : GRP089-1 : TPTP v8.1.0. Bugfixed v2.7.0.
% Transfm : none
% Format : tptp:raw
% Command : otter-tptp-script %s
% Computer : n022.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 12:56:01 EDT 2022
% Result : Unsatisfiable 3.96s 4.16s
% Output : Refutation 3.96s
% Verified :
% SZS Type : Refutation
% Derivation depth : 17
% Number of leaves : 5
% Syntax : Number of clauses : 60 ( 54 unt; 0 nHn; 7 RR)
% Number of literals : 78 ( 77 equ; 24 neg)
% Maximal clause size : 4 ( 1 avg)
% Maximal term depth : 6 ( 2 avg)
% Number of predicates : 2 ( 0 usr; 1 prp; 0-2 aty)
% Number of functors : 12 ( 12 usr; 9 con; 0-2 aty)
% Number of variables : 139 ( 0 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(1,axiom,
( multiply(inverse(a1),a1) != multiply(inverse(b1),b1)
| multiply(multiply(inverse(b2),b2),a2) != a2
| multiply(multiply(a3,b3),c3) != multiply(a3,multiply(b3,c3))
| multiply(a4,b4) != multiply(b4,a4) ),
file('GRP089-1.p',unknown),
[] ).
cnf(2,plain,
( multiply(inverse(b1),b1) != multiply(inverse(a1),a1)
| multiply(multiply(inverse(b2),b2),a2) != a2
| multiply(multiply(a3,b3),c3) != multiply(a3,multiply(b3,c3))
| multiply(b4,a4) != multiply(a4,b4) ),
inference(flip,[status(thm),theory(equality)],[inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[1])])]),
[iquote('copy,1,flip.1,flip.4')] ).
cnf(3,axiom,
A = A,
file('GRP089-1.p',unknown),
[] ).
cnf(4,axiom,
divide(A,divide(divide(A,B),divide(C,B))) = C,
file('GRP089-1.p',unknown),
[] ).
cnf(6,axiom,
multiply(A,B) = divide(A,divide(divide(C,C),B)),
file('GRP089-1.p',unknown),
[] ).
cnf(7,axiom,
inverse(A) = divide(divide(B,B),A),
file('GRP089-1.p',unknown),
[] ).
cnf(8,plain,
divide(A,divide(divide(B,B),C)) = multiply(A,C),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[6])]),
[iquote('copy,6,flip.1')] ).
cnf(9,plain,
divide(divide(A,A),B) = inverse(B),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[7])]),
[iquote('copy,7,flip.1')] ).
cnf(12,plain,
( multiply(divide(divide(A,A),b1),b1) != multiply(inverse(a1),a1)
| multiply(multiply(inverse(b2),b2),a2) != a2
| multiply(multiply(a3,b3),c3) != multiply(a3,multiply(b3,c3))
| multiply(b4,a4) != multiply(a4,b4) ),
inference(para_from,[status(thm),theory(equality)],[7,2]),
[iquote('para_from,7.1.1,2.1.1.1')] ).
cnf(13,plain,
divide(inverse(divide(A,A)),B) = inverse(B),
inference(para_into,[status(thm),theory(equality)],[9,9]),
[iquote('para_into,9.1.1.1,9.1.1')] ).
cnf(30,plain,
divide(divide(A,A),divide(inverse(B),divide(C,B))) = C,
inference(para_into,[status(thm),theory(equality)],[4,9]),
[iquote('para_into,4.1.1.2.1,9.1.1')] ).
cnf(32,plain,
divide(A,divide(B,divide(C,divide(divide(A,D),divide(B,D))))) = C,
inference(para_into,[status(thm),theory(equality)],[4,4]),
[iquote('para_into,4.1.1.2.1,4.1.1')] ).
cnf(38,plain,
divide(A,inverse(divide(B,A))) = B,
inference(para_into,[status(thm),theory(equality)],[4,9]),
[iquote('para_into,4.1.1.2,9.1.1')] ).
cnf(40,plain,
divide(divide(A,divide(B,C)),C) = divide(A,B),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[4,4])]),
[iquote('para_into,4.1.1.2,4.1.1,flip.1')] ).
cnf(48,plain,
divide(inverse(divide(A,B)),inverse(A)) = B,
inference(para_into,[status(thm),theory(equality)],[38,38]),
[iquote('para_into,38.1.1.2.1,38.1.1')] ).
cnf(52,plain,
divide(divide(divide(A,B),divide(C,B)),inverse(C)) = A,
inference(para_into,[status(thm),theory(equality)],[38,4]),
[iquote('para_into,38.1.1.2.1,4.1.1')] ).
cnf(60,plain,
inverse(inverse(divide(A,divide(B,B)))) = A,
inference(para_into,[status(thm),theory(equality)],[38,9]),
[iquote('para_into,38.1.1,9.1.1')] ).
cnf(66,plain,
divide(A,divide(B,divide(C,inverse(divide(B,A))))) = C,
inference(para_from,[status(thm),theory(equality)],[38,4]),
[iquote('para_from,38.1.1,4.1.1.2.1')] ).
cnf(71,plain,
inverse(divide(A,B)) = divide(inverse(A),inverse(B)),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[48,38])]),
[iquote('para_into,48.1.1.1.1,38.1.1,flip.1')] ).
cnf(76,plain,
divide(inverse(A),inverse(B)) = divide(divide(B,C),divide(A,C)),
inference(para_into,[status(thm),theory(equality)],[48,4]),
[iquote('para_into,48.1.1.1.1,4.1.1')] ).
cnf(86,plain,
inverse(inverse(A)) = A,
inference(para_into,[status(thm),theory(equality)],[48,13]),
[iquote('para_into,48.1.1,13.1.1')] ).
cnf(88,plain,
divide(A,divide(B,divide(C,divide(inverse(B),inverse(A))))) = C,
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[66]),71]),
[iquote('back_demod,66,demod,71')] ).
cnf(93,plain,
divide(A,divide(B,B)) = A,
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[60]),71,71,71,86,71,86,86]),
[iquote('back_demod,60,demod,71,71,71,86,71,86,86')] ).
cnf(110,plain,
divide(divide(A,A),inverse(B)) = B,
inference(para_into,[status(thm),theory(equality)],[86,7]),
[iquote('para_into,85.1.1,7.1.1')] ).
cnf(111,plain,
divide(A,divide(A,B)) = B,
inference(para_from,[status(thm),theory(equality)],[93,4]),
[iquote('para_from,93.1.1,4.1.1.2')] ).
cnf(121,plain,
divide(divide(A,B),divide(C,B)) = divide(A,C),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[111,4])]),
[iquote('para_into,111.1.1.2,4.1.1,flip.1')] ).
cnf(123,plain,
divide(inverse(A),inverse(B)) = divide(B,A),
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[76]),121]),
[iquote('back_demod,76,demod,121')] ).
cnf(124,plain,
divide(divide(A,B),inverse(B)) = A,
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[52]),121]),
[iquote('back_demod,52,demod,121')] ).
cnf(126,plain,
divide(A,divide(B,divide(C,divide(A,B)))) = C,
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[32]),121]),
[iquote('back_demod,32,demod,121')] ).
cnf(132,plain,
divide(divide(A,B),A) = inverse(B),
inference(para_from,[status(thm),theory(equality)],[124,111]),
[iquote('para_from,124.1.1,111.1.1.2')] ).
cnf(133,plain,
inverse(A) = divide(divide(B,A),B),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[132])]),
[iquote('copy,132,flip.1')] ).
cnf(138,plain,
multiply(A,divide(divide(B,B),C)) = divide(A,C),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[8,111])]),
[iquote('para_into,8.1.1.2,111.1.1,flip.1')] ).
cnf(145,plain,
multiply(divide(A,A),B) = B,
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[8,111])]),
[iquote('para_into,8.1.1,111.1.1,flip.1')] ).
cnf(155,plain,
divide(multiply(A,B),B) = A,
inference(demod,[status(thm),theory(equality)],[inference(para_from,[status(thm),theory(equality)],[8,124]),71,71,110]),
[iquote('para_from,8.1.1,124.1.1.1,demod,71,71,110')] ).
cnf(166,plain,
multiply(divide(A,B),B) = A,
inference(demod,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[155,8]),138]),
[iquote('para_into,155.1.1,8.1.1,demod,138')] ).
cnf(167,plain,
( divide(A,A) != multiply(inverse(a1),a1)
| multiply(multiply(inverse(b2),b2),a2) != a2
| multiply(multiply(a3,b3),c3) != multiply(a3,multiply(b3,c3))
| multiply(b4,a4) != multiply(a4,b4) ),
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[12]),166]),
[iquote('back_demod,12,demod,166')] ).
cnf(168,plain,
divide(multiply(A,B),A) = B,
inference(para_from,[status(thm),theory(equality)],[155,111]),
[iquote('para_from,155.1.1,111.1.1.2')] ).
cnf(170,plain,
multiply(A,divide(B,A)) = B,
inference(para_into,[status(thm),theory(equality)],[166,111]),
[iquote('para_into,165.1.1.1,111.1.1')] ).
cnf(178,plain,
multiply(A,B) = multiply(B,A),
inference(para_from,[status(thm),theory(equality)],[168,166]),
[iquote('para_from,168.1.1,165.1.1.1')] ).
cnf(179,plain,
divide(A,inverse(B)) = multiply(B,A),
inference(para_from,[status(thm),theory(equality)],[168,124]),
[iquote('para_from,168.1.1,124.1.1.1')] ).
cnf(180,plain,
multiply(A,B) = divide(B,inverse(A)),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[179])]),
[iquote('copy,179,flip.1')] ).
cnf(182,plain,
multiply(inverse(A),B) = divide(B,A),
inference(para_into,[status(thm),theory(equality)],[170,124]),
[iquote('para_into,170.1.1.2,124.1.1')] ).
cnf(185,plain,
( divide(A,A) != divide(a1,a1)
| a2 != a2
| multiply(multiply(a3,b3),c3) != multiply(a3,multiply(b3,c3))
| multiply(b4,a4) != multiply(a4,b4) ),
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[167]),182,182,145]),
[iquote('back_demod,167,demod,182,182,145')] ).
cnf(197,plain,
divide(divide(A,A),divide(inverse(B),C)) = multiply(B,C),
inference(para_into,[status(thm),theory(equality)],[30,168]),
[iquote('para_into,30.1.1.2.2,168.1.1')] ).
cnf(200,plain,
divide(divide(A,A),divide(B,C)) = divide(C,B),
inference(demod,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[30,124]),86]),
[iquote('para_into,30.1.1.2.2,124.1.1,demod,86')] ).
cnf(206,plain,
divide(A,B) = divide(divide(C,C),divide(B,A)),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[200])]),
[iquote('copy,200,flip.1')] ).
cnf(240,plain,
divide(divide(A,B),C) = divide(A,multiply(B,C)),
inference(para_into,[status(thm),theory(equality)],[40,155]),
[iquote('para_into,40.1.1.1.2,155.1.1')] ).
cnf(246,plain,
divide(divide(A,B),inverse(C)) = divide(A,divide(B,C)),
inference(para_into,[status(thm),theory(equality)],[40,124]),
[iquote('para_into,40.1.1.1.2,124.1.1')] ).
cnf(268,plain,
divide(A,multiply(B,C)) = divide(divide(A,B),C),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[240])]),
[iquote('copy,240,flip.1')] ).
cnf(340,plain,
multiply(divide(inverse(A),inverse(B)),C) = divide(C,divide(A,B)),
inference(para_from,[status(thm),theory(equality)],[71,182]),
[iquote('para_from,70.1.1,181.1.1.1')] ).
cnf(443,plain,
divide(divide(A,B),divide(A,C)) = divide(C,B),
inference(demod,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[123,133]),246]),
[iquote('para_into,123.1.1.1,133.1.1,demod,246')] ).
cnf(453,plain,
divide(A,B) = divide(divide(C,B),divide(C,A)),
inference(flip,[status(thm),theory(equality)],[inference(copy,[status(thm)],[443])]),
[iquote('copy,443,flip.1')] ).
cnf(554,plain,
divide(A,divide(B,C)) = divide(C,divide(B,A)),
inference(demod,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[88,168]),340]),
[iquote('para_into,88.1.1.2.2,168.1.1,demod,340')] ).
cnf(947,plain,
multiply(divide(A,B),C) = divide(A,divide(B,C)),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[126,168])]),
[iquote('para_into,126.1.1.2.2,168.1.1,flip.1')] ).
cnf(976,plain,
( divide(A,A) != divide(a1,a1)
| a2 != a2
| divide(b3,divide(inverse(a3),c3)) != multiply(a3,multiply(b3,c3))
| multiply(b4,a4) != multiply(a4,b4) ),
inference(demod,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[185,180]),947]),
[iquote('para_into,185.3.1.1,180.1.1,demod,947')] ).
cnf(1414,plain,
divide(divide(A,A),divide(divide(inverse(B),C),D)) = multiply(B,multiply(C,D)),
inference(para_from,[status(thm),theory(equality)],[268,197]),
[iquote('para_from,268.1.1,197.1.1.2')] ).
cnf(2774,plain,
divide(divide(A,inverse(B)),divide(A,inverse(C))) = divide(B,C),
inference(flip,[status(thm),theory(equality)],[inference(para_into,[status(thm),theory(equality)],[453,123])]),
[iquote('para_into,453.1.1,123.1.1,flip.1')] ).
cnf(2947,plain,
divide(divide(A,A),divide(divide(B,C),D)) = divide(C,divide(B,D)),
inference(para_into,[status(thm),theory(equality)],[554,206]),
[iquote('para_into,554.1.1,206.1.1')] ).
cnf(2987,plain,
divide(A,divide(inverse(B),C)) = multiply(B,multiply(A,C)),
inference(demod,[status(thm),theory(equality)],[inference(back_demod,[status(thm)],[1414]),2947]),
[iquote('back_demod,1414,demod,2947')] ).
cnf(3494,plain,
$false,
inference(hyper,[status(thm)],[976,2774,3,2987,178]),
[iquote('hyper,976,2774,3,2987,178')] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12 % Problem : GRP089-1 : TPTP v8.1.0. Bugfixed v2.7.0.
% 0.03/0.13 % Command : otter-tptp-script %s
% 0.14/0.33 % Computer : n022.cluster.edu
% 0.14/0.33 % Model : x86_64 x86_64
% 0.14/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.33 % Memory : 8042.1875MB
% 0.14/0.33 % OS : Linux 3.10.0-693.el7.x86_64
% 0.14/0.33 % CPULimit : 300
% 0.14/0.33 % WCLimit : 300
% 0.14/0.33 % DateTime : Wed Jul 27 05:12:20 EDT 2022
% 0.14/0.34 % CPUTime :
% 3.96/4.16 ----- Otter 3.3f, August 2004 -----
% 3.96/4.16 The process was started by sandbox2 on n022.cluster.edu,
% 3.96/4.16 Wed Jul 27 05:12:20 2022
% 3.96/4.16 The command was "./otter". The process ID is 2548.
% 3.96/4.16
% 3.96/4.16 set(prolog_style_variables).
% 3.96/4.16 set(auto).
% 3.96/4.16 dependent: set(auto1).
% 3.96/4.16 dependent: set(process_input).
% 3.96/4.16 dependent: clear(print_kept).
% 3.96/4.16 dependent: clear(print_new_demod).
% 3.96/4.16 dependent: clear(print_back_demod).
% 3.96/4.16 dependent: clear(print_back_sub).
% 3.96/4.16 dependent: set(control_memory).
% 3.96/4.16 dependent: assign(max_mem, 12000).
% 3.96/4.16 dependent: assign(pick_given_ratio, 4).
% 3.96/4.16 dependent: assign(stats_level, 1).
% 3.96/4.16 dependent: assign(max_seconds, 10800).
% 3.96/4.16 clear(print_given).
% 3.96/4.16
% 3.96/4.16 list(usable).
% 3.96/4.16 0 [] A=A.
% 3.96/4.16 0 [] divide(X,divide(divide(X,Y),divide(Z,Y)))=Z.
% 3.96/4.16 0 [] multiply(X,Y)=divide(X,divide(divide(Z,Z),Y)).
% 3.96/4.16 0 [] inverse(X)=divide(divide(Z,Z),X).
% 3.96/4.16 0 [] multiply(inverse(a1),a1)!=multiply(inverse(b1),b1)|multiply(multiply(inverse(b2),b2),a2)!=a2|multiply(multiply(a3,b3),c3)!=multiply(a3,multiply(b3,c3))|multiply(a4,b4)!=multiply(b4,a4).
% 3.96/4.16 end_of_list.
% 3.96/4.16
% 3.96/4.16 SCAN INPUT: prop=0, horn=1, equality=1, symmetry=0, max_lits=4.
% 3.96/4.16
% 3.96/4.16 This is a Horn set with equality. The strategy will be
% 3.96/4.16 Knuth-Bendix and hyper_res, with positive clauses in
% 3.96/4.16 sos and nonpositive clauses in usable.
% 3.96/4.16
% 3.96/4.16 dependent: set(knuth_bendix).
% 3.96/4.16 dependent: set(anl_eq).
% 3.96/4.16 dependent: set(para_from).
% 3.96/4.16 dependent: set(para_into).
% 3.96/4.16 dependent: clear(para_from_right).
% 3.96/4.16 dependent: clear(para_into_right).
% 3.96/4.16 dependent: set(para_from_vars).
% 3.96/4.16 dependent: set(eq_units_both_ways).
% 3.96/4.16 dependent: set(dynamic_demod_all).
% 3.96/4.16 dependent: set(dynamic_demod).
% 3.96/4.16 dependent: set(order_eq).
% 3.96/4.16 dependent: set(back_demod).
% 3.96/4.16 dependent: set(lrpo).
% 3.96/4.16 dependent: set(hyper_res).
% 3.96/4.16 dependent: clear(order_hyper).
% 3.96/4.16
% 3.96/4.16 ------------> process usable:
% 3.96/4.16 ** KEPT (pick-wt=35): 2 [copy,1,flip.1,flip.4] multiply(inverse(b1),b1)!=multiply(inverse(a1),a1)|multiply(multiply(inverse(b2),b2),a2)!=a2|multiply(multiply(a3,b3),c3)!=multiply(a3,multiply(b3,c3))|multiply(b4,a4)!=multiply(a4,b4).
% 3.96/4.16
% 3.96/4.16 ------------> process sos:
% 3.96/4.16 ** KEPT (pick-wt=3): 3 [] A=A.
% 3.96/4.16 ** KEPT (pick-wt=11): 4 [] divide(A,divide(divide(A,B),divide(C,B)))=C.
% 3.96/4.16 ---> New Demodulator: 5 [new_demod,4] divide(A,divide(divide(A,B),divide(C,B)))=C.
% 3.96/4.16 ** KEPT (pick-wt=11): 6 [] multiply(A,B)=divide(A,divide(divide(C,C),B)).
% 3.96/4.16 ** KEPT (pick-wt=8): 7 [] inverse(A)=divide(divide(B,B),A).
% 3.96/4.16 Following clause subsumed by 3 during input processing: 0 [copy,3,flip.1] A=A.
% 3.96/4.16 >>>> Starting back demodulation with 5.
% 3.96/4.16 ** KEPT (pick-wt=11): 8 [copy,6,flip.1] divide(A,divide(divide(B,B),C))=multiply(A,C).
% 3.96/4.16 ** KEPT (pick-wt=8): 9 [copy,7,flip.1] divide(divide(A,A),B)=inverse(B).
% 3.96/4.16 Following clause subsumed by 6 during input processing: 0 [copy,8,flip.1] multiply(A,B)=divide(A,divide(divide(C,C),B)).
% 3.96/4.16 Following clause subsumed by 7 during input processing: 0 [copy,9,flip.1] inverse(A)=divide(divide(B,B),A).
% 3.96/4.16
% 3.96/4.16 ======= end of input processing =======
% 3.96/4.16
% 3.96/4.16 =========== start of search ===========
% 3.96/4.16
% 3.96/4.16
% 3.96/4.16 Resetting weight limit to 12.
% 3.96/4.16
% 3.96/4.16
% 3.96/4.16 Resetting weight limit to 12.
% 3.96/4.16
% 3.96/4.16 sos_size=2016
% 3.96/4.16
% 3.96/4.16 -------- PROOF --------
% 3.96/4.16
% 3.96/4.16 -----> EMPTY CLAUSE at 2.26 sec ----> 3494 [hyper,976,2774,3,2987,178] $F.
% 3.96/4.16
% 3.96/4.16 Length of proof is 54. Level of proof is 16.
% 3.96/4.16
% 3.96/4.16 ---------------- PROOF ----------------
% 3.96/4.16 % SZS status Unsatisfiable
% 3.96/4.16 % SZS output start Refutation
% See solution above
% 3.96/4.16 ------------ end of proof -------------
% 3.96/4.16
% 3.96/4.16
% 3.96/4.16 Search stopped by max_proofs option.
% 3.96/4.16
% 3.96/4.16
% 3.96/4.16 Search stopped by max_proofs option.
% 3.96/4.16
% 3.96/4.16 ============ end of search ============
% 3.96/4.16
% 3.96/4.16 -------------- statistics -------------
% 3.96/4.16 clauses given 706
% 3.96/4.16 clauses generated 476764
% 3.96/4.16 clauses kept 2910
% 3.96/4.16 clauses forward subsumed 234461
% 3.96/4.16 clauses back subsumed 11
% 3.96/4.16 Kbytes malloced 4882
% 3.96/4.16
% 3.96/4.16 ----------- times (seconds) -----------
% 3.96/4.16 user CPU time 2.26 (0 hr, 0 min, 2 sec)
% 3.96/4.16 system CPU time 0.01 (0 hr, 0 min, 0 sec)
% 3.96/4.16 wall-clock time 4 (0 hr, 0 min, 4 sec)
% 3.96/4.16
% 3.96/4.16 That finishes the proof of the theorem.
% 3.96/4.16
% 3.96/4.16 Process 2548 finished Wed Jul 27 05:12:24 2022
% 3.96/4.16 Otter interrupted
% 3.96/4.16 PROOF FOUND
%------------------------------------------------------------------------------