TSTP Solution File: NUM434+1 by Drodi---3.6.0
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Drodi---3.6.0
% Problem : NUM434+1 : TPTP v8.1.2. Released v4.0.0.
% Transfm : none
% Format : tptp:raw
% Command : drodi -learnfrom(drodi.lrn) -timeout(%d) %s
% Computer : n013.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 : Tue Apr 30 20:34:40 EDT 2024
% Result : Theorem 0.13s 0.36s
% Output : CNFRefutation 0.13s
% Verified :
% SZS Type : Refutation
% Derivation depth : 8
% Number of leaves : 24
% Syntax : Number of formulae : 97 ( 15 unt; 2 def)
% Number of atoms : 301 ( 52 equ)
% Maximal formula atoms : 11 ( 3 avg)
% Number of connectives : 341 ( 137 ~; 142 |; 35 &)
% ( 18 <=>; 9 =>; 0 <=; 0 <~>)
% Maximal formula depth : 11 ( 4 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 19 ( 17 usr; 15 prp; 0-3 aty)
% Number of functors : 9 ( 9 usr; 5 con; 0-2 aty)
% Number of variables : 69 ( 63 !; 6 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f4,axiom,
! [W0] :
( aInteger0(W0)
=> aInteger0(smndt0(W0)) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f5,axiom,
! [W0,W1] :
( ( aInteger0(W0)
& aInteger0(W1) )
=> aInteger0(sdtpldt0(W0,W1)) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f6,axiom,
! [W0,W1] :
( ( aInteger0(W0)
& aInteger0(W1) )
=> aInteger0(sdtasdt0(W0,W1)) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f17,axiom,
! [W0,W1] :
( ( aInteger0(W0)
& aInteger0(W1) )
=> ( sdtasdt0(W0,W1) = sz00
=> ( W0 = sz00
| W1 = sz00 ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f18,definition,
! [W0] :
( aInteger0(W0)
=> ! [W1] :
( aDivisorOf0(W1,W0)
<=> ( aInteger0(W1)
& W1 != sz00
& ? [W2] :
( aInteger0(W2)
& sdtasdt0(W1,W2) = W0 ) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f19,definition,
! [W0,W1,W2] :
( ( aInteger0(W0)
& aInteger0(W1)
& aInteger0(W2)
& W2 != sz00 )
=> ( sdteqdtlpzmzozddtrp0(W0,W1,W2)
<=> aDivisorOf0(W2,sdtpldt0(W0,smndt0(W1))) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f21,axiom,
! [W0,W1,W2] :
( ( aInteger0(W0)
& aInteger0(W1)
& aInteger0(W2)
& W2 != sz00 )
=> ( sdteqdtlpzmzozddtrp0(W0,W1,W2)
=> sdteqdtlpzmzozddtrp0(W1,W0,W2) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f23,hypothesis,
( aInteger0(xa)
& aInteger0(xb)
& aInteger0(xp)
& xp != sz00
& aInteger0(xq)
& xq != sz00 ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f24,hypothesis,
sdteqdtlpzmzozddtrp0(xa,xb,sdtasdt0(xp,xq)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f25,conjecture,
? [W0] :
( aInteger0(W0)
& sdtasdt0(sdtasdt0(xp,xq),W0) = sdtpldt0(xa,smndt0(xb)) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f26,negated_conjecture,
~ ? [W0] :
( aInteger0(W0)
& sdtasdt0(sdtasdt0(xp,xq),W0) = sdtpldt0(xa,smndt0(xb)) ),
inference(negated_conjecture,[status(cth)],[f25]) ).
fof(f32,plain,
! [W0] :
( ~ aInteger0(W0)
| aInteger0(smndt0(W0)) ),
inference(pre_NNF_transformation,[status(esa)],[f4]) ).
fof(f33,plain,
! [X0] :
( ~ aInteger0(X0)
| aInteger0(smndt0(X0)) ),
inference(cnf_transformation,[status(esa)],[f32]) ).
fof(f34,plain,
! [W0,W1] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| aInteger0(sdtpldt0(W0,W1)) ),
inference(pre_NNF_transformation,[status(esa)],[f5]) ).
fof(f35,plain,
! [X0,X1] :
( ~ aInteger0(X0)
| ~ aInteger0(X1)
| aInteger0(sdtpldt0(X0,X1)) ),
inference(cnf_transformation,[status(esa)],[f34]) ).
fof(f36,plain,
! [W0,W1] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| aInteger0(sdtasdt0(W0,W1)) ),
inference(pre_NNF_transformation,[status(esa)],[f6]) ).
fof(f37,plain,
! [X0,X1] :
( ~ aInteger0(X0)
| ~ aInteger0(X1)
| aInteger0(sdtasdt0(X0,X1)) ),
inference(cnf_transformation,[status(esa)],[f36]) ).
fof(f64,plain,
! [W0,W1] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| sdtasdt0(W0,W1) != sz00
| W0 = sz00
| W1 = sz00 ),
inference(pre_NNF_transformation,[status(esa)],[f17]) ).
fof(f65,plain,
! [X0,X1] :
( ~ aInteger0(X0)
| ~ aInteger0(X1)
| sdtasdt0(X0,X1) != sz00
| X0 = sz00
| X1 = sz00 ),
inference(cnf_transformation,[status(esa)],[f64]) ).
fof(f66,plain,
! [W0] :
( ~ aInteger0(W0)
| ! [W1] :
( aDivisorOf0(W1,W0)
<=> ( aInteger0(W1)
& W1 != sz00
& ? [W2] :
( aInteger0(W2)
& sdtasdt0(W1,W2) = W0 ) ) ) ),
inference(pre_NNF_transformation,[status(esa)],[f18]) ).
fof(f67,plain,
! [W0] :
( ~ aInteger0(W0)
| ! [W1] :
( ( ~ aDivisorOf0(W1,W0)
| ( aInteger0(W1)
& W1 != sz00
& ? [W2] :
( aInteger0(W2)
& sdtasdt0(W1,W2) = W0 ) ) )
& ( aDivisorOf0(W1,W0)
| ~ aInteger0(W1)
| W1 = sz00
| ! [W2] :
( ~ aInteger0(W2)
| sdtasdt0(W1,W2) != W0 ) ) ) ),
inference(NNF_transformation,[status(esa)],[f66]) ).
fof(f68,plain,
! [W0] :
( ~ aInteger0(W0)
| ( ! [W1] :
( ~ aDivisorOf0(W1,W0)
| ( aInteger0(W1)
& W1 != sz00
& ? [W2] :
( aInteger0(W2)
& sdtasdt0(W1,W2) = W0 ) ) )
& ! [W1] :
( aDivisorOf0(W1,W0)
| ~ aInteger0(W1)
| W1 = sz00
| ! [W2] :
( ~ aInteger0(W2)
| sdtasdt0(W1,W2) != W0 ) ) ) ),
inference(miniscoping,[status(esa)],[f67]) ).
fof(f69,plain,
! [W0] :
( ~ aInteger0(W0)
| ( ! [W1] :
( ~ aDivisorOf0(W1,W0)
| ( aInteger0(W1)
& W1 != sz00
& aInteger0(sk0_0(W1,W0))
& sdtasdt0(W1,sk0_0(W1,W0)) = W0 ) )
& ! [W1] :
( aDivisorOf0(W1,W0)
| ~ aInteger0(W1)
| W1 = sz00
| ! [W2] :
( ~ aInteger0(W2)
| sdtasdt0(W1,W2) != W0 ) ) ) ),
inference(skolemization,[status(esa)],[f68]) ).
fof(f72,plain,
! [X0,X1] :
( ~ aInteger0(X0)
| ~ aDivisorOf0(X1,X0)
| aInteger0(sk0_0(X1,X0)) ),
inference(cnf_transformation,[status(esa)],[f69]) ).
fof(f73,plain,
! [X0,X1] :
( ~ aInteger0(X0)
| ~ aDivisorOf0(X1,X0)
| sdtasdt0(X1,sk0_0(X1,X0)) = X0 ),
inference(cnf_transformation,[status(esa)],[f69]) ).
fof(f75,plain,
! [W0,W1,W2] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| ~ aInteger0(W2)
| W2 = sz00
| ( sdteqdtlpzmzozddtrp0(W0,W1,W2)
<=> aDivisorOf0(W2,sdtpldt0(W0,smndt0(W1))) ) ),
inference(pre_NNF_transformation,[status(esa)],[f19]) ).
fof(f76,plain,
! [W0,W1,W2] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| ~ aInteger0(W2)
| W2 = sz00
| ( ( ~ sdteqdtlpzmzozddtrp0(W0,W1,W2)
| aDivisorOf0(W2,sdtpldt0(W0,smndt0(W1))) )
& ( sdteqdtlpzmzozddtrp0(W0,W1,W2)
| ~ aDivisorOf0(W2,sdtpldt0(W0,smndt0(W1))) ) ) ),
inference(NNF_transformation,[status(esa)],[f75]) ).
fof(f77,plain,
! [X0,X1,X2] :
( ~ aInteger0(X0)
| ~ aInteger0(X1)
| ~ aInteger0(X2)
| X2 = sz00
| ~ sdteqdtlpzmzozddtrp0(X0,X1,X2)
| aDivisorOf0(X2,sdtpldt0(X0,smndt0(X1))) ),
inference(cnf_transformation,[status(esa)],[f76]) ).
fof(f81,plain,
! [W0,W1,W2] :
( ~ aInteger0(W0)
| ~ aInteger0(W1)
| ~ aInteger0(W2)
| W2 = sz00
| ~ sdteqdtlpzmzozddtrp0(W0,W1,W2)
| sdteqdtlpzmzozddtrp0(W1,W0,W2) ),
inference(pre_NNF_transformation,[status(esa)],[f21]) ).
fof(f82,plain,
! [X0,X1,X2] :
( ~ aInteger0(X0)
| ~ aInteger0(X1)
| ~ aInteger0(X2)
| X2 = sz00
| ~ sdteqdtlpzmzozddtrp0(X0,X1,X2)
| sdteqdtlpzmzozddtrp0(X1,X0,X2) ),
inference(cnf_transformation,[status(esa)],[f81]) ).
fof(f85,plain,
aInteger0(xa),
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f86,plain,
aInteger0(xb),
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f87,plain,
aInteger0(xp),
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f88,plain,
xp != sz00,
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f89,plain,
aInteger0(xq),
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f90,plain,
xq != sz00,
inference(cnf_transformation,[status(esa)],[f23]) ).
fof(f91,plain,
sdteqdtlpzmzozddtrp0(xa,xb,sdtasdt0(xp,xq)),
inference(cnf_transformation,[status(esa)],[f24]) ).
fof(f92,plain,
! [W0] :
( ~ aInteger0(W0)
| sdtasdt0(sdtasdt0(xp,xq),W0) != sdtpldt0(xa,smndt0(xb)) ),
inference(pre_NNF_transformation,[status(esa)],[f26]) ).
fof(f93,plain,
! [X0] :
( ~ aInteger0(X0)
| sdtasdt0(sdtasdt0(xp,xq),X0) != sdtpldt0(xa,smndt0(xb)) ),
inference(cnf_transformation,[status(esa)],[f92]) ).
fof(f120,plain,
( spl0_4
<=> aInteger0(sdtpldt0(xa,smndt0(xb))) ),
introduced(split_symbol_definition) ).
fof(f122,plain,
( ~ aInteger0(sdtpldt0(xa,smndt0(xb)))
| spl0_4 ),
inference(component_clause,[status(thm)],[f120]) ).
fof(f123,plain,
( spl0_5
<=> aDivisorOf0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb))) ),
introduced(split_symbol_definition) ).
fof(f125,plain,
( ~ aDivisorOf0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb)))
| spl0_5 ),
inference(component_clause,[status(thm)],[f123]) ).
fof(f126,plain,
( spl0_6
<=> aInteger0(sk0_0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb)))) ),
introduced(split_symbol_definition) ).
fof(f128,plain,
( ~ aInteger0(sk0_0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb))))
| spl0_6 ),
inference(component_clause,[status(thm)],[f126]) ).
fof(f129,plain,
( ~ aInteger0(sdtpldt0(xa,smndt0(xb)))
| ~ aDivisorOf0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb)))
| ~ aInteger0(sk0_0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb)))) ),
inference(resolution,[status(thm)],[f73,f93]) ).
fof(f130,plain,
( ~ spl0_4
| ~ spl0_5
| ~ spl0_6 ),
inference(split_clause,[status(thm)],[f129,f120,f123,f126]) ).
fof(f131,plain,
( ~ aInteger0(sdtpldt0(xa,smndt0(xb)))
| ~ aDivisorOf0(sdtasdt0(xp,xq),sdtpldt0(xa,smndt0(xb)))
| spl0_6 ),
inference(resolution,[status(thm)],[f128,f72]) ).
fof(f132,plain,
( ~ spl0_4
| ~ spl0_5
| spl0_6 ),
inference(split_clause,[status(thm)],[f131,f120,f123,f126]) ).
fof(f157,plain,
( spl0_11
<=> aInteger0(xa) ),
introduced(split_symbol_definition) ).
fof(f159,plain,
( ~ aInteger0(xa)
| spl0_11 ),
inference(component_clause,[status(thm)],[f157]) ).
fof(f160,plain,
( spl0_12
<=> aInteger0(xb) ),
introduced(split_symbol_definition) ).
fof(f162,plain,
( ~ aInteger0(xb)
| spl0_12 ),
inference(component_clause,[status(thm)],[f160]) ).
fof(f163,plain,
( spl0_13
<=> aInteger0(sdtasdt0(xp,xq)) ),
introduced(split_symbol_definition) ).
fof(f165,plain,
( ~ aInteger0(sdtasdt0(xp,xq))
| spl0_13 ),
inference(component_clause,[status(thm)],[f163]) ).
fof(f166,plain,
( spl0_14
<=> sdtasdt0(xp,xq) = sz00 ),
introduced(split_symbol_definition) ).
fof(f167,plain,
( sdtasdt0(xp,xq) = sz00
| ~ spl0_14 ),
inference(component_clause,[status(thm)],[f166]) ).
fof(f169,plain,
( spl0_15
<=> sdteqdtlpzmzozddtrp0(xb,xa,sdtasdt0(xp,xq)) ),
introduced(split_symbol_definition) ).
fof(f170,plain,
( sdteqdtlpzmzozddtrp0(xb,xa,sdtasdt0(xp,xq))
| ~ spl0_15 ),
inference(component_clause,[status(thm)],[f169]) ).
fof(f172,plain,
( ~ aInteger0(xa)
| ~ aInteger0(xb)
| ~ aInteger0(sdtasdt0(xp,xq))
| sdtasdt0(xp,xq) = sz00
| sdteqdtlpzmzozddtrp0(xb,xa,sdtasdt0(xp,xq)) ),
inference(resolution,[status(thm)],[f82,f91]) ).
fof(f173,plain,
( ~ spl0_11
| ~ spl0_12
| ~ spl0_13
| spl0_14
| spl0_15 ),
inference(split_clause,[status(thm)],[f172,f157,f160,f163,f166,f169]) ).
fof(f176,plain,
( $false
| spl0_12 ),
inference(forward_subsumption_resolution,[status(thm)],[f162,f86]) ).
fof(f177,plain,
spl0_12,
inference(contradiction_clause,[status(thm)],[f176]) ).
fof(f178,plain,
( $false
| spl0_11 ),
inference(forward_subsumption_resolution,[status(thm)],[f159,f85]) ).
fof(f179,plain,
spl0_11,
inference(contradiction_clause,[status(thm)],[f178]) ).
fof(f180,plain,
( spl0_16
<=> aInteger0(xp) ),
introduced(split_symbol_definition) ).
fof(f182,plain,
( ~ aInteger0(xp)
| spl0_16 ),
inference(component_clause,[status(thm)],[f180]) ).
fof(f183,plain,
( spl0_17
<=> aInteger0(xq) ),
introduced(split_symbol_definition) ).
fof(f185,plain,
( ~ aInteger0(xq)
| spl0_17 ),
inference(component_clause,[status(thm)],[f183]) ).
fof(f186,plain,
( ~ aInteger0(xp)
| ~ aInteger0(xq)
| spl0_13 ),
inference(resolution,[status(thm)],[f165,f37]) ).
fof(f187,plain,
( ~ spl0_16
| ~ spl0_17
| spl0_13 ),
inference(split_clause,[status(thm)],[f186,f180,f183,f163]) ).
fof(f188,plain,
( $false
| spl0_17 ),
inference(forward_subsumption_resolution,[status(thm)],[f185,f89]) ).
fof(f189,plain,
spl0_17,
inference(contradiction_clause,[status(thm)],[f188]) ).
fof(f190,plain,
( $false
| spl0_16 ),
inference(forward_subsumption_resolution,[status(thm)],[f182,f87]) ).
fof(f191,plain,
spl0_16,
inference(contradiction_clause,[status(thm)],[f190]) ).
fof(f195,plain,
( spl0_18
<=> xp = sz00 ),
introduced(split_symbol_definition) ).
fof(f196,plain,
( xp = sz00
| ~ spl0_18 ),
inference(component_clause,[status(thm)],[f195]) ).
fof(f198,plain,
( spl0_19
<=> xq = sz00 ),
introduced(split_symbol_definition) ).
fof(f199,plain,
( xq = sz00
| ~ spl0_19 ),
inference(component_clause,[status(thm)],[f198]) ).
fof(f201,plain,
( ~ aInteger0(xp)
| ~ aInteger0(xq)
| xp = sz00
| xq = sz00
| ~ spl0_14 ),
inference(resolution,[status(thm)],[f167,f65]) ).
fof(f202,plain,
( ~ spl0_16
| ~ spl0_17
| spl0_18
| spl0_19
| ~ spl0_14 ),
inference(split_clause,[status(thm)],[f201,f180,f183,f195,f198,f166]) ).
fof(f237,plain,
( $false
| ~ spl0_18 ),
inference(forward_subsumption_resolution,[status(thm)],[f196,f88]) ).
fof(f238,plain,
~ spl0_18,
inference(contradiction_clause,[status(thm)],[f237]) ).
fof(f239,plain,
( $false
| ~ spl0_19 ),
inference(forward_subsumption_resolution,[status(thm)],[f199,f90]) ).
fof(f240,plain,
~ spl0_19,
inference(contradiction_clause,[status(thm)],[f239]) ).
fof(f241,plain,
( spl0_26
<=> sdteqdtlpzmzozddtrp0(xa,xb,sdtasdt0(xp,xq)) ),
introduced(split_symbol_definition) ).
fof(f244,plain,
( ~ aInteger0(xb)
| ~ aInteger0(xa)
| ~ aInteger0(sdtasdt0(xp,xq))
| sdtasdt0(xp,xq) = sz00
| sdteqdtlpzmzozddtrp0(xa,xb,sdtasdt0(xp,xq))
| ~ spl0_15 ),
inference(resolution,[status(thm)],[f170,f82]) ).
fof(f245,plain,
( ~ spl0_12
| ~ spl0_11
| ~ spl0_13
| spl0_14
| spl0_26
| ~ spl0_15 ),
inference(split_clause,[status(thm)],[f244,f160,f157,f163,f166,f241,f169]) ).
fof(f256,plain,
( ~ aInteger0(xa)
| ~ aInteger0(xb)
| ~ aInteger0(sdtasdt0(xp,xq))
| sdtasdt0(xp,xq) = sz00
| ~ sdteqdtlpzmzozddtrp0(xa,xb,sdtasdt0(xp,xq))
| spl0_5 ),
inference(resolution,[status(thm)],[f77,f125]) ).
fof(f257,plain,
( ~ spl0_11
| ~ spl0_12
| ~ spl0_13
| spl0_14
| ~ spl0_26
| spl0_5 ),
inference(split_clause,[status(thm)],[f256,f157,f160,f163,f166,f241,f123]) ).
fof(f265,plain,
( spl0_29
<=> aInteger0(smndt0(xb)) ),
introduced(split_symbol_definition) ).
fof(f267,plain,
( ~ aInteger0(smndt0(xb))
| spl0_29 ),
inference(component_clause,[status(thm)],[f265]) ).
fof(f268,plain,
( ~ aInteger0(xa)
| ~ aInteger0(smndt0(xb))
| spl0_4 ),
inference(resolution,[status(thm)],[f122,f35]) ).
fof(f269,plain,
( ~ spl0_11
| ~ spl0_29
| spl0_4 ),
inference(split_clause,[status(thm)],[f268,f157,f265,f120]) ).
fof(f270,plain,
( ~ aInteger0(xb)
| spl0_29 ),
inference(resolution,[status(thm)],[f267,f33]) ).
fof(f271,plain,
( ~ spl0_12
| spl0_29 ),
inference(split_clause,[status(thm)],[f270,f160,f265]) ).
fof(f272,plain,
$false,
inference(sat_refutation,[status(thm)],[f130,f132,f173,f177,f179,f187,f189,f191,f202,f238,f240,f245,f257,f269,f271]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.12 % Problem : NUM434+1 : TPTP v8.1.2. Released v4.0.0.
% 0.11/0.13 % Command : drodi -learnfrom(drodi.lrn) -timeout(%d) %s
% 0.13/0.34 % Computer : n013.cluster.edu
% 0.13/0.34 % Model : x86_64 x86_64
% 0.13/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.34 % Memory : 8042.1875MB
% 0.13/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.13/0.34 % CPULimit : 300
% 0.13/0.34 % WCLimit : 300
% 0.13/0.34 % DateTime : Mon Apr 29 20:40:04 EDT 2024
% 0.13/0.34 % CPUTime :
% 0.13/0.35 % Drodi V3.6.0
% 0.13/0.36 % Refutation found
% 0.13/0.36 % SZS status Theorem for theBenchmark: Theorem is valid
% 0.13/0.36 % SZS output start CNFRefutation for theBenchmark
% See solution above
% 0.13/0.38 % Elapsed time: 0.028351 seconds
% 0.13/0.38 % CPU time: 0.093053 seconds
% 0.13/0.38 % Total memory used: 15.469 MB
% 0.13/0.38 % Net memory used: 15.379 MB
%------------------------------------------------------------------------------