%------------------------------------------------------------------------------ % File : Princess---230619 % Problem : NLP204+1 : TPTP v8.1.2. Released v2.4.0. % Transfm : none % Format : tptp % Command : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s % Computer : n021.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 10:04:35 EDT 2023 % Result : Theorem 10.85s 2.18s % Output : Proof 15.10s % Verified : % SZS Type : - % Comments : %------------------------------------------------------------------------------ %----WARNING: Could not form TPTP format derivation %------------------------------------------------------------------------------ %----ORIGINAL SYSTEM OUTPUT % 0.07/0.12 % Problem : NLP204+1 : TPTP v8.1.2. Released v2.4.0. % 0.07/0.12 % Command : princess -inputFormat=tptp +threads -portfolio=casc +printProof -timeoutSec=%d %s % 0.12/0.33 % Computer : n021.cluster.edu % 0.12/0.33 % Model : x86_64 x86_64 % 0.12/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz % 0.12/0.33 % Memory : 8042.1875MB % 0.12/0.33 % OS : Linux 3.10.0-693.el7.x86_64 % 0.12/0.33 % CPULimit : 300 % 0.12/0.33 % WCLimit : 300 % 0.12/0.33 % DateTime : Thu Aug 24 12:44:10 EDT 2023 % 0.12/0.34 % CPUTime : % 0.18/0.59 ________ _____ % 0.18/0.59 ___ __ \_________(_)________________________________ % 0.18/0.59 __ /_/ /_ ___/_ /__ __ \ ___/ _ \_ ___/_ ___/ % 0.18/0.59 _ ____/_ / _ / _ / / / /__ / __/(__ )_(__ ) % 0.18/0.59 /_/ /_/ /_/ /_/ /_/\___/ \___//____/ /____/ % 0.18/0.59 % 0.18/0.59 A Theorem Prover for First-Order Logic modulo Linear Integer Arithmetic % 0.18/0.59 (2023-06-19) % 0.18/0.59 % 0.18/0.59 (c) Philipp Rümmer, 2009-2023 % 0.18/0.59 Contributors: Peter Backeman, Peter Baumgartner, Angelo Brillout, Zafer Esen, % 0.18/0.59 Amanda Stjerna. % 0.18/0.59 Free software under BSD-3-Clause. % 0.18/0.59 % 0.18/0.59 For more information, visit http://www.philipp.ruemmer.org/princess.shtml % 0.18/0.59 % 0.18/0.59 Loading /export/starexec/sandbox2/benchmark/theBenchmark.p ... % 0.18/0.60 Running up to 7 provers in parallel. % 0.18/0.62 Prover 2: Options: +triggersInConjecture +genTotalityAxioms -tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allMinimalAndEmpty -realRatSaturationRounds=1 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=-1065072994 % 0.18/0.62 Prover 0: Options: +triggersInConjecture +genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=0 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=1042961893 % 0.18/0.62 Prover 1: Options: +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-1571432423 % 0.18/0.62 Prover 3: Options: +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=1922548996 % 0.18/0.62 Prover 4: Options: +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=1868514696 % 0.18/0.62 Prover 5: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=none +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allMaximal -realRatSaturationRounds=1 -ignoreQuantifiers -constructProofs=never -generateTriggers=complete -randomSeed=1259561288 % 0.18/0.62 Prover 6: Options: -triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=none +reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximalOutermost -realRatSaturationRounds=0 -ignoreQuantifiers -constructProofs=never -generateTriggers=all -randomSeed=-1399714365 % 3.87/1.20 Prover 4: Preprocessing ... % 3.87/1.20 Prover 1: Preprocessing ... % 4.17/1.24 Prover 0: Preprocessing ... % 4.17/1.24 Prover 3: Preprocessing ... % 4.17/1.24 Prover 5: Preprocessing ... % 4.17/1.24 Prover 2: Preprocessing ... % 4.17/1.24 Prover 6: Preprocessing ... % 7.51/1.74 Prover 2: Constructing countermodel ... % 7.87/1.76 Prover 5: Proving ... % 8.94/1.91 Prover 6: Proving ... % 8.94/1.95 Prover 1: Constructing countermodel ... % 8.94/1.99 Prover 3: Constructing countermodel ... % 10.06/2.08 Prover 0: Proving ... % 10.06/2.09 Prover 4: Constructing countermodel ... % 10.85/2.17 Prover 2: proved (1565ms) % 10.85/2.18 % 10.85/2.18 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p % 10.85/2.18 % 10.85/2.18 Prover 3: stopped % 10.85/2.18 Prover 6: stopped % 10.85/2.18 Prover 7: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-236303470 % 10.85/2.18 Prover 10: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=919308125 % 10.85/2.18 Prover 5: proved (1568ms) % 10.85/2.18 % 10.85/2.18 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p % 10.85/2.18 % 10.85/2.18 Prover 11: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=allUni -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-1509710984 % 10.85/2.18 Prover 0: stopped % 10.85/2.19 Prover 13: Options: +triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=complete -randomSeed=1138197443 % 10.85/2.19 Prover 8: Options: +triggersInConjecture +genTotalityAxioms -tightFunctionScopes -clausifier=none -reverseFunctionalityPropagation -boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=0 +ignoreQuantifiers -constructProofs=always -generateTriggers=all -randomSeed=-200781089 % 11.79/2.32 Prover 8: Preprocessing ... % 11.79/2.33 Prover 7: Preprocessing ... % 12.32/2.36 Prover 10: Preprocessing ... % 12.32/2.37 Prover 11: Preprocessing ... % 12.32/2.37 Prover 13: Preprocessing ... % 12.32/2.37 Prover 1: gave up % 12.32/2.39 Prover 16: Options: +triggersInConjecture -genTotalityAxioms +tightFunctionScopes -clausifier=simple +reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=maximal -realRatSaturationRounds=1 +ignoreQuantifiers -constructProofs=always -generateTriggers=completeFrugal -randomSeed=-2043353683 % 12.77/2.45 Prover 7: Constructing countermodel ... % 13.12/2.47 Prover 16: Preprocessing ... % 13.12/2.47 Prover 10: Constructing countermodel ... % 13.12/2.48 Prover 13: Constructing countermodel ... % 13.79/2.58 Prover 16: Constructing countermodel ... % 13.79/2.60 Prover 8: Warning: ignoring some quantifiers % 13.79/2.63 Prover 8: Constructing countermodel ... % 13.79/2.67 Prover 10: Found proof (size 14) % 13.79/2.67 Prover 10: proved (489ms) % 13.79/2.67 Prover 13: stopped % 13.79/2.67 Prover 4: stopped % 13.79/2.67 Prover 7: stopped % 13.79/2.67 Prover 16: stopped % 13.79/2.68 Prover 8: stopped % 14.33/2.70 Prover 11: Constructing countermodel ... % 14.33/2.71 Prover 11: stopped % 14.33/2.71 % 14.33/2.71 % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p % 14.33/2.71 % 14.33/2.71 % SZS output start Proof for theBenchmark % 14.33/2.72 Assumptions after simplification: % 14.33/2.72 --------------------------------- % 14.33/2.72 % 14.33/2.72 (ax25) % 14.33/2.72 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ human_person(v0, v1) | % 14.33/2.72 animate(v0, v1)) % 14.33/2.72 % 14.33/2.72 (ax31) % 14.33/2.72 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ man(v0, v1) | % 14.33/2.72 human_person(v0, v1)) % 14.33/2.72 % 14.33/2.72 (ax40) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ object(v0, v1) | % 14.33/2.73 nonliving(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax45) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ artifact(v0, v1) | % 14.33/2.73 object(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax46) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ instrumentality(v0, % 14.33/2.73 v1) | artifact(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax47) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ device(v0, v1) | % 14.33/2.73 instrumentality(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax48) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ wheel(v0, v1) | % 14.33/2.73 device(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax57) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ nonliving(v0, v1) | ~ % 14.33/2.73 animate(v0, v1)) % 14.33/2.73 % 14.33/2.73 (ax71) % 14.33/2.73 ! [v0: $i] : ! [v1: $i] : ! [v2: $i] : ! [v3: $i] : (v3 = v2 | ~ $i(v3) | % 14.33/2.73 ~ $i(v2) | ~ $i(v1) | ~ $i(v0) | ~ be(v0, v1, v2, v3)) % 14.33/2.73 % 14.33/2.73 (co1) % 15.02/2.74 ? [v0: $i] : ? [v1: $i] : ? [v2: $i] : ? [v3: $i] : ? [v4: $i] : ? [v5: % 15.02/2.74 $i] : ? [v6: $i] : ? [v7: $i] : ? [v8: $i] : ? [v9: $i] : ? [v10: $i] : % 15.02/2.74 ? [v11: $i] : ($i(v11) & $i(v10) & $i(v9) & $i(v8) & $i(v7) & $i(v6) & $i(v5) % 15.02/2.74 & $i(v4) & $i(v3) & $i(v2) & $i(v1) & $i(v0) & behind(v0, v11, v11) & in(v0, % 15.02/2.74 v7, v6) & down(v0, v7, v6) & present(v0, v7) & lonely(v0, v6) & dirty(v0, % 15.02/2.74 v4) & actual_world(v0) & be(v0, v10, v1, v11) & agent(v0, v7, v4) & of(v0, % 15.02/2.74 v5, v6) & of(v0, v2, v1) & old(v0, v4) & white(v0, v4) & state(v0, v10) & % 15.02/2.74 wheel(v0, v11) & man(v0, v1) & group(v0, v9) & group(v0, v8) & two(v0, v8) & % 15.02/2.74 event(v0, v7) & barrel(v0, v7) & street(v0, v6) & chevy(v0, v4) & % 15.02/2.74 placename(v0, v5) & hollywood_placename(v0, v5) & city(v0, v6) & % 15.02/2.74 frontseat(v0, v3) & forename(v0, v2) & jules_forename(v0, v2) & ! [v12: $i] % 15.02/2.74 : ! [v13: $i] : ( ~ $i(v13) | ~ $i(v12) | ~ member(v0, v13, v8) | ~ % 15.02/2.74 member(v0, v12, v9) | ? [v14: $i] : ($i(v14) & present(v0, v14) & % 15.02/2.74 patient(v0, v14, v12) & agent(v0, v14, v13) & nonreflexive(v0, v14) & % 15.02/2.74 wear(v0, v14) & event(v0, v14))) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v9) | cheap(v0, v12)) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v9) | black(v0, v12)) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v9) | coat(v0, v12)) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v8) | young(v0, v12)) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v8) | fellow(v0, v12)) & ! [v12: $i] : ( ~ $i(v12) | ~ % 15.02/2.74 member(v0, v12, v8) | ? [v13: $i] : ? [v14: $i] : ($i(v14) & $i(v13) & % 15.02/2.74 in(v0, v14, v3) & be(v0, v13, v12, v14) & state(v0, v13)))) % 15.02/2.74 % 15.02/2.74 Further assumptions not needed in the proof: % 15.02/2.74 -------------------------------------------- % 15.02/2.74 ax1, ax10, ax11, ax12, ax13, ax14, ax15, ax16, ax17, ax18, ax19, ax2, ax20, % 15.02/2.74 ax21, ax22, ax23, ax24, ax26, ax27, ax28, ax29, ax3, ax30, ax32, ax33, ax34, % 15.02/2.74 ax35, ax36, ax37, ax38, ax39, ax4, ax41, ax42, ax43, ax44, ax49, ax5, ax50, % 15.02/2.74 ax51, ax52, ax53, ax54, ax55, ax56, ax58, ax59, ax6, ax60, ax61, ax62, ax63, % 15.02/2.74 ax64, ax65, ax66, ax67, ax68, ax69, ax7, ax70, ax8, ax9 % 15.02/2.74 % 15.02/2.74 Those formulas are unsatisfiable: % 15.02/2.74 --------------------------------- % 15.02/2.74 % 15.02/2.74 Begin of proof % 15.02/2.74 | % 15.02/2.74 | DELTA: instantiating (co1) with fresh symbols all_73_0, all_73_1, all_73_2, % 15.02/2.74 | all_73_3, all_73_4, all_73_5, all_73_6, all_73_7, all_73_8, all_73_9, % 15.02/2.74 | all_73_10, all_73_11 gives: % 15.02/2.74 | (1) $i(all_73_0) & $i(all_73_1) & $i(all_73_2) & $i(all_73_3) & % 15.02/2.74 | $i(all_73_4) & $i(all_73_5) & $i(all_73_6) & $i(all_73_7) & % 15.02/2.74 | $i(all_73_8) & $i(all_73_9) & $i(all_73_10) & $i(all_73_11) & % 15.02/2.74 | behind(all_73_11, all_73_0, all_73_0) & in(all_73_11, all_73_4, % 15.02/2.74 | all_73_5) & down(all_73_11, all_73_4, all_73_5) & present(all_73_11, % 15.02/2.74 | all_73_4) & lonely(all_73_11, all_73_5) & dirty(all_73_11, all_73_7) % 15.02/2.74 | & actual_world(all_73_11) & be(all_73_11, all_73_1, all_73_10, % 15.02/2.74 | all_73_0) & agent(all_73_11, all_73_4, all_73_7) & of(all_73_11, % 15.02/2.74 | all_73_6, all_73_5) & of(all_73_11, all_73_9, all_73_10) & % 15.02/2.74 | old(all_73_11, all_73_7) & white(all_73_11, all_73_7) & % 15.02/2.74 | state(all_73_11, all_73_1) & wheel(all_73_11, all_73_0) & % 15.02/2.74 | man(all_73_11, all_73_10) & group(all_73_11, all_73_2) & % 15.02/2.74 | group(all_73_11, all_73_3) & two(all_73_11, all_73_3) & % 15.02/2.74 | event(all_73_11, all_73_4) & barrel(all_73_11, all_73_4) & % 15.02/2.74 | street(all_73_11, all_73_5) & chevy(all_73_11, all_73_7) & % 15.02/2.74 | placename(all_73_11, all_73_6) & hollywood_placename(all_73_11, % 15.02/2.74 | all_73_6) & city(all_73_11, all_73_5) & frontseat(all_73_11, % 15.02/2.75 | all_73_8) & forename(all_73_11, all_73_9) & jules_forename(all_73_11, % 15.02/2.75 | all_73_9) & ! [v0: $i] : ! [v1: $i] : ( ~ $i(v1) | ~ $i(v0) | ~ % 15.02/2.75 | member(all_73_11, v1, all_73_3) | ~ member(all_73_11, v0, all_73_2) % 15.02/2.75 | | ? [v2: $i] : ($i(v2) & present(all_73_11, v2) & patient(all_73_11, % 15.02/2.75 | v2, v0) & agent(all_73_11, v2, v1) & nonreflexive(all_73_11, v2) % 15.02/2.75 | & wear(all_73_11, v2) & event(all_73_11, v2))) & ! [v0: $i] : ( ~ % 15.02/2.75 | $i(v0) | ~ member(all_73_11, v0, all_73_2) | cheap(all_73_11, v0)) & % 15.02/2.75 | ! [v0: $i] : ( ~ $i(v0) | ~ member(all_73_11, v0, all_73_2) | % 15.02/2.75 | black(all_73_11, v0)) & ! [v0: $i] : ( ~ $i(v0) | ~ % 15.02/2.75 | member(all_73_11, v0, all_73_2) | coat(all_73_11, v0)) & ! [v0: $i] % 15.02/2.75 | : ( ~ $i(v0) | ~ member(all_73_11, v0, all_73_3) | young(all_73_11, % 15.02/2.75 | v0)) & ! [v0: $i] : ( ~ $i(v0) | ~ member(all_73_11, v0, % 15.02/2.75 | all_73_3) | fellow(all_73_11, v0)) & ! [v0: $i] : ( ~ $i(v0) | ~ % 15.02/2.75 | member(all_73_11, v0, all_73_3) | ? [v1: $i] : ? [v2: $i] : ($i(v2) % 15.02/2.75 | & $i(v1) & in(all_73_11, v2, all_73_8) & be(all_73_11, v1, v0, v2) % 15.02/2.75 | & state(all_73_11, v1))) % 15.02/2.75 | % 15.02/2.75 | ALPHA: (1) implies: % 15.02/2.75 | (2) man(all_73_11, all_73_10) % 15.02/2.75 | (3) wheel(all_73_11, all_73_0) % 15.02/2.75 | (4) be(all_73_11, all_73_1, all_73_10, all_73_0) % 15.02/2.75 | (5) $i(all_73_11) % 15.02/2.75 | (6) $i(all_73_10) % 15.02/2.75 | (7) $i(all_73_1) % 15.02/2.75 | (8) $i(all_73_0) % 15.02/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax31) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (2), (5), (6) gives: % 15.10/2.75 | (9) human_person(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax48) with all_73_11, all_73_0, simplifying with % 15.10/2.75 | (3), (5), (8) gives: % 15.10/2.75 | (10) device(all_73_11, all_73_0) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax71) with all_73_11, all_73_1, all_73_10, % 15.10/2.75 | all_73_0, simplifying with (4), (5), (6), (7), (8) gives: % 15.10/2.75 | (11) all_73_0 = all_73_10 % 15.10/2.75 | % 15.10/2.75 | REDUCE: (10), (11) imply: % 15.10/2.75 | (12) device(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax25) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (9) gives: % 15.10/2.75 | (13) animate(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax47) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (12) gives: % 15.10/2.75 | (14) instrumentality(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax46) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (14) gives: % 15.10/2.75 | (15) artifact(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax45) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (15) gives: % 15.10/2.75 | (16) object(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax40) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (16) gives: % 15.10/2.75 | (17) nonliving(all_73_11, all_73_10) % 15.10/2.75 | % 15.10/2.75 | GROUND_INST: instantiating (ax57) with all_73_11, all_73_10, simplifying with % 15.10/2.75 | (5), (6), (13), (17) gives: % 15.10/2.75 | (18) $false % 15.10/2.76 | % 15.10/2.76 | CLOSE: (18) is inconsistent. % 15.10/2.76 | % 15.10/2.76 End of proof % 15.10/2.76 % SZS output end Proof for theBenchmark % 15.10/2.76 % 15.10/2.76 2165ms %------------------------------------------------------------------------------