TSTP Solution File: SWV172+1 by cvc5---1.0.5

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : cvc5---1.0.5
% Problem  : SWV172+1 : TPTP v8.1.2. Bugfixed v3.3.0.
% Transfm  : none
% Format   : tptp
% Command  : do_cvc5 %s %d

% Computer : n009.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 : Thu Aug 31 21:49:35 EDT 2023

% Result   : Theorem 0.41s 0.63s
% Output   : Proof 0.45s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.13  % Problem    : SWV172+1 : TPTP v8.1.2. Bugfixed v3.3.0.
% 0.11/0.14  % Command    : do_cvc5 %s %d
% 0.14/0.35  % Computer : n009.cluster.edu
% 0.14/0.35  % Model    : x86_64 x86_64
% 0.14/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.35  % Memory   : 8042.1875MB
% 0.14/0.35  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35  % CPULimit   : 300
% 0.14/0.35  % WCLimit    : 300
% 0.14/0.35  % DateTime   : Tue Aug 29 08:25:50 EDT 2023
% 0.14/0.35  % CPUTime    : 
% 0.21/0.49  %----Proving TF0_NAR, FOF, or CNF
% 0.41/0.63  ------- convert to smt2 : /export/starexec/sandbox2/tmp/tmp.XTl5qlbQFJ/cvc5---1.0.5_17971.p...
% 0.41/0.63  ------- get file name : TPTP file name is SWV172+1
% 0.41/0.63  ------- cvc5-fof : /export/starexec/sandbox2/solver/bin/cvc5---1.0.5_17971.smt2...
% 0.41/0.63  --- Run --decision=internal --simplification=none --no-inst-no-entail --no-cbqi --full-saturate-quant at 10...
% 0.41/0.63  % SZS status Theorem for SWV172+1
% 0.41/0.63  % SZS output start Proof for SWV172+1
% 0.41/0.63  (
% 0.41/0.63  (let ((_let_1 (tptp.succ tptp.n0))) (let ((_let_2 (tptp.succ _let_1))) (let ((_let_3 (tptp.succ _let_2))) (let ((_let_4 (tptp.succ _let_3))) (let ((_let_5 (tptp.a_select2 tptp.rho_init tptp.pv54))) (let ((_let_6 (tptp.gt tptp.loopcounter tptp.n1))) (let ((_let_7 (tptp.leq tptp.pv54 tptp.n4))) (let ((_let_8 (tptp.leq tptp.n0 tptp.pv54))) (let ((_let_9 (not (=> (and (tptp.leq tptp.n0 tptp.pv10) _let_8 (tptp.leq tptp.pv10 tptp.n135299) _let_7 (forall ((A $$unsorted)) (=> (and (tptp.leq tptp.n0 A) (tptp.leq A tptp.n135299)) (forall ((B $$unsorted)) (=> (and (tptp.leq tptp.n0 B) (tptp.leq B tptp.n4)) (= (tptp.a_select3 tptp.q_init A B) tptp.init))))) (forall ((C $$unsorted)) (=> (and (tptp.leq tptp.n0 C) (tptp.leq C tptp.n4)) (= (tptp.a_select2 tptp.rho_init C) tptp.init))) (forall ((D $$unsorted)) (=> (and (tptp.leq tptp.n0 D) (tptp.leq D tptp.n4)) (= (tptp.a_select2 tptp.mu_init D) tptp.init))) (forall ((E $$unsorted)) (=> (and (tptp.leq tptp.n0 E) (tptp.leq E tptp.n4)) (= (tptp.a_select2 tptp.sigma_init E) tptp.init))) (forall ((F $$unsorted)) (=> (and (tptp.leq tptp.n0 F) (tptp.leq F tptp.n4)) (= (tptp.a_select3 tptp.center_init F tptp.n0) tptp.init))) (=> _let_6 (forall ((G $$unsorted)) (=> (and (tptp.leq tptp.n0 G) (tptp.leq G tptp.n4)) (= (tptp.a_select2 tptp.muold_init G) tptp.init)))) (=> _let_6 (forall ((H $$unsorted)) (=> (and (tptp.leq tptp.n0 H) (tptp.leq H tptp.n4)) (= (tptp.a_select2 tptp.rhoold_init H) tptp.init)))) (=> _let_6 (forall ((I $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I tptp.n4)) (= (tptp.a_select2 tptp.sigmaold_init I) tptp.init))))) (= _let_5 tptp.init))))) (let ((_let_10 (forall ((C $$unsorted)) (or (not (tptp.leq tptp.n0 C)) (not (tptp.leq C tptp.n4)) (= tptp.init (tptp.a_select2 tptp.rho_init C)))))) (let ((_let_11 (= tptp.init _let_5))) (let ((_let_12 (not _let_7))) (let ((_let_13 (not _let_8))) (let ((_let_14 (or _let_13 _let_12 _let_11))) (let ((_let_15 (EQ_RESOLVE (ASSUME :args (_let_9)) (MACRO_SR_EQ_INTRO :args (_let_9 SB_DEFAULT SBA_FIXPOINT))))) (let ((_let_16 (NOT_IMPLIES_ELIM1 _let_15))) (let ((_let_17 (not _let_14))) (let ((_let_18 (_let_10))) (SCOPE (SCOPE (MACRO_RESOLUTION_TRUST (IMPLIES_ELIM (SCOPE (INSTANTIATE (ASSUME :args _let_18) :args (tptp.pv54 QUANTIFIERS_INST_E_MATCHING_SIMPLE ((not (= (tptp.leq tptp.n0 C) false))))) :args _let_18)) (MACRO_RESOLUTION_TRUST (REORDERING (CNF_OR_POS :args (_let_14)) :args ((or _let_11 _let_13 _let_12 _let_17))) (NOT_IMPLIES_ELIM2 _let_15) (AND_ELIM _let_16 :args (1)) (AND_ELIM _let_16 :args (3)) :args (_let_17 true _let_11 false _let_8 false _let_7)) (AND_ELIM _let_16 :args (5)) :args (false true _let_14 false _let_10)) :args ((forall ((X $$unsorted) (Y $$unsorted)) (or (tptp.gt X Y) (tptp.gt Y X) (= X Y))) (forall ((X $$unsorted) (Y $$unsorted) (Z $$unsorted)) (=> (and (tptp.gt X Y) (tptp.gt Y Z)) (tptp.gt X Z))) (forall ((X $$unsorted)) (not (tptp.gt X X))) (forall ((X $$unsorted)) (tptp.leq X X)) (forall ((X $$unsorted) (Y $$unsorted) (Z $$unsorted)) (=> (and (tptp.leq X Y) (tptp.leq Y Z)) (tptp.leq X Z))) (forall ((X $$unsorted) (Y $$unsorted)) (= (tptp.lt X Y) (tptp.gt Y X))) (forall ((X $$unsorted) (Y $$unsorted)) (= (tptp.geq X Y) (tptp.leq Y X))) (forall ((X $$unsorted) (Y $$unsorted)) (=> (tptp.gt Y X) (tptp.leq X Y))) (forall ((X $$unsorted) (Y $$unsorted)) (=> (and (tptp.leq X Y) (not (= X Y))) (tptp.gt Y X))) (forall ((X $$unsorted) (Y $$unsorted)) (= (tptp.leq X (tptp.pred Y)) (tptp.gt Y X))) (forall ((X $$unsorted)) (tptp.gt (tptp.succ X) X)) (forall ((X $$unsorted) (Y $$unsorted)) (=> (tptp.leq X Y) (tptp.leq X (tptp.succ Y)))) (forall ((X $$unsorted) (Y $$unsorted)) (= (tptp.leq X Y) (tptp.gt (tptp.succ Y) X))) (forall ((X $$unsorted) (C $$unsorted)) (=> (tptp.leq tptp.n0 X) (tptp.leq (tptp.uniform_int_rnd C X) X))) (forall ((X $$unsorted) (C $$unsorted)) (=> (tptp.leq tptp.n0 X) (tptp.leq tptp.n0 (tptp.uniform_int_rnd C X)))) (forall ((I $$unsorted) (L $$unsorted) (U $$unsorted) (Val $$unsorted)) (=> (and (tptp.leq L I) (tptp.leq I U)) (= (tptp.a_select2 (tptp.tptp_const_array1 (tptp.dim L U) Val) I) Val))) (forall ((I $$unsorted) (L1 $$unsorted) (U1 $$unsorted) (J $$unsorted) (L2 $$unsorted) (U2 $$unsorted) (Val $$unsorted)) (=> (and (tptp.leq L1 I) (tptp.leq I U1) (tptp.leq L2 J) (tptp.leq J U2)) (= (tptp.a_select3 (tptp.tptp_const_array2 (tptp.dim L1 U1) (tptp.dim L2 U2) Val) I J) Val))) (forall ((A $$unsorted) (N $$unsorted)) (=> (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.trans A))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (N $$unsorted)) (=> (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.inv A))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (N $$unsorted)) (=> (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted) (K $$unsorted) (VAL $$unsorted)) (let ((_let_1 (tptp.tptp_update3 A K K VAL))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N) (tptp.leq tptp.n0 K) (tptp.leq K N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (B $$unsorted) (N $$unsorted)) (=> (and (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 B I J) (tptp.a_select3 B J I))))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.tptp_madd A B))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (B $$unsorted) (N $$unsorted)) (=> (and (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 B I J) (tptp.a_select3 B J I))))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.tptp_msub A B))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (B $$unsorted) (N $$unsorted)) (=> (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 B I J) (tptp.a_select3 B J I)))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.tptp_mmul A (tptp.tptp_mmul B (tptp.trans A))))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (B $$unsorted) (N $$unsorted) (M $$unsorted)) (=> (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I M) (tptp.leq tptp.n0 J) (tptp.leq J M)) (= (tptp.a_select3 B I J) (tptp.a_select3 B J I)))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.tptp_mmul A (tptp.tptp_mmul B (tptp.trans A))))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((A $$unsorted) (B $$unsorted) (C $$unsorted) (D $$unsorted) (E $$unsorted) (F $$unsorted) (N $$unsorted) (M $$unsorted)) (=> (and (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I M) (tptp.leq tptp.n0 J) (tptp.leq J M)) (= (tptp.a_select3 D I J) (tptp.a_select3 D J I)))) (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 A I J) (tptp.a_select3 A J I)))) (forall ((I $$unsorted) (J $$unsorted)) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 F I J) (tptp.a_select3 F J I))))) (forall ((I $$unsorted) (J $$unsorted)) (let ((_let_1 (tptp.tptp_madd A (tptp.tptp_mmul B (tptp.tptp_mmul (tptp.tptp_madd (tptp.tptp_mmul C (tptp.tptp_mmul D (tptp.trans C))) (tptp.tptp_mmul E (tptp.tptp_mmul F (tptp.trans E)))) (tptp.trans B)))))) (=> (and (tptp.leq tptp.n0 I) (tptp.leq I N) (tptp.leq tptp.n0 J) (tptp.leq J N)) (= (tptp.a_select3 _let_1 I J) (tptp.a_select3 _let_1 J I))))))) (forall ((Body $$unsorted)) (= (tptp.sum tptp.n0 tptp.tptp_minus_1 Body) tptp.n0)) (forall ((Body $$unsorted)) (= tptp.tptp_float_0_0 (tptp.sum tptp.n0 tptp.tptp_minus_1 Body))) (= (tptp.succ tptp.tptp_minus_1) tptp.n0) (forall ((X $$unsorted)) (= (tptp.plus X tptp.n1) (tptp.succ X))) (forall ((X $$unsorted)) (= (tptp.plus tptp.n1 X) (tptp.succ X))) (forall ((X $$unsorted)) (= (tptp.plus X tptp.n2) (tptp.succ (tptp.succ X)))) (forall ((X $$unsorted)) (= (tptp.plus tptp.n2 X) (tptp.succ (tptp.succ X)))) (forall ((X $$unsorted)) (= (tptp.plus X tptp.n3) (tptp.succ (tptp.succ (tptp.succ X))))) (forall ((X $$unsorted)) (= (tptp.plus tptp.n3 X) (tptp.succ (tptp.succ (tptp.succ X))))) (forall ((X $$unsorted)) (= (tptp.plus X tptp.n4) (tptp.succ (tptp.succ (tptp.succ (tptp.succ X)))))) (forall ((X $$unsorted)) (= (tptp.plus tptp.n4 X) (tptp.succ (tptp.succ (tptp.succ (tptp.succ X)))))) (forall ((X $$unsorted)) (= (tptp.plus X tptp.n5) (tptp.succ (tptp.succ (tptp.succ (tptp.succ (tptp.succ X))))))) (forall ((X $$unsorted)) (= (tptp.plus tptp.n5 X) (tptp.succ (tptp.succ (tptp.succ (tptp.succ (tptp.succ X))))))) (forall ((X $$unsorted)) (= (tptp.minus X tptp.n1) (tptp.pred X))) (forall ((X $$unsorted)) (= (tptp.pred (tptp.succ X)) X)) (forall ((X $$unsorted)) (= (tptp.succ (tptp.pred X)) X)) (forall ((X $$unsorted) (Y $$unsorted)) (= (tptp.leq (tptp.succ X) (tptp.succ Y)) (tptp.leq X Y))) (forall ((X $$unsorted) (Y $$unsorted)) (=> (tptp.leq (tptp.succ X) Y) (tptp.gt Y X))) (forall ((X $$unsorted) (Y $$unsorted)) (=> (tptp.leq (tptp.minus X Y) X) (tptp.leq tptp.n0 Y))) (forall ((X $$unsorted) (U $$unsorted) (V $$unsorted) (VAL $$unsorted)) (= (tptp.a_select3 (tptp.tptp_update3 X U V VAL) U V) VAL)) (forall ((I $$unsorted) (J $$unsorted) (U $$unsorted) (V $$unsorted) (X $$unsorted) (VAL $$unsorted) (VAL2 $$unsorted)) (=> (and (not (= I U)) (= J V) (= (tptp.a_select3 X U V) VAL)) (= (tptp.a_select3 (tptp.tptp_update3 X I J VAL2) U V) VAL))) (forall ((I $$unsorted) (J $$unsorted) (U $$unsorted) (V $$unsorted) (X $$unsorted) (VAL $$unsorted)) (=> (and (forall ((I0 $$unsorted) (J0 $$unsorted)) (=> (and (tptp.leq tptp.n0 I0) (tptp.leq tptp.n0 J0) (tptp.leq I0 U) (tptp.leq J0 V)) (= (tptp.a_select3 X I0 J0) VAL))) (tptp.leq tptp.n0 I) (tptp.leq I U) (tptp.leq tptp.n0 J) (tptp.leq J V)) (= (tptp.a_select3 (tptp.tptp_update3 X U V VAL) I J) VAL))) (forall ((X $$unsorted) (U $$unsorted) (VAL $$unsorted)) (= (tptp.a_select2 (tptp.tptp_update2 X U VAL) U) VAL)) (forall ((I $$unsorted) (U $$unsorted) (X $$unsorted) (VAL $$unsorted) (VAL2 $$unsorted)) (=> (and (not (= I U)) (= (tptp.a_select2 X U) VAL)) (= (tptp.a_select2 (tptp.tptp_update2 X I VAL2) U) VAL))) (forall ((I $$unsorted) (U $$unsorted) (X $$unsorted) (VAL $$unsorted)) (=> (and (forall ((I0 $$unsorted)) (=> (and (tptp.leq tptp.n0 I0) (tptp.leq I0 U)) (= (tptp.a_select2 X I0) VAL))) (tptp.leq tptp.n0 I) (tptp.leq I U)) (= (tptp.a_select2 (tptp.tptp_update2 X U VAL) I) VAL))) tptp.true (not (= tptp.def tptp.use)) _let_9 (tptp.gt tptp.n5 tptp.n4) (tptp.gt tptp.n135299 tptp.n4) (tptp.gt tptp.n135299 tptp.n5) (tptp.gt tptp.n4 tptp.tptp_minus_1) (tptp.gt tptp.n5 tptp.tptp_minus_1) (tptp.gt tptp.n135299 tptp.tptp_minus_1) (tptp.gt tptp.n0 tptp.tptp_minus_1) (tptp.gt tptp.n1 tptp.tptp_minus_1) (tptp.gt tptp.n2 tptp.tptp_minus_1) (tptp.gt tptp.n3 tptp.tptp_minus_1) (tptp.gt tptp.n4 tptp.n0) (tptp.gt tptp.n5 tptp.n0) (tptp.gt tptp.n135299 tptp.n0) (tptp.gt tptp.n1 tptp.n0) (tptp.gt tptp.n2 tptp.n0) (tptp.gt tptp.n3 tptp.n0) (tptp.gt tptp.n4 tptp.n1) (tptp.gt tptp.n5 tptp.n1) (tptp.gt tptp.n135299 tptp.n1) (tptp.gt tptp.n2 tptp.n1) (tptp.gt tptp.n3 tptp.n1) (tptp.gt tptp.n4 tptp.n2) (tptp.gt tptp.n5 tptp.n2) (tptp.gt tptp.n135299 tptp.n2) (tptp.gt tptp.n3 tptp.n2) (tptp.gt tptp.n4 tptp.n3) (tptp.gt tptp.n5 tptp.n3) (tptp.gt tptp.n135299 tptp.n3) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n4)) (or (= X tptp.n0) (= X tptp.n1) (= X tptp.n2) (= X tptp.n3) (= X tptp.n4)))) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n5)) (or (= X tptp.n0) (= X tptp.n1) (= X tptp.n2) (= X tptp.n3) (= X tptp.n4) (= X tptp.n5)))) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n0)) (= X tptp.n0))) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n1)) (or (= X tptp.n0) (= X tptp.n1)))) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n2)) (or (= X tptp.n0) (= X tptp.n1) (= X tptp.n2)))) (forall ((X $$unsorted)) (=> (and (tptp.leq tptp.n0 X) (tptp.leq X tptp.n3)) (or (= X tptp.n0) (= X tptp.n1) (= X tptp.n2) (= X tptp.n3)))) (= _let_4 tptp.n4) (= (tptp.succ _let_4) tptp.n5) (= _let_1 tptp.n1) (= _let_2 tptp.n2) (= _let_3 tptp.n3) true)))))))))))))))))))))
% 0.45/0.65  )
% 0.45/0.65  % SZS output end Proof for SWV172+1
% 0.45/0.65  % cvc5---1.0.5 exiting
% 0.45/0.65  % cvc5---1.0.5 exiting
%------------------------------------------------------------------------------