↑ Up

E---3.5.1.THM-CRf.s

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

% Computer : n018.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 : Thu Sep 24 01:49:21 PM UTC 2026

% Result   : Theorem 0.37s 0.46s
% Output   : CNFRefutation 0.37s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    9
%            Number of leaves      :    9
% Syntax   : Number of formulae    :   40 (  12 unt;   0 def)
%            Number of atoms       :  165 (  54 equ)
%            Maximal formula atoms :   32 (   4 avg)
%            Number of connectives :  200 (  75   ~;  73   |;  33   &)
%                                         (   4 <=>;  15  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   14 (   4 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of predicates  :    6 (   4 usr;   1 prp; 0-2 aty)
%            Number of functors    :    9 (   9 usr;   6 con; 0-2 aty)
%            Number of variables   :   38 (   0 sgn  27   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(mDefPrime,axiom,
    ! [X1] :
      ( aNaturalNumber0(X1)
     => ( isPrime0(X1)
      <=> ( ! [X2] :
              ( ( doDivides0(X2,X1)
                & aNaturalNumber0(X2) )
             => ( X2 = X1
                | X2 = sz10 ) )
          & X1 != sz10
          & X1 != sz00 ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mDefPrime) ).

fof(m__,conjecture,
    ( ~ sdtlseqdt0(xp,xk)
   => ( sdtlseqdt0(xk,xp)
      & xk != xp ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__) ).

fof(mDefQuot,axiom,
    ! [X1,X2] :
      ( ( aNaturalNumber0(X2)
        & aNaturalNumber0(X1) )
     => ( ( doDivides0(X1,X2)
          & X1 != sz00 )
       => ! [X3] :
            ( X3 = sdtsldt0(X2,X1)
          <=> ( X2 = sdtasdt0(X1,X3)
              & aNaturalNumber0(X3) ) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mDefQuot) ).

fof(mLETotal,axiom,
    ! [X1,X2] :
      ( ( aNaturalNumber0(X2)
        & aNaturalNumber0(X1) )
     => ( ( sdtlseqdt0(X2,X1)
          & X2 != X1 )
        | sdtlseqdt0(X1,X2) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mLETotal) ).

fof(m__1860,hypothesis,
    ( doDivides0(xp,sdtasdt0(xn,xm))
    & isPrime0(xp) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__1860) ).

fof(m__1837,hypothesis,
    ( aNaturalNumber0(xp)
    & aNaturalNumber0(xm)
    & aNaturalNumber0(xn) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__1837) ).

fof(m__2306,hypothesis,
    xk = sdtsldt0(sdtasdt0(xn,xm),xp),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__2306) ).

fof(mSortsB_02,axiom,
    ! [X1,X2] :
      ( ( aNaturalNumber0(X2)
        & aNaturalNumber0(X1) )
     => aNaturalNumber0(sdtasdt0(X1,X2)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mSortsB_02) ).

fof(mLERefl,axiom,
    ! [X1] :
      ( aNaturalNumber0(X1)
     => sdtlseqdt0(X1,X1) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mLERefl) ).

fof(c_0_9,plain,
    ! [X1] :
      ( aNaturalNumber0(X1)
     => ( isPrime0(X1)
      <=> ( ! [X2] :
              ( ( doDivides0(X2,X1)
                & aNaturalNumber0(X2) )
             => ( X2 = X1
                | X2 = sz10 ) )
          & X1 != sz10
          & X1 != sz00 ) ) ),
    inference(fof_simplification,[status(thm)],[mDefPrime]) ).

fof(c_0_10,negated_conjecture,
    ~ ( ~ sdtlseqdt0(xp,xk)
     => ( sdtlseqdt0(xk,xp)
        & xk != xp ) ),
    inference(assume_negation,[status(cth)],[m__]) ).

fof(c_0_11,plain,
    ! [X1,X2] :
      ( ( aNaturalNumber0(X2)
        & aNaturalNumber0(X1) )
     => ( ( doDivides0(X1,X2)
          & X1 != sz00 )
       => ! [X3] :
            ( X3 = sdtsldt0(X2,X1)
          <=> ( X2 = sdtasdt0(X1,X3)
              & aNaturalNumber0(X3) ) ) ) ),
    inference(fof_simplification,[status(thm)],[mDefQuot]) ).

fof(c_0_12,plain,
    ! [X84,X85] :
      ( ( ~ aNaturalNumber0(X84)
        | isPrime0(X84)
        | X84 = sz10
        | X84 = sz00
        | esk3_1(X84) != X84 )
      & ( ~ aNaturalNumber0(X84)
        | isPrime0(X84)
        | X84 = sz10
        | X84 = sz00
        | esk3_1(X84) != sz10 )
      & ( ~ aNaturalNumber0(X84)
        | isPrime0(X84)
        | X84 = sz10
        | X84 = sz00
        | doDivides0(esk3_1(X84),X84) )
      & ( ~ aNaturalNumber0(X84)
        | isPrime0(X84)
        | X84 = sz10
        | X84 = sz00
        | aNaturalNumber0(esk3_1(X84)) )
      & ( ~ aNaturalNumber0(X84)
        | ~ isPrime0(X84)
        | X85 = X84
        | X85 = sz10
        | ~ doDivides0(X85,X84)
        | ~ aNaturalNumber0(X85) )
      & ( ~ aNaturalNumber0(X84)
        | ~ isPrime0(X84)
        | X84 != sz10 )
      & ( ~ aNaturalNumber0(X84)
        | ~ isPrime0(X84)
        | X84 != sz00 ) ),
    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_9])])])])])]) ).

fof(c_0_13,negated_conjecture,
    ~ ( ~ sdtlseqdt0(xp,xk)
     => ( sdtlseqdt0(xk,xp)
        & xk != xp ) ),
    inference(fof_simplification,[status(thm)],[c_0_10]) ).

fof(c_0_14,plain,
    ! [X1,X2] :
      ( ( aNaturalNumber0(X2)
        & aNaturalNumber0(X1) )
     => ( ( sdtlseqdt0(X2,X1)
          & X2 != X1 )
        | sdtlseqdt0(X1,X2) ) ),
    inference(fof_simplification,[status(thm)],[mLETotal]) ).

fof(c_0_15,plain,
    ! [X67,X68,X69] :
      ( ( ~ aNaturalNumber0(X68)
        | ~ aNaturalNumber0(X67)
        | ~ doDivides0(X67,X68)
        | X67 = sz00
        | X69 = sdtsldt0(X68,X67)
        | X68 != sdtasdt0(X67,X69)
        | ~ aNaturalNumber0(X69) )
      & ( ~ aNaturalNumber0(X68)
        | ~ aNaturalNumber0(X67)
        | ~ doDivides0(X67,X68)
        | X67 = sz00
        | X69 != sdtsldt0(X68,X67)
        | X68 = sdtasdt0(X67,X69) )
      & ( ~ aNaturalNumber0(X68)
        | ~ aNaturalNumber0(X67)
        | ~ doDivides0(X67,X68)
        | X67 = sz00
        | X69 != sdtsldt0(X68,X67)
        | aNaturalNumber0(X69) ) ),
    inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_11])])])])]) ).

cnf(c_0_16,plain,
    ( ~ aNaturalNumber0(X1)
    | ~ isPrime0(X1)
    | X1 != sz00 ),
    inference(split_conjunct,[status(thm)],[c_0_12]) ).

cnf(c_0_17,hypothesis,
    isPrime0(xp),
    inference(split_conjunct,[status(thm)],[m__1860]) ).

cnf(c_0_18,hypothesis,
    aNaturalNumber0(xp),
    inference(split_conjunct,[status(thm)],[m__1837]) ).

fof(c_0_19,negated_conjecture,
    ( ( ~ sdtlseqdt0(xk,xp)
      | xk = xp )
    & ~ sdtlseqdt0(xp,xk) ),
    inference(fof_nnf,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_13])]) ).

fof(c_0_20,plain,
    ! [X48,X49] :
      ( ( ~ aNaturalNumber0(X49)
        | ~ aNaturalNumber0(X48)
        | sdtlseqdt0(X48,X49)
        | sdtlseqdt0(X49,X48) )
      & ( ~ aNaturalNumber0(X49)
        | ~ aNaturalNumber0(X48)
        | sdtlseqdt0(X48,X49)
        | X49 != X48 ) ),
    inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_14])])])]) ).

cnf(c_0_21,plain,
    ( ~ aNaturalNumber0(X2)
    | ~ aNaturalNumber0(X3)
    | ~ doDivides0(X3,X2)
    | X1 != sdtsldt0(X2,X3)
    | X3 = sz00
    | aNaturalNumber0(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_15]) ).

cnf(c_0_22,hypothesis,
    xk = sdtsldt0(sdtasdt0(xn,xm),xp),
    inference(split_conjunct,[status(thm)],[m__2306]) ).

cnf(c_0_23,hypothesis,
    doDivides0(xp,sdtasdt0(xn,xm)),
    inference(split_conjunct,[status(thm)],[m__1860]) ).

cnf(c_0_24,hypothesis,
    xp != sz00,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_16,c_0_17]),c_0_18])]) ).

fof(c_0_25,plain,
    ! [X7,X8] :
      ( aNaturalNumber0(sdtasdt0(X7,X8))
      | ~ aNaturalNumber0(X8)
      | ~ aNaturalNumber0(X7) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mSortsB_02])])]) ).

cnf(c_0_26,negated_conjecture,
    ( ~ sdtlseqdt0(xk,xp)
    | xk = xp ),
    inference(split_conjunct,[status(thm)],[c_0_19]) ).

cnf(c_0_27,plain,
    ( ~ aNaturalNumber0(X1)
    | ~ aNaturalNumber0(X2)
    | sdtlseqdt0(X2,X1)
    | sdtlseqdt0(X1,X2) ),
    inference(split_conjunct,[status(thm)],[c_0_20]) ).

cnf(c_0_28,negated_conjecture,
    ~ sdtlseqdt0(xp,xk),
    inference(split_conjunct,[status(thm)],[c_0_19]) ).

cnf(c_0_29,hypothesis,
    ( ~ aNaturalNumber0(sdtasdt0(xn,xm))
    | X1 != xk
    | aNaturalNumber0(X1) ),
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_21,c_0_22]),c_0_23]),c_0_18])]),c_0_24]) ).

cnf(c_0_30,plain,
    ( ~ aNaturalNumber0(X2)
    | ~ aNaturalNumber0(X1)
    | aNaturalNumber0(sdtasdt0(X1,X2)) ),
    inference(split_conjunct,[status(thm)],[c_0_25]) ).

cnf(c_0_31,hypothesis,
    aNaturalNumber0(xm),
    inference(split_conjunct,[status(thm)],[m__1837]) ).

cnf(c_0_32,hypothesis,
    aNaturalNumber0(xn),
    inference(split_conjunct,[status(thm)],[m__1837]) ).

cnf(c_0_33,negated_conjecture,
    ( ~ aNaturalNumber0(xk)
    | xk = xp ),
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_26,c_0_27]),c_0_18])]),c_0_28]) ).

cnf(c_0_34,hypothesis,
    ( X1 != xk
    | aNaturalNumber0(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_29,c_0_30]),c_0_31]),c_0_32])]) ).

cnf(c_0_35,negated_conjecture,
    xk = xp,
    inference(spm,[status(thm)],[c_0_33,c_0_34]) ).

fof(c_0_36,plain,
    ! [X42] :
      ( sdtlseqdt0(X42,X42)
      | ~ aNaturalNumber0(X42) ),
    inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mLERefl])])]) ).

cnf(c_0_37,negated_conjecture,
    ~ sdtlseqdt0(xp,xp),
    inference(rw,[status(thm)],[c_0_28,c_0_35]) ).

cnf(c_0_38,plain,
    ( ~ aNaturalNumber0(X1)
    | sdtlseqdt0(X1,X1) ),
    inference(split_conjunct,[status(thm)],[c_0_36]) ).

cnf(c_0_39,negated_conjecture,
    $false,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_37,c_0_38]),c_0_18])]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : NUM505+1 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.05  % Command  : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.12/0.37  % Computer : n018.cluster.edu
% 0.12/0.37  % Model    : x86_64 x86_64
% 0.12/0.37  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.37  % Memory   : 8046.5625MB
% 0.12/0.37  % OS       : Linux 6.8.0-71-generic
% 0.12/0.37  % CPULimit : 300
% 0.12/0.37  % WCLimit  : 300
% 0.12/0.37  % DateTime : Mon Sep 21 02:37:43 UTC 2026
% 0.12/0.37  % CPUTime  : 
% 0.12/0.37  Running run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.12/0.41  Running first-order theorem proving
% 0.12/0.41  Running: /export/starexec/sandbox/solver/bin/eprover --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --auto-schedule=8 --cpu-limit=300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.37/0.46  % Version: 3.5.1
% 0.37/0.46  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.37/0.46  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.37/0.46  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.37/0.46  % Starting new_bool_3 with 300s (1) cores
% 0.37/0.46  % Starting new_bool_1 with 300s (1) cores
% 0.37/0.46  % Starting sh5l with 300s (1) cores
% 0.37/0.46  % G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with pid 783936 completed with status 0
% 0.37/0.46  % Result found by G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S
% 0.37/0.46  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.37/0.46  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.37/0.46  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.37/0.46  % (lift_lambdas = 1, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 0.37/0.46  % No SInE strategy applied
% 0.37/0.46  % Search class: FGHSF-FFMM21-SFFFFFNN
% 0.37/0.46  % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.37/0.46  % Starting SubtermCWHack with 136s (1) cores
% 0.37/0.46  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 151s (1) cores
% 0.37/0.46  % Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S2m with 136s (1) cores
% 0.37/0.46  % Starting G-E--_208_C18_F1_AE_CS_SP_PS_S3S with 136s (1) cores
% 0.37/0.46  % Starting H----_047_C09_12_F1_AE_ND_CS_SP_S5PRR_RG_S2S with 136s (1) cores
% 0.37/0.46  % G-E--_208_C18_F1_AE_CS_SP_PS_S3S with pid 783944 completed with status 0
% 0.37/0.46  % Result found by G-E--_208_C18_F1_AE_CS_SP_PS_S3S
% 0.37/0.46  % Preprocessing class: FSLSSMSSSSSNFFN.
% 0.37/0.46  % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.37/0.46  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.37/0.46  % (lift_lambdas = 1, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 0.37/0.46  % No SInE strategy applied
% 0.37/0.46  % Search class: FGHSF-FFMM21-SFFFFFNN
% 0.37/0.46  % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.37/0.46  % Starting SubtermCWHack with 136s (1) cores
% 0.37/0.46  % Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 151s (1) cores
% 0.37/0.46  % Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S2m with 136s (1) cores
% 0.37/0.46  % Starting G-E--_208_C18_F1_AE_CS_SP_PS_S3S with 136s (1) cores
% 0.37/0.46  % Preprocessing time       : 0.003 s
% 0.37/0.46  % Presaturation interreduction done
% 0.37/0.46  
% 0.37/0.46  % Proof found!
% 0.37/0.46  % SZS status Theorem
% 0.37/0.46  % SZS output start CNFRefutation
% See solution above
% 0.37/0.46  % Parsed axioms                        : 50
% 0.37/0.46  % Removed by relevancy pruning/SinE    : 0
% 0.37/0.46  % Initial clauses                      : 94
% 0.37/0.46  % Removed in clause preprocessing      : 3
% 0.37/0.46  % Initial clauses in saturation        : 91
% 0.37/0.46  % Processed clauses                    : 211
% 0.37/0.46  % ...of these trivial                  : 0
% 0.37/0.46  % ...subsumed                          : 24
% 0.37/0.46  % ...remaining for further processing  : 187
% 0.37/0.46  % Other redundant clauses eliminated   : 9
% 0.37/0.46  % Clauses deleted for lack of memory   : 0
% 0.37/0.46  % Backward-subsumed                    : 1
% 0.37/0.46  % Backward-rewritten                   : 12
% 0.37/0.46  % Generated clauses                    : 201
% 0.37/0.46  % ...of the previous two non-redundant : 170
% 0.37/0.46  % ...aggressively subsumed             : 0
% 0.37/0.46  % Contextual simplify-reflections      : 4
% 0.37/0.46  % Paramodulations                      : 183
% 0.37/0.46  % Factorizations                       : 2
% 0.37/0.46  % NegExts                              : 0
% 0.37/0.46  % Equation resolutions                 : 16
% 0.37/0.46  % Disequality decompositions           : 0
% 0.37/0.46  % Total rewrite steps                  : 173
% 0.37/0.46  % ...of those cached                   : 160
% 0.37/0.46  % Propositional unsat checks           : 0
% 0.37/0.46  %    Propositional check models        : 0
% 0.37/0.46  %    Propositional check unsatisfiable : 0
% 0.37/0.46  %    Propositional clauses             : 0
% 0.37/0.46  %    Propositional clauses after purity: 0
% 0.37/0.46  %    Propositional unsat core size     : 0
% 0.37/0.46  %    Propositional preprocessing time  : 0.000
% 0.37/0.46  %    Propositional encoding time       : 0.000
% 0.37/0.46  %    Propositional solver time         : 0.000
% 0.37/0.46  %    Success case prop preproc time    : 0.000
% 0.37/0.46  %    Success case prop encoding time   : 0.000
% 0.37/0.46  %    Success case prop solver time     : 0.000
% 0.37/0.46  % Current number of processed clauses  : 89
% 0.37/0.46  %    Positive orientable unit clauses  : 17
% 0.37/0.46  %    Positive unorientable unit clauses: 0
% 0.37/0.46  %    Negative unit clauses             : 11
% 0.37/0.46  %    Non-unit-clauses                  : 61
% 0.37/0.46  % Current number of unprocessed clauses: 134
% 0.37/0.46  % ...number of literals in the above   : 584
% 0.37/0.46  % Current number of archived formulas  : 0
% 0.37/0.46  % Current number of archived clauses   : 97
% 0.37/0.46  % Clause-clause subsumption calls (NU) : 1739
% 0.37/0.46  % Rec. Clause-clause subsumption calls : 316
% 0.37/0.46  % Non-unit clause-clause subsumptions  : 23
% 0.37/0.46  % Unit Clause-clause subsumption calls : 198
% 0.37/0.46  % Rewrite failures with RHS unbound    : 0
% 0.37/0.46  % BW rewrite match attempts            : 1
% 0.37/0.46  % BW rewrite match successes           : 1
% 0.37/0.46  % Condensation attempts                : 0
% 0.37/0.46  % Condensation successes               : 0
% 0.37/0.46  % Termbank termtop insertions          : 10567
% 0.37/0.46  % Search garbage collected termcells   : 1366
% 0.37/0.46  
% 0.37/0.46  % -------------------------------------------------
% 0.37/0.46  % User time                : 0.019 s
% 0.37/0.46  % System time              : 0.007 s
% 0.37/0.46  % Total time               : 0.025 s
% 0.37/0.46  % Maximum resident set size: 3944 pages
% 0.37/0.46  
% 0.37/0.46  % -------------------------------------------------
% 0.37/0.46  % User time                : 0.072 s
% 0.37/0.46  % System time              : 0.022 s
% 0.37/0.46  % Total time               : 0.093 s
% 0.37/0.46  % Maximum resident set size: 4608 pages
% 0.37/0.46  % E exiting
%------------------------------------------------------------------------------