TSTP Solution File: CSR033+1 by iProver---3.9

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : iProver---3.9
% Problem  : CSR033+1 : TPTP v8.1.2. Released v3.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_iprover %s %d THM

% Computer : n009.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 : Fri May  3 02:11:13 EDT 2024

% Result   : Theorem 0.43s 1.12s
% Output   : CNFRefutation 0.43s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   15
%            Number of leaves      :   13
% Syntax   : Number of formulae    :   89 (  35 unt;   0 def)
%            Number of atoms       :  160 (   0 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :  127 (  56   ~;  52   |;   7   &)
%                                         (   0 <=>;  12  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    7 (   3 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of predicates  :    6 (   5 usr;   1 prp; 0-2 aty)
%            Number of functors    :   10 (  10 usr;  10 con; 0-0 aty)
%            Number of variables   :   51 (   0 sgn  31   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f5,axiom,
    ! [X0,X1] :
      ( geographicalsubregions(X0,X1)
     => inregion(X1,X0) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just5) ).

fof(f8,axiom,
    genlmt(c_tptpgeo_spindleheadmt,c_worldgeographymt),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just8) ).

fof(f9,axiom,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member2_mt),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just9) ).

fof(f10,axiom,
    genlmt(c_tptpgeo_member8_mt,c_tptpgeo_spindleheadmt),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just10) ).

fof(f11,axiom,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member8_mt),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just11) ).

fof(f12,axiom,
    ( mtvisible(c_worldgeographymt)
   => geolevel_1(c_georegion_l1_x2_y0) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just12) ).

fof(f13,axiom,
    ( mtvisible(c_tptpgeo_member2_mt)
   => geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just13) ).

fof(f14,axiom,
    ( mtvisible(c_tptpgeo_member2_mt)
   => geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just14) ).

fof(f15,axiom,
    ( mtvisible(c_tptpgeo_member2_mt)
   => geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just15) ).

fof(f16,axiom,
    ( mtvisible(c_tptpgeo_member2_mt)
   => inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just16) ).

fof(f45,axiom,
    ! [X9,X10,X11] :
      ( ( inregion(X10,X11)
        & inregion(X9,X10) )
     => inregion(X9,X11) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just45) ).

fof(f53,axiom,
    ! [X14,X15] :
      ( ( genlmt(X14,X15)
        & mtvisible(X14) )
     => mtvisible(X15) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',just53) ).

fof(f62,conjecture,
    ( mtvisible(c_tptpgeo_spindlecollectormt)
   => ( geolevel_1(c_georegion_l1_x2_y0)
      & inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',query33) ).

fof(f63,negated_conjecture,
    ~ ( mtvisible(c_tptpgeo_spindlecollectormt)
     => ( geolevel_1(c_georegion_l1_x2_y0)
        & inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0) ) ),
    inference(negated_conjecture,[],[f62]) ).

fof(f92,plain,
    ! [X0,X1,X2] :
      ( ( inregion(X1,X2)
        & inregion(X0,X1) )
     => inregion(X0,X2) ),
    inference(rectify,[],[f45]) ).

fof(f99,plain,
    ! [X0,X1] :
      ( ( genlmt(X0,X1)
        & mtvisible(X0) )
     => mtvisible(X1) ),
    inference(rectify,[],[f53]) ).

fof(f118,plain,
    ! [X0,X1] :
      ( inregion(X1,X0)
      | ~ geographicalsubregions(X0,X1) ),
    inference(ennf_transformation,[],[f5]) ).

fof(f119,plain,
    ( geolevel_1(c_georegion_l1_x2_y0)
    | ~ mtvisible(c_worldgeographymt) ),
    inference(ennf_transformation,[],[f12]) ).

fof(f120,plain,
    ( geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(ennf_transformation,[],[f13]) ).

fof(f121,plain,
    ( geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(ennf_transformation,[],[f14]) ).

fof(f122,plain,
    ( geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(ennf_transformation,[],[f15]) ).

fof(f123,plain,
    ( inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(ennf_transformation,[],[f16]) ).

fof(f151,plain,
    ! [X0,X1,X2] :
      ( inregion(X0,X2)
      | ~ inregion(X1,X2)
      | ~ inregion(X0,X1) ),
    inference(ennf_transformation,[],[f92]) ).

fof(f152,plain,
    ! [X0,X1,X2] :
      ( inregion(X0,X2)
      | ~ inregion(X1,X2)
      | ~ inregion(X0,X1) ),
    inference(flattening,[],[f151]) ).

fof(f154,plain,
    ! [X0,X1] :
      ( mtvisible(X1)
      | ~ genlmt(X0,X1)
      | ~ mtvisible(X0) ),
    inference(ennf_transformation,[],[f99]) ).

fof(f155,plain,
    ! [X0,X1] :
      ( mtvisible(X1)
      | ~ genlmt(X0,X1)
      | ~ mtvisible(X0) ),
    inference(flattening,[],[f154]) ).

fof(f164,plain,
    ( ( ~ geolevel_1(c_georegion_l1_x2_y0)
      | ~ inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0) )
    & mtvisible(c_tptpgeo_spindlecollectormt) ),
    inference(ennf_transformation,[],[f63]) ).

fof(f169,plain,
    ! [X0,X1] :
      ( inregion(X1,X0)
      | ~ geographicalsubregions(X0,X1) ),
    inference(cnf_transformation,[],[f118]) ).

fof(f172,plain,
    genlmt(c_tptpgeo_spindleheadmt,c_worldgeographymt),
    inference(cnf_transformation,[],[f8]) ).

fof(f173,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member2_mt),
    inference(cnf_transformation,[],[f9]) ).

fof(f174,plain,
    genlmt(c_tptpgeo_member8_mt,c_tptpgeo_spindleheadmt),
    inference(cnf_transformation,[],[f10]) ).

fof(f175,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member8_mt),
    inference(cnf_transformation,[],[f11]) ).

fof(f176,plain,
    ( geolevel_1(c_georegion_l1_x2_y0)
    | ~ mtvisible(c_worldgeographymt) ),
    inference(cnf_transformation,[],[f119]) ).

fof(f177,plain,
    ( geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(cnf_transformation,[],[f120]) ).

fof(f178,plain,
    ( geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(cnf_transformation,[],[f121]) ).

fof(f179,plain,
    ( geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(cnf_transformation,[],[f122]) ).

fof(f180,plain,
    ( inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23)
    | ~ mtvisible(c_tptpgeo_member2_mt) ),
    inference(cnf_transformation,[],[f123]) ).

fof(f203,plain,
    ! [X2,X0,X1] :
      ( inregion(X0,X2)
      | ~ inregion(X1,X2)
      | ~ inregion(X0,X1) ),
    inference(cnf_transformation,[],[f152]) ).

fof(f206,plain,
    ! [X0,X1] :
      ( mtvisible(X1)
      | ~ genlmt(X0,X1)
      | ~ mtvisible(X0) ),
    inference(cnf_transformation,[],[f155]) ).

fof(f215,plain,
    mtvisible(c_tptpgeo_spindlecollectormt),
    inference(cnf_transformation,[],[f164]) ).

fof(f216,plain,
    ( ~ geolevel_1(c_georegion_l1_x2_y0)
    | ~ inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0) ),
    inference(cnf_transformation,[],[f164]) ).

cnf(c_53,plain,
    ( ~ geographicalsubregions(X0,X1)
    | inregion(X1,X0) ),
    inference(cnf_transformation,[],[f169]) ).

cnf(c_56,plain,
    genlmt(c_tptpgeo_spindleheadmt,c_worldgeographymt),
    inference(cnf_transformation,[],[f172]) ).

cnf(c_57,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member2_mt),
    inference(cnf_transformation,[],[f173]) ).

cnf(c_58,plain,
    genlmt(c_tptpgeo_member8_mt,c_tptpgeo_spindleheadmt),
    inference(cnf_transformation,[],[f174]) ).

cnf(c_59,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member8_mt),
    inference(cnf_transformation,[],[f175]) ).

cnf(c_60,plain,
    ( ~ mtvisible(c_worldgeographymt)
    | geolevel_1(c_georegion_l1_x2_y0) ),
    inference(cnf_transformation,[],[f176]) ).

cnf(c_61,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2) ),
    inference(cnf_transformation,[],[f177]) ).

cnf(c_62,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7) ),
    inference(cnf_transformation,[],[f178]) ).

cnf(c_63,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23) ),
    inference(cnf_transformation,[],[f179]) ).

cnf(c_64,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23) ),
    inference(cnf_transformation,[],[f180]) ).

cnf(c_87,plain,
    ( ~ inregion(X0,X1)
    | ~ inregion(X2,X0)
    | inregion(X2,X1) ),
    inference(cnf_transformation,[],[f203]) ).

cnf(c_90,plain,
    ( ~ genlmt(X0,X1)
    | ~ mtvisible(X0)
    | mtvisible(X1) ),
    inference(cnf_transformation,[],[f206]) ).

cnf(c_99,negated_conjecture,
    ( ~ inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0)
    | ~ geolevel_1(c_georegion_l1_x2_y0) ),
    inference(cnf_transformation,[],[f216]) ).

cnf(c_100,negated_conjecture,
    mtvisible(c_tptpgeo_spindlecollectormt),
    inference(cnf_transformation,[],[f215]) ).

cnf(c_395,negated_conjecture,
    mtvisible(c_tptpgeo_spindlecollectormt),
    inference(subtyping,[status(esa)],[c_100]) ).

cnf(c_402,plain,
    ( ~ genlmt(X0_13,X1_13)
    | ~ mtvisible(X0_13)
    | mtvisible(X1_13) ),
    inference(subtyping,[status(esa)],[c_90]) ).

cnf(c_405,plain,
    ( ~ inregion(X0_14,X1_14)
    | ~ inregion(X2_14,X0_14)
    | inregion(X2_14,X1_14) ),
    inference(subtyping,[status(esa)],[c_87]) ).

cnf(c_414,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23) ),
    inference(subtyping,[status(esa)],[c_64]) ).

cnf(c_415,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23) ),
    inference(subtyping,[status(esa)],[c_63]) ).

cnf(c_416,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7) ),
    inference(subtyping,[status(esa)],[c_62]) ).

cnf(c_417,plain,
    ( ~ mtvisible(c_tptpgeo_member2_mt)
    | geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2) ),
    inference(subtyping,[status(esa)],[c_61]) ).

cnf(c_419,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member8_mt),
    inference(subtyping,[status(esa)],[c_59]) ).

cnf(c_420,plain,
    genlmt(c_tptpgeo_member8_mt,c_tptpgeo_spindleheadmt),
    inference(subtyping,[status(esa)],[c_58]) ).

cnf(c_421,plain,
    genlmt(c_tptpgeo_spindlecollectormt,c_tptpgeo_member2_mt),
    inference(subtyping,[status(esa)],[c_57]) ).

cnf(c_422,plain,
    genlmt(c_tptpgeo_spindleheadmt,c_worldgeographymt),
    inference(subtyping,[status(esa)],[c_56]) ).

cnf(c_424,plain,
    ( ~ geographicalsubregions(X0_14,X1_14)
    | inregion(X1_14,X0_14) ),
    inference(subtyping,[status(esa)],[c_53]) ).

cnf(c_428,negated_conjecture,
    mtvisible(c_tptpgeo_spindlecollectormt),
    inference(demodulation,[status(thm)],[c_395]) ).

cnf(c_440,plain,
    ( ~ genlmt(c_tptpgeo_spindlecollectormt,X0_13)
    | mtvisible(X0_13) ),
    inference(resolution,[status(thm)],[c_402,c_428]) ).

cnf(c_442,plain,
    mtvisible(c_tptpgeo_member2_mt),
    inference(resolution,[status(thm)],[c_440,c_421]) ).

cnf(c_443,plain,
    mtvisible(c_tptpgeo_member8_mt),
    inference(resolution,[status(thm)],[c_440,c_419]) ).

cnf(c_444,plain,
    geographicalsubregions(c_georegion_l1_x2_y0,c_georegion_l2_x8_y2),
    inference(resolution,[status(thm)],[c_442,c_417]) ).

cnf(c_445,plain,
    geographicalsubregions(c_georegion_l2_x8_y2,c_georegion_l3_x25_y7),
    inference(resolution,[status(thm)],[c_442,c_416]) ).

cnf(c_446,plain,
    geographicalsubregions(c_georegion_l3_x25_y7,c_georegion_l4_x76_y23),
    inference(resolution,[status(thm)],[c_442,c_415]) ).

cnf(c_447,plain,
    inregion(c_geolocation_x76_y23,c_georegion_l4_x76_y23),
    inference(resolution,[status(thm)],[c_442,c_414]) ).

cnf(c_463,plain,
    ( ~ genlmt(c_tptpgeo_member8_mt,X0_13)
    | mtvisible(X0_13) ),
    inference(resolution,[status(thm)],[c_443,c_402]) ).

cnf(c_465,plain,
    inregion(c_georegion_l2_x8_y2,c_georegion_l1_x2_y0),
    inference(resolution,[status(thm)],[c_444,c_424]) ).

cnf(c_468,plain,
    mtvisible(c_tptpgeo_spindleheadmt),
    inference(resolution,[status(thm)],[c_463,c_420]) ).

cnf(c_470,plain,
    inregion(c_georegion_l3_x25_y7,c_georegion_l2_x8_y2),
    inference(resolution,[status(thm)],[c_445,c_424]) ).

cnf(c_472,plain,
    inregion(c_georegion_l4_x76_y23,c_georegion_l3_x25_y7),
    inference(resolution,[status(thm)],[c_446,c_424]) ).

cnf(c_475,plain,
    ( ~ genlmt(c_tptpgeo_spindleheadmt,X0_13)
    | mtvisible(X0_13) ),
    inference(resolution,[status(thm)],[c_468,c_402]) ).

cnf(c_501,plain,
    ( ~ inregion(X0_14,c_georegion_l2_x8_y2)
    | inregion(X0_14,c_georegion_l1_x2_y0) ),
    inference(resolution,[status(thm)],[c_465,c_405]) ).

cnf(c_505,plain,
    ( ~ inregion(X0_14,c_georegion_l3_x25_y7)
    | inregion(X0_14,c_georegion_l2_x8_y2) ),
    inference(resolution,[status(thm)],[c_470,c_405]) ).

cnf(c_509,plain,
    ( ~ inregion(X0_14,c_georegion_l4_x76_y23)
    | inregion(X0_14,c_georegion_l3_x25_y7) ),
    inference(resolution,[status(thm)],[c_472,c_405]) ).

cnf(c_561,plain,
    mtvisible(c_worldgeographymt),
    inference(resolution,[status(thm)],[c_475,c_422]) ).

cnf(c_569,plain,
    inregion(c_geolocation_x76_y23,c_georegion_l3_x25_y7),
    inference(resolution,[status(thm)],[c_509,c_447]) ).

cnf(c_575,plain,
    inregion(c_geolocation_x76_y23,c_georegion_l2_x8_y2),
    inference(resolution,[status(thm)],[c_569,c_505]) ).

cnf(c_580,plain,
    inregion(c_geolocation_x76_y23,c_georegion_l1_x2_y0),
    inference(resolution,[status(thm)],[c_575,c_501]) ).

cnf(c_581,plain,
    $false,
    inference(prop_impl_just,[status(thm)],[c_580,c_561,c_99,c_60]) ).


%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.11  % Problem  : CSR033+1 : TPTP v8.1.2. Released v3.4.0.
% 0.10/0.12  % Command  : run_iprover %s %d THM
% 0.12/0.32  % Computer : n009.cluster.edu
% 0.12/0.32  % Model    : x86_64 x86_64
% 0.12/0.32  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.32  % Memory   : 8042.1875MB
% 0.12/0.32  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.12/0.32  % CPULimit : 300
% 0.12/0.32  % WCLimit  : 300
% 0.12/0.32  % DateTime : Thu May  2 23:11:55 EDT 2024
% 0.12/0.32  % CPUTime  : 
% 0.17/0.44  Running first-order theorem proving
% 0.17/0.44  Running: /export/starexec/sandbox2/solver/bin/run_problem --schedule fof_schedule --heuristic_context casc_unsat --no_cores 8 /export/starexec/sandbox2/benchmark/theBenchmark.p 300
% 0.43/1.12  % SZS status Started for theBenchmark.p
% 0.43/1.12  % SZS status Theorem for theBenchmark.p
% 0.43/1.12  
% 0.43/1.12  %---------------- iProver v3.9 (pre CASC 2024/SMT-COMP 2024) ----------------%
% 0.43/1.12  
% 0.43/1.12  ------  iProver source info
% 0.43/1.12  
% 0.43/1.12  git: date: 2024-05-02 19:28:25 +0000
% 0.43/1.12  git: sha1: a33b5eb135c74074ba803943bb12f2ebd971352f
% 0.43/1.12  git: non_committed_changes: false
% 0.43/1.12  
% 0.43/1.12  ------ Parsing...
% 0.43/1.12  ------ Clausification by vclausify_rel  & Parsing by iProver...------  preprocesses with Option_epr_horn
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  ------ Preprocessing... sf_s  rm: 14 0s  sf_e  sf_s  rm: 0 0s  sf_e 
% 0.43/1.12  
% 0.43/1.12  ------ Preprocessing...------  preprocesses with Option_epr_horn
% 0.43/1.12   gs_s  sp: 0 0s  gs_e  snvd_s sp: 0 0s snvd_e 
% 0.43/1.12  ------ Proving...
% 0.43/1.12  ------ Problem Properties 
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  clauses                                 32
% 0.43/1.12  conjectures                             2
% 0.43/1.12  EPR                                     32
% 0.43/1.12  Horn                                    32
% 0.43/1.12  unary                                   10
% 0.43/1.12  binary                                  18
% 0.43/1.12  lits                                    58
% 0.43/1.12  lits eq                                 0
% 0.43/1.12  fd_pure                                 0
% 0.43/1.12  fd_pseudo                               0
% 0.43/1.12  fd_cond                                 0
% 0.43/1.12  fd_pseudo_cond                          0
% 0.43/1.12  AC symbols                              0
% 0.43/1.12  
% 0.43/1.12  ------ Schedule EPR Horn non eq is on
% 0.43/1.12  
% 0.43/1.12  ------ no equalities: superposition off 
% 0.43/1.12  
% 0.43/1.12  ------ Option_epr_horn Time Limit: Unbounded
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  ------ 
% 0.43/1.12  Current options:
% 0.43/1.12  ------ 
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  ------ Proving...
% 0.43/1.12  
% 0.43/1.12  
% 0.43/1.12  % SZS status Theorem for theBenchmark.p
% 0.43/1.12  
% 0.43/1.12  % SZS output start CNFRefutation for theBenchmark.p
% See solution above
% 0.43/1.12  
% 0.43/1.12  
%------------------------------------------------------------------------------