↑ Up

ePrincess---1.0.THM-Prf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : ePrincess---1.0
% Problem  : CSR057+1 : TPTP v8.1.0. Released v3.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : ePrincess-casc -timeout=%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  : 600s
% DateTime : Fri Jul 15 02:50:47 EDT 2022

% Result   : Theorem 3.19s 1.39s
% Output   : Proof 4.66s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.11  % Problem  : CSR057+1 : TPTP v8.1.0. Released v3.4.0.
% 0.03/0.12  % Command  : ePrincess-casc -timeout=%d %s
% 0.11/0.32  % Computer : n010.cluster.edu
% 0.11/0.32  % Model    : x86_64 x86_64
% 0.11/0.32  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.11/0.32  % Memory   : 8042.1875MB
% 0.11/0.32  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.11/0.32  % CPULimit : 300
% 0.11/0.32  % WCLimit  : 600
% 0.11/0.32  % DateTime : Sat Jun 11 03:19:40 EDT 2022
% 0.11/0.32  % CPUTime  : 
% 0.53/0.56          ____       _                          
% 0.53/0.56    ___  / __ \_____(_)___  ________  __________
% 0.53/0.56   / _ \/ /_/ / ___/ / __ \/ ___/ _ \/ ___/ ___/
% 0.53/0.56  /  __/ ____/ /  / / / / / /__/  __(__  |__  ) 
% 0.53/0.56  \___/_/   /_/  /_/_/ /_/\___/\___/____/____/  
% 0.53/0.56  
% 0.53/0.56  A Theorem Prover for First-Order Logic
% 0.53/0.56  (ePrincess v.1.0)
% 0.53/0.56  
% 0.53/0.56  (c) Philipp Rümmer, 2009-2015
% 0.53/0.56  (c) Peter Backeman, 2014-2015
% 0.53/0.56  (contributions by Angelo Brillout, Peter Baumgartner)
% 0.53/0.56  Free software under GNU Lesser General Public License (LGPL).
% 0.53/0.56  Bug reports to peter@backeman.se
% 0.53/0.56  
% 0.53/0.56  For more information, visit http://user.uu.se/~petba168/breu/
% 0.53/0.56  
% 0.53/0.56  Loading /export/starexec/sandbox/benchmark/theBenchmark.p ...
% 0.59/0.61  Prover 0: Options:  -triggersInConjecture -genTotalityAxioms -tightFunctionScopes -clausifier=simple -reverseFunctionalityPropagation +boolFunsAsPreds -triggerStrategy=allMaximal -resolutionMethod=nonUnifying +ignoreQuantifiers -generateTriggers=all
% 1.78/0.97  Prover 0: Preprocessing ...
% 2.43/1.17  Prover 0: Constructing countermodel ...
% 3.19/1.39  Prover 0: proved (780ms)
% 3.19/1.39  
% 3.19/1.39  No countermodel exists, formula is valid
% 3.19/1.39  % SZS status Theorem for theBenchmark
% 3.19/1.39  
% 3.19/1.39  Generating proof ... found it (size 15)
% 4.66/1.72  
% 4.66/1.72  % SZS output start Proof for theBenchmark
% 4.66/1.72  Assumed formulas after preprocessing and simplification: 
% 4.66/1.73  | (0) genls(c_partiallytangible, c_enduringthing_localized) & genls(c_enduringthing_localized, c_spatialthing_nonsituational) & genls(c_geographicalregion, c_partiallytangible) & genls(c_geolevel_4, c_geographicalregion) & mtvisible(c_tptpgeo_member8_mt) & mtvisible(c_universalvocabularymt) & mtvisible(c_basekb) & reflexivebinarypredicate(c_inregion) & transitivebinarypredicate(c_genlmt) & genlmt(c_tptpgeo_member8_mt, c_tptpgeo_spindleheadmt) & genlmt(c_tptpgeo_spindleheadmt, c_worldgeographymt) & genlmt(c_worldgeographymt, c_geographymt) & genlmt(c_basekb, c_universalvocabularymt) & genlmt(c_geographymt, c_basekb) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ inregion(v1, v2) |  ~ inregion(v0, v1) | inregion(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v1) |  ~ disjointwith(v0, v1) | disjointwith(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v0) |  ~ genls(v0, v1) | genls(v2, v1)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v0) |  ~ disjointwith(v0, v1) | disjointwith(v2, v1)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v1, v2) |  ~ genls(v0, v1) | genls(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v1, v2) |  ~ isa(v0, v1) | isa(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ disjointwith(v1, v2) |  ~ isa(v0, v2) |  ~ isa(v0, v1)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v2, v0) |  ~ genlinverse(v0, v1) | genlinverse(v2, v1)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v1, v2) |  ~ genlpreds(v0, v1) | genlpreds(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v1, v2) |  ~ genlinverse(v0, v1) | genlinverse(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlinverse(v1, v2) |  ~ genlinverse(v0, v1) | genlpreds(v0, v2)) &  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlmt(v1, v2) |  ~ genlmt(v0, v1) | genlmt(v0, v2)) &  ! [v0] :  ! [v1] : ( ~ inregion(v0, v1) | spatialthing_nonsituational(v1)) &  ! [v0] :  ! [v1] : ( ~ inregion(v0, v1) | spatialthing_nonsituational(v0)) &  ! [v0] :  ! [v1] : ( ~ genls(v0, v1) | collection(v1)) &  ! [v0] :  ! [v1] : ( ~ genls(v0, v1) | collection(v0)) &  ! [v0] :  ! [v1] : ( ~ mtvisible(v0) |  ~ genlmt(v0, v1) | mtvisible(v1)) &  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | collection(v1)) &  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | collection(v0)) &  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | disjointwith(v1, v0)) &  ! [v0] :  ! [v1] : ( ~ isa(v0, v1) | thing(v0)) &  ! [v0] :  ! [v1] : ( ~ isa(v0, v1) | collection(v1)) &  ! [v0] :  ! [v1] : ( ~ genlpreds(v0, v1) | predicate(v1)) &  ! [v0] :  ! [v1] : ( ~ genlpreds(v0, v1) | predicate(v0)) &  ! [v0] :  ! [v1] : ( ~ genlinverse(v0, v1) | binarypredicate(v1)) &  ! [v0] :  ! [v1] : ( ~ genlinverse(v0, v1) | binarypredicate(v0)) &  ! [v0] :  ! [v1] : ( ~ genlmt(v0, v1) | microtheory(v1)) &  ! [v0] :  ! [v1] : ( ~ genlmt(v0, v1) | microtheory(v0)) &  ! [v0] : ( ~ microtheory(v0) | genlmt(v0, v0)) &  ! [v0] :  ~ inregion(v0, c_georegion_l4_x75_y75) &  ! [v0] : ( ~ predicate(v0) | genlpreds(v0, v0)) &  ! [v0] : ( ~ collection(v0) | genls(v0, v0)) &  ! [v0] : ( ~ partiallytangible(v0) | enduringthing_localized(v0)) &  ! [v0] : ( ~ partiallytangible(v0) | isa(v0, c_partiallytangible)) &  ! [v0] : ( ~ spatialthing_nonsituational(v0) | inregion(v0, v0)) &  ! [v0] : ( ~ spatialthing_nonsituational(v0) | isa(v0, c_spatialthing_nonsituational)) &  ! [v0] : ( ~ enduringthing_localized(v0) | spatialthing_nonsituational(v0)) &  ! [v0] : ( ~ enduringthing_localized(v0) | isa(v0, c_enduringthing_localized)) &  ! [v0] : ( ~ geographicalregion(v0) | partiallytangible(v0)) &  ! [v0] : ( ~ geographicalregion(v0) | isa(v0, c_geographicalregion)) &  ! [v0] : ( ~ geolevel_4(v0) | geographicalregion(v0)) &  ! [v0] : ( ~ geolevel_4(v0) | isa(v0, c_geolevel_4)) &  ! [v0] : ( ~ isa(v0, c_transitivebinarypredicate) | transitivebinarypredicate(v0)) &  ! [v0] : ( ~ isa(v0, c_reflexivebinarypredicate) | reflexivebinarypredicate(v0)) &  ! [v0] : ( ~ isa(v0, c_partiallytangible) | partiallytangible(v0)) &  ! [v0] : ( ~ isa(v0, c_spatialthing_nonsituational) | spatialthing_nonsituational(v0)) &  ! [v0] : ( ~ isa(v0, c_enduringthing_localized) | enduringthing_localized(v0)) &  ! [v0] : ( ~ isa(v0, c_geographicalregion) | geographicalregion(v0)) &  ! [v0] : ( ~ isa(v0, c_geolevel_4) | geolevel_4(v0)) &  ! [v0] : ( ~ reflexivebinarypredicate(v0) | isa(v0, c_reflexivebinarypredicate)) &  ! [v0] : ( ~ transitivebinarypredicate(v0) | isa(v0, c_transitivebinarypredicate)) & ( ~ mtvisible(c_worldgeographymt) | geolevel_4(c_georegion_l4_x75_y75))
% 4.66/1.75  | Applying alpha-rule on (0) yields:
% 4.66/1.75  | (1)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v1, v2) |  ~ genlinverse(v0, v1) | genlinverse(v0, v2))
% 4.66/1.75  | (2)  ! [v0] :  ! [v1] : ( ~ inregion(v0, v1) | spatialthing_nonsituational(v0))
% 4.66/1.75  | (3)  ! [v0] :  ! [v1] : ( ~ genlmt(v0, v1) | microtheory(v1))
% 4.66/1.75  | (4) genlmt(c_tptpgeo_member8_mt, c_tptpgeo_spindleheadmt)
% 4.66/1.75  | (5) genlmt(c_tptpgeo_spindleheadmt, c_worldgeographymt)
% 4.66/1.75  | (6)  ! [v0] : ( ~ geographicalregion(v0) | partiallytangible(v0))
% 4.66/1.75  | (7)  ! [v0] :  ! [v1] : ( ~ genlpreds(v0, v1) | predicate(v1))
% 4.66/1.75  | (8)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v1, v2) |  ~ genls(v0, v1) | genls(v0, v2))
% 4.66/1.75  | (9) genls(c_partiallytangible, c_enduringthing_localized)
% 4.66/1.75  | (10) genlmt(c_basekb, c_universalvocabularymt)
% 4.66/1.75  | (11)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v2, v0) |  ~ genlinverse(v0, v1) | genlinverse(v2, v1))
% 4.66/1.75  | (12)  ! [v0] : ( ~ isa(v0, c_geographicalregion) | geographicalregion(v0))
% 4.66/1.75  | (13)  ! [v0] : ( ~ geographicalregion(v0) | isa(v0, c_geographicalregion))
% 4.66/1.75  | (14)  ! [v0] :  ! [v1] : ( ~ genls(v0, v1) | collection(v1))
% 4.66/1.75  | (15)  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | collection(v0))
% 4.66/1.75  | (16) genlmt(c_geographymt, c_basekb)
% 4.66/1.75  | (17)  ! [v0] :  ! [v1] : ( ~ isa(v0, v1) | thing(v0))
% 4.66/1.75  | (18)  ! [v0] :  ~ inregion(v0, c_georegion_l4_x75_y75)
% 4.66/1.75  | (19)  ! [v0] : ( ~ predicate(v0) | genlpreds(v0, v0))
% 4.66/1.75  | (20)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlpreds(v1, v2) |  ~ genlpreds(v0, v1) | genlpreds(v0, v2))
% 4.66/1.75  | (21)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v0) |  ~ disjointwith(v0, v1) | disjointwith(v2, v1))
% 4.66/1.75  | (22)  ! [v0] :  ! [v1] : ( ~ genlinverse(v0, v1) | binarypredicate(v1))
% 4.66/1.75  | (23)  ! [v0] : ( ~ transitivebinarypredicate(v0) | isa(v0, c_transitivebinarypredicate))
% 4.66/1.75  | (24)  ! [v0] : ( ~ isa(v0, c_transitivebinarypredicate) | transitivebinarypredicate(v0))
% 4.66/1.75  | (25) mtvisible(c_tptpgeo_member8_mt)
% 4.66/1.75  | (26)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlmt(v1, v2) |  ~ genlmt(v0, v1) | genlmt(v0, v2))
% 4.66/1.75  | (27) reflexivebinarypredicate(c_inregion)
% 4.66/1.75  | (28)  ! [v0] : ( ~ enduringthing_localized(v0) | spatialthing_nonsituational(v0))
% 4.66/1.75  | (29)  ! [v0] : ( ~ isa(v0, c_enduringthing_localized) | enduringthing_localized(v0))
% 4.66/1.75  | (30)  ! [v0] : ( ~ enduringthing_localized(v0) | isa(v0, c_enduringthing_localized))
% 4.66/1.75  | (31)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ inregion(v1, v2) |  ~ inregion(v0, v1) | inregion(v0, v2))
% 4.66/1.76  | (32) mtvisible(c_basekb)
% 4.66/1.76  | (33)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v0) |  ~ genls(v0, v1) | genls(v2, v1))
% 4.66/1.76  | (34)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genlinverse(v1, v2) |  ~ genlinverse(v0, v1) | genlpreds(v0, v2))
% 4.66/1.76  | (35)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v1, v2) |  ~ isa(v0, v1) | isa(v0, v2))
% 4.66/1.76  | (36)  ! [v0] : ( ~ microtheory(v0) | genlmt(v0, v0))
% 4.66/1.76  | (37)  ~ mtvisible(c_worldgeographymt) | geolevel_4(c_georegion_l4_x75_y75)
% 4.66/1.76  | (38) genls(c_geographicalregion, c_partiallytangible)
% 4.66/1.76  | (39)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ genls(v2, v1) |  ~ disjointwith(v0, v1) | disjointwith(v0, v2))
% 4.66/1.76  | (40) genls(c_enduringthing_localized, c_spatialthing_nonsituational)
% 4.66/1.76  | (41)  ! [v0] : ( ~ isa(v0, c_partiallytangible) | partiallytangible(v0))
% 4.66/1.76  | (42)  ! [v0] : ( ~ partiallytangible(v0) | isa(v0, c_partiallytangible))
% 4.66/1.76  | (43)  ! [v0] : ( ~ geolevel_4(v0) | geographicalregion(v0))
% 4.66/1.76  | (44)  ! [v0] :  ! [v1] : ( ~ genls(v0, v1) | collection(v0))
% 4.66/1.76  | (45)  ! [v0] :  ! [v1] : ( ~ genlmt(v0, v1) | microtheory(v0))
% 4.66/1.76  | (46) genls(c_geolevel_4, c_geographicalregion)
% 4.66/1.76  | (47) transitivebinarypredicate(c_genlmt)
% 4.66/1.76  | (48)  ! [v0] : ( ~ isa(v0, c_spatialthing_nonsituational) | spatialthing_nonsituational(v0))
% 4.66/1.76  | (49)  ! [v0] : ( ~ spatialthing_nonsituational(v0) | isa(v0, c_spatialthing_nonsituational))
% 4.66/1.76  | (50) mtvisible(c_universalvocabularymt)
% 4.66/1.76  | (51)  ! [v0] : ( ~ reflexivebinarypredicate(v0) | isa(v0, c_reflexivebinarypredicate))
% 4.66/1.76  | (52)  ! [v0] : ( ~ isa(v0, c_reflexivebinarypredicate) | reflexivebinarypredicate(v0))
% 4.66/1.76  | (53)  ! [v0] :  ! [v1] : ( ~ genlpreds(v0, v1) | predicate(v0))
% 4.66/1.76  | (54)  ! [v0] : ( ~ partiallytangible(v0) | enduringthing_localized(v0))
% 4.66/1.76  | (55)  ! [v0] :  ! [v1] : ( ~ genlinverse(v0, v1) | binarypredicate(v0))
% 4.66/1.76  | (56) genlmt(c_worldgeographymt, c_geographymt)
% 4.66/1.76  | (57)  ! [v0] : ( ~ spatialthing_nonsituational(v0) | inregion(v0, v0))
% 4.66/1.76  | (58)  ! [v0] :  ! [v1] : ( ~ mtvisible(v0) |  ~ genlmt(v0, v1) | mtvisible(v1))
% 4.66/1.76  | (59)  ! [v0] :  ! [v1] :  ! [v2] : ( ~ disjointwith(v1, v2) |  ~ isa(v0, v2) |  ~ isa(v0, v1))
% 4.66/1.76  | (60)  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | collection(v1))
% 4.66/1.76  | (61)  ! [v0] : ( ~ collection(v0) | genls(v0, v0))
% 4.66/1.76  | (62)  ! [v0] :  ! [v1] : ( ~ isa(v0, v1) | collection(v1))
% 4.66/1.76  | (63)  ! [v0] :  ! [v1] : ( ~ inregion(v0, v1) | spatialthing_nonsituational(v1))
% 4.66/1.76  | (64)  ! [v0] : ( ~ isa(v0, c_geolevel_4) | geolevel_4(v0))
% 4.66/1.76  | (65)  ! [v0] : ( ~ geolevel_4(v0) | isa(v0, c_geolevel_4))
% 4.66/1.76  | (66)  ! [v0] :  ! [v1] : ( ~ disjointwith(v0, v1) | disjointwith(v1, v0))
% 4.66/1.76  |
% 4.66/1.76  | Instantiating formula (33) with c_partiallytangible, c_spatialthing_nonsituational, c_enduringthing_localized and discharging atoms genls(c_partiallytangible, c_enduringthing_localized), genls(c_enduringthing_localized, c_spatialthing_nonsituational), yields:
% 4.66/1.76  | (67) genls(c_partiallytangible, c_spatialthing_nonsituational)
% 4.66/1.76  |
% 4.66/1.76  | Instantiating formula (33) with c_geolevel_4, c_partiallytangible, c_geographicalregion and discharging atoms genls(c_geographicalregion, c_partiallytangible), genls(c_geolevel_4, c_geographicalregion), yields:
% 4.66/1.77  | (68) genls(c_geolevel_4, c_partiallytangible)
% 4.66/1.77  |
% 4.66/1.77  | Instantiating formula (26) with c_worldgeographymt, c_tptpgeo_spindleheadmt, c_tptpgeo_member8_mt and discharging atoms genlmt(c_tptpgeo_member8_mt, c_tptpgeo_spindleheadmt), genlmt(c_tptpgeo_spindleheadmt, c_worldgeographymt), yields:
% 4.66/1.77  | (69) genlmt(c_tptpgeo_member8_mt, c_worldgeographymt)
% 4.66/1.77  |
% 4.66/1.77  | Instantiating formula (33) with c_geolevel_4, c_spatialthing_nonsituational, c_partiallytangible and discharging atoms genls(c_partiallytangible, c_spatialthing_nonsituational), genls(c_geolevel_4, c_partiallytangible), yields:
% 4.66/1.77  | (70) genls(c_geolevel_4, c_spatialthing_nonsituational)
% 4.66/1.77  |
% 4.66/1.77  | Instantiating formula (58) with c_worldgeographymt, c_tptpgeo_member8_mt and discharging atoms mtvisible(c_tptpgeo_member8_mt), genlmt(c_tptpgeo_member8_mt, c_worldgeographymt), yields:
% 4.66/1.77  | (71) mtvisible(c_worldgeographymt)
% 4.66/1.77  |
% 4.66/1.77  +-Applying beta-rule and splitting (37), into two cases.
% 4.66/1.77  |-Branch one:
% 4.66/1.77  | (72)  ~ mtvisible(c_worldgeographymt)
% 4.66/1.77  |
% 4.66/1.77  	| Using (71) and (72) yields:
% 4.66/1.77  	| (73) $false
% 4.66/1.77  	|
% 4.66/1.77  	|-The branch is then unsatisfiable
% 4.66/1.77  |-Branch two:
% 4.66/1.77  | (71) mtvisible(c_worldgeographymt)
% 4.66/1.77  | (75) geolevel_4(c_georegion_l4_x75_y75)
% 4.66/1.77  |
% 4.66/1.77  	| Instantiating formula (65) with c_georegion_l4_x75_y75 and discharging atoms geolevel_4(c_georegion_l4_x75_y75), yields:
% 4.66/1.77  	| (76) isa(c_georegion_l4_x75_y75, c_geolevel_4)
% 4.66/1.77  	|
% 4.66/1.77  	| Instantiating formula (35) with c_spatialthing_nonsituational, c_geolevel_4, c_georegion_l4_x75_y75 and discharging atoms genls(c_geolevel_4, c_spatialthing_nonsituational), isa(c_georegion_l4_x75_y75, c_geolevel_4), yields:
% 4.66/1.77  	| (77) isa(c_georegion_l4_x75_y75, c_spatialthing_nonsituational)
% 4.66/1.77  	|
% 4.66/1.77  	| Instantiating formula (48) with c_georegion_l4_x75_y75 and discharging atoms isa(c_georegion_l4_x75_y75, c_spatialthing_nonsituational), yields:
% 4.66/1.77  	| (78) spatialthing_nonsituational(c_georegion_l4_x75_y75)
% 4.66/1.77  	|
% 4.66/1.77  	| Instantiating formula (57) with c_georegion_l4_x75_y75 and discharging atoms spatialthing_nonsituational(c_georegion_l4_x75_y75), yields:
% 4.66/1.77  	| (79) inregion(c_georegion_l4_x75_y75, c_georegion_l4_x75_y75)
% 4.66/1.77  	|
% 4.66/1.77  	| Instantiating formula (18) with c_georegion_l4_x75_y75 and discharging atoms inregion(c_georegion_l4_x75_y75, c_georegion_l4_x75_y75), yields:
% 4.66/1.77  	| (73) $false
% 4.66/1.77  	|
% 4.66/1.77  	|-The branch is then unsatisfiable
% 4.66/1.77  % SZS output end Proof for theBenchmark
% 4.66/1.77  
% 4.66/1.77  1197ms
%------------------------------------------------------------------------------