↑ Up

E---3.5.1.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : E---3.5.1
% Problem  : LCL713^1 : TPTP v9.3.1. Bugfixed v5.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM

% Computer : n014.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8046.5625MB
% OS       : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Wed Sep 30 08:12:04 AM UTC 2026

% Result   : Theorem 0.20s 0.28s
% Output   : CNFRefutation 0.20s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    8
%            Number of leaves      :    9
% Syntax   : Number of formulae    :   32 (  23 unt;   0 typ;   0 def)
%            Number of atoms       :   82 (  22 equ;   0 cnn)
%            Maximal formula atoms :    8 (   2 avg)
%            Number of connectives :  244 (  42   ~;  30   |;   7   &; 159   @)
%                                         (   0 <=>;   6  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   16 (   4 avg)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :   55 (  55   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   15 (  13 usr;   4 con; 0-3 aty)
%            Number of variables   :   88 (  44   ^;  44   !;   0   ?;  88   :)

% Comments : 
%------------------------------------------------------------------------------
thf(decl_25,type,
    mnot: ( $i > $o ) > $i > $o ).

thf(decl_26,type,
    mor: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(decl_28,type,
    mimplies: ( $i > $o ) > ( $i > $o ) > $i > $o ).

thf(decl_33,type,
    mforall_prop: ( ( $i > $o ) > $i > $o ) > $i > $o ).

thf(decl_38,type,
    mbox: ( $i > $i > $o ) > ( $i > $o ) > $i > $o ).

thf(decl_39,type,
    mdia: ( $i > $i > $o ) > ( $i > $o ) > $i > $o ).

thf(decl_44,type,
    meuclidean: ( $i > $i > $o ) > $o ).

thf(decl_50,type,
    mvalid: ( $i > $o ) > $o ).

thf(decl_54,type,
    epred1_0: $i > $i > $o ).

thf(decl_55,type,
    esk1_3: $i > ( $i > $o ) > $i > $i ).

thf(decl_56,type,
    esk2_0: $i ).

thf(decl_57,type,
    esk3_0: $i ).

thf(decl_58,type,
    esk4_0: $i ).

thf(mimplies,axiom,
    ( mimplies
    = ( ^ [X6: $i > $o,X7: $i > $o] : ( mor @ ( mnot @ X6 ) @ X7 ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mimplies) ).

thf(mnot,axiom,
    ( mnot
    = ( ^ [X6: $i > $o,X3: $i] :
          ~ ( X6 @ X3 ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mnot) ).

thf(mor,axiom,
    ( mor
    = ( ^ [X6: $i > $o,X7: $i > $o,X3: $i] :
          ( ( X6 @ X3 )
          | ( X7 @ X3 ) ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mor) ).

thf(mdia,axiom,
    ( mdia
    = ( ^ [X13: $i > $i > $o,X6: $i > $o] : ( mnot @ ( mbox @ X13 @ ( mnot @ X6 ) ) ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mdia) ).

thf(mbox,axiom,
    ( mbox
    = ( ^ [X13: $i > $i > $o,X6: $i > $o,X3: $i] :
        ! [X14: $i] :
          ( ~ ( X13 @ X3 @ X14 )
          | ( X6 @ X14 ) ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mbox) ).

thf(conj,conjecture,
    ! [X13: $i > $i > $o] :
      ( ( mvalid
        @ ( mforall_prop
          @ ^ [X18: $i > $o] : ( mimplies @ ( mdia @ X13 @ X18 ) @ ( mbox @ X13 @ ( mdia @ X13 @ X18 ) ) ) ) )
     => ( meuclidean @ X13 ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',conj) ).

thf(mforall_prop,axiom,
    ( mforall_prop
    = ( ^ [X9: ( $i > $o ) > $i > $o,X3: $i] :
        ! [X10: $i > $o] : ( X9 @ X10 @ X3 ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mforall_prop) ).

thf(meuclidean,axiom,
    ( meuclidean
    = ( ^ [X13: $i > $i > $o] :
        ! [X15: $i,X16: $i,X17: $i] :
          ( ( ( X13 @ X15 @ X16 )
            & ( X13 @ X15 @ X17 ) )
         => ( X13 @ X16 @ X17 ) ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',meuclidean) ).

thf(mvalid,axiom,
    ( mvalid
    = ( ^ [X6: $i > $o] :
        ! [X3: $i] : ( X6 @ X3 ) ) ),
    file('/export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p',mvalid) ).

thf(c_0_9,plain,
    ( mimplies
    = ( ^ [Z0: $i > $o,Z1: $i > $o,Z2: $i] :
          ( ~ ( Z0 @ Z2 )
          | ( Z1 @ Z2 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mimplies]) ).

thf(c_0_10,plain,
    ( mnot
    = ( ^ [Z0: $i > $o,Z1: $i] :
          ~ ( Z0 @ Z1 ) ) ),
    inference(fof_simplification,[status(thm)],[mnot]) ).

thf(c_0_11,plain,
    ( mor
    = ( ^ [Z0: $i > $o,Z1: $i > $o,Z2: $i] :
          ( ( Z0 @ Z2 )
          | ( Z1 @ Z2 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mor]) ).

thf(c_0_12,plain,
    ( mdia
    = ( ^ [Z0: $i > $i > $o,Z1: $i > $o,Z2: $i] :
          ~ ! [X22: $i] :
              ( ~ ( Z0 @ Z2 @ X22 )
              | ~ ( Z1 @ X22 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mdia]) ).

thf(c_0_13,plain,
    ( mbox
    = ( ^ [Z0: $i > $i > $o,Z1: $i > $o,Z2: $i] :
        ! [X14: $i] :
          ( ~ ( Z0 @ Z2 @ X14 )
          | ( Z1 @ X14 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mbox]) ).

thf(c_0_14,negated_conjecture,
    ~ ! [X13: $i > $i > $o] :
        ( ( mvalid
          @ ( mforall_prop
            @ ^ [X18: $i > $o] : ( mimplies @ ( mdia @ X13 @ X18 ) @ ( mbox @ X13 @ ( mdia @ X13 @ X18 ) ) ) ) )
       => ( meuclidean @ X13 ) ),
    inference(assume_negation,[status(cth)],[conj]) ).

thf(c_0_15,plain,
    ( mimplies
    = ( ^ [Z0: $i > $o,Z1: $i > $o,Z2: $i] :
          ( ~ ( Z0 @ Z2 )
          | ( Z1 @ Z2 ) ) ) ),
    inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[c_0_9,c_0_10]),c_0_11]) ).

thf(c_0_16,plain,
    ( mforall_prop
    = ( ^ [Z0: ( $i > $o ) > $i > $o,Z1: $i] :
        ! [X10: $i > $o] : ( Z0 @ X10 @ Z1 ) ) ),
    inference(fof_simplification,[status(thm)],[mforall_prop]) ).

thf(c_0_17,plain,
    ( mdia
    = ( ^ [Z0: $i > $i > $o,Z1: $i > $o,Z2: $i] :
          ~ ! [X22: $i] :
              ( ~ ( Z0 @ Z2 @ X22 )
              | ~ ( Z1 @ X22 ) ) ) ),
    inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[c_0_12,c_0_10]),c_0_13]) ).

thf(c_0_18,plain,
    ( meuclidean
    = ( ^ [Z0: $i > $i > $o] :
        ! [X15: $i,X16: $i,X17: $i] :
          ( ( ( Z0 @ X15 @ X16 )
            & ( Z0 @ X15 @ X17 ) )
         => ( Z0 @ X16 @ X17 ) ) ) ),
    inference(fof_simplification,[status(thm)],[meuclidean]) ).

thf(c_0_19,plain,
    ( mvalid
    = ( ^ [Z0: $i > $o] :
        ! [X3: $i] : ( Z0 @ X3 ) ) ),
    inference(fof_simplification,[status(thm)],[mvalid]) ).

thf(c_0_20,negated_conjecture,
    ~ ! [X13: $i > $i > $o] :
        ( ! [X27: $i,X26: $i > $o] :
            ( ~ ~ ! [X23: $i] :
                    ( ~ ( X13 @ X27 @ X23 )
                    | ~ ( X26 @ X23 ) )
            | ! [X25: $i] :
                ( ~ ( X13 @ X27 @ X25 )
                | ~ ! [X24: $i] :
                      ( ~ ( X13 @ X25 @ X24 )
                      | ~ ( X26 @ X24 ) ) ) )
       => ! [X28: $i,X29: $i,X30: $i] :
            ( ( ( X13 @ X28 @ X29 )
              & ( X13 @ X28 @ X30 ) )
           => ( X13 @ X29 @ X30 ) ) ),
    inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(fof_simplification,[status(thm)],[c_0_14]),c_0_15]),c_0_16]),c_0_13]),c_0_17]),c_0_18]),c_0_19]) ).

thf(c_0_21,negated_conjecture,
    ! [X32: $i,X33: $i > $o,X34: $i,X35: $i] :
      ( ( ( epred1_0 @ X35 @ ( esk1_3 @ X32 @ X33 @ X35 ) )
        | ~ ( epred1_0 @ X32 @ X35 )
        | ~ ( epred1_0 @ X32 @ X34 )
        | ~ ( X33 @ X34 ) )
      & ( ( X33 @ ( esk1_3 @ X32 @ X33 @ X35 ) )
        | ~ ( epred1_0 @ X32 @ X35 )
        | ~ ( epred1_0 @ X32 @ X34 )
        | ~ ( X33 @ X34 ) )
      & ( epred1_0 @ esk2_0 @ esk3_0 )
      & ( epred1_0 @ esk2_0 @ esk4_0 )
      & ~ ( epred1_0 @ esk3_0 @ esk4_0 ) ),
    inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_20])])])])])]) ).

thf(c_0_22,negated_conjecture,
    ! [X3: $i,X4: $i > $o,X14: $i,X15: $i] :
      ( ( epred1_0 @ X3 @ ( esk1_3 @ X14 @ X4 @ X3 ) )
      | ~ ( epred1_0 @ X14 @ X3 )
      | ~ ( epred1_0 @ X14 @ X15 )
      | ~ ( X4 @ X15 ) ),
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

thf(c_0_23,negated_conjecture,
    epred1_0 @ esk2_0 @ esk4_0,
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

thf(c_0_24,negated_conjecture,
    ! [X3: $i,X4: $i > $o,X14: $i,X15: $i] :
      ( ( X4 @ ( esk1_3 @ X3 @ X4 @ X14 ) )
      | ~ ( epred1_0 @ X3 @ X14 )
      | ~ ( epred1_0 @ X3 @ X15 )
      | ~ ( X4 @ X15 ) ),
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

thf(c_0_25,negated_conjecture,
    ! [X3: $i,X4: $i > $o] :
      ( ( epred1_0 @ X3 @ ( esk1_3 @ esk2_0 @ X4 @ X3 ) )
      | ~ ( epred1_0 @ esk2_0 @ X3 )
      | ~ ( X4 @ esk4_0 ) ),
    inference(spm,[status(thm)],[c_0_22,c_0_23]) ).

thf(c_0_26,negated_conjecture,
    epred1_0 @ esk2_0 @ esk3_0,
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

thf(c_0_27,negated_conjecture,
    ! [X3: $i,X14: $i,X15: $i] :
      ( ( ( esk1_3 @ X3
          @ ^ [Z0: $i] : ( Z0 = X14 )
          @ X15 )
        = X14 )
      | ~ ( epred1_0 @ X3 @ X14 )
      | ~ ( epred1_0 @ X3 @ X15 ) ),
    inference(eliminate_leibniz_eq,[status(thm)],[inference(cn,[status(thm)],[]),c_0_24]) ).

thf(c_0_28,negated_conjecture,
    ! [X4: $i > $o] :
      ( ( epred1_0 @ esk3_0 @ ( esk1_3 @ esk2_0 @ X4 @ esk3_0 ) )
      | ~ ( X4 @ esk4_0 ) ),
    inference(spm,[status(thm)],[c_0_25,c_0_26]) ).

thf(c_0_29,negated_conjecture,
    ! [X3: $i] :
      ( ( ( esk1_3 @ esk2_0
          @ ^ [Z0: $i] : ( Z0 = esk4_0 )
          @ X3 )
        = esk4_0 )
      | ~ ( epred1_0 @ esk2_0 @ X3 ) ),
    inference(spm,[status(thm)],[c_0_27,c_0_23]) ).

thf(c_0_30,negated_conjecture,
    ~ ( epred1_0 @ esk3_0 @ esk4_0 ),
    inference(split_conjunct,[status(thm)],[c_0_21]) ).

thf(c_0_31,negated_conjecture,
    $false,
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(cn,[status(thm)],[inference(cn,[status(thm)],[inference(spm,[status(thm)],[c_0_28,c_0_29])])]),c_0_26])]),c_0_30]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02  % Problem  : LCL713^1 : TPTP v9.3.1. Bugfixed v5.0.0.
% 0.00/0.05  % Command  : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.08/0.17  % Computer : n014.cluster.edu
% 0.08/0.17  % Model    : x86_64 x86_64
% 0.08/0.17  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.17  % Memory   : 8046.5625MB
% 0.08/0.17  % OS       : Linux 6.8.0-71-generic
% 0.08/0.17  % CPULimit : 300
% 0.08/0.17  % WCLimit  : 300
% 0.08/0.17  % DateTime : Tue Sep 29 09:48:15 UTC 2026
% 0.08/0.17  % CPUTime  : 
% 0.08/0.17  Running run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.08/0.21  Running higher-order theorem proving
% 0.08/0.23  Running: /export/starexec/sandbox/solver/bin/eprover-ho --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --auto-schedule=8 --cpu-limit=300 /export/starexec/sandbox/tmp/tmp.V1qD5Jn2oX/E---3.1_2461106.p
% 0.20/0.28  % Version: 3.5.1-ho
% 0.20/0.28  % Preprocessing class: HSMSSMSSMLMNHHN.
% 0.20/0.28  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.20/0.28  % Starting ehoh_best2_full_lfho with 1500s (5) cores
% 0.20/0.28  % Starting lpo9_lambda_fix with 300s (1) cores
% 0.20/0.28  % Starting sh5l with 300s (1) cores
% 0.20/0.28  % Starting ho_unfolding_6 with 300s (1) cores
% 0.20/0.28  % ehoh_best2_full_lfho with pid 2461135 completed with status 0
% 0.20/0.28  % Result found by ehoh_best2_full_lfho
% 0.20/0.28  % Preprocessing class: HSMSSMSSMLMNHHN.
% 0.20/0.28  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.20/0.28  % Starting ehoh_best2_full_lfho with 1500s (5) cores
% 0.20/0.28  % (lift_lambdas = 0, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 0.20/0.28  % No SInE strategy applied
% 0.20/0.28  % Search class: HHUNF-FFSF33-SHHSMSBN
% 0.20/0.28  % partial match(2): HGHNF-FFSF33-SHHSMSBN
% 0.20/0.28  % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.20/0.28  % Starting SubtermCWHack with 136s (1) cores
% 0.20/0.28  % Starting ehoh_best2_full_lfho with 151s (1) cores
% 0.20/0.28  % Starting sh5l with 136s (1) cores
% 0.20/0.28  % Starting new_bool_1 with 136s (1) cores
% 0.20/0.28  % Starting new_bool_2 with 136s (1) cores
% 0.20/0.28  % sh5l with pid 2461145 completed with status 0
% 0.20/0.28  % Result found by sh5l
% 0.20/0.28  % Preprocessing class: HSMSSMSSMLMNHHN.
% 0.20/0.28  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.20/0.28  % Starting ehoh_best2_full_lfho with 1500s (5) cores
% 0.20/0.28  % (lift_lambdas = 0, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 0.20/0.28  % No SInE strategy applied
% 0.20/0.28  % Search class: HHUNF-FFSF33-SHHSMSBN
% 0.20/0.28  % partial match(2): HGHNF-FFSF33-SHHSMSBN
% 0.20/0.28  % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.20/0.28  % Starting SubtermCWHack with 136s (1) cores
% 0.20/0.28  % Starting ehoh_best2_full_lfho with 151s (1) cores
% 0.20/0.28  % Starting sh5l with 136s (1) cores
% 0.20/0.28  % Preprocessing time       : 0.001 s
% 0.20/0.28  % Presaturation interreduction done
% 0.20/0.28  
% 0.20/0.28  % Proof found!
% 0.20/0.28  % SZS status Theorem
% 0.20/0.28  % SZS output start CNFRefutation
% See solution above
% 0.20/0.28  % Parsed axioms                        : 64
% 0.20/0.28  % Removed by relevancy pruning/SinE    : 0
% 0.20/0.28  % Initial clauses                      : 37
% 0.20/0.28  % Removed in clause preprocessing      : 32
% 0.20/0.28  % Initial clauses in saturation        : 5
% 0.20/0.28  % Processed clauses                    : 215
% 0.20/0.28  % ...of these trivial                  : 0
% 0.20/0.28  % ...subsumed                          : 67
% 0.20/0.28  % ...remaining for further processing  : 148
% 0.20/0.28  % Other redundant clauses eliminated   : 0
% 0.20/0.28  % Clauses deleted for lack of memory   : 0
% 0.20/0.28  % Backward-subsumed                    : 18
% 0.20/0.28  % Backward-rewritten                   : 0
% 0.20/0.28  % Generated clauses                    : 1308
% 0.20/0.28  % ...of the previous two non-redundant : 1256
% 0.20/0.28  % ...aggressively subsumed             : 0
% 0.20/0.28  % Contextual simplify-reflections      : 0
% 0.20/0.28  % Paramodulations                      : 1307
% 0.20/0.28  % Factorizations                       : 0
% 0.20/0.28  % NegExts                              : 0
% 0.20/0.28  % Equation resolutions                 : 0
% 0.20/0.28  % Disequality decompositions           : 0
% 0.20/0.28  % Total rewrite steps                  : 481
% 0.20/0.28  % ...of those cached                   : 479
% 0.20/0.28  % Propositional unsat checks           : 0
% 0.20/0.28  %    Propositional check models        : 0
% 0.20/0.28  %    Propositional check unsatisfiable : 0
% 0.20/0.28  %    Propositional clauses             : 0
% 0.20/0.28  %    Propositional clauses after purity: 0
% 0.20/0.28  %    Propositional unsat core size     : 0
% 0.20/0.28  %    Propositional preprocessing time  : 0.000
% 0.20/0.28  %    Propositional encoding time       : 0.000
% 0.20/0.28  %    Propositional solver time         : 0.000
% 0.20/0.28  %    Success case prop preproc time    : 0.000
% 0.20/0.28  %    Success case prop encoding time   : 0.000
% 0.20/0.28  %    Success case prop solver time     : 0.000
% 0.20/0.28  % Current number of processed clauses  : 125
% 0.20/0.28  %    Positive orientable unit clauses  : 2
% 0.20/0.28  %    Positive unorientable unit clauses: 0
% 0.20/0.28  %    Negative unit clauses             : 1
% 0.20/0.28  %    Non-unit-clauses                  : 122
% 0.20/0.28  % Current number of unprocessed clauses: 1048
% 0.20/0.28  % ...number of literals in the above   : 3302
% 0.20/0.28  % Current number of archived formulas  : 0
% 0.20/0.28  % Current number of archived clauses   : 23
% 0.20/0.28  % Clause-clause subsumption calls (NU) : 1698
% 0.20/0.28  % Rec. Clause-clause subsumption calls : 1489
% 0.20/0.28  % Non-unit clause-clause subsumptions  : 104
% 0.20/0.28  % Unit Clause-clause subsumption calls : 0
% 0.20/0.28  % Rewrite failures with RHS unbound    : 0
% 0.20/0.28  % BW rewrite match attempts            : 0
% 0.20/0.28  % BW rewrite match successes           : 0
% 0.20/0.28  % Condensation attempts                : 215
% 0.20/0.28  % Condensation successes               : 33
% 0.20/0.28  % Termbank termtop insertions          : 60936
% 0.20/0.28  % Search garbage collected termcells   : 642
% 0.20/0.28  
% 0.20/0.28  % -------------------------------------------------
% 0.20/0.28  % User time                : 0.025 s
% 0.20/0.28  % System time              : 0.004 s
% 0.20/0.28  % Total time               : 0.029 s
% 0.20/0.28  % Maximum resident set size: 3692 pages
% 0.20/0.28  
% 0.20/0.28  % -------------------------------------------------
% 0.20/0.28  % User time                : 0.090 s
% 0.20/0.28  % System time              : 0.019 s
% 0.20/0.28  % Total time               : 0.109 s
% 0.20/0.28  % Maximum resident set size: 4864 pages
% 0.20/0.28  % E exiting
%------------------------------------------------------------------------------