TSTP Solution File: SWC399+1 by ET---2.0

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : ET---2.0
% Problem  : SWC399+1 : TPTP v8.1.0. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_ET %s %d

% 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  : 600s
% DateTime : Tue Jul 19 20:28:30 EDT 2022

% Result   : Theorem 0.22s 1.41s
% Output   : CNFRefutation 0.22s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    8
%            Number of leaves      :    4
% Syntax   : Number of formulae    :   28 (  12 unt;   0 def)
%            Number of atoms       :  152 (  35 equ)
%            Maximal formula atoms :   25 (   5 avg)
%            Number of connectives :  195 (  71   ~;  72   |;  35   &)
%                                         (   1 <=>;  16  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   27 (   6 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of predicates  :    6 (   4 usr;   1 prp; 0-2 aty)
%            Number of functors    :   10 (  10 usr;   8 con; 0-2 aty)
%            Number of variables   :   65 (   0 sgn  36   !;  12   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(co1,conjecture,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssList(X2)
         => ! [X3] :
              ( ssList(X3)
             => ! [X4] :
                  ( ~ ssList(X4)
                  | X2 != X4
                  | X1 != X3
                  | ! [X5] :
                      ( ssList(X5)
                     => ! [X6] :
                          ( ~ ssList(X6)
                          | app(app(X5,X3),X6) != X4
                          | ~ equalelemsP(X3)
                          | ? [X7] :
                              ( ssItem(X7)
                              & ? [X8] :
                                  ( ssList(X8)
                                  & app(X8,cons(X7,nil)) = X5
                                  & ? [X9] :
                                      ( ssList(X9)
                                      & app(cons(X7,nil),X9) = X3 ) ) )
                          | ? [X10] :
                              ( ssItem(X10)
                              & ? [X11] :
                                  ( ssList(X11)
                                  & app(cons(X10,nil),X11) = X6
                                  & ? [X12] :
                                      ( ssList(X12)
                                      & app(X12,cons(X10,nil)) = X3 ) ) ) ) )
                  | ! [X13] :
                      ( ~ ssItem(X13)
                      | ~ memberP(X1,X13)
                      | memberP(X2,X13) )
                  | ( nil != X4
                    & nil = X3 ) ) ) ) ),
    file('/export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in',co1) ).

fof(ax36,axiom,
    ! [X1] :
      ( ssItem(X1)
     => ! [X2] :
          ( ssList(X2)
         => ! [X3] :
              ( ssList(X3)
             => ( memberP(app(X2,X3),X1)
              <=> ( memberP(X2,X1)
                  | memberP(X3,X1) ) ) ) ) ),
    file('/export/starexec/sandbox2/benchmark/Axioms/SWC001+0.ax',ax36) ).

fof(ax82,axiom,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssList(X2)
         => ! [X3] :
              ( ssList(X3)
             => app(app(X1,X2),X3) = app(X1,app(X2,X3)) ) ) ),
    file('/export/starexec/sandbox2/benchmark/Axioms/SWC001+0.ax',ax82) ).

fof(ax26,axiom,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssList(X2)
         => ssList(app(X1,X2)) ) ),
    file('/export/starexec/sandbox2/benchmark/Axioms/SWC001+0.ax',ax26) ).

fof(c_0_4,negated_conjecture,
    ~ ! [X1] :
        ( ssList(X1)
       => ! [X2] :
            ( ssList(X2)
           => ! [X3] :
                ( ssList(X3)
               => ! [X4] :
                    ( ~ ssList(X4)
                    | X2 != X4
                    | X1 != X3
                    | ! [X5] :
                        ( ssList(X5)
                       => ! [X6] :
                            ( ~ ssList(X6)
                            | app(app(X5,X3),X6) != X4
                            | ~ equalelemsP(X3)
                            | ? [X7] :
                                ( ssItem(X7)
                                & ? [X8] :
                                    ( ssList(X8)
                                    & app(X8,cons(X7,nil)) = X5
                                    & ? [X9] :
                                        ( ssList(X9)
                                        & app(cons(X7,nil),X9) = X3 ) ) )
                            | ? [X10] :
                                ( ssItem(X10)
                                & ? [X11] :
                                    ( ssList(X11)
                                    & app(cons(X10,nil),X11) = X6
                                    & ? [X12] :
                                        ( ssList(X12)
                                        & app(X12,cons(X10,nil)) = X3 ) ) ) ) )
                    | ! [X13] :
                        ( ~ ssItem(X13)
                        | ~ memberP(X1,X13)
                        | memberP(X2,X13) )
                    | ( nil != X4
                      & nil = X3 ) ) ) ) ),
    inference(assume_negation,[status(cth)],[co1]) ).

fof(c_0_5,negated_conjecture,
    ! [X20,X21,X22,X23,X24,X25] :
      ( ssList(esk1_0)
      & ssList(esk2_0)
      & ssList(esk3_0)
      & ssList(esk4_0)
      & esk2_0 = esk4_0
      & esk1_0 = esk3_0
      & ssList(esk5_0)
      & ssList(esk6_0)
      & app(app(esk5_0,esk3_0),esk6_0) = esk4_0
      & equalelemsP(esk3_0)
      & ( ~ ssItem(X20)
        | ~ ssList(X21)
        | app(X21,cons(X20,nil)) != esk5_0
        | ~ ssList(X22)
        | app(cons(X20,nil),X22) != esk3_0 )
      & ( ~ ssItem(X23)
        | ~ ssList(X24)
        | app(cons(X23,nil),X24) != esk6_0
        | ~ ssList(X25)
        | app(X25,cons(X23,nil)) != esk3_0 )
      & ssItem(esk7_0)
      & memberP(esk1_0,esk7_0)
      & ~ memberP(esk2_0,esk7_0)
      & ( nil = esk4_0
        | nil != esk3_0 ) ),
    inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(fof_simplification,[status(thm)],[c_0_4])])])])])])]) ).

fof(c_0_6,plain,
    ! [X4,X5,X6] :
      ( ( ~ memberP(app(X5,X6),X4)
        | memberP(X5,X4)
        | memberP(X6,X4)
        | ~ ssList(X6)
        | ~ ssList(X5)
        | ~ ssItem(X4) )
      & ( ~ memberP(X5,X4)
        | memberP(app(X5,X6),X4)
        | ~ ssList(X6)
        | ~ ssList(X5)
        | ~ ssItem(X4) )
      & ( ~ memberP(X6,X4)
        | memberP(app(X5,X6),X4)
        | ~ ssList(X6)
        | ~ ssList(X5)
        | ~ ssItem(X4) ) ),
    inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[ax36])])])])])]) ).

fof(c_0_7,plain,
    ! [X4,X5,X6] :
      ( ~ ssList(X4)
      | ~ ssList(X5)
      | ~ ssList(X6)
      | app(app(X4,X5),X6) = app(X4,app(X5,X6)) ),
    inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[ax82])])])])]) ).

fof(c_0_8,plain,
    ! [X3,X4] :
      ( ~ ssList(X3)
      | ~ ssList(X4)
      | ssList(app(X3,X4)) ),
    inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[ax26])])])])]) ).

cnf(c_0_9,negated_conjecture,
    app(app(esk5_0,esk3_0),esk6_0) = esk4_0,
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_10,negated_conjecture,
    esk1_0 = esk3_0,
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_11,negated_conjecture,
    esk2_0 = esk4_0,
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_12,plain,
    ( memberP(app(X2,X3),X1)
    | ~ ssItem(X1)
    | ~ ssList(X2)
    | ~ ssList(X3)
    | ~ memberP(X2,X1) ),
    inference(split_conjunct,[status(thm)],[c_0_6]) ).

cnf(c_0_13,plain,
    ( app(app(X1,X2),X3) = app(X1,app(X2,X3))
    | ~ ssList(X3)
    | ~ ssList(X2)
    | ~ ssList(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_7]) ).

cnf(c_0_14,plain,
    ( ssList(app(X1,X2))
    | ~ ssList(X2)
    | ~ ssList(X1) ),
    inference(split_conjunct,[status(thm)],[c_0_8]) ).

cnf(c_0_15,negated_conjecture,
    app(app(esk5_0,esk1_0),esk6_0) = esk2_0,
    inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_9,c_0_10]),c_0_11]) ).

cnf(c_0_16,negated_conjecture,
    ssList(esk6_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_17,negated_conjecture,
    ssList(esk1_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_18,negated_conjecture,
    ssList(esk5_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_19,plain,
    ( memberP(app(X1,app(X2,X3)),X4)
    | ~ memberP(app(X1,X2),X4)
    | ~ ssList(X3)
    | ~ ssList(X2)
    | ~ ssList(X1)
    | ~ ssItem(X4) ),
    inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_12,c_0_13]),c_0_14]) ).

cnf(c_0_20,negated_conjecture,
    app(esk5_0,app(esk1_0,esk6_0)) = esk2_0,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_15,c_0_13]),c_0_16]),c_0_17]),c_0_18])]) ).

cnf(c_0_21,negated_conjecture,
    ( memberP(esk2_0,X1)
    | ~ memberP(app(esk5_0,esk1_0),X1)
    | ~ ssItem(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_19,c_0_20]),c_0_16]),c_0_17]),c_0_18])]) ).

cnf(c_0_22,plain,
    ( memberP(app(X2,X3),X1)
    | ~ ssItem(X1)
    | ~ ssList(X2)
    | ~ ssList(X3)
    | ~ memberP(X3,X1) ),
    inference(split_conjunct,[status(thm)],[c_0_6]) ).

cnf(c_0_23,negated_conjecture,
    ~ memberP(esk2_0,esk7_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_24,negated_conjecture,
    ( memberP(esk2_0,X1)
    | ~ memberP(esk1_0,X1)
    | ~ ssItem(X1) ),
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_21,c_0_22]),c_0_17]),c_0_18])]) ).

cnf(c_0_25,negated_conjecture,
    memberP(esk1_0,esk7_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_26,negated_conjecture,
    ssItem(esk7_0),
    inference(split_conjunct,[status(thm)],[c_0_5]) ).

cnf(c_0_27,negated_conjecture,
    $false,
    inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_23,c_0_24]),c_0_25]),c_0_26])]),
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.10/0.12  % Problem  : SWC399+1 : TPTP v8.1.0. Released v2.4.0.
% 0.10/0.12  % Command  : run_ET %s %d
% 0.12/0.33  % Computer : n024.cluster.edu
% 0.12/0.33  % Model    : x86_64 x86_64
% 0.12/0.33  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.33  % Memory   : 8042.1875MB
% 0.12/0.33  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.12/0.33  % CPULimit : 300
% 0.12/0.33  % WCLimit  : 600
% 0.12/0.33  % DateTime : Sun Jun 12 09:38:49 EDT 2022
% 0.12/0.33  % CPUTime  : 
% 0.22/1.41  # Running protocol protocol_eprover_4a02c828a8cc55752123edbcc1ad40e453c11447 for 23 seconds:
% 0.22/1.41  # SinE strategy is GSinE(CountFormulas,hypos,1.4,,04,100,1.0)
% 0.22/1.41  # Preprocessing time       : 0.021 s
% 0.22/1.41  
% 0.22/1.41  # Proof found!
% 0.22/1.41  # SZS status Theorem
% 0.22/1.41  # SZS output start CNFRefutation
% See solution above
% 0.22/1.41  # Proof object total steps             : 28
% 0.22/1.41  # Proof object clause steps            : 19
% 0.22/1.41  # Proof object formula steps           : 9
% 0.22/1.41  # Proof object conjectures             : 17
% 0.22/1.41  # Proof object clause conjectures      : 14
% 0.22/1.41  # Proof object formula conjectures     : 3
% 0.22/1.41  # Proof object initial clauses used    : 13
% 0.22/1.41  # Proof object initial formulas used   : 4
% 0.22/1.41  # Proof object generating inferences   : 5
% 0.22/1.41  # Proof object simplifying inferences  : 17
% 0.22/1.41  # Training examples: 0 positive, 0 negative
% 0.22/1.41  # Parsed axioms                        : 96
% 0.22/1.41  # Removed by relevancy pruning/SinE    : 72
% 0.22/1.41  # Initial clauses                      : 59
% 0.22/1.41  # Removed in clause preprocessing      : 0
% 0.22/1.41  # Initial clauses in saturation        : 59
% 0.22/1.41  # Processed clauses                    : 5684
% 0.22/1.41  # ...of these trivial                  : 67
% 0.22/1.41  # ...subsumed                          : 4948
% 0.22/1.41  # ...remaining for further processing  : 669
% 0.22/1.41  # Other redundant clauses eliminated   : 33
% 0.22/1.41  # Clauses deleted for lack of memory   : 0
% 0.22/1.41  # Backward-subsumed                    : 82
% 0.22/1.41  # Backward-rewritten                   : 7
% 0.22/1.41  # Generated clauses                    : 17067
% 0.22/1.41  # ...of the previous two non-trivial   : 15758
% 0.22/1.41  # Contextual simplify-reflections      : 3001
% 0.22/1.41  # Paramodulations                      : 16988
% 0.22/1.41  # Factorizations                       : 0
% 0.22/1.41  # Equation resolutions                 : 79
% 0.22/1.41  # Current number of processed clauses  : 579
% 0.22/1.41  #    Positive orientable unit clauses  : 20
% 0.22/1.41  #    Positive unorientable unit clauses: 0
% 0.22/1.41  #    Negative unit clauses             : 15
% 0.22/1.41  #    Non-unit-clauses                  : 544
% 0.22/1.41  # Current number of unprocessed clauses: 9374
% 0.22/1.41  # ...number of literals in the above   : 58018
% 0.22/1.41  # Current number of archived formulas  : 0
% 0.22/1.41  # Current number of archived clauses   : 89
% 0.22/1.41  # Clause-clause subsumption calls (NU) : 589614
% 0.22/1.41  # Rec. Clause-clause subsumption calls : 298628
% 0.22/1.41  # Non-unit clause-clause subsumptions  : 4417
% 0.22/1.41  # Unit Clause-clause subsumption calls : 1937
% 0.22/1.41  # Rewrite failures with RHS unbound    : 0
% 0.22/1.41  # BW rewrite match attempts            : 5
% 0.22/1.41  # BW rewrite match successes           : 5
% 0.22/1.41  # Condensation attempts                : 0
% 0.22/1.41  # Condensation successes               : 0
% 0.22/1.41  # Termbank termtop insertions          : 282243
% 0.22/1.41  
% 0.22/1.41  # -------------------------------------------------
% 0.22/1.41  # User time                : 0.664 s
% 0.22/1.41  # System time              : 0.010 s
% 0.22/1.41  # Total time               : 0.674 s
% 0.22/1.41  # Maximum resident set size: 12436 pages
% 0.22/23.41  eprover: CPU time limit exceeded, terminating
% 0.22/23.41  eprover: CPU time limit exceeded, terminating
% 0.22/23.41  eprover: CPU time limit exceeded, terminating
% 0.22/23.42  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.42  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.43  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.43  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.44  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.44  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.45  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.45  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.46  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.46  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p.mepo_128.in
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.47  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.47  eprover: No such file or directory
% 0.22/23.48  eprover: Cannot stat file /export/starexec/sandbox2/solver/bin/../tmp/theBenchmark.p
% 0.22/23.48  eprover: No such file or directory
%------------------------------------------------------------------------------