↑ Up

LEO-II---2.3.1.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : LEO-II---2.3.1
% Problem  : NUM615+3 : TPTP v9.3.1. Released v4.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : leo --cores 7 --timeout 300 --proofoutput 1 --foatp e --atp e=/export/starexec/sandbox2/solver/bin/eprover /export/starexec/sandbox2/benchmark/theBenchmark.p

% Computer : n020.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 : Wed Oct  7 10:34:38 AM UTC 2026

% Result   : Theorem 1.20s 0.40s
% Output   : CNFRefutation 1.20s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   20
%            Number of leaves      :    3
% Syntax   : Number of formulae    :   38 (  26 unt;   0 typ;   0 def)
%            Number of atoms       :  195 (  98 equ;   0 cnn)
%            Maximal formula atoms :    4 (   5 avg)
%            Number of connectives :  455 (  87   ~;  48   |;  13   &; 307   @)
%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    7 (   2 avg)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :    0 (   0   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   43 (  40 usr;  19 con; 0-2 aty)
%            Number of variables   :   26 (   0   ^;  18   !;   8   ?;  26   :)

% Comments : 
%------------------------------------------------------------------------------
thf(tp_aElement0,type,
    aElement0: $i > $o ).

thf(tp_aElementOf0,type,
    aElementOf0: $i > $i > $o ).

thf(tp_aFunction0,type,
    aFunction0: $i > $o ).

thf(tp_aSet0,type,
    aSet0: $i > $o ).

thf(tp_aSubsetOf0,type,
    aSubsetOf0: $i > $i > $o ).

thf(tp_iLess0,type,
    iLess0: $i > $i > $o ).

thf(tp_isCountable0,type,
    isCountable0: $i > $o ).

thf(tp_isFinite0,type,
    isFinite0: $i > $o ).

thf(tp_sK1_SX0,type,
    sK1_SX0: $i ).

thf(tp_sbrdtbr0,type,
    sbrdtbr0: $i > $i ).

thf(tp_sdtexdt0,type,
    sdtexdt0: $i > $i > $i ).

thf(tp_sdtlbdtrb0,type,
    sdtlbdtrb0: $i > $i > $i ).

thf(tp_sdtlcdtrc0,type,
    sdtlcdtrc0: $i > $i > $i ).

thf(tp_sdtlpdtrp0,type,
    sdtlpdtrp0: $i > $i > $i ).

thf(tp_sdtlseqdt0,type,
    sdtlseqdt0: $i > $i > $o ).

thf(tp_sdtmndt0,type,
    sdtmndt0: $i > $i > $i ).

thf(tp_sdtpldt0,type,
    sdtpldt0: $i > $i > $i ).

thf(tp_slbdtrb0,type,
    slbdtrb0: $i > $i ).

thf(tp_slbdtsldtrb0,type,
    slbdtsldtrb0: $i > $i > $i ).

thf(tp_slcrc0,type,
    slcrc0: $i ).

thf(tp_sz00,type,
    sz00: $i ).

thf(tp_szDzizrdt0,type,
    szDzizrdt0: $i > $i ).

thf(tp_szDzozmdt0,type,
    szDzozmdt0: $i > $i ).

thf(tp_szNzAzT0,type,
    szNzAzT0: $i ).

thf(tp_szmzazxdt0,type,
    szmzazxdt0: $i > $i ).

thf(tp_szmzizndt0,type,
    szmzizndt0: $i > $i ).

thf(tp_szszuzczcdt0,type,
    szszuzczcdt0: $i > $i ).

thf(tp_xC,type,
    xC: $i ).

thf(tp_xK,type,
    xK: $i ).

thf(tp_xN,type,
    xN: $i ).

thf(tp_xO,type,
    xO: $i ).

thf(tp_xP,type,
    xP: $i ).

thf(tp_xQ,type,
    xQ: $i ).

thf(tp_xS,type,
    xS: $i ).

thf(tp_xT,type,
    xT: $i ).

thf(tp_xc,type,
    xc: $i ).

thf(tp_xd,type,
    xd: $i ).

thf(tp_xe,type,
    xe: $i ).

thf(tp_xk,type,
    xk: $i ).

thf(tp_xp,type,
    xp: $i ).

thf(66,axiom,
    ? [W0: $i] :
      ( ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
      & ( ( sdtlpdtrp0 @ xe @ W0 )
        = xp ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__5182) ).

thf(67,axiom,
    aElementOf0 @ xp @ xQ,
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__5173) ).

thf(100,conjecture,
    ? [W0: $i] :
      ( ( ( ( aElementOf0 @ W0 @ ( szDzozmdt0 @ xd ) )
          & ( ( sdtlpdtrp0 @ xd @ W0 )
            = ( szDzizrdt0 @ xd ) ) )
        | ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
      & ( ( sdtlpdtrp0 @ xe @ W0 )
        = xp ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__) ).

thf(101,negated_conjecture,
    ( ( ? [W0: $i] :
          ( ( ( ( aElementOf0 @ W0 @ ( szDzozmdt0 @ xd ) )
              & ( ( sdtlpdtrp0 @ xd @ W0 )
                = ( szDzizrdt0 @ xd ) ) )
            | ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
          & ( ( sdtlpdtrp0 @ xe @ W0 )
            = xp ) ) )
    = $false ),
    inference(negate_conjecture,[status(cth)],[100]) ).

thf(102,plain,
    ( ( ? [W0: $i] :
          ( ( ( ( aElementOf0 @ W0 @ ( szDzozmdt0 @ xd ) )
              & ( ( sdtlpdtrp0 @ xd @ W0 )
                = ( szDzizrdt0 @ xd ) ) )
            | ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
          & ( ( sdtlpdtrp0 @ xe @ W0 )
            = xp ) ) )
    = $false ),
    inference(unfold_def,[status(thm)],[101]) ).

thf(103,plain,
    ( ( ? [W0: $i] :
          ( ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
          & ( ( sdtlpdtrp0 @ xe @ W0 )
            = xp ) ) )
    = $true ),
    inference(unfold_def,[status(thm)],[66]) ).

thf(104,plain,
    ( ( aElementOf0 @ xp @ xQ )
    = $true ),
    inference(unfold_def,[status(thm)],[67]) ).

thf(105,plain,
    ( ( ~ ? [W0: $i] :
            ( ( ( ( aElementOf0 @ W0 @ ( szDzozmdt0 @ xd ) )
                & ( ( sdtlpdtrp0 @ xd @ W0 )
                  = ( szDzizrdt0 @ xd ) ) )
              | ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
            & ( ( sdtlpdtrp0 @ xe @ W0 )
              = xp ) ) )
    = $true ),
    inference(polarity_switch,[status(thm)],[102]) ).

thf(106,plain,
    ( ( aElementOf0 @ xp @ xQ )
    = $true ),
    inference(copy,[status(thm)],[104]) ).

thf(107,plain,
    ( ( ? [W0: $i] :
          ( ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
          & ( ( sdtlpdtrp0 @ xe @ W0 )
            = xp ) ) )
    = $true ),
    inference(copy,[status(thm)],[103]) ).

thf(108,plain,
    ( ( ~ ? [W0: $i] :
            ( ( ( ( aElementOf0 @ W0 @ ( szDzozmdt0 @ xd ) )
                & ( ( sdtlpdtrp0 @ xd @ W0 )
                  = ( szDzizrdt0 @ xd ) ) )
              | ( aElementOf0 @ W0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
            & ( ( sdtlpdtrp0 @ xe @ W0 )
              = xp ) ) )
    = $true ),
    inference(copy,[status(thm)],[105]) ).

thf(109,plain,
    ( ( ~ ! [SX0: $i] :
            ~ ~ ( ~ ( aElementOf0 @ SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
                | ( ( sdtlpdtrp0 @ xe @ SX0 )
                 != xp ) ) )
    = $true ),
    inference(unfold_def,[status(thm)],[107]) ).

thf(110,plain,
    ( ( ~ ~ ! [SX0: $i] :
              ~ ~ ( ~ ( ~ ( ~ ( aElementOf0 @ SX0 @ ( szDzozmdt0 @ xd ) )
                          | ( ( sdtlpdtrp0 @ xd @ SX0 )
                           != ( szDzizrdt0 @ xd ) ) )
                      | ( aElementOf0 @ SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
                  | ( ( sdtlpdtrp0 @ xe @ SX0 )
                   != xp ) ) )
    = $true ),
    inference(unfold_def,[status(thm)],[108]) ).

thf(111,plain,
    ( ( ! [SX0: $i] :
          ~ ~ ( ~ ( aElementOf0 @ SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
              | ( ( sdtlpdtrp0 @ xe @ SX0 )
               != xp ) ) )
    = $false ),
    inference(extcnf_not_pos,[status(thm)],[109]) ).

thf(112,plain,
    ( ( ~ ! [SX0: $i] :
            ~ ~ ( ~ ( ~ ( ~ ( aElementOf0 @ SX0 @ ( szDzozmdt0 @ xd ) )
                        | ( ( sdtlpdtrp0 @ xd @ SX0 )
                         != ( szDzizrdt0 @ xd ) ) )
                    | ( aElementOf0 @ SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
                | ( ( sdtlpdtrp0 @ xe @ SX0 )
                 != xp ) ) )
    = $false ),
    inference(extcnf_not_pos,[status(thm)],[110]) ).

thf(113,plain,
    ( ( ~ ~ ( ~ ( aElementOf0 @ sK1_SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
            | ( ( sdtlpdtrp0 @ xe @ sK1_SX0 )
             != xp ) ) )
    = $false ),
    inference(extcnf_forall_neg,[status(esa)],[111]) ).

thf(114,plain,
    ( ( ! [SX0: $i] :
          ~ ~ ( ~ ( ~ ( ~ ( aElementOf0 @ SX0 @ ( szDzozmdt0 @ xd ) )
                      | ( ( sdtlpdtrp0 @ xd @ SX0 )
                       != ( szDzizrdt0 @ xd ) ) )
                  | ( aElementOf0 @ SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
              | ( ( sdtlpdtrp0 @ xe @ SX0 )
               != xp ) ) )
    = $true ),
    inference(extcnf_not_neg,[status(thm)],[112]) ).

thf(115,plain,
    ( ( ~ ( ~ ( aElementOf0 @ sK1_SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
          | ( ( sdtlpdtrp0 @ xe @ sK1_SX0 )
           != xp ) ) )
    = $true ),
    inference(extcnf_not_neg,[status(thm)],[113]) ).

thf(116,plain,
    ! [SV1: $i] :
      ( ( ~ ~ ( ~ ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
                      | ( ( sdtlpdtrp0 @ xd @ SV1 )
                       != ( szDzizrdt0 @ xd ) ) )
                  | ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
              | ( ( sdtlpdtrp0 @ xe @ SV1 )
               != xp ) ) )
      = $true ),
    inference(extcnf_forall_pos,[status(thm)],[114]) ).

thf(117,plain,
    ( ( ~ ( aElementOf0 @ sK1_SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
      | ( ( sdtlpdtrp0 @ xe @ sK1_SX0 )
       != xp ) )
    = $false ),
    inference(extcnf_not_pos,[status(thm)],[115]) ).

thf(118,plain,
    ! [SV1: $i] :
      ( ( ~ ( ~ ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
                    | ( ( sdtlpdtrp0 @ xd @ SV1 )
                     != ( szDzizrdt0 @ xd ) ) )
                | ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
            | ( ( sdtlpdtrp0 @ xe @ SV1 )
             != xp ) ) )
      = $false ),
    inference(extcnf_not_pos,[status(thm)],[116]) ).

thf(119,plain,
    ( ( ~ ( aElementOf0 @ sK1_SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
    = $false ),
    inference(extcnf_or_neg,[status(thm)],[117]) ).

thf(120,plain,
    ( ( ( sdtlpdtrp0 @ xe @ sK1_SX0 )
     != xp )
    = $false ),
    inference(extcnf_or_neg,[status(thm)],[117]) ).

thf(121,plain,
    ! [SV1: $i] :
      ( ( ~ ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
                | ( ( sdtlpdtrp0 @ xd @ SV1 )
                 != ( szDzizrdt0 @ xd ) ) )
            | ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
        | ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp ) )
      = $true ),
    inference(extcnf_not_neg,[status(thm)],[118]) ).

thf(122,plain,
    ( ( aElementOf0 @ sK1_SX0 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
    = $true ),
    inference(extcnf_not_neg,[status(thm)],[119]) ).

thf(123,plain,
    ( ( ( sdtlpdtrp0 @ xe @ sK1_SX0 )
      = xp )
    = $true ),
    inference(extcnf_not_neg,[status(thm)],[120]) ).

thf(124,plain,
    ! [SV1: $i] :
      ( ( ( ~ ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
                  | ( ( sdtlpdtrp0 @ xd @ SV1 )
                   != ( szDzizrdt0 @ xd ) ) )
              | ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) ) )
        = $true )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_or_pos,[status(thm)],[121]) ).

thf(125,plain,
    ! [SV1: $i] :
      ( ( ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
              | ( ( sdtlpdtrp0 @ xd @ SV1 )
               != ( szDzizrdt0 @ xd ) ) )
          | ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_not_pos,[status(thm)],[124]) ).

thf(126,plain,
    ! [SV1: $i] :
      ( ( ( ~ ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
              | ( ( sdtlpdtrp0 @ xd @ SV1 )
               != ( szDzizrdt0 @ xd ) ) ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_or_neg,[status(thm)],[125]) ).

thf(127,plain,
    ! [SV1: $i] :
      ( ( ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_or_neg,[status(thm)],[125]) ).

thf(128,plain,
    ! [SV1: $i] :
      ( ( ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
          | ( ( sdtlpdtrp0 @ xd @ SV1 )
           != ( szDzizrdt0 @ xd ) ) )
        = $true )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_not_neg,[status(thm)],[126]) ).

thf(129,plain,
    ! [SV1: $i] :
      ( ( ( ( sdtlpdtrp0 @ xe @ SV1 )
          = xp )
        = $false )
      | ( ( aElementOf0 @ SV1 @ ( sdtlbdtrb0 @ xd @ ( szDzizrdt0 @ xd ) ) )
        = $false ) ),
    inference(extcnf_not_pos,[status(thm)],[127]) ).

thf(130,plain,
    ! [SV1: $i] :
      ( ( ( ~ ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) ) )
        = $true )
      | ( ( ( sdtlpdtrp0 @ xd @ SV1 )
         != ( szDzizrdt0 @ xd ) )
        = $true )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_or_pos,[status(thm)],[128]) ).

thf(131,plain,
    ! [SV1: $i] :
      ( ( ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xd @ SV1 )
         != ( szDzizrdt0 @ xd ) )
        = $true )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_not_pos,[status(thm)],[130]) ).

thf(132,plain,
    ! [SV1: $i] :
      ( ( ( ( sdtlpdtrp0 @ xd @ SV1 )
          = ( szDzizrdt0 @ xd ) )
        = $false )
      | ( ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xe @ SV1 )
         != xp )
        = $true ) ),
    inference(extcnf_not_pos,[status(thm)],[131]) ).

thf(133,plain,
    ! [SV1: $i] :
      ( ( ( ( sdtlpdtrp0 @ xe @ SV1 )
          = xp )
        = $false )
      | ( ( aElementOf0 @ SV1 @ ( szDzozmdt0 @ xd ) )
        = $false )
      | ( ( ( sdtlpdtrp0 @ xd @ SV1 )
          = ( szDzizrdt0 @ xd ) )
        = $false ) ),
    inference(extcnf_not_pos,[status(thm)],[132]) ).

thf(134,plain,
    $false = $true,
    inference(fo_atp_e,[status(thm)],[106,133,129,123,122]) ).

thf(135,plain,
    $false,
    inference(solved_all_splits,[solved_all_splits(join,[])],[134]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02  % Problem  : NUM615+3 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.04  % Command  : leo --cores 7 --timeout 300 --proofoutput 1 --foatp e --atp e=/export/starexec/sandbox2/solver/bin/eprover /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.11/0.18  % Computer : n020.cluster.edu
% 0.11/0.18  % Model    : x86_64 x86_64
% 0.11/0.18  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.11/0.18  % Memory   : 8046.5625MB
% 0.11/0.18  % OS       : Linux 6.8.0-71-generic
% 0.11/0.18  % CPULimit : 300
% 0.11/0.18  % WCLimit  : 300
% 0.11/0.18  % DateTime : Tue Oct  6 13:30:27 UTC 2026
% 0.11/0.19  % CPUTime  : 
% 0.11/0.19  Running leo --cores 7 --timeout 300 --proofoutput 1 --foatp e --atp e=/export/starexec/sandbox2/solver/bin/eprover /export/starexec/sandbox2/benchmark/theBenchmark.p
% 1.20/0.40  
% 1.20/0.40   No.of.Axioms: 2
% 1.20/0.40  
% 1.20/0.40   Length.of.Defs: 0
% 1.20/0.40  
% 1.20/0.40   Contains.Choice.Funs: false
% 1.20/0.40  ..
% 1.20/0.40  
% 1.20/0.40  ********************************
% 1.20/0.40  *   All subproblems solved!    *
% 1.20/0.40  ********************************
% 1.20/0.40  % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p : (rf:1,axioms:2,ps:0,u:6,ude:true,rLeibEQ:true,rAndEQ:true,use_choice:true,use_extuni:true,use_extcnf_combined:false,expand_extuni:false,foatp:e,atp_timeout:299,atp_calls_frequency:5,ordering:none,proof_output:1,protocol_output:false,clause_count:134,loop_count:0,foatp_calls:1,translation:fof_full)
% 1.20/0.40  
% 1.20/0.40  %**** Beginning of derivation protocol ****
% 1.20/0.40  % SZS output start CNFRefutation
% See solution above
% 1.20/0.41  
% 1.20/0.41  %**** End of derivation protocol ****
% 1.20/0.41  %**** no. of clauses in derivation: 38 ****
% 1.20/0.41  %**** clause counter: 134 ****
% 1.20/0.41  
% 1.20/0.41  % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p : (rf:1,axioms:2,ps:0,u:6,ude:true,rLeibEQ:true,rAndEQ:true,use_choice:true,use_extuni:true,use_extcnf_combined:false,expand_extuni:false,foatp:e,atp_timeout:299,atp_calls_frequency:5,ordering:none,proof_output:1,protocol_output:false,clause_count:134,loop_count:0,foatp_calls:1,translation:fof_full)
%------------------------------------------------------------------------------