TSTP Solution File: ARI698_1 by Princess---230619

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Princess---230619
% Problem  : ARI698_1 : TPTP v8.1.2. Released v6.3.0.
% Transfm  : none
% Format   : tptp
% Command  : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s

% Computer : n020.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 Aug 30 17:48:51 EDT 2023

% Result   : Theorem 3.01s 1.25s
% Output   : Proof 5.84s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.12  % Problem  : ARI698_1 : TPTP v8.1.2. Released v6.3.0.
% 0.11/0.13  % Command  : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s
% 0.13/0.33  % Computer : n020.cluster.edu
% 0.13/0.33  % Model    : x86_64 x86_64
% 0.13/0.33  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.33  % Memory   : 8042.1875MB
% 0.13/0.33  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.13/0.33  % CPULimit : 300
% 0.13/0.33  % WCLimit  : 300
% 0.13/0.33  % DateTime : Tue Aug 29 18:51:43 EDT 2023
% 0.13/0.34  % CPUTime  : 
% 0.19/0.61  ________       _____
% 0.19/0.61  ___  __ \_________(_)________________________________
% 0.19/0.61  __  /_/ /_  ___/_  /__  __ \  ___/  _ \_  ___/_  ___/
% 0.19/0.61  _  ____/_  /   _  / _  / / / /__ /  __/(__  )_(__  )
% 0.19/0.61  /_/     /_/    /_/  /_/ /_/\___/ \___//____/ /____/
% 0.19/0.61  
% 0.19/0.61  A Theorem Prover for First-Order Logic modulo Linear Integer Arithmetic
% 0.19/0.61  (2023-06-19)
% 0.19/0.61  
% 0.19/0.61  (c) Philipp Rümmer, 2009-2023
% 0.19/0.61  Contributors: Peter Backeman, Peter Baumgartner, Angelo Brillout, Zafer Esen,
% 0.19/0.61                Amanda Stjerna.
% 0.19/0.61  Free software under BSD-3-Clause.
% 0.19/0.61  
% 0.19/0.61  For more information, visit http://www.philipp.ruemmer.org/princess.shtml
% 0.19/0.61  
% 0.19/0.61  Loading /export/starexec/sandbox/benchmark/theBenchmark.p ...
% 0.19/0.63  Running up to 7 provers in parallel.
% 0.19/0.65  Prover 0: Options:  +triggersInConjecture +genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=0 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=1042961893
% 0.19/0.65  Prover 1: Options:  +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-1571432423
% 0.19/0.65  Prover 2: Options:  +triggersInConjecture +genTotalityAxioms -tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allMinimalAndEmpty -realRatSaturationRounds=1 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=-1065072994
% 0.19/0.65  Prover 3: Options:  +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=1922548996
% 0.19/0.65  Prover 4: Options:  +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=1868514696
% 0.19/0.65  Prover 5: Options:  +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=none +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allMaximal -realRatSaturationRounds=1 -ignoreQuantifiers -constructProofs=never -generateTriggers=complete -randomSeed=1259561288
% 0.19/0.65  Prover 6: Options:  -triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=none +reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximalOutermost -realRatSaturationRounds=0 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=-1399714365
% 2.70/1.11  Prover 2: Preprocessing ...
% 2.70/1.11  Prover 5: Preprocessing ...
% 2.70/1.11  Prover 4: Preprocessing ...
% 2.70/1.12  Prover 3: Preprocessing ...
% 2.70/1.12  Prover 6: Preprocessing ...
% 2.70/1.12  Prover 1: Preprocessing ...
% 2.70/1.12  Prover 0: Preprocessing ...
% 3.01/1.22  Prover 6: Constructing countermodel ...
% 3.01/1.22  Prover 3: Constructing countermodel ...
% 3.01/1.22  Prover 2: Constructing countermodel ...
% 3.01/1.23  Prover 0: Constructing countermodel ...
% 3.01/1.24  Prover 4: Constructing countermodel ...
% 3.01/1.25  Prover 1: Constructing countermodel ...
% 3.01/1.25  Prover 3: proved (605ms)
% 3.01/1.25  Prover 6: proved (602ms)
% 3.01/1.25  Prover 0: proved (609ms)
% 3.01/1.25  
% 3.01/1.25  % SZS status Theorem for /export/starexec/sandbox/benchmark/theBenchmark.p
% 3.01/1.25  
% 3.01/1.25  Prover 2: proved (606ms)
% 3.01/1.25  
% 3.01/1.25  % SZS status Theorem for /export/starexec/sandbox/benchmark/theBenchmark.p
% 3.01/1.25  
% 3.01/1.26  
% 3.01/1.26  % SZS status Theorem for /export/starexec/sandbox/benchmark/theBenchmark.p
% 3.01/1.26  
% 3.01/1.27  
% 3.01/1.27  % SZS status Theorem for /export/starexec/sandbox/benchmark/theBenchmark.p
% 3.01/1.27  
% 3.01/1.27  Prover 7: Options:  +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-236303470
% 3.01/1.27  Prover 8: Options:  +triggersInConjecture +genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-200781089
% 3.01/1.27  Prover 5: Constructing countermodel ...
% 3.01/1.27  Prover 5: stopped
% 3.01/1.27  Prover 10: Options:  +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=919308125
% 3.01/1.27  Prover 11: Options:  +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-1509710984
% 3.01/1.27  Prover 13: Options:  +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=complete -randomSeed=1138197443
% 3.96/1.31  Prover 7: Preprocessing ...
% 3.96/1.32  Prover 13: Preprocessing ...
% 3.96/1.32  Prover 8: Preprocessing ...
% 3.96/1.34  Prover 11: Preprocessing ...
% 3.96/1.34  Prover 10: Preprocessing ...
% 3.96/1.36  Prover 13: Constructing countermodel ...
% 3.96/1.36  Prover 8: Constructing countermodel ...
% 4.49/1.36  Prover 11: Constructing countermodel ...
% 4.49/1.39  Prover 7: Constructing countermodel ...
% 4.49/1.40  Prover 10: Constructing countermodel ...
% 5.20/1.51  Prover 13: Found proof (size 35)
% 5.20/1.51  Prover 1: Found proof (size 35)
% 5.20/1.51  Prover 13: proved (242ms)
% 5.20/1.52  Prover 1: proved (873ms)
% 5.20/1.52  Prover 11: stopped
% 5.20/1.52  Prover 4: Found proof (size 35)
% 5.20/1.52  Prover 4: proved (871ms)
% 5.20/1.52  Prover 7: stopped
% 5.20/1.52  Prover 8: Found proof (size 35)
% 5.20/1.52  Prover 8: proved (253ms)
% 5.20/1.52  Prover 10: Found proof (size 35)
% 5.20/1.52  Prover 10: proved (251ms)
% 5.20/1.52  
% 5.20/1.52  % SZS status Theorem for /export/starexec/sandbox/benchmark/theBenchmark.p
% 5.20/1.52  
% 5.20/1.53  % SZS output start Proof for theBenchmark
% 5.70/1.53  Assumptions after simplification:
% 5.70/1.53  ---------------------------------
% 5.70/1.53  
% 5.70/1.53    (conj)
% 5.70/1.54     ~ (x1 = 0) |  ~ (x2 = 0) |  ~ (x3 = 0) |  ~ (x4 = 0) |  ~ (x5 = 0) |  ~ (x6 =
% 5.70/1.54      0)
% 5.70/1.54  
% 5.70/1.54    (eq1)
% 5.70/1.54    n = 1000
% 5.70/1.54  
% 5.70/1.54    (eq10)
% 5.70/1.54    $product(n, x6) = $difference(x2, x1)
% 5.70/1.54  
% 5.70/1.54    (eq11)
% 5.70/1.54    $product(n, x6) = x1
% 5.70/1.54  
% 5.70/1.54    (eq4)
% 5.70/1.54    $product(n, x6) = $difference($sum($sum($sum(x1, x2), x3), x4), x5)
% 5.70/1.54  
% 5.70/1.54    (eq5)
% 5.70/1.54    $product(n, x6) = $difference($difference($difference($product(-1, x1), x2),
% 5.70/1.54        x3), x4)
% 5.70/1.54  
% 5.70/1.54    (eq8)
% 5.70/1.54    $product(n, x6) = $difference($sum(x1, x2), x3)
% 5.70/1.54  
% 5.70/1.54    (eq9)
% 5.70/1.54    $product(n, x6) = $difference($product(-1, x1), x2)
% 5.70/1.54  
% 5.70/1.54  Further assumptions not needed in the proof:
% 5.70/1.54  --------------------------------------------
% 5.70/1.54  eq2, eq3, eq6, eq7
% 5.70/1.54  
% 5.70/1.54  Those formulas are unsatisfiable:
% 5.70/1.54  ---------------------------------
% 5.70/1.54  
% 5.70/1.54  Begin of proof
% 5.70/1.54  | 
% 5.70/1.55  | REDUCE: (eq1), (eq5) imply:
% 5.70/1.55  |   (1)  $product(1000, x6) = $difference($difference($difference($product(-1,
% 5.70/1.55  |                x1), x2), x3), x4)
% 5.70/1.55  | 
% 5.70/1.55  | REDUCE: (eq1), (eq9) imply:
% 5.70/1.55  |   (2)  $product(1000, x6) = $difference($product(-1, x1), x2)
% 5.70/1.55  | 
% 5.70/1.55  | REDUCE: (eq1), (eq10) imply:
% 5.70/1.55  |   (3)  $product(1000, x6) = $difference(x2, x1)
% 5.70/1.55  | 
% 5.70/1.55  | REDUCE: (eq1), (eq8) imply:
% 5.70/1.55  |   (4)  $product(1000, x6) = $difference($sum(x1, x2), x3)
% 5.70/1.55  | 
% 5.70/1.55  | REDUCE: (eq1), (eq4) imply:
% 5.70/1.55  |   (5)  $product(1000, x6) = $difference($sum($sum($sum(x1, x2), x3), x4), x5)
% 5.70/1.55  | 
% 5.70/1.55  | REDUCE: (eq1), (eq11) imply:
% 5.70/1.55  |   (6)  $product(1000, x6) = x1
% 5.70/1.55  | 
% 5.70/1.55  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.55  |   (7)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] : (v0 = 0 |  ~
% 5.70/1.55  |          ($product(1000, v0) = $difference($product(-1, v2), v1)) |  ~
% 5.70/1.55  |          ($product(1000, v0) = $difference(v1, v2)) |  ~ ($product(1000, v0) =
% 5.70/1.55  |            v2))
% 5.70/1.55  | 
% 5.70/1.55  | GROUND_INST: instantiating (7) with x6, x2, x1, simplifying with (2), (3), (6)
% 5.70/1.55  |              gives:
% 5.70/1.56  |   (8)  x6 = 0
% 5.70/1.56  | 
% 5.70/1.56  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.56  |   (9)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] :  ! [v3: int] :  ! [v4:
% 5.70/1.56  |          int] :  ! [v5: int] : (v1 = 0 |  ~ ($product(1000, v0) =
% 5.70/1.56  |            $difference($difference($difference($product(-1, v5), v4), v3),
% 5.70/1.56  |              v2)) |  ~ ($product(1000, v0) = $difference($product(-1, v5),
% 5.70/1.56  |              v4)) |  ~ ($product(1000, v0) = $difference(v4, v5)) |  ~
% 5.70/1.56  |          ($product(1000, v0) = $difference($sum(v5, v4), v3)) |  ~
% 5.70/1.56  |          ($product(1000, v0) = $difference($sum($sum($sum(v5, v4), v3), v2),
% 5.70/1.56  |              v1)) |  ~ ($product(1000, v0) = v5))
% 5.70/1.56  | 
% 5.70/1.56  | GROUND_INST: instantiating (9) with x6, x5, x4, x3, x2, x1, simplifying with
% 5.70/1.56  |              (1), (2), (3), (4), (5), (6) gives:
% 5.70/1.56  |   (10)  x5 = 0
% 5.70/1.56  | 
% 5.70/1.56  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.56  |   (11)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] :  ! [v3: int] :  ! [v4:
% 5.70/1.56  |           int] : (v1 = 0 |  ~ ($product(1000, v0) =
% 5.70/1.56  |             $difference($difference($difference($product(-1, v4), v3), v2),
% 5.70/1.56  |               v1)) |  ~ ($product(1000, v0) = $difference($product(-1, v4),
% 5.70/1.56  |               v3)) |  ~ ($product(1000, v0) = $difference(v3, v4)) |  ~
% 5.70/1.56  |           ($product(1000, v0) = $difference($sum(v4, v3), v2)) |  ~
% 5.70/1.56  |           ($product(1000, v0) = v4))
% 5.70/1.56  | 
% 5.70/1.56  | GROUND_INST: instantiating (11) with x6, x4, x3, x2, x1, simplifying with (1),
% 5.70/1.56  |              (2), (3), (4), (6) gives:
% 5.70/1.56  |   (12)  x4 = 0
% 5.70/1.56  | 
% 5.70/1.56  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.56  |   (13)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] :  ! [v3: int] : (v1 = 0 | 
% 5.70/1.56  |           ~ ($product(1000, v0) = $difference($product(-1, v3), v2)) |  ~
% 5.70/1.56  |           ($product(1000, v0) = $difference(v2, v3)) |  ~ ($product(1000, v0)
% 5.70/1.56  |             = $difference($sum(v3, v2), v1)) |  ~ ($product(1000, v0) = v3))
% 5.70/1.56  | 
% 5.70/1.57  | GROUND_INST: instantiating (13) with x6, x3, x2, x1, simplifying with (2),
% 5.70/1.57  |              (3), (4), (6) gives:
% 5.70/1.57  |   (14)  x3 = 0
% 5.70/1.57  | 
% 5.70/1.57  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.57  |   (15)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] : (v1 = 0 |  ~
% 5.70/1.57  |           ($product(1000, v0) = $difference($product(-1, v2), v1)) |  ~
% 5.70/1.57  |           ($product(1000, v0) = $difference(v1, v2)) |  ~ ($product(1000, v0)
% 5.70/1.57  |             = v2))
% 5.70/1.57  | 
% 5.70/1.57  | GROUND_INST: instantiating (15) with x6, x2, x1, simplifying with (2), (3),
% 5.70/1.57  |              (6) gives:
% 5.70/1.57  |   (16)  x2 = 0
% 5.70/1.57  | 
% 5.70/1.57  | THEORY_AXIOM GroebnerMultiplication: 
% 5.70/1.57  |   (17)   ! [v0: int] :  ! [v1: int] :  ! [v2: int] : (v2 = 0 |  ~
% 5.70/1.57  |           ($product(1000, v0) = $difference($product(-1, v2), v1)) |  ~
% 5.70/1.57  |           ($product(1000, v0) = $difference(v1, v2)) |  ~ ($product(1000, v0)
% 5.70/1.57  |             = v2))
% 5.70/1.57  | 
% 5.70/1.57  | GROUND_INST: instantiating (17) with x6, x2, x1, simplifying with (2), (3),
% 5.70/1.57  |              (6) gives:
% 5.70/1.57  |   (18)  x1 = 0
% 5.70/1.57  | 
% 5.70/1.57  | BETA: splitting (conj) gives:
% 5.70/1.57  | 
% 5.70/1.57  | Case 1:
% 5.70/1.57  | | 
% 5.70/1.57  | |   (19)   ~ (x1 = 0)
% 5.70/1.57  | | 
% 5.70/1.57  | | REDUCE: (18), (19) imply:
% 5.70/1.57  | |   (20)  $false
% 5.70/1.57  | | 
% 5.70/1.57  | | CLOSE: (20) is inconsistent.
% 5.70/1.57  | | 
% 5.70/1.57  | Case 2:
% 5.70/1.57  | | 
% 5.70/1.57  | |   (21)   ~ (x2 = 0) |  ~ (x3 = 0) |  ~ (x4 = 0) |  ~ (x5 = 0) |  ~ (x6 = 0)
% 5.70/1.57  | | 
% 5.70/1.57  | | BETA: splitting (21) gives:
% 5.70/1.57  | | 
% 5.70/1.57  | | Case 1:
% 5.70/1.57  | | | 
% 5.70/1.57  | | |   (22)   ~ (x6 = 0)
% 5.70/1.57  | | | 
% 5.70/1.57  | | | REDUCE: (8), (22) imply:
% 5.70/1.57  | | |   (23)  $false
% 5.70/1.57  | | | 
% 5.70/1.57  | | | CLOSE: (23) is inconsistent.
% 5.70/1.57  | | | 
% 5.70/1.57  | | Case 2:
% 5.70/1.57  | | | 
% 5.70/1.57  | | |   (24)   ~ (x2 = 0) |  ~ (x3 = 0) |  ~ (x4 = 0) |  ~ (x5 = 0)
% 5.70/1.57  | | | 
% 5.70/1.57  | | | BETA: splitting (24) gives:
% 5.70/1.57  | | | 
% 5.70/1.57  | | | Case 1:
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | |   (25)   ~ (x2 = 0)
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | | REDUCE: (16), (25) imply:
% 5.70/1.57  | | | |   (26)  $false
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | | CLOSE: (26) is inconsistent.
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | Case 2:
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | |   (27)   ~ (x3 = 0) |  ~ (x4 = 0) |  ~ (x5 = 0)
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | | BETA: splitting (27) gives:
% 5.70/1.57  | | | | 
% 5.70/1.57  | | | | Case 1:
% 5.70/1.57  | | | | | 
% 5.84/1.57  | | | | |   (28)   ~ (x3 = 0)
% 5.84/1.57  | | | | | 
% 5.84/1.57  | | | | | REDUCE: (14), (28) imply:
% 5.84/1.57  | | | | |   (29)  $false
% 5.84/1.57  | | | | | 
% 5.84/1.57  | | | | | CLOSE: (29) is inconsistent.
% 5.84/1.57  | | | | | 
% 5.84/1.57  | | | | Case 2:
% 5.84/1.58  | | | | | 
% 5.84/1.58  | | | | |   (30)   ~ (x4 = 0) |  ~ (x5 = 0)
% 5.84/1.58  | | | | | 
% 5.84/1.58  | | | | | BETA: splitting (30) gives:
% 5.84/1.58  | | | | | 
% 5.84/1.58  | | | | | Case 1:
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | |   (31)   ~ (x4 = 0)
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | | REDUCE: (12), (31) imply:
% 5.84/1.58  | | | | | |   (32)  $false
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | | CLOSE: (32) is inconsistent.
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | Case 2:
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | |   (33)   ~ (x5 = 0)
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | | REDUCE: (10), (33) imply:
% 5.84/1.58  | | | | | |   (34)  $false
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | | CLOSE: (34) is inconsistent.
% 5.84/1.58  | | | | | | 
% 5.84/1.58  | | | | | End of split
% 5.84/1.58  | | | | | 
% 5.84/1.58  | | | | End of split
% 5.84/1.58  | | | | 
% 5.84/1.58  | | | End of split
% 5.84/1.58  | | | 
% 5.84/1.58  | | End of split
% 5.84/1.58  | | 
% 5.84/1.58  | End of split
% 5.84/1.58  | 
% 5.84/1.58  End of proof
% 5.84/1.58  % SZS output end Proof for theBenchmark
% 5.84/1.58  
% 5.84/1.58  964ms
%------------------------------------------------------------------------------