TSTP Solution File: NUM490+3 by Princess---230619
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Princess---230619
% Problem : NUM490+3 : TPTP v8.1.2. Released v4.0.0.
% Transfm : none
% Format : tptp
% Command : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s
% Computer : n010.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 11:48:07 EDT 2023
% Result : Theorem 10.69s 2.21s
% Output : Proof 14.19s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.07/0.13 % Problem : NUM490+3 : TPTP v8.1.2. Released v4.0.0.
% 0.07/0.13 % Command : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s
% 0.13/0.35 % Computer : n010.cluster.edu
% 0.13/0.35 % Model : x86_64 x86_64
% 0.13/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.35 % Memory : 8042.1875MB
% 0.13/0.35 % OS : Linux 3.10.0-693.el7.x86_64
% 0.13/0.35 % CPULimit : 300
% 0.13/0.35 % WCLimit : 300
% 0.13/0.35 % DateTime : Fri Aug 25 16:51:05 EDT 2023
% 0.13/0.35 % CPUTime :
% 0.19/0.62 ________ _____
% 0.19/0.62 ___ __ \_________(_)________________________________
% 0.19/0.62 __ /_/ /_ ___/_ /__ __ \ ___/ _ \_ ___/_ ___/
% 0.19/0.62 _ ____/_ / _ / _ / / / /__ / __/(__ )_(__ )
% 0.19/0.62 /_/ /_/ /_/ /_/ /_/\___/ \___//____/ /____/
% 0.19/0.62
% 0.19/0.62 A Theorem Prover for First-Order Logic modulo Linear Integer Arithmetic
% 0.19/0.62 (2023-06-19)
% 0.19/0.62
% 0.19/0.62 (c) Philipp Rümmer, 2009-2023
% 0.19/0.62 Contributors: Peter Backeman, Peter Baumgartner, Angelo Brillout, Zafer Esen,
% 0.19/0.62 Amanda Stjerna.
% 0.19/0.62 Free software under BSD-3-Clause.
% 0.19/0.62
% 0.19/0.62 For more information, visit http://www.philipp.ruemmer.org/princess.shtml
% 0.19/0.62
% 0.19/0.62 Loading /export/starexec/sandbox2/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 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 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 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 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
% 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
% 3.69/1.22 Prover 1: Preprocessing ...
% 3.69/1.22 Prover 4: Preprocessing ...
% 3.69/1.26 Prover 2: Preprocessing ...
% 3.69/1.26 Prover 5: Preprocessing ...
% 3.69/1.26 Prover 3: Preprocessing ...
% 3.69/1.26 Prover 6: Preprocessing ...
% 3.69/1.26 Prover 0: Preprocessing ...
% 10.14/2.13 Prover 1: Constructing countermodel ...
% 10.14/2.14 Prover 3: Constructing countermodel ...
% 10.69/2.19 Prover 6: Proving ...
% 10.69/2.20 Prover 5: Constructing countermodel ...
% 10.69/2.21 Prover 3: proved (1564ms)
% 10.69/2.21
% 10.69/2.21 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 10.69/2.21
% 10.69/2.22 Prover 6: stopped
% 10.69/2.23 Prover 8: Options: +triggersInConjecture +genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-200781089
% 10.69/2.23 Prover 5: stopped
% 10.69/2.24 Prover 7: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-236303470
% 10.69/2.24 Prover 10: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=919308125
% 11.70/2.34 Prover 1: Found proof (size 22)
% 11.70/2.34 Prover 1: proved (1701ms)
% 11.70/2.34 Prover 7: Preprocessing ...
% 11.70/2.36 Prover 10: Preprocessing ...
% 11.70/2.36 Prover 8: Preprocessing ...
% 11.70/2.39 Prover 7: stopped
% 11.70/2.40 Prover 10: stopped
% 12.32/2.45 Prover 2: Proving ...
% 12.32/2.46 Prover 2: stopped
% 12.32/2.47 Prover 4: Constructing countermodel ...
% 12.95/2.53 Prover 4: stopped
% 13.55/2.58 Prover 8: Warning: ignoring some quantifiers
% 13.55/2.59 Prover 8: Constructing countermodel ...
% 13.55/2.61 Prover 8: stopped
% 13.55/2.63 Prover 0: Proving ...
% 13.55/2.64 Prover 0: stopped
% 13.55/2.64
% 13.55/2.64 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 13.55/2.64
% 13.55/2.64 % SZS output start Proof for theBenchmark
% 13.55/2.65 Assumptions after simplification:
% 13.55/2.65 ---------------------------------
% 13.55/2.65
% 13.55/2.65 (m__)
% 13.55/2.67 $i(xr) & $i(xp) & $i(xm) & $i(xn) & ? [v0: $i] : ? [v1: $i] : ? [v2: $i] :
% 13.55/2.67 ? [v3: $i] : ? [v4: $i] : ( ~ (v4 = v1) & ~ (v3 = v2) & sdtmndt0(v3, v0) =
% 13.55/2.67 v4 & sdtasdt0(xr, xm) = v1 & sdtasdt0(xp, xm) = v0 & sdtasdt0(xn, xm) = v3 &
% 13.55/2.67 sdtpldt0(v0, v1) = v2 & $i(v4) & $i(v3) & $i(v2) & $i(v1) & $i(v0))
% 13.55/2.67
% 13.55/2.67 (m__1860)
% 13.55/2.68 $i(xp) & $i(xm) & $i(xn) & $i(sz10) & $i(sz00) & ? [v0: $i] : ( ~ (xp = sz10)
% 13.55/2.68 & ~ (xp = sz00) & isPrime0(xp) = 0 & doDivides0(xp, v0) = 0 & sdtasdt0(xn,
% 13.55/2.68 xm) = v0 & $i(v0) & ! [v1: $i] : ! [v2: any] : (v1 = xp | v1 = sz10 | ~
% 13.55/2.68 (doDivides0(v1, xp) = v2) | ~ $i(v1) | ? [v3: int] : ( ~ (v3 = 0) &
% 13.55/2.68 aNaturalNumber0(v1) = v3) | ( ~ (v2 = 0) & ! [v3: $i] : ( ~
% 13.55/2.68 (sdtasdt0(v1, v3) = xp) | ~ $i(v3) | ? [v4: int] : ( ~ (v4 = 0) &
% 13.55/2.68 aNaturalNumber0(v3) = v4)))) & ? [v1: $i] : (sdtasdt0(xp, v1) = v0
% 13.55/2.68 & aNaturalNumber0(v1) = 0 & $i(v1)))
% 13.55/2.68
% 13.55/2.68 (m__1951)
% 13.55/2.68 $i(xr) & $i(xp) & $i(xm) & $i(xn) & ? [v0: $i] : ? [v1: $i] : ? [v2: $i] :
% 13.55/2.68 (sdtasdt0(xr, xm) = v2 & sdtasdt0(xp, xm) = v1 & sdtasdt0(xn, xm) = v0 &
% 14.04/2.68 sdtpldt0(v1, v2) = v0 & $i(v2) & $i(v1) & $i(v0))
% 14.04/2.68
% 14.04/2.68 (function-axioms)
% 14.04/2.69 ! [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~
% 14.04/2.69 (sdtsldt0(v3, v2) = v1) | ~ (sdtsldt0(v3, v2) = v0)) & ! [v0:
% 14.04/2.69 MultipleValueBool] : ! [v1: MultipleValueBool] : ! [v2: $i] : ! [v3: $i]
% 14.04/2.69 : (v1 = v0 | ~ (doDivides0(v3, v2) = v1) | ~ (doDivides0(v3, v2) = v0)) & !
% 14.04/2.69 [v0: MultipleValueBool] : ! [v1: MultipleValueBool] : ! [v2: $i] : ! [v3:
% 14.04/2.69 $i] : (v1 = v0 | ~ (iLess0(v3, v2) = v1) | ~ (iLess0(v3, v2) = v0)) & !
% 14.04/2.69 [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~
% 14.04/2.69 (sdtmndt0(v3, v2) = v1) | ~ (sdtmndt0(v3, v2) = v0)) & ! [v0:
% 14.04/2.69 MultipleValueBool] : ! [v1: MultipleValueBool] : ! [v2: $i] : ! [v3: $i]
% 14.04/2.69 : (v1 = v0 | ~ (sdtlseqdt0(v3, v2) = v1) | ~ (sdtlseqdt0(v3, v2) = v0)) & !
% 14.04/2.69 [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~
% 14.04/2.69 (sdtasdt0(v3, v2) = v1) | ~ (sdtasdt0(v3, v2) = v0)) & ! [v0: $i] : !
% 14.04/2.69 [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~ (sdtpldt0(v3, v2) = v1) |
% 14.04/2.69 ~ (sdtpldt0(v3, v2) = v0)) & ! [v0: MultipleValueBool] : ! [v1:
% 14.04/2.69 MultipleValueBool] : ! [v2: $i] : (v1 = v0 | ~ (isPrime0(v2) = v1) | ~
% 14.04/2.69 (isPrime0(v2) = v0)) & ! [v0: MultipleValueBool] : ! [v1:
% 14.04/2.69 MultipleValueBool] : ! [v2: $i] : (v1 = v0 | ~ (aNaturalNumber0(v2) = v1)
% 14.04/2.69 | ~ (aNaturalNumber0(v2) = v0))
% 14.04/2.69
% 14.04/2.69 Further assumptions not needed in the proof:
% 14.04/2.69 --------------------------------------------
% 14.04/2.69 mAMDistr, mAddAsso, mAddCanc, mAddComm, mDefDiff, mDefDiv, mDefLE, mDefPrime,
% 14.04/2.69 mDefQuot, mDivAsso, mDivLE, mDivMin, mDivSum, mDivTrans, mIH, mIH_03, mLEAsym,
% 14.04/2.69 mLENTr, mLERefl, mLETotal, mLETran, mMonAdd, mMonMul, mMonMul2, mMulAsso,
% 14.04/2.69 mMulCanc, mMulComm, mNatSort, mPrimDiv, mSortsB, mSortsB_02, mSortsC,
% 14.04/2.69 mSortsC_01, mZeroAdd, mZeroMul, m_AddZero, m_MulUnit, m_MulZero, m__1799,
% 14.04/2.69 m__1837, m__1870, m__1883, m__1894, m__1924
% 14.04/2.69
% 14.04/2.69 Those formulas are unsatisfiable:
% 14.04/2.69 ---------------------------------
% 14.04/2.69
% 14.04/2.69 Begin of proof
% 14.04/2.69 |
% 14.04/2.69 | ALPHA: (m__1860) implies:
% 14.04/2.69 | (1) ? [v0: $i] : ( ~ (xp = sz10) & ~ (xp = sz00) & isPrime0(xp) = 0 &
% 14.04/2.69 | doDivides0(xp, v0) = 0 & sdtasdt0(xn, xm) = v0 & $i(v0) & ! [v1: $i]
% 14.04/2.70 | : ! [v2: any] : (v1 = xp | v1 = sz10 | ~ (doDivides0(v1, xp) = v2)
% 14.04/2.70 | | ~ $i(v1) | ? [v3: int] : ( ~ (v3 = 0) & aNaturalNumber0(v1) =
% 14.04/2.70 | v3) | ( ~ (v2 = 0) & ! [v3: $i] : ( ~ (sdtasdt0(v1, v3) = xp) |
% 14.04/2.70 | ~ $i(v3) | ? [v4: int] : ( ~ (v4 = 0) & aNaturalNumber0(v3) =
% 14.04/2.70 | v4)))) & ? [v1: $i] : (sdtasdt0(xp, v1) = v0 &
% 14.04/2.70 | aNaturalNumber0(v1) = 0 & $i(v1)))
% 14.04/2.70 |
% 14.04/2.70 | ALPHA: (m__1951) implies:
% 14.04/2.70 | (2) ? [v0: $i] : ? [v1: $i] : ? [v2: $i] : (sdtasdt0(xr, xm) = v2 &
% 14.04/2.70 | sdtasdt0(xp, xm) = v1 & sdtasdt0(xn, xm) = v0 & sdtpldt0(v1, v2) = v0
% 14.04/2.70 | & $i(v2) & $i(v1) & $i(v0))
% 14.04/2.70 |
% 14.04/2.70 | ALPHA: (m__) implies:
% 14.04/2.70 | (3) ? [v0: $i] : ? [v1: $i] : ? [v2: $i] : ? [v3: $i] : ? [v4: $i] : (
% 14.04/2.70 | ~ (v4 = v1) & ~ (v3 = v2) & sdtmndt0(v3, v0) = v4 & sdtasdt0(xr, xm)
% 14.04/2.70 | = v1 & sdtasdt0(xp, xm) = v0 & sdtasdt0(xn, xm) = v3 & sdtpldt0(v0,
% 14.04/2.70 | v1) = v2 & $i(v4) & $i(v3) & $i(v2) & $i(v1) & $i(v0))
% 14.04/2.70 |
% 14.04/2.70 | ALPHA: (function-axioms) implies:
% 14.17/2.70 | (4) ! [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~
% 14.17/2.70 | (sdtpldt0(v3, v2) = v1) | ~ (sdtpldt0(v3, v2) = v0))
% 14.17/2.70 | (5) ! [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v1 = v0 | ~
% 14.17/2.70 | (sdtasdt0(v3, v2) = v1) | ~ (sdtasdt0(v3, v2) = v0))
% 14.17/2.70 |
% 14.17/2.70 | DELTA: instantiating (2) with fresh symbols all_42_0, all_42_1, all_42_2
% 14.17/2.70 | gives:
% 14.17/2.70 | (6) sdtasdt0(xr, xm) = all_42_0 & sdtasdt0(xp, xm) = all_42_1 &
% 14.17/2.70 | sdtasdt0(xn, xm) = all_42_2 & sdtpldt0(all_42_1, all_42_0) = all_42_2 &
% 14.17/2.70 | $i(all_42_0) & $i(all_42_1) & $i(all_42_2)
% 14.17/2.70 |
% 14.17/2.70 | ALPHA: (6) implies:
% 14.17/2.70 | (7) sdtpldt0(all_42_1, all_42_0) = all_42_2
% 14.19/2.70 | (8) sdtasdt0(xn, xm) = all_42_2
% 14.19/2.70 | (9) sdtasdt0(xp, xm) = all_42_1
% 14.19/2.70 | (10) sdtasdt0(xr, xm) = all_42_0
% 14.19/2.71 |
% 14.19/2.71 | DELTA: instantiating (3) with fresh symbols all_44_0, all_44_1, all_44_2,
% 14.19/2.71 | all_44_3, all_44_4 gives:
% 14.19/2.71 | (11) ~ (all_44_0 = all_44_3) & ~ (all_44_1 = all_44_2) &
% 14.19/2.71 | sdtmndt0(all_44_1, all_44_4) = all_44_0 & sdtasdt0(xr, xm) = all_44_3
% 14.19/2.71 | & sdtasdt0(xp, xm) = all_44_4 & sdtasdt0(xn, xm) = all_44_1 &
% 14.19/2.71 | sdtpldt0(all_44_4, all_44_3) = all_44_2 & $i(all_44_0) & $i(all_44_1)
% 14.19/2.71 | & $i(all_44_2) & $i(all_44_3) & $i(all_44_4)
% 14.19/2.71 |
% 14.19/2.71 | ALPHA: (11) implies:
% 14.19/2.71 | (12) ~ (all_44_1 = all_44_2)
% 14.19/2.71 | (13) sdtpldt0(all_44_4, all_44_3) = all_44_2
% 14.19/2.71 | (14) sdtasdt0(xn, xm) = all_44_1
% 14.19/2.71 | (15) sdtasdt0(xp, xm) = all_44_4
% 14.19/2.71 | (16) sdtasdt0(xr, xm) = all_44_3
% 14.19/2.71 |
% 14.19/2.71 | DELTA: instantiating (1) with fresh symbol all_46_0 gives:
% 14.19/2.71 | (17) ~ (xp = sz10) & ~ (xp = sz00) & isPrime0(xp) = 0 & doDivides0(xp,
% 14.19/2.71 | all_46_0) = 0 & sdtasdt0(xn, xm) = all_46_0 & $i(all_46_0) & ! [v0:
% 14.19/2.71 | $i] : ! [v1: any] : (v0 = xp | v0 = sz10 | ~ (doDivides0(v0, xp) =
% 14.19/2.71 | v1) | ~ $i(v0) | ? [v2: int] : ( ~ (v2 = 0) &
% 14.19/2.71 | aNaturalNumber0(v0) = v2) | ( ~ (v1 = 0) & ! [v2: $i] : ( ~
% 14.19/2.71 | (sdtasdt0(v0, v2) = xp) | ~ $i(v2) | ? [v3: int] : ( ~ (v3 =
% 14.19/2.71 | 0) & aNaturalNumber0(v2) = v3)))) & ? [v0: $i] :
% 14.19/2.71 | (sdtasdt0(xp, v0) = all_46_0 & aNaturalNumber0(v0) = 0 & $i(v0))
% 14.19/2.71 |
% 14.19/2.71 | ALPHA: (17) implies:
% 14.19/2.71 | (18) sdtasdt0(xn, xm) = all_46_0
% 14.19/2.71 |
% 14.19/2.71 | GROUND_INST: instantiating (5) with all_44_1, all_46_0, xm, xn, simplifying
% 14.19/2.71 | with (14), (18) gives:
% 14.19/2.71 | (19) all_46_0 = all_44_1
% 14.19/2.71 |
% 14.19/2.71 | GROUND_INST: instantiating (5) with all_42_2, all_46_0, xm, xn, simplifying
% 14.19/2.71 | with (8), (18) gives:
% 14.19/2.71 | (20) all_46_0 = all_42_2
% 14.19/2.71 |
% 14.19/2.71 | GROUND_INST: instantiating (5) with all_42_1, all_44_4, xm, xp, simplifying
% 14.19/2.71 | with (9), (15) gives:
% 14.19/2.71 | (21) all_44_4 = all_42_1
% 14.19/2.71 |
% 14.19/2.71 | GROUND_INST: instantiating (5) with all_42_0, all_44_3, xm, xr, simplifying
% 14.19/2.71 | with (10), (16) gives:
% 14.19/2.71 | (22) all_44_3 = all_42_0
% 14.19/2.71 |
% 14.19/2.71 | COMBINE_EQS: (19), (20) imply:
% 14.19/2.71 | (23) all_44_1 = all_42_2
% 14.19/2.71 |
% 14.19/2.71 | SIMP: (23) implies:
% 14.19/2.71 | (24) all_44_1 = all_42_2
% 14.19/2.72 |
% 14.19/2.72 | REDUCE: (12), (24) imply:
% 14.19/2.72 | (25) ~ (all_44_2 = all_42_2)
% 14.19/2.72 |
% 14.19/2.72 | SIMP: (25) implies:
% 14.19/2.72 | (26) ~ (all_44_2 = all_42_2)
% 14.19/2.72 |
% 14.19/2.72 | REDUCE: (13), (21), (22) imply:
% 14.19/2.72 | (27) sdtpldt0(all_42_1, all_42_0) = all_44_2
% 14.19/2.72 |
% 14.19/2.72 | GROUND_INST: instantiating (4) with all_42_2, all_44_2, all_42_0, all_42_1,
% 14.19/2.72 | simplifying with (7), (27) gives:
% 14.19/2.72 | (28) all_44_2 = all_42_2
% 14.19/2.72 |
% 14.19/2.72 | REDUCE: (26), (28) imply:
% 14.19/2.72 | (29) $false
% 14.19/2.72 |
% 14.19/2.72 | CLOSE: (29) is inconsistent.
% 14.19/2.72 |
% 14.19/2.72 End of proof
% 14.19/2.72 % SZS output end Proof for theBenchmark
% 14.19/2.72
% 14.19/2.72 2099ms
%------------------------------------------------------------------------------