TSTP Solution File: SYO901^11 by E---3.2.0

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : E---3.2.0
% Problem  : SYO901^11 : TPTP v8.2.0. Released v8.1.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_E %s %d THM

% Computer : n024.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 : Mon Jun 24 20:37:25 EDT 2024

% Result   : Theorem 0.19s 0.49s
% Output   : CNFRefutation 0.19s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   19
%            Number of leaves      :    7
% Syntax   : Number of formulae    :   47 (  24 unt;   0 typ;   0 def)
%            Number of atoms       :  122 (   8 equ;   0 cnn)
%            Maximal formula atoms :   19 (   2 avg)
%            Number of connectives :  266 (  34   ~;  38   |;   8   &; 172   @)
%                                         (   4 <=>;  10  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   17 (   4 avg)
%            Number of types       :    2 (   1 usr)
%            Number of type conns  :   12 (  12   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   13 (  11 usr;   5 con; 0-3 aty)
%            Number of variables   :   49 (  18   ^  31   !;   0   ?;  49   :)

% Comments : 
%------------------------------------------------------------------------------
thf(decl_sort1,type,
    mworld: $tType ).

thf(decl_22,type,
    mrel: mworld > mworld > $o ).

thf(decl_23,type,
    mactual: mworld ).

thf(decl_24,type,
    mlocal: ( mworld > $o ) > $o ).

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

thf(decl_29,type,
    mequiv: ( mworld > $o ) > ( mworld > $o ) > mworld > $o ).

thf(decl_30,type,
    mbox: ( mworld > $o ) > mworld > $o ).

thf(decl_32,type,
    p: mworld > $o ).

thf(decl_33,type,
    q: mworld > $o ).

thf(decl_34,type,
    esk1_0: mworld ).

thf(decl_35,type,
    esk2_0: mworld ).

thf(decl_36,type,
    esk3_0: mworld ).

thf(mlocal_def,axiom,
    ( mlocal
    = ( ^ [X1: mworld > $o] : ( X1 @ mactual ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mlocal_def) ).

thf(mimplies_def,axiom,
    ( mimplies
    = ( ^ [X2: mworld > $o,X4: mworld > $o,X3: mworld] :
          ( ( X2 @ X3 )
         => ( X4 @ X3 ) ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mimplies_def) ).

thf(mequiv_def,axiom,
    ( mequiv
    = ( ^ [X2: mworld > $o,X4: mworld > $o,X3: mworld] :
          ( ( X2 @ X3 )
        <=> ( X4 @ X3 ) ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mequiv_def) ).

thf(mbox_def,axiom,
    ( mbox
    = ( ^ [X1: mworld > $o,X3: mworld] :
        ! [X5: mworld] :
          ( ( mrel @ X3 @ X5 )
         => ( X1 @ X5 ) ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mbox_def) ).

thf(mrel_euclidean,axiom,
    ! [X3: mworld,X5: mworld,X6: mworld] :
      ( ( ( mrel @ X3 @ X6 )
        & ( mrel @ X3 @ X5 ) )
     => ( mrel @ X6 @ X5 ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mrel_euclidean) ).

thf(mrel_reflexive,axiom,
    ! [X3: mworld] : ( mrel @ X3 @ X3 ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',mrel_reflexive) ).

thf(con,conjecture,
    mlocal @ ( mimplies @ ( mbox @ ( mequiv @ p @ q ) ) @ ( mbox @ ( mequiv @ ( mbox @ p ) @ ( mbox @ q ) ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p',con) ).

thf(c_0_7,plain,
    ( mlocal
    = ( ^ [Z0: mworld > $o] : ( Z0 @ mactual ) ) ),
    inference(fof_simplification,[status(thm)],[mlocal_def]) ).

thf(c_0_8,plain,
    ( mimplies
    = ( ^ [Z0: mworld > $o,Z1: mworld > $o,Z2: mworld] :
          ( ( Z0 @ Z2 )
         => ( Z1 @ Z2 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mimplies_def]) ).

thf(c_0_9,plain,
    ( mequiv
    = ( ^ [Z0: mworld > $o,Z1: mworld > $o,Z2: mworld] :
          ( ( Z0 @ Z2 )
        <=> ( Z1 @ Z2 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mequiv_def]) ).

thf(c_0_10,plain,
    ( mbox
    = ( ^ [Z0: mworld > $o,Z1: mworld] :
        ! [X5: mworld] :
          ( ( mrel @ Z1 @ X5 )
         => ( Z0 @ X5 ) ) ) ),
    inference(fof_simplification,[status(thm)],[mbox_def]) ).

thf(c_0_11,plain,
    ! [X16: mworld,X17: mworld,X18: mworld] :
      ( ~ ( mrel @ X16 @ X18 )
      | ~ ( mrel @ X16 @ X17 )
      | ( mrel @ X18 @ X17 ) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mrel_euclidean])])]) ).

thf(c_0_12,plain,
    ! [X15: mworld] : ( mrel @ X15 @ X15 ),
    inference(variable_rename,[status(thm)],[mrel_reflexive]) ).

thf(c_0_13,negated_conjecture,
    ~ ( ! [X11: mworld] :
          ( ( mrel @ mactual @ X11 )
         => ( ( p @ X11 )
          <=> ( q @ X11 ) ) )
     => ! [X14: mworld] :
          ( ( mrel @ mactual @ X14 )
         => ( ! [X12: mworld] :
                ( ( mrel @ X14 @ X12 )
               => ( p @ X12 ) )
          <=> ! [X13: mworld] :
                ( ( mrel @ X14 @ X13 )
               => ( q @ X13 ) ) ) ) ),
    inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(apply_def,[status(thm)],[inference(assume_negation,[status(cth)],[con]),c_0_7]),c_0_8]),c_0_9]),c_0_10]) ).

thf(c_0_14,plain,
    ! [X3: mworld,X5: mworld,X6: mworld] :
      ( ( mrel @ X5 @ X6 )
      | ~ ( mrel @ X3 @ X5 )
      | ~ ( mrel @ X3 @ X6 ) ),
    inference(split_conjunct,[status(thm)],[c_0_11]) ).

thf(c_0_15,plain,
    ! [X3: mworld] : ( mrel @ X3 @ X3 ),
    inference(split_conjunct,[status(thm)],[c_0_12]) ).

thf(c_0_16,negated_conjecture,
    ! [X19: mworld,X23: mworld,X24: mworld] :
      ( ( ~ ( p @ X19 )
        | ( q @ X19 )
        | ~ ( mrel @ mactual @ X19 ) )
      & ( ~ ( q @ X19 )
        | ( p @ X19 )
        | ~ ( mrel @ mactual @ X19 ) )
      & ( mrel @ mactual @ esk1_0 )
      & ( ( mrel @ esk1_0 @ esk3_0 )
        | ( mrel @ esk1_0 @ esk2_0 ) )
      & ( ~ ( q @ esk3_0 )
        | ( mrel @ esk1_0 @ esk2_0 ) )
      & ( ( mrel @ esk1_0 @ esk3_0 )
        | ~ ( p @ esk2_0 ) )
      & ( ~ ( q @ esk3_0 )
        | ~ ( p @ esk2_0 ) )
      & ( ~ ( mrel @ esk1_0 @ X23 )
        | ( p @ X23 )
        | ~ ( mrel @ esk1_0 @ X24 )
        | ( q @ X24 ) ) ),
    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_13])])])])])]) ).

thf(c_0_17,plain,
    ! [X5: mworld,X3: mworld] :
      ( ( mrel @ X3 @ X5 )
      | ~ ( mrel @ X5 @ X3 ) ),
    inference(spm,[status(thm)],[c_0_14,c_0_15]) ).

thf(c_0_18,negated_conjecture,
    mrel @ mactual @ esk1_0,
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_19,negated_conjecture,
    mrel @ esk1_0 @ mactual,
    inference(spm,[status(thm)],[c_0_17,c_0_18]) ).

thf(c_0_20,negated_conjecture,
    ! [X3: mworld] :
      ( ( mrel @ X3 @ mactual )
      | ~ ( mrel @ esk1_0 @ X3 ) ),
    inference(spm,[status(thm)],[c_0_14,c_0_19]) ).

thf(c_0_21,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk3_0 )
    | ( mrel @ esk1_0 @ esk2_0 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_22,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk2_0 )
    | ( mrel @ esk3_0 @ mactual ) ),
    inference(spm,[status(thm)],[c_0_20,c_0_21]) ).

thf(c_0_23,negated_conjecture,
    ! [X3: mworld,X5: mworld] :
      ( ( p @ X3 )
      | ( q @ X5 )
      | ~ ( mrel @ esk1_0 @ X3 )
      | ~ ( mrel @ esk1_0 @ X5 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_24,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk2_0 )
    | ~ ( q @ esk3_0 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_25,negated_conjecture,
    ! [X3: mworld] :
      ( ( q @ X3 )
      | ~ ( p @ X3 )
      | ~ ( mrel @ mactual @ X3 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_26,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk2_0 )
    | ( mrel @ mactual @ esk3_0 ) ),
    inference(spm,[status(thm)],[c_0_17,c_0_22]) ).

thf(c_0_27,negated_conjecture,
    ! [X3: mworld] :
      ( ( mrel @ esk1_0 @ esk2_0 )
      | ( p @ X3 )
      | ~ ( mrel @ esk1_0 @ X3 ) ),
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_23,c_0_21]),c_0_24]) ).

thf(c_0_28,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk2_0 )
    | ~ ( p @ esk3_0 ) ),
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_25,c_0_26]),c_0_24]) ).

thf(c_0_29,negated_conjecture,
    mrel @ esk1_0 @ esk2_0,
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_27,c_0_21]),c_0_28]) ).

thf(c_0_30,negated_conjecture,
    mrel @ esk2_0 @ mactual,
    inference(spm,[status(thm)],[c_0_20,c_0_29]) ).

thf(c_0_31,negated_conjecture,
    mrel @ mactual @ esk2_0,
    inference(spm,[status(thm)],[c_0_17,c_0_30]) ).

thf(c_0_32,negated_conjecture,
    ! [X3: mworld] :
      ( ( p @ X3 )
      | ~ ( q @ X3 )
      | ~ ( mrel @ mactual @ X3 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_33,negated_conjecture,
    ! [X3: mworld] :
      ( ( q @ esk2_0 )
      | ( p @ X3 )
      | ~ ( mrel @ esk1_0 @ X3 ) ),
    inference(spm,[status(thm)],[c_0_23,c_0_29]) ).

thf(c_0_34,negated_conjecture,
    ( ( q @ esk2_0 )
    | ~ ( p @ esk2_0 ) ),
    inference(spm,[status(thm)],[c_0_25,c_0_31]) ).

thf(c_0_35,negated_conjecture,
    ( ( p @ esk2_0 )
    | ~ ( q @ esk2_0 ) ),
    inference(spm,[status(thm)],[c_0_32,c_0_31]) ).

thf(c_0_36,negated_conjecture,
    q @ esk2_0,
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_33,c_0_29]),c_0_34]) ).

thf(c_0_37,negated_conjecture,
    ( ( mrel @ esk1_0 @ esk3_0 )
    | ~ ( p @ esk2_0 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_38,negated_conjecture,
    p @ esk2_0,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_35,c_0_36])]) ).

thf(c_0_39,negated_conjecture,
    ( ~ ( q @ esk3_0 )
    | ~ ( p @ esk2_0 ) ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

thf(c_0_40,negated_conjecture,
    mrel @ esk1_0 @ esk3_0,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_37,c_0_38])]) ).

thf(c_0_41,negated_conjecture,
    ~ ( q @ esk3_0 ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_39,c_0_38])]) ).

thf(c_0_42,negated_conjecture,
    mrel @ esk3_0 @ mactual,
    inference(spm,[status(thm)],[c_0_20,c_0_40]) ).

thf(c_0_43,negated_conjecture,
    ! [X3: mworld] :
      ( ( p @ X3 )
      | ~ ( mrel @ esk1_0 @ X3 ) ),
    inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_23,c_0_40]),c_0_41]) ).

thf(c_0_44,negated_conjecture,
    mrel @ mactual @ esk3_0,
    inference(spm,[status(thm)],[c_0_17,c_0_42]) ).

thf(c_0_45,negated_conjecture,
    p @ esk3_0,
    inference(spm,[status(thm)],[c_0_43,c_0_40]) ).

thf(c_0_46,negated_conjecture,
    $false,
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_25,c_0_44]),c_0_45])]),c_0_41]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.11  % Problem    : SYO901^11 : TPTP v8.2.0. Released v8.1.0.
% 0.11/0.11  % Command    : run_E %s %d THM
% 0.11/0.32  % Computer : n024.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    : 300
% 0.11/0.32  % DateTime   : Sun Jun 23 09:16:54 EDT 2024
% 0.11/0.32  % CPUTime    : 
% 0.19/0.47  Running higher-order theorem proving
% 0.19/0.47  Running: /export/starexec/sandbox2/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/sandbox2/tmp/tmp.K2tL71twKM/E---3.1_24388.p
% 0.19/0.49  # Version: 3.2.0-ho
% 0.19/0.49  # Preprocessing class: HSSSSMSSMLSNHSN.
% 0.19/0.49  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49  # Starting new_ho_9 with 1500s (5) cores
% 0.19/0.49  # Starting post_as_ho1 with 300s (1) cores
% 0.19/0.49  # Starting sh1l with 300s (1) cores
% 0.19/0.49  # Starting post_as_ho10 with 300s (1) cores
% 0.19/0.49  # new_ho_9 with pid 24467 completed with status 0
% 0.19/0.49  # Result found by new_ho_9
% 0.19/0.49  # Preprocessing class: HSSSSMSSMLSNHSN.
% 0.19/0.49  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49  # Starting new_ho_9 with 1500s (5) cores
% 0.19/0.49  # No SInE strategy applied
% 0.19/0.49  # Search class: HGHNF-FFSF00-SHSSMFNN
% 0.19/0.49  # Scheduled 6 strats onto 5 cores with 1500 seconds (1500 total)
% 0.19/0.49  # Starting new_ho_10 with 811s (1) cores
% 0.19/0.49  # Starting new_ho_9 with 151s (1) cores
% 0.19/0.49  # Starting ehoh_best_sine_rwall with 136s (1) cores
% 0.19/0.49  # Starting lpo1_def_fix with 136s (1) cores
% 0.19/0.49  # Starting ehoh_best8_lambda with 136s (1) cores
% 0.19/0.49  # ehoh_best8_lambda with pid 24475 completed with status 0
% 0.19/0.49  # Result found by ehoh_best8_lambda
% 0.19/0.49  # Preprocessing class: HSSSSMSSMLSNHSN.
% 0.19/0.49  # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49  # Starting new_ho_9 with 1500s (5) cores
% 0.19/0.49  # No SInE strategy applied
% 0.19/0.49  # Search class: HGHNF-FFSF00-SHSSMFNN
% 0.19/0.49  # Scheduled 6 strats onto 5 cores with 1500 seconds (1500 total)
% 0.19/0.49  # Starting new_ho_10 with 811s (1) cores
% 0.19/0.49  # Starting new_ho_9 with 151s (1) cores
% 0.19/0.49  # Starting ehoh_best_sine_rwall with 136s (1) cores
% 0.19/0.49  # Starting lpo1_def_fix with 136s (1) cores
% 0.19/0.49  # Starting ehoh_best8_lambda with 136s (1) cores
% 0.19/0.49  # Preprocessing time       : 0.001 s
% 0.19/0.49  # Presaturation interreduction done
% 0.19/0.49  
% 0.19/0.49  # Proof found!
% 0.19/0.49  # SZS status Theorem
% 0.19/0.49  # SZS output start CNFRefutation
% See solution above
% 0.19/0.49  # Parsed axioms                        : 24
% 0.19/0.49  # Removed by relevancy pruning/SinE    : 0
% 0.19/0.49  # Initial clauses                      : 23
% 0.19/0.49  # Removed in clause preprocessing      : 13
% 0.19/0.49  # Initial clauses in saturation        : 10
% 0.19/0.49  # Processed clauses                    : 73
% 0.19/0.49  # ...of these trivial                  : 0
% 0.19/0.49  # ...subsumed                          : 8
% 0.19/0.49  # ...remaining for further processing  : 65
% 0.19/0.49  # Other redundant clauses eliminated   : 0
% 0.19/0.49  # Clauses deleted for lack of memory   : 0
% 0.19/0.49  # Backward-subsumed                    : 1
% 0.19/0.49  # Backward-rewritten                   : 21
% 0.19/0.49  # Generated clauses                    : 103
% 0.19/0.49  # ...of the previous two non-redundant : 62
% 0.19/0.49  # ...aggressively subsumed             : 0
% 0.19/0.49  # Contextual simplify-reflections      : 6
% 0.19/0.49  # Paramodulations                      : 103
% 0.19/0.49  # Factorizations                       : 0
% 0.19/0.49  # NegExts                              : 0
% 0.19/0.49  # Equation resolutions                 : 0
% 0.19/0.49  # Disequality decompositions           : 0
% 0.19/0.49  # Total rewrite steps                  : 64
% 0.19/0.49  # ...of those cached                   : 41
% 0.19/0.49  # Propositional unsat checks           : 0
% 0.19/0.49  #    Propositional check models        : 0
% 0.19/0.49  #    Propositional check unsatisfiable : 0
% 0.19/0.49  #    Propositional clauses             : 0
% 0.19/0.49  #    Propositional clauses after purity: 0
% 0.19/0.49  #    Propositional unsat core size     : 0
% 0.19/0.49  #    Propositional preprocessing time  : 0.000
% 0.19/0.49  #    Propositional encoding time       : 0.000
% 0.19/0.49  #    Propositional solver time         : 0.000
% 0.19/0.49  #    Success case prop preproc time    : 0.000
% 0.19/0.49  #    Success case prop encoding time   : 0.000
% 0.19/0.49  #    Success case prop solver time     : 0.000
% 0.19/0.49  # Current number of processed clauses  : 33
% 0.19/0.49  #    Positive orientable unit clauses  : 20
% 0.19/0.49  #    Positive unorientable unit clauses: 0
% 0.19/0.49  #    Negative unit clauses             : 1
% 0.19/0.49  #    Non-unit-clauses                  : 12
% 0.19/0.49  # Current number of unprocessed clauses: 5
% 0.19/0.49  # ...number of literals in the above   : 9
% 0.19/0.49  # Current number of archived formulas  : 0
% 0.19/0.49  # Current number of archived clauses   : 32
% 0.19/0.49  # Clause-clause subsumption calls (NU) : 73
% 0.19/0.49  # Rec. Clause-clause subsumption calls : 65
% 0.19/0.49  # Non-unit clause-clause subsumptions  : 15
% 0.19/0.49  # Unit Clause-clause subsumption calls : 8
% 0.19/0.49  # Rewrite failures with RHS unbound    : 0
% 0.19/0.49  # BW rewrite match attempts            : 12
% 0.19/0.49  # BW rewrite match successes           : 5
% 0.19/0.49  # Condensation attempts                : 0
% 0.19/0.49  # Condensation successes               : 0
% 0.19/0.49  # Termbank termtop insertions          : 2571
% 0.19/0.49  # Search garbage collected termcells   : 345
% 0.19/0.49  
% 0.19/0.49  # -------------------------------------------------
% 0.19/0.49  # User time                : 0.005 s
% 0.19/0.49  # System time              : 0.001 s
% 0.19/0.49  # Total time               : 0.006 s
% 0.19/0.49  # Maximum resident set size: 1844 pages
% 0.19/0.49  
% 0.19/0.49  # -------------------------------------------------
% 0.19/0.49  # User time                : 0.021 s
% 0.19/0.49  # System time              : 0.008 s
% 0.19/0.49  # Total time               : 0.029 s
% 0.19/0.49  # Maximum resident set size: 1724 pages
% 0.19/0.49  % E---3.1 exiting
% 0.19/0.49  % E exiting
%------------------------------------------------------------------------------