↑ Up

CSE_E---1.7.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : CSE_E---1.7
% Problem  : RNG095+1 : TPTP v9.2.1. Released v4.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : /export/starexec/sandbox/solver/bin/lemma_parallel_prover %s --lemma-prover /export/starexec/sandbox/solver/bin/cse --final-prover /export/starexec/sandbox/solver/bin/eprover --proof-time %d --global-time-limit %d

% Computer : n002.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 : Tue May  5 05:05:19 PM UTC 2026

% Result   : Theorem 20.63s 12.80s
% Output   : CNFRefutation 20.63s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   10
%            Number of leaves      :   12
% Syntax   : Number of formulae    :   56 (  16 unt;   0 def)
%            Number of atoms       :  233 (  43 equ)
%            Maximal formula atoms :   52 (   4 avg)
%            Number of connectives :  306 ( 129   ~; 131   |;  32   &)
%                                         (   3 <=>;  11  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   25 (   5 avg)
%            Maximal term depth    :    5 (   1 avg)
%            Number of predicates  :    6 (   4 usr;   1 prp; 0-2 aty)
%            Number of functors    :   15 (  15 usr;   4 con; 0-4 aty)
%            Number of variables   :  100 (   0 sgn  47   !;   6   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(m__,conjecture,
    ? [X1,X2] :
      ( aElementOf0(X1,xI)
      & aElementOf0(X2,xJ)
      & sdtpldt0(X1,X2) = sz10 ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__) ).

fof(mDefSSum,axiom,
    ! [X1,X2] :
      ( ( aSet0(X1)
        & aSet0(X2) )
     => ! [X3] :
          ( X3 = sdtpldt1(X1,X2)
        <=> ( aSet0(X3)
            & ! [X4] :
                ( aElementOf0(X4,X3)
              <=> ? [X5,X6] :
                    ( aElementOf0(X5,X1)
                    & aElementOf0(X6,X2)
                    & sdtpldt0(X5,X6) = X4 ) ) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mDefSSum) ).

fof(m__1205_03,hypothesis,
    ! [X1] :
      ( aElement0(X1)
     => aElementOf0(X1,sdtpldt1(xI,xJ)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__1205_03) ).

fof(mDefIdeal,axiom,
    ! [X1] :
      ( aIdeal0(X1)
    <=> ( aSet0(X1)
        & ! [X2] :
            ( aElementOf0(X2,X1)
           => ( ! [X3] :
                  ( aElementOf0(X3,X1)
                 => aElementOf0(sdtpldt0(X2,X3),X1) )
              & ! [X3] :
                  ( aElement0(X3)
                 => aElementOf0(sdtasdt0(X3,X2),X1) ) ) ) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mDefIdeal) ).

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

fof(mAddAsso,axiom,
    ! [X1,X2,X3] :
      ( ( aElement0(X1)
        & aElement0(X2)
        & aElement0(X3) )
     => sdtpldt0(sdtpldt0(X1,X2),X3) = sdtpldt0(X1,sdtpldt0(X2,X3)) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mAddAsso) ).

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

fof(mSortsC_01,axiom,
    aElement0(sz10),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mSortsC_01) ).

fof(m__1205,hypothesis,
    ( aIdeal0(xI)
    & aIdeal0(xJ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',m__1205) ).

fof(mEOfElem,axiom,
    ! [X1] :
      ( aSet0(X1)
     => ! [X2] :
          ( aElementOf0(X2,X1)
         => aElement0(X2) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mEOfElem) ).

fof(mAddZero,axiom,
    ! [X1] :
      ( aElement0(X1)
     => ( sdtpldt0(X1,sz00) = X1
        & X1 = sdtpldt0(sz00,X1) ) ),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mAddZero) ).

fof(mSortsC,axiom,
    aElement0(sz00),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p',mSortsC) ).

fof(c_0_12,negated_conjecture,
    ~ ? [X1,X2] :
        ( aElementOf0(X1,xI)
        & aElementOf0(X2,xJ)
        & sdtpldt0(X1,X2) = sz10 ),
    inference(assume_negation,[status(cth)],[m__]) ).

fof(c_0_13,plain,
    ! [X95,X96,X97,X98,X101,X102,X103,X104,X106,X107] :
      ( ( aSet0(X97)
        | X97 != sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( aElementOf0(esk3_4(X95,X96,X97,X98),X95)
        | ~ aElementOf0(X98,X97)
        | X97 != sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( aElementOf0(esk4_4(X95,X96,X97,X98),X96)
        | ~ aElementOf0(X98,X97)
        | X97 != sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( sdtpldt0(esk3_4(X95,X96,X97,X98),esk4_4(X95,X96,X97,X98)) = X98
        | ~ aElementOf0(X98,X97)
        | X97 != sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( ~ aElementOf0(X102,X95)
        | ~ aElementOf0(X103,X96)
        | sdtpldt0(X102,X103) != X101
        | aElementOf0(X101,X97)
        | X97 != sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( ~ aElementOf0(esk5_3(X95,X96,X104),X104)
        | ~ aElementOf0(X106,X95)
        | ~ aElementOf0(X107,X96)
        | sdtpldt0(X106,X107) != esk5_3(X95,X96,X104)
        | ~ aSet0(X104)
        | X104 = sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( aElementOf0(esk6_3(X95,X96,X104),X95)
        | aElementOf0(esk5_3(X95,X96,X104),X104)
        | ~ aSet0(X104)
        | X104 = sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( aElementOf0(esk7_3(X95,X96,X104),X96)
        | aElementOf0(esk5_3(X95,X96,X104),X104)
        | ~ aSet0(X104)
        | X104 = sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) )
      & ( sdtpldt0(esk6_3(X95,X96,X104),esk7_3(X95,X96,X104)) = esk5_3(X95,X96,X104)
        | aElementOf0(esk5_3(X95,X96,X104),X104)
        | ~ aSet0(X104)
        | X104 = sdtpldt1(X95,X96)
        | ~ aSet0(X95)
        | ~ aSet0(X96) ) ),
    inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(fof_nnf,[status(thm)],[mDefSSum])])])])])]) ).

fof(c_0_14,hypothesis,
    ! [X132] :
      ( ~ aElement0(X132)
      | aElementOf0(X132,sdtpldt1(xI,xJ)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[m__1205_03])]) ).

fof(c_0_15,plain,
    ! [X117,X118,X119,X120,X121] :
      ( ( aSet0(X117)
        | ~ aIdeal0(X117) )
      & ( ~ aElementOf0(X119,X117)
        | aElementOf0(sdtpldt0(X118,X119),X117)
        | ~ aElementOf0(X118,X117)
        | ~ aIdeal0(X117) )
      & ( ~ aElement0(X120)
        | aElementOf0(sdtasdt0(X120,X118),X117)
        | ~ aElementOf0(X118,X117)
        | ~ aIdeal0(X117) )
      & ( aElementOf0(esk9_1(X121),X121)
        | ~ aSet0(X121)
        | aIdeal0(X121) )
      & ( aElement0(esk11_1(X121))
        | aElementOf0(esk10_1(X121),X121)
        | ~ aSet0(X121)
        | aIdeal0(X121) )
      & ( ~ aElementOf0(sdtasdt0(esk11_1(X121),esk9_1(X121)),X121)
        | aElementOf0(esk10_1(X121),X121)
        | ~ aSet0(X121)
        | aIdeal0(X121) )
      & ( aElement0(esk11_1(X121))
        | ~ aElementOf0(sdtpldt0(esk9_1(X121),esk10_1(X121)),X121)
        | ~ aSet0(X121)
        | aIdeal0(X121) )
      & ( ~ aElementOf0(sdtasdt0(esk11_1(X121),esk9_1(X121)),X121)
        | ~ aElementOf0(sdtpldt0(esk9_1(X121),esk10_1(X121)),X121)
        | ~ aSet0(X121)
        | aIdeal0(X121) ) ),
    inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(fof_nnf,[status(thm)],[mDefIdeal])])])])])]) ).

fof(c_0_16,negated_conjecture,
    ! [X133,X134] :
      ( ~ aElementOf0(X133,xI)
      | ~ aElementOf0(X134,xJ)
      | sdtpldt0(X133,X134) != sz10 ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_12])]) ).

fof(c_0_17,plain,
    ! [X69,X70] :
      ( ~ aElement0(X69)
      | ~ aElement0(X70)
      | sdtpldt0(X69,X70) = sdtpldt0(X70,X69) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mAddComm])]) ).

fof(c_0_18,plain,
    ! [X71,X72,X73] :
      ( ~ aElement0(X71)
      | ~ aElement0(X72)
      | ~ aElement0(X73)
      | sdtpldt0(sdtpldt0(X71,X72),X73) = sdtpldt0(X71,sdtpldt0(X72,X73)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mAddAsso])]) ).

fof(c_0_19,plain,
    ! [X65,X66] :
      ( ~ aElement0(X65)
      | ~ aElement0(X66)
      | aElement0(sdtpldt0(X65,X66)) ),
    inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mSortsB])]) ).

cnf(c_0_20,plain,
    ( aElementOf0(esk4_4(X1,X2,X3,X4),X2)
    | ~ aElementOf0(X4,X3)
    | X3 != sdtpldt1(X1,X2)
    | ~ aSet0(X1)
    | ~ aSet0(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_13]) ).

cnf(c_0_21,hypothesis,
    ( aElementOf0(X1,sdtpldt1(xI,xJ))
    | ~ aElement0(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_14]) ).

cnf(c_0_22,plain,
    aElement0(sz10),
    inference(split_conjunct,[status(thm)],[mSortsC_01]) ).

cnf(c_0_23,plain,
    ( aSet0(X1)
    | ~ aIdeal0(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_15]) ).

cnf(c_0_24,hypothesis,
    aIdeal0(xJ),
    inference(split_conjunct,[status(thm)],[m__1205]) ).

cnf(c_0_25,hypothesis,
    aIdeal0(xI),
    inference(split_conjunct,[status(thm)],[m__1205]) ).

cnf(c_0_26,negated_conjecture,
    ( ~ aElementOf0(X1,xI)
    | ~ aElementOf0(X2,xJ)
    | sdtpldt0(X1,X2) != sz10 ),
    inference(split_conjunct,[status(thm)],[c_0_16]) ).

cnf(c_0_27,plain,
    ( sdtpldt0(X1,X2) = sdtpldt0(X2,X1)
    | ~ aElement0(X1)
    | ~ aElement0(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_17]) ).

cnf(c_0_28,plain,
    ( sdtpldt0(sdtpldt0(X1,X2),X3) = sdtpldt0(X1,sdtpldt0(X2,X3))
    | ~ aElement0(X1)
    | ~ aElement0(X2)
    | ~ aElement0(X3) ),
    inference(split_conjunct,[status(thm)],[c_0_18]) ).

cnf(c_0_29,plain,
    ( aElement0(sdtpldt0(X1,X2))
    | ~ aElement0(X1)
    | ~ aElement0(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_19]) ).

fof(c_0_30,plain,
    ! [X89,X90] :
      ( ~ aSet0(X89)
      | ~ aElementOf0(X90,X89)
      | aElement0(X90) ),
    inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mEOfElem])])]) ).

cnf(c_0_31,plain,
    ( aElementOf0(esk4_4(X1,X2,sdtpldt1(X1,X2),X3),X2)
    | ~ aElementOf0(X3,sdtpldt1(X1,X2))
    | ~ aSet0(X2)
    | ~ aSet0(X1) ),
    inference(er,[status(thm)],[c_0_20]) ).

cnf(c_0_32,hypothesis,
    aElementOf0(sz10,sdtpldt1(xI,xJ)),
    inference(spm,[status(thm)],[c_0_21,c_0_22]) ).

cnf(c_0_33,hypothesis,
    aSet0(xJ),
    inference(spm,[status(thm)],[c_0_23,c_0_24]) ).

cnf(c_0_34,hypothesis,
    aSet0(xI),
    inference(spm,[status(thm)],[c_0_23,c_0_25]) ).

cnf(c_0_35,negated_conjecture,
    ( sdtpldt0(X1,X2) != sz10
    | ~ aElementOf0(X1,xJ)
    | ~ aElementOf0(X2,xI)
    | ~ aElement0(X2)
    | ~ aElement0(X1) ),
    inference(spm,[status(thm)],[c_0_26,c_0_27]) ).

cnf(c_0_36,plain,
    ( sdtpldt0(X1,sdtpldt0(X2,X3)) = sdtpldt0(X3,sdtpldt0(X1,X2))
    | ~ aElement0(X3)
    | ~ aElement0(X2)
    | ~ aElement0(X1) ),
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_27,c_0_28]),c_0_29]) ).

cnf(c_0_37,plain,
    ( aElement0(X2)
    | ~ aSet0(X1)
    | ~ aElementOf0(X2,X1) ),
    inference(split_conjunct,[status(thm)],[c_0_30]) ).

cnf(c_0_38,hypothesis,
    aElementOf0(esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10),xJ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_31,c_0_32]),c_0_33]),c_0_34])]) ).

cnf(c_0_39,plain,
    ( aElementOf0(esk3_4(X1,X2,X3,X4),X1)
    | ~ aElementOf0(X4,X3)
    | X3 != sdtpldt1(X1,X2)
    | ~ aSet0(X1)
    | ~ aSet0(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_13]) ).

cnf(c_0_40,negated_conjecture,
    ( sdtpldt0(X1,sdtpldt0(X2,X3)) != sz10
    | ~ aElementOf0(sdtpldt0(X3,X1),xI)
    | ~ aElementOf0(X2,xJ)
    | ~ aElement0(X2)
    | ~ aElement0(X1)
    | ~ aElement0(X3) ),
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_35,c_0_36]),c_0_29]) ).

cnf(c_0_41,hypothesis,
    aElement0(esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10)),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_37,c_0_38]),c_0_33])]) ).

fof(c_0_42,plain,
    ! [X74] :
      ( ( sdtpldt0(X74,sz00) = X74
        | ~ aElement0(X74) )
      & ( X74 = sdtpldt0(sz00,X74)
        | ~ aElement0(X74) ) ),
    inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[mAddZero])])]) ).

cnf(c_0_43,plain,
    ( aElementOf0(esk3_4(X1,X2,sdtpldt1(X1,X2),X3),X1)
    | ~ aElementOf0(X3,sdtpldt1(X1,X2))
    | ~ aSet0(X2)
    | ~ aSet0(X1) ),
    inference(er,[status(thm)],[c_0_39]) ).

cnf(c_0_44,hypothesis,
    ( sdtpldt0(X1,sdtpldt0(esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10),X2)) != sz10
    | ~ aElementOf0(sdtpldt0(X2,X1),xI)
    | ~ aElement0(X1)
    | ~ aElement0(X2) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_40,c_0_38]),c_0_41])]) ).

cnf(c_0_45,plain,
    ( X1 = sdtpldt0(sz00,X1)
    | ~ aElement0(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_42]) ).

cnf(c_0_46,plain,
    aElement0(sz00),
    inference(split_conjunct,[status(thm)],[mSortsC]) ).

cnf(c_0_47,hypothesis,
    aElementOf0(esk3_4(xI,xJ,sdtpldt1(xI,xJ),sz10),xI),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_43,c_0_32]),c_0_33]),c_0_34])]) ).

cnf(c_0_48,hypothesis,
    ( sdtpldt0(X1,sdtpldt0(esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10),sz00)) != sz10
    | ~ aElementOf0(X1,xI)
    | ~ aElement0(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_44,c_0_45]),c_0_46])]) ).

cnf(c_0_49,hypothesis,
    aElement0(esk3_4(xI,xJ,sdtpldt1(xI,xJ),sz10)),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_37,c_0_47]),c_0_34])]) ).

cnf(c_0_50,plain,
    ( sdtpldt0(esk3_4(X1,X2,X3,X4),esk4_4(X1,X2,X3,X4)) = X4
    | ~ aElementOf0(X4,X3)
    | X3 != sdtpldt1(X1,X2)
    | ~ aSet0(X1)
    | ~ aSet0(X2) ),
    inference(split_conjunct,[status(thm)],[c_0_13]) ).

cnf(c_0_51,hypothesis,
    sdtpldt0(esk3_4(xI,xJ,sdtpldt1(xI,xJ),sz10),sdtpldt0(esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10),sz00)) != sz10,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_48,c_0_47]),c_0_49])]) ).

cnf(c_0_52,plain,
    ( sdtpldt0(X1,sz00) = X1
    | ~ aElement0(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_42]) ).

cnf(c_0_53,plain,
    ( sdtpldt0(esk3_4(X1,X2,sdtpldt1(X1,X2),X3),esk4_4(X1,X2,sdtpldt1(X1,X2),X3)) = X3
    | ~ aElementOf0(X3,sdtpldt1(X1,X2))
    | ~ aSet0(X2)
    | ~ aSet0(X1) ),
    inference(er,[status(thm)],[c_0_50]) ).

cnf(c_0_54,hypothesis,
    sdtpldt0(esk3_4(xI,xJ,sdtpldt1(xI,xJ),sz10),esk4_4(xI,xJ,sdtpldt1(xI,xJ),sz10)) != sz10,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_51,c_0_52]),c_0_41])]) ).

cnf(c_0_55,hypothesis,
    $false,
    inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_53,c_0_32]),c_0_33]),c_0_34])]),c_0_54]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12  % Problem    : RNG095+1 : TPTP v9.2.1. Released v4.0.0.
% 0.00/0.12  % Command    : /export/starexec/sandbox/solver/bin/lemma_parallel_prover %s --lemma-prover /export/starexec/sandbox/solver/bin/cse --final-prover /export/starexec/sandbox/solver/bin/eprover --proof-time %d --global-time-limit %d
% 0.14/0.33  % Computer : n002.cluster.edu
% 0.14/0.33  % Model    : x86_64 x86_64
% 0.14/0.33  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.33  % Memory   : 8042.1875MB
% 0.14/0.33  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.33  % CPULimit   : 300
% 0.14/0.33  % WCLimit    : 300
% 0.14/0.33  % DateTime   : Tue May  5 01:50:01 EDT 2026
% 0.14/0.33  % CPUTime    : 
% 0.14/0.34  % start to proof: theBenchmark
% 20.63/12.80  % Version  : CSE_E---1.7
% 20.63/12.80  % Problem  : theBenchmark.p
% 20.63/12.80  % SZS status Theorem for theBenchmark.p
% 20.63/12.80  % SZS output start CNFRefutation
% See solution above
% 20.63/12.88  % Total time : 9.383s
%------------------------------------------------------------------------------