TSTP Solution File: SEU046+1 by SInE---0.4

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : SInE---0.4
% Problem  : SEU046+1 : TPTP v5.0.0. Released v3.2.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : Source/sine.py -e eprover -t %d %s

% Computer : art04.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 04:16:13 EST 2010

% Result   : Theorem 0.57s
% Output   : CNFRefutation 0.57s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   16
%            Number of leaves      :    6
% Syntax   : Number of formulae    :   49 (   5 unt;   0 def)
%            Number of atoms       :  321 (  34 equ)
%            Maximal formula atoms :   79 (   6 avg)
%            Number of connectives :  452 ( 180   ~; 194   |;  66   &)
%                                         (   3 <=>;   9  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   23 (   6 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    6 (   4 usr;   1 prp; 0-2 aty)
%            Number of functors    :    9 (   9 usr;   2 con; 0-3 aty)
%            Number of variables   :  111 (   6 sgn  72   !;  10   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(1,axiom,
    ! [X1,X2] :
      ( relation(X2)
     => relation(relation_rng_restriction(X1,X2)) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',dt_k8_relat_1) ).

fof(5,axiom,
    ! [X1,X2] :
      ( relation(X2)
     => subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2)) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',t118_relat_1) ).

fof(6,axiom,
    ! [X1,X2] :
      ( ( relation(X2)
        & function(X2) )
     => ( relation(relation_rng_restriction(X1,X2))
        & function(relation_rng_restriction(X1,X2)) ) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',fc5_funct_1) ).

fof(12,axiom,
    ! [X1,X2] :
      ( ( relation(X2)
        & function(X2) )
     => ! [X3] :
          ( ( relation(X3)
            & function(X3) )
         => ( X2 = relation_rng_restriction(X1,X3)
          <=> ( ! [X4] :
                  ( in(X4,relation_dom(X2))
                <=> ( in(X4,relation_dom(X3))
                    & in(apply(X3,X4),X1) ) )
              & ! [X4] :
                  ( in(X4,relation_dom(X2))
                 => apply(X2,X4) = apply(X3,X4) ) ) ) ) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',t85_funct_1) ).

fof(23,conjecture,
    ! [X1,X2] :
      ( ( relation(X2)
        & function(X2) )
     => ( subset(relation_dom(relation_rng_restriction(X1,X2)),relation_dom(X2))
        & subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2)) ) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',t89_funct_1) ).

fof(36,axiom,
    ! [X1,X2] :
      ( subset(X1,X2)
    <=> ! [X3] :
          ( in(X3,X1)
         => in(X3,X2) ) ),
    file('/tmp/tmpI_vPJa/sel_SEU046+1.p_1',d3_tarski) ).

fof(39,negated_conjecture,
    ~ ! [X1,X2] :
        ( ( relation(X2)
          & function(X2) )
       => ( subset(relation_dom(relation_rng_restriction(X1,X2)),relation_dom(X2))
          & subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2)) ) ),
    inference(assume_negation,[status(cth)],[23]) ).

fof(47,plain,
    ! [X1,X2] :
      ( ~ relation(X2)
      | relation(relation_rng_restriction(X1,X2)) ),
    inference(fof_nnf,[status(thm)],[1]) ).

fof(48,plain,
    ! [X3,X4] :
      ( ~ relation(X4)
      | relation(relation_rng_restriction(X3,X4)) ),
    inference(variable_rename,[status(thm)],[47]) ).

cnf(49,plain,
    ( relation(relation_rng_restriction(X1,X2))
    | ~ relation(X2) ),
    inference(split_conjunct,[status(thm)],[48]) ).

fof(60,plain,
    ! [X1,X2] :
      ( ~ relation(X2)
      | subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2)) ),
    inference(fof_nnf,[status(thm)],[5]) ).

fof(61,plain,
    ! [X3,X4] :
      ( ~ relation(X4)
      | subset(relation_rng(relation_rng_restriction(X3,X4)),relation_rng(X4)) ),
    inference(variable_rename,[status(thm)],[60]) ).

cnf(62,plain,
    ( subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2))
    | ~ relation(X2) ),
    inference(split_conjunct,[status(thm)],[61]) ).

fof(63,plain,
    ! [X1,X2] :
      ( ~ relation(X2)
      | ~ function(X2)
      | ( relation(relation_rng_restriction(X1,X2))
        & function(relation_rng_restriction(X1,X2)) ) ),
    inference(fof_nnf,[status(thm)],[6]) ).

fof(64,plain,
    ! [X3,X4] :
      ( ~ relation(X4)
      | ~ function(X4)
      | ( relation(relation_rng_restriction(X3,X4))
        & function(relation_rng_restriction(X3,X4)) ) ),
    inference(variable_rename,[status(thm)],[63]) ).

fof(65,plain,
    ! [X3,X4] :
      ( ( relation(relation_rng_restriction(X3,X4))
        | ~ relation(X4)
        | ~ function(X4) )
      & ( function(relation_rng_restriction(X3,X4))
        | ~ relation(X4)
        | ~ function(X4) ) ),
    inference(distribute,[status(thm)],[64]) ).

cnf(66,plain,
    ( function(relation_rng_restriction(X2,X1))
    | ~ function(X1)
    | ~ relation(X1) ),
    inference(split_conjunct,[status(thm)],[65]) ).

fof(87,plain,
    ! [X1,X2] :
      ( ~ relation(X2)
      | ~ function(X2)
      | ! [X3] :
          ( ~ relation(X3)
          | ~ function(X3)
          | ( ( X2 != relation_rng_restriction(X1,X3)
              | ( ! [X4] :
                    ( ( ~ in(X4,relation_dom(X2))
                      | ( in(X4,relation_dom(X3))
                        & in(apply(X3,X4),X1) ) )
                    & ( ~ in(X4,relation_dom(X3))
                      | ~ in(apply(X3,X4),X1)
                      | in(X4,relation_dom(X2)) ) )
                & ! [X4] :
                    ( ~ in(X4,relation_dom(X2))
                    | apply(X2,X4) = apply(X3,X4) ) ) )
            & ( ? [X4] :
                  ( ( ~ in(X4,relation_dom(X2))
                    | ~ in(X4,relation_dom(X3))
                    | ~ in(apply(X3,X4),X1) )
                  & ( in(X4,relation_dom(X2))
                    | ( in(X4,relation_dom(X3))
                      & in(apply(X3,X4),X1) ) ) )
              | ? [X4] :
                  ( in(X4,relation_dom(X2))
                  & apply(X2,X4) != apply(X3,X4) )
              | X2 = relation_rng_restriction(X1,X3) ) ) ) ),
    inference(fof_nnf,[status(thm)],[12]) ).

fof(88,plain,
    ! [X5,X6] :
      ( ~ relation(X6)
      | ~ function(X6)
      | ! [X7] :
          ( ~ relation(X7)
          | ~ function(X7)
          | ( ( X6 != relation_rng_restriction(X5,X7)
              | ( ! [X8] :
                    ( ( ~ in(X8,relation_dom(X6))
                      | ( in(X8,relation_dom(X7))
                        & in(apply(X7,X8),X5) ) )
                    & ( ~ in(X8,relation_dom(X7))
                      | ~ in(apply(X7,X8),X5)
                      | in(X8,relation_dom(X6)) ) )
                & ! [X9] :
                    ( ~ in(X9,relation_dom(X6))
                    | apply(X6,X9) = apply(X7,X9) ) ) )
            & ( ? [X10] :
                  ( ( ~ in(X10,relation_dom(X6))
                    | ~ in(X10,relation_dom(X7))
                    | ~ in(apply(X7,X10),X5) )
                  & ( in(X10,relation_dom(X6))
                    | ( in(X10,relation_dom(X7))
                      & in(apply(X7,X10),X5) ) ) )
              | ? [X11] :
                  ( in(X11,relation_dom(X6))
                  & apply(X6,X11) != apply(X7,X11) )
              | X6 = relation_rng_restriction(X5,X7) ) ) ) ),
    inference(variable_rename,[status(thm)],[87]) ).

fof(89,plain,
    ! [X5,X6] :
      ( ~ relation(X6)
      | ~ function(X6)
      | ! [X7] :
          ( ~ relation(X7)
          | ~ function(X7)
          | ( ( X6 != relation_rng_restriction(X5,X7)
              | ( ! [X8] :
                    ( ( ~ in(X8,relation_dom(X6))
                      | ( in(X8,relation_dom(X7))
                        & in(apply(X7,X8),X5) ) )
                    & ( ~ in(X8,relation_dom(X7))
                      | ~ in(apply(X7,X8),X5)
                      | in(X8,relation_dom(X6)) ) )
                & ! [X9] :
                    ( ~ in(X9,relation_dom(X6))
                    | apply(X6,X9) = apply(X7,X9) ) ) )
            & ( ( ( ~ in(esk5_3(X5,X6,X7),relation_dom(X6))
                  | ~ in(esk5_3(X5,X6,X7),relation_dom(X7))
                  | ~ in(apply(X7,esk5_3(X5,X6,X7)),X5) )
                & ( in(esk5_3(X5,X6,X7),relation_dom(X6))
                  | ( in(esk5_3(X5,X6,X7),relation_dom(X7))
                    & in(apply(X7,esk5_3(X5,X6,X7)),X5) ) ) )
              | ( in(esk6_3(X5,X6,X7),relation_dom(X6))
                & apply(X6,esk6_3(X5,X6,X7)) != apply(X7,esk6_3(X5,X6,X7)) )
              | X6 = relation_rng_restriction(X5,X7) ) ) ) ),
    inference(skolemize,[status(esa)],[88]) ).

fof(90,plain,
    ! [X5,X6,X7,X8,X9] :
      ( ( ( ( ( ~ in(X9,relation_dom(X6))
              | apply(X6,X9) = apply(X7,X9) )
            & ( ~ in(X8,relation_dom(X6))
              | ( in(X8,relation_dom(X7))
                & in(apply(X7,X8),X5) ) )
            & ( ~ in(X8,relation_dom(X7))
              | ~ in(apply(X7,X8),X5)
              | in(X8,relation_dom(X6)) ) )
          | X6 != relation_rng_restriction(X5,X7) )
        & ( ( ( ~ in(esk5_3(X5,X6,X7),relation_dom(X6))
              | ~ in(esk5_3(X5,X6,X7),relation_dom(X7))
              | ~ in(apply(X7,esk5_3(X5,X6,X7)),X5) )
            & ( in(esk5_3(X5,X6,X7),relation_dom(X6))
              | ( in(esk5_3(X5,X6,X7),relation_dom(X7))
                & in(apply(X7,esk5_3(X5,X6,X7)),X5) ) ) )
          | ( in(esk6_3(X5,X6,X7),relation_dom(X6))
            & apply(X6,esk6_3(X5,X6,X7)) != apply(X7,esk6_3(X5,X6,X7)) )
          | X6 = relation_rng_restriction(X5,X7) ) )
      | ~ relation(X7)
      | ~ function(X7)
      | ~ relation(X6)
      | ~ function(X6) ),
    inference(shift_quantors,[status(thm)],[89]) ).

fof(91,plain,
    ! [X5,X6,X7,X8,X9] :
      ( ( ~ in(X9,relation_dom(X6))
        | apply(X6,X9) = apply(X7,X9)
        | X6 != relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( in(X8,relation_dom(X7))
        | ~ in(X8,relation_dom(X6))
        | X6 != relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( in(apply(X7,X8),X5)
        | ~ in(X8,relation_dom(X6))
        | X6 != relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( ~ in(X8,relation_dom(X7))
        | ~ in(apply(X7,X8),X5)
        | in(X8,relation_dom(X6))
        | X6 != relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( in(esk6_3(X5,X6,X7),relation_dom(X6))
        | ~ in(esk5_3(X5,X6,X7),relation_dom(X6))
        | ~ in(esk5_3(X5,X6,X7),relation_dom(X7))
        | ~ in(apply(X7,esk5_3(X5,X6,X7)),X5)
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( apply(X6,esk6_3(X5,X6,X7)) != apply(X7,esk6_3(X5,X6,X7))
        | ~ in(esk5_3(X5,X6,X7),relation_dom(X6))
        | ~ in(esk5_3(X5,X6,X7),relation_dom(X7))
        | ~ in(apply(X7,esk5_3(X5,X6,X7)),X5)
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( in(esk6_3(X5,X6,X7),relation_dom(X6))
        | in(esk5_3(X5,X6,X7),relation_dom(X7))
        | in(esk5_3(X5,X6,X7),relation_dom(X6))
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( apply(X6,esk6_3(X5,X6,X7)) != apply(X7,esk6_3(X5,X6,X7))
        | in(esk5_3(X5,X6,X7),relation_dom(X7))
        | in(esk5_3(X5,X6,X7),relation_dom(X6))
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( in(esk6_3(X5,X6,X7),relation_dom(X6))
        | in(apply(X7,esk5_3(X5,X6,X7)),X5)
        | in(esk5_3(X5,X6,X7),relation_dom(X6))
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) )
      & ( apply(X6,esk6_3(X5,X6,X7)) != apply(X7,esk6_3(X5,X6,X7))
        | in(apply(X7,esk5_3(X5,X6,X7)),X5)
        | in(esk5_3(X5,X6,X7),relation_dom(X6))
        | X6 = relation_rng_restriction(X5,X7)
        | ~ relation(X7)
        | ~ function(X7)
        | ~ relation(X6)
        | ~ function(X6) ) ),
    inference(distribute,[status(thm)],[90]) ).

cnf(100,plain,
    ( in(X4,relation_dom(X2))
    | ~ function(X1)
    | ~ relation(X1)
    | ~ function(X2)
    | ~ relation(X2)
    | X1 != relation_rng_restriction(X3,X2)
    | ~ in(X4,relation_dom(X1)) ),
    inference(split_conjunct,[status(thm)],[91]) ).

fof(137,negated_conjecture,
    ? [X1,X2] :
      ( relation(X2)
      & function(X2)
      & ( ~ subset(relation_dom(relation_rng_restriction(X1,X2)),relation_dom(X2))
        | ~ subset(relation_rng(relation_rng_restriction(X1,X2)),relation_rng(X2)) ) ),
    inference(fof_nnf,[status(thm)],[39]) ).

fof(138,negated_conjecture,
    ? [X3,X4] :
      ( relation(X4)
      & function(X4)
      & ( ~ subset(relation_dom(relation_rng_restriction(X3,X4)),relation_dom(X4))
        | ~ subset(relation_rng(relation_rng_restriction(X3,X4)),relation_rng(X4)) ) ),
    inference(variable_rename,[status(thm)],[137]) ).

fof(139,negated_conjecture,
    ( relation(esk10_0)
    & function(esk10_0)
    & ( ~ subset(relation_dom(relation_rng_restriction(esk9_0,esk10_0)),relation_dom(esk10_0))
      | ~ subset(relation_rng(relation_rng_restriction(esk9_0,esk10_0)),relation_rng(esk10_0)) ) ),
    inference(skolemize,[status(esa)],[138]) ).

cnf(140,negated_conjecture,
    ( ~ subset(relation_rng(relation_rng_restriction(esk9_0,esk10_0)),relation_rng(esk10_0))
    | ~ subset(relation_dom(relation_rng_restriction(esk9_0,esk10_0)),relation_dom(esk10_0)) ),
    inference(split_conjunct,[status(thm)],[139]) ).

cnf(141,negated_conjecture,
    function(esk10_0),
    inference(split_conjunct,[status(thm)],[139]) ).

cnf(142,negated_conjecture,
    relation(esk10_0),
    inference(split_conjunct,[status(thm)],[139]) ).

fof(182,plain,
    ! [X1,X2] :
      ( ( ~ subset(X1,X2)
        | ! [X3] :
            ( ~ in(X3,X1)
            | in(X3,X2) ) )
      & ( ? [X3] :
            ( in(X3,X1)
            & ~ in(X3,X2) )
        | subset(X1,X2) ) ),
    inference(fof_nnf,[status(thm)],[36]) ).

fof(183,plain,
    ! [X4,X5] :
      ( ( ~ subset(X4,X5)
        | ! [X6] :
            ( ~ in(X6,X4)
            | in(X6,X5) ) )
      & ( ? [X7] :
            ( in(X7,X4)
            & ~ in(X7,X5) )
        | subset(X4,X5) ) ),
    inference(variable_rename,[status(thm)],[182]) ).

fof(184,plain,
    ! [X4,X5] :
      ( ( ~ subset(X4,X5)
        | ! [X6] :
            ( ~ in(X6,X4)
            | in(X6,X5) ) )
      & ( ( in(esk15_2(X4,X5),X4)
          & ~ in(esk15_2(X4,X5),X5) )
        | subset(X4,X5) ) ),
    inference(skolemize,[status(esa)],[183]) ).

fof(185,plain,
    ! [X4,X5,X6] :
      ( ( ~ in(X6,X4)
        | in(X6,X5)
        | ~ subset(X4,X5) )
      & ( ( in(esk15_2(X4,X5),X4)
          & ~ in(esk15_2(X4,X5),X5) )
        | subset(X4,X5) ) ),
    inference(shift_quantors,[status(thm)],[184]) ).

fof(186,plain,
    ! [X4,X5,X6] :
      ( ( ~ in(X6,X4)
        | in(X6,X5)
        | ~ subset(X4,X5) )
      & ( in(esk15_2(X4,X5),X4)
        | subset(X4,X5) )
      & ( ~ in(esk15_2(X4,X5),X5)
        | subset(X4,X5) ) ),
    inference(distribute,[status(thm)],[185]) ).

cnf(187,plain,
    ( subset(X1,X2)
    | ~ in(esk15_2(X1,X2),X2) ),
    inference(split_conjunct,[status(thm)],[186]) ).

cnf(188,plain,
    ( subset(X1,X2)
    | in(esk15_2(X1,X2),X1) ),
    inference(split_conjunct,[status(thm)],[186]) ).

cnf(248,negated_conjecture,
    ( ~ subset(relation_dom(relation_rng_restriction(esk9_0,esk10_0)),relation_dom(esk10_0))
    | ~ relation(esk10_0) ),
    inference(spm,[status(thm)],[140,62,theory(equality)]) ).

cnf(249,negated_conjecture,
    ( ~ subset(relation_dom(relation_rng_restriction(esk9_0,esk10_0)),relation_dom(esk10_0))
    | $false ),
    inference(rw,[status(thm)],[248,142,theory(equality)]) ).

cnf(250,negated_conjecture,
    ~ subset(relation_dom(relation_rng_restriction(esk9_0,esk10_0)),relation_dom(esk10_0)),
    inference(cn,[status(thm)],[249,theory(equality)]) ).

cnf(261,plain,
    ( in(esk15_2(relation_dom(X1),X2),relation_dom(X3))
    | subset(relation_dom(X1),X2)
    | relation_rng_restriction(X4,X3) != X1
    | ~ function(X3)
    | ~ function(X1)
    | ~ relation(X3)
    | ~ relation(X1) ),
    inference(spm,[status(thm)],[100,188,theory(equality)]) ).

cnf(728,plain,
    ( subset(relation_dom(relation_rng_restriction(X1,X2)),X3)
    | in(esk15_2(relation_dom(relation_rng_restriction(X1,X2)),X3),relation_dom(X2))
    | ~ function(X2)
    | ~ function(relation_rng_restriction(X1,X2))
    | ~ relation(X2)
    | ~ relation(relation_rng_restriction(X1,X2)) ),
    inference(er,[status(thm)],[261,theory(equality)]) ).

cnf(6860,plain,
    ( subset(relation_dom(relation_rng_restriction(X1,X2)),X3)
    | in(esk15_2(relation_dom(relation_rng_restriction(X1,X2)),X3),relation_dom(X2))
    | ~ function(relation_rng_restriction(X1,X2))
    | ~ function(X2)
    | ~ relation(X2) ),
    inference(csr,[status(thm)],[728,49]) ).

cnf(6861,plain,
    ( subset(relation_dom(relation_rng_restriction(X1,X2)),X3)
    | in(esk15_2(relation_dom(relation_rng_restriction(X1,X2)),X3),relation_dom(X2))
    | ~ function(X2)
    | ~ relation(X2) ),
    inference(csr,[status(thm)],[6860,66]) ).

cnf(6866,plain,
    ( subset(relation_dom(relation_rng_restriction(X1,X2)),relation_dom(X2))
    | ~ function(X2)
    | ~ relation(X2) ),
    inference(spm,[status(thm)],[187,6861,theory(equality)]) ).

cnf(7147,negated_conjecture,
    ( ~ function(esk10_0)
    | ~ relation(esk10_0) ),
    inference(spm,[status(thm)],[250,6866,theory(equality)]) ).

cnf(7203,negated_conjecture,
    ( $false
    | ~ relation(esk10_0) ),
    inference(rw,[status(thm)],[7147,141,theory(equality)]) ).

cnf(7204,negated_conjecture,
    ( $false
    | $false ),
    inference(rw,[status(thm)],[7203,142,theory(equality)]) ).

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

cnf(7206,negated_conjecture,
    $false,
    7205,
    [proof] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% % SZS status Started for /home/graph/tptp/TPTP/Problems/SEU/SEU046+1.p
% --creating new selector for []
% -running prover on /tmp/tmpI_vPJa/sel_SEU046+1.p_1 with time limit 29
% -prover status Theorem
% Problem SEU046+1.p solved in phase 0.
% % SZS status Theorem for /home/graph/tptp/TPTP/Problems/SEU/SEU046+1.p
% % SZS status Ended for /home/graph/tptp/TPTP/Problems/SEU/SEU046+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
% 
%------------------------------------------------------------------------------