↑ Up

SInE---0.4.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : SInE---0.4
% Problem  : SWC323+1 : TPTP v5.0.0. Released v2.4.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : Source/sine.py -e eprover -t %d %s

% Computer : art01.cs.miami.edu
% Model    : i686 i686
% CPU      : Intel(R) Pentium(R) 4 CPU 2.80GHz @ 2793MHz
% Memory   : 2018MB
% OS       : Linux 2.6.26.8-57.fc8
% CPULimit : 300s
% DateTime : Sun Dec 26 11:28:19 EST 2010

% Result   : Theorem 0.28s
% Output   : CNFRefutation 0.28s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   24
%            Number of leaves      :    6
% Syntax   : Number of formulae    :   84 (  16 unt;   0 def)
%            Number of atoms       :  330 ( 144 equ)
%            Maximal formula atoms :   20 (   3 avg)
%            Number of connectives :  390 ( 144   ~; 158   |;  69   &)
%                                         (   1 <=>;  18  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   21 (   5 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of predicates  :    5 (   3 usr;   1 prp; 0-2 aty)
%            Number of functors    :    9 (   9 usr;   7 con; 0-2 aty)
%            Number of variables   :   77 (   0 sgn  46   !;  16   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(5,axiom,
    ! [X1] :
      ( ssList(X1)
     => app(X1,nil) = X1 ),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',ax84) ).

fof(10,axiom,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssList(X2)
         => ( neq(X1,X2)
          <=> X1 != X2 ) ) ),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',ax15) ).

fof(11,axiom,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssItem(X2)
         => ssList(cons(X2,X1)) ) ),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',ax16) ).

fof(12,axiom,
    ssList(nil),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',ax17) ).

fof(14,axiom,
    ! [X1] :
      ( ssList(X1)
     => app(nil,X1) = X1 ),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',ax28) ).

fof(19,conjecture,
    ! [X1] :
      ( ssList(X1)
     => ! [X2] :
          ( ssList(X2)
         => ! [X3] :
              ( ssList(X3)
             => ! [X4] :
                  ( ssList(X4)
                 => ( X2 != X4
                    | X1 != X3
                    | ? [X5] :
                        ( ssList(X5)
                        & ? [X6] :
                            ( ssList(X6)
                            & app(X5,X6) = X2
                            & app(X6,X5) = X1 ) )
                    | ( nil != X3
                      & nil = X4 )
                    | ( ! [X7] :
                          ( ssItem(X7)
                         => ! [X8] :
                              ( ssList(X8)
                             => ( app(cons(X7,nil),X8) != X4
                                | app(X8,cons(X7,nil)) != X3 ) ) )
                      & neq(X4,nil) ) ) ) ) ) ),
    file('/tmp/tmpAvY1RQ/sel_SWC323+1.p_1',co1) ).

fof(20,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(X5,X6) = X2
                              & app(X6,X5) = X1 ) )
                      | ( nil != X3
                        & nil = X4 )
                      | ( ! [X7] :
                            ( ssItem(X7)
                           => ! [X8] :
                                ( ssList(X8)
                               => ( app(cons(X7,nil),X8) != X4
                                  | app(X8,cons(X7,nil)) != X3 ) ) )
                        & neq(X4,nil) ) ) ) ) ) ),
    inference(assume_negation,[status(cth)],[19]) ).

fof(38,plain,
    ! [X1] :
      ( ~ ssList(X1)
      | app(X1,nil) = X1 ),
    inference(fof_nnf,[status(thm)],[5]) ).

fof(39,plain,
    ! [X2] :
      ( ~ ssList(X2)
      | app(X2,nil) = X2 ),
    inference(variable_rename,[status(thm)],[38]) ).

cnf(40,plain,
    ( app(X1,nil) = X1
    | ~ ssList(X1) ),
    inference(split_conjunct,[status(thm)],[39]) ).

fof(63,plain,
    ! [X1] :
      ( ~ ssList(X1)
      | ! [X2] :
          ( ~ ssList(X2)
          | ( ( ~ neq(X1,X2)
              | X1 != X2 )
            & ( X1 = X2
              | neq(X1,X2) ) ) ) ),
    inference(fof_nnf,[status(thm)],[10]) ).

fof(64,plain,
    ! [X3] :
      ( ~ ssList(X3)
      | ! [X4] :
          ( ~ ssList(X4)
          | ( ( ~ neq(X3,X4)
              | X3 != X4 )
            & ( X3 = X4
              | neq(X3,X4) ) ) ) ),
    inference(variable_rename,[status(thm)],[63]) ).

fof(65,plain,
    ! [X3,X4] :
      ( ~ ssList(X4)
      | ( ( ~ neq(X3,X4)
          | X3 != X4 )
        & ( X3 = X4
          | neq(X3,X4) ) )
      | ~ ssList(X3) ),
    inference(shift_quantors,[status(thm)],[64]) ).

fof(66,plain,
    ! [X3,X4] :
      ( ( ~ neq(X3,X4)
        | X3 != X4
        | ~ ssList(X4)
        | ~ ssList(X3) )
      & ( X3 = X4
        | neq(X3,X4)
        | ~ ssList(X4)
        | ~ ssList(X3) ) ),
    inference(distribute,[status(thm)],[65]) ).

cnf(67,plain,
    ( neq(X1,X2)
    | X1 = X2
    | ~ ssList(X1)
    | ~ ssList(X2) ),
    inference(split_conjunct,[status(thm)],[66]) ).

fof(69,plain,
    ! [X1] :
      ( ~ ssList(X1)
      | ! [X2] :
          ( ~ ssItem(X2)
          | ssList(cons(X2,X1)) ) ),
    inference(fof_nnf,[status(thm)],[11]) ).

fof(70,plain,
    ! [X3] :
      ( ~ ssList(X3)
      | ! [X4] :
          ( ~ ssItem(X4)
          | ssList(cons(X4,X3)) ) ),
    inference(variable_rename,[status(thm)],[69]) ).

fof(71,plain,
    ! [X3,X4] :
      ( ~ ssItem(X4)
      | ssList(cons(X4,X3))
      | ~ ssList(X3) ),
    inference(shift_quantors,[status(thm)],[70]) ).

cnf(72,plain,
    ( ssList(cons(X2,X1))
    | ~ ssList(X1)
    | ~ ssItem(X2) ),
    inference(split_conjunct,[status(thm)],[71]) ).

cnf(73,plain,
    ssList(nil),
    inference(split_conjunct,[status(thm)],[12]) ).

fof(80,plain,
    ! [X1] :
      ( ~ ssList(X1)
      | app(nil,X1) = X1 ),
    inference(fof_nnf,[status(thm)],[14]) ).

fof(81,plain,
    ! [X2] :
      ( ~ ssList(X2)
      | app(nil,X2) = X2 ),
    inference(variable_rename,[status(thm)],[80]) ).

cnf(82,plain,
    ( app(nil,X1) = X1
    | ~ ssList(X1) ),
    inference(split_conjunct,[status(thm)],[81]) ).

fof(101,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(X5,X6) != X2
                          | app(X6,X5) != X1 ) )
                  & ( nil = X3
                    | nil != X4 )
                  & ( ? [X7] :
                        ( ssItem(X7)
                        & ? [X8] :
                            ( ssList(X8)
                            & app(cons(X7,nil),X8) = X4
                            & app(X8,cons(X7,nil)) = X3 ) )
                    | ~ neq(X4,nil) ) ) ) ) ),
    inference(fof_nnf,[status(thm)],[20]) ).

fof(102,negated_conjecture,
    ? [X9] :
      ( ssList(X9)
      & ? [X10] :
          ( ssList(X10)
          & ? [X11] :
              ( ssList(X11)
              & ? [X12] :
                  ( ssList(X12)
                  & X10 = X12
                  & X9 = X11
                  & ! [X13] :
                      ( ~ ssList(X13)
                      | ! [X14] :
                          ( ~ ssList(X14)
                          | app(X13,X14) != X10
                          | app(X14,X13) != X9 ) )
                  & ( nil = X11
                    | nil != X12 )
                  & ( ? [X15] :
                        ( ssItem(X15)
                        & ? [X16] :
                            ( ssList(X16)
                            & app(cons(X15,nil),X16) = X12
                            & app(X16,cons(X15,nil)) = X11 ) )
                    | ~ neq(X12,nil) ) ) ) ) ),
    inference(variable_rename,[status(thm)],[101]) ).

fof(103,negated_conjecture,
    ( ssList(esk5_0)
    & ssList(esk6_0)
    & ssList(esk7_0)
    & ssList(esk8_0)
    & esk6_0 = esk8_0
    & esk5_0 = esk7_0
    & ! [X13] :
        ( ~ ssList(X13)
        | ! [X14] :
            ( ~ ssList(X14)
            | app(X13,X14) != esk6_0
            | app(X14,X13) != esk5_0 ) )
    & ( nil = esk7_0
      | nil != esk8_0 )
    & ( ( ssItem(esk9_0)
        & ssList(esk10_0)
        & app(cons(esk9_0,nil),esk10_0) = esk8_0
        & app(esk10_0,cons(esk9_0,nil)) = esk7_0 )
      | ~ neq(esk8_0,nil) ) ),
    inference(skolemize,[status(esa)],[102]) ).

fof(104,negated_conjecture,
    ! [X13,X14] :
      ( ( ~ ssList(X14)
        | app(X13,X14) != esk6_0
        | app(X14,X13) != esk5_0
        | ~ ssList(X13) )
      & esk6_0 = esk8_0
      & esk5_0 = esk7_0
      & ( nil = esk7_0
        | nil != esk8_0 )
      & ( ( ssItem(esk9_0)
          & ssList(esk10_0)
          & app(cons(esk9_0,nil),esk10_0) = esk8_0
          & app(esk10_0,cons(esk9_0,nil)) = esk7_0 )
        | ~ neq(esk8_0,nil) )
      & ssList(esk8_0)
      & ssList(esk7_0)
      & ssList(esk6_0)
      & ssList(esk5_0) ),
    inference(shift_quantors,[status(thm)],[103]) ).

fof(105,negated_conjecture,
    ! [X13,X14] :
      ( ( ~ ssList(X14)
        | app(X13,X14) != esk6_0
        | app(X14,X13) != esk5_0
        | ~ ssList(X13) )
      & esk6_0 = esk8_0
      & esk5_0 = esk7_0
      & ( nil = esk7_0
        | nil != esk8_0 )
      & ( ssItem(esk9_0)
        | ~ neq(esk8_0,nil) )
      & ( ssList(esk10_0)
        | ~ neq(esk8_0,nil) )
      & ( app(cons(esk9_0,nil),esk10_0) = esk8_0
        | ~ neq(esk8_0,nil) )
      & ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
        | ~ neq(esk8_0,nil) )
      & ssList(esk8_0)
      & ssList(esk7_0)
      & ssList(esk6_0)
      & ssList(esk5_0) ),
    inference(distribute,[status(thm)],[104]) ).

cnf(106,negated_conjecture,
    ssList(esk5_0),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(107,negated_conjecture,
    ssList(esk6_0),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(110,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | ~ neq(esk8_0,nil) ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(111,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | ~ neq(esk8_0,nil) ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(112,negated_conjecture,
    ( ssList(esk10_0)
    | ~ neq(esk8_0,nil) ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(113,negated_conjecture,
    ( ssItem(esk9_0)
    | ~ neq(esk8_0,nil) ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(114,negated_conjecture,
    ( nil = esk7_0
    | nil != esk8_0 ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(115,negated_conjecture,
    esk5_0 = esk7_0,
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(116,negated_conjecture,
    esk6_0 = esk8_0,
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(117,negated_conjecture,
    ( ~ ssList(X1)
    | app(X2,X1) != esk5_0
    | app(X1,X2) != esk6_0
    | ~ ssList(X2) ),
    inference(split_conjunct,[status(thm)],[105]) ).

cnf(118,negated_conjecture,
    ssList(esk7_0),
    inference(rw,[status(thm)],[106,115,theory(equality)]) ).

cnf(119,negated_conjecture,
    ssList(esk8_0),
    inference(rw,[status(thm)],[107,116,theory(equality)]) ).

cnf(130,negated_conjecture,
    ( ssItem(esk9_0)
    | esk8_0 = nil
    | ~ ssList(nil)
    | ~ ssList(esk8_0) ),
    inference(spm,[status(thm)],[113,67,theory(equality)]) ).

cnf(131,negated_conjecture,
    ( ssList(esk10_0)
    | esk8_0 = nil
    | ~ ssList(nil)
    | ~ ssList(esk8_0) ),
    inference(spm,[status(thm)],[112,67,theory(equality)]) ).

cnf(132,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | esk8_0 = nil
    | ~ ssList(nil)
    | ~ ssList(esk8_0) ),
    inference(spm,[status(thm)],[110,67,theory(equality)]) ).

cnf(133,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | esk8_0 = nil
    | ~ ssList(nil)
    | ~ ssList(esk8_0) ),
    inference(spm,[status(thm)],[111,67,theory(equality)]) ).

cnf(134,negated_conjecture,
    ( ssItem(esk9_0)
    | esk8_0 = nil
    | $false
    | ~ ssList(esk8_0) ),
    inference(rw,[status(thm)],[130,73,theory(equality)]) ).

cnf(135,negated_conjecture,
    ( ssItem(esk9_0)
    | esk8_0 = nil
    | ~ ssList(esk8_0) ),
    inference(cn,[status(thm)],[134,theory(equality)]) ).

cnf(136,negated_conjecture,
    ( ssList(esk10_0)
    | esk8_0 = nil
    | $false
    | ~ ssList(esk8_0) ),
    inference(rw,[status(thm)],[131,73,theory(equality)]) ).

cnf(137,negated_conjecture,
    ( ssList(esk10_0)
    | esk8_0 = nil
    | ~ ssList(esk8_0) ),
    inference(cn,[status(thm)],[136,theory(equality)]) ).

cnf(138,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | esk8_0 = nil
    | $false
    | ~ ssList(esk8_0) ),
    inference(rw,[status(thm)],[132,73,theory(equality)]) ).

cnf(139,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | esk8_0 = nil
    | ~ ssList(esk8_0) ),
    inference(cn,[status(thm)],[138,theory(equality)]) ).

cnf(140,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | esk8_0 = nil
    | $false
    | ~ ssList(esk8_0) ),
    inference(rw,[status(thm)],[133,73,theory(equality)]) ).

cnf(141,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | esk8_0 = nil
    | ~ ssList(esk8_0) ),
    inference(cn,[status(thm)],[140,theory(equality)]) ).

cnf(153,negated_conjecture,
    ( app(X2,X1) != esk7_0
    | app(X1,X2) != esk6_0
    | ~ ssList(X2)
    | ~ ssList(X1) ),
    inference(rw,[status(thm)],[117,115,theory(equality)]) ).

cnf(154,negated_conjecture,
    ( app(X2,X1) != esk7_0
    | app(X1,X2) != esk8_0
    | ~ ssList(X2)
    | ~ ssList(X1) ),
    inference(rw,[status(thm)],[153,116,theory(equality)]) ).

cnf(155,negated_conjecture,
    ( X1 != esk7_0
    | app(nil,X1) != esk8_0
    | ~ ssList(X1)
    | ~ ssList(nil) ),
    inference(spm,[status(thm)],[154,40,theory(equality)]) ).

cnf(157,negated_conjecture,
    ( X1 != esk7_0
    | app(nil,X1) != esk8_0
    | ~ ssList(X1)
    | $false ),
    inference(rw,[status(thm)],[155,73,theory(equality)]) ).

cnf(158,negated_conjecture,
    ( X1 != esk7_0
    | app(nil,X1) != esk8_0
    | ~ ssList(X1) ),
    inference(cn,[status(thm)],[157,theory(equality)]) ).

cnf(243,negated_conjecture,
    ( ssItem(esk9_0)
    | esk8_0 = nil
    | $false ),
    inference(rw,[status(thm)],[135,119,theory(equality)]) ).

cnf(244,negated_conjecture,
    ( ssItem(esk9_0)
    | esk8_0 = nil ),
    inference(cn,[status(thm)],[243,theory(equality)]) ).

cnf(249,negated_conjecture,
    ( app(nil,esk7_0) != esk8_0
    | ~ ssList(esk7_0) ),
    inference(er,[status(thm)],[158,theory(equality)]) ).

cnf(250,negated_conjecture,
    ( app(nil,esk7_0) != esk8_0
    | $false ),
    inference(rw,[status(thm)],[249,118,theory(equality)]) ).

cnf(251,negated_conjecture,
    app(nil,esk7_0) != esk8_0,
    inference(cn,[status(thm)],[250,theory(equality)]) ).

cnf(252,negated_conjecture,
    ( esk7_0 != esk8_0
    | ~ ssList(esk7_0) ),
    inference(spm,[status(thm)],[251,82,theory(equality)]) ).

cnf(253,negated_conjecture,
    ( esk7_0 != esk8_0
    | $false ),
    inference(rw,[status(thm)],[252,118,theory(equality)]) ).

cnf(254,negated_conjecture,
    esk7_0 != esk8_0,
    inference(cn,[status(thm)],[253,theory(equality)]) ).

cnf(258,negated_conjecture,
    ( ssList(esk10_0)
    | esk8_0 = nil
    | $false ),
    inference(rw,[status(thm)],[137,119,theory(equality)]) ).

cnf(259,negated_conjecture,
    ( ssList(esk10_0)
    | esk8_0 = nil ),
    inference(cn,[status(thm)],[258,theory(equality)]) ).

cnf(262,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | esk8_0 = nil
    | $false ),
    inference(rw,[status(thm)],[139,119,theory(equality)]) ).

cnf(263,negated_conjecture,
    ( app(esk10_0,cons(esk9_0,nil)) = esk7_0
    | esk8_0 = nil ),
    inference(cn,[status(thm)],[262,theory(equality)]) ).

cnf(267,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0
    | ~ ssList(esk10_0)
    | ~ ssList(cons(esk9_0,nil)) ),
    inference(spm,[status(thm)],[154,263,theory(equality)]) ).

cnf(280,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0
    | ~ ssList(cons(esk9_0,nil)) ),
    inference(csr,[status(thm)],[267,259]) ).

cnf(281,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0
    | ~ ssList(nil)
    | ~ ssItem(esk9_0) ),
    inference(spm,[status(thm)],[280,72,theory(equality)]) ).

cnf(282,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0
    | $false
    | ~ ssItem(esk9_0) ),
    inference(rw,[status(thm)],[281,73,theory(equality)]) ).

cnf(283,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0
    | ~ ssItem(esk9_0) ),
    inference(cn,[status(thm)],[282,theory(equality)]) ).

cnf(284,negated_conjecture,
    ( esk8_0 = nil
    | app(cons(esk9_0,nil),esk10_0) != esk8_0 ),
    inference(csr,[status(thm)],[283,244]) ).

cnf(289,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | esk8_0 = nil
    | $false ),
    inference(rw,[status(thm)],[141,119,theory(equality)]) ).

cnf(290,negated_conjecture,
    ( app(cons(esk9_0,nil),esk10_0) = esk8_0
    | esk8_0 = nil ),
    inference(cn,[status(thm)],[289,theory(equality)]) ).

cnf(291,negated_conjecture,
    esk8_0 = nil,
    inference(csr,[status(thm)],[290,284]) ).

cnf(297,negated_conjecture,
    esk7_0 != nil,
    inference(rw,[status(thm)],[254,291,theory(equality)]) ).

cnf(313,negated_conjecture,
    ( esk7_0 = nil
    | $false ),
    inference(rw,[status(thm)],[114,291,theory(equality)]) ).

cnf(314,negated_conjecture,
    esk7_0 = nil,
    inference(cn,[status(thm)],[313,theory(equality)]) ).

cnf(321,negated_conjecture,
    $false,
    inference(rw,[status(thm)],[297,314,theory(equality)]) ).

cnf(322,negated_conjecture,
    $false,
    inference(cn,[status(thm)],[321,theory(equality)]) ).

cnf(323,negated_conjecture,
    $false,
    322,
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% % SZS status Started for /home/graph/tptp/TPTP/Problems/SWC/SWC323+1.p
% --creating new selector for [SWC001+0.ax]
% -running prover on /tmp/tmpAvY1RQ/sel_SWC323+1.p_1 with time limit 29
% -prover status Theorem
% Problem SWC323+1.p solved in phase 0.
% % SZS status Theorem for /home/graph/tptp/TPTP/Problems/SWC/SWC323+1.p
% % SZS status Ended for /home/graph/tptp/TPTP/Problems/SWC/SWC323+1.p
% Solved 1 out of 1.
% # Problem is unsatisfiable (or provable), constructing proof object
% # SZS status Theorem
% # SZS output start CNFRefutation.
% See solution above
% # SZS output end CNFRefutation
% 
%------------------------------------------------------------------------------