↑ Up

ConnectPP---0.7.2.THM-Prf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : ConnectPP---0.7.2
% Problem  : SEU026+1 : TPTP v9.3.1. Released v3.2.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : /export/starexec/sandbox2/solver/bin/connect++ --verbosity 1 --no-colour --tptp-proof --schedule default --timeout 300 /export/starexec/sandbox2/benchmark/theBenchmark.p

% Computer : n018.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 : Thu Sep 24 08:57:57 AM UTC 2026

% Result   : Theorem 3.27s 3.54s
% Output   : Proof 3.27s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :    8
%            Number of leaves      :   11
% Syntax   : Number of formulae    :  105 (  62 unt;   0 def)
%            Number of atoms       :  222 (  64 equ)
%            Maximal formula atoms :    5 (   2 avg)
%            Number of connectives :  204 (  87   ~;  80   |;  24   &)
%                                         (   0 <=>;  13  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    7 (   3 avg)
%            Maximal term depth    :    4 (   2 avg)
%            Number of predicates  :    6 (   4 usr;   1 prp; 0-2 aty)
%            Number of functors    :    5 (   5 usr;   1 con; 0-2 aty)
%            Number of variables   :   49 (   3 sgn  27   !;   2   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(dt_k2_funct_1,axiom,
    ! [A] :
      ( ( function(A)
        & relation(A) )
     => ( function(function_inverse(A))
        & relation(function_inverse(A)) ) ),
    file('theBenchmark.p',dt_k2_funct_1) ).

fof(reflexivity_r1_tarski,axiom,
    ! [A,B] : subset(A,A),
    file('theBenchmark.p',reflexivity_r1_tarski) ).

fof(t46_relat_1,axiom,
    ! [A] :
      ( relation(A)
     => ! [B] :
          ( relation(B)
         => ( subset(relation_rng(A),relation_dom(B))
           => relation_dom(relation_composition(A,B)) = relation_dom(A) ) ) ),
    file('theBenchmark.p',t46_relat_1) ).

fof(t47_relat_1,axiom,
    ! [A] :
      ( relation(A)
     => ! [B] :
          ( relation(B)
         => ( subset(relation_dom(A),relation_rng(B))
           => relation_rng(relation_composition(B,A)) = relation_rng(A) ) ) ),
    file('theBenchmark.p',t47_relat_1) ).

fof(t55_funct_1,axiom,
    ! [A] :
      ( ( function(A)
        & relation(A) )
     => ( one_to_one(A)
       => ( relation_dom(A) = relation_rng(function_inverse(A))
          & relation_rng(A) = relation_dom(function_inverse(A)) ) ) ),
    file('theBenchmark.p',t55_funct_1) ).

fof(t59_funct_1,conjecture,
    ! [A] :
      ( ( function(A)
        & relation(A) )
     => ( one_to_one(A)
       => ( relation_rng(relation_composition(function_inverse(A),A)) = relation_rng(A)
          & relation_dom(relation_composition(function_inverse(A),A)) = relation_rng(A) ) ) ),
    file('theBenchmark.p',t59_funct_1) ).

fof(f_5_1,plain,
    ! [A] :
      ( ( function(function_inverse(A))
        & relation(function_inverse(A)) )
      | ~ function(A)
      | ~ relation(A) ),
    inference(fof_nnf,[status(thm)],[dt_k2_funct_1]) ).

fof(f_5_2,plain,
    ! [U_5] :
      ( ( function(function_inverse(U_5))
        & relation(function_inverse(U_5)) )
      | ~ function(U_5)
      | ~ relation(U_5) ),
    inference(variable_rename,[status(thm)],[f_5_1]) ).

cnf(f_5_3,plain,
    ( relation(function_inverse(U_5))
    | ~ function(U_5)
    | ~ relation(U_5) ),
    inference(clausify,[status(thm)],[f_5_2]) ).

fof(f_29_1,plain,
    ! [A,B] : subset(A,A),
    inference(fof_nnf,[status(thm)],[reflexivity_r1_tarski]) ).

fof(f_29_2,plain,
    ! [U_34,U_33] : subset(U_34,U_34),
    inference(variable_rename,[status(thm)],[f_29_1]) ).

fof(f_29_3,plain,
    ! [U_34] : subset(U_34,U_34),
    inference(miniscope,[status(thm)],[f_29_2]) ).

cnf(f_29_4,plain,
    subset(U_34,U_34),
    inference(clausify,[status(thm)],[f_29_3]) ).

fof(f_33_1,plain,
    ! [A] :
      ( ! [B] :
          ( relation_dom(relation_composition(A,B)) = relation_dom(A)
          | ~ subset(relation_rng(A),relation_dom(B))
          | ~ relation(B) )
      | ~ relation(A) ),
    inference(fof_nnf,[status(thm)],[t46_relat_1]) ).

fof(f_33_2,plain,
    ! [U_46] :
      ( ! [U_45] :
          ( relation_dom(relation_composition(U_46,U_45)) = relation_dom(U_46)
          | ~ subset(relation_rng(U_46),relation_dom(U_45))
          | ~ relation(U_45) )
      | ~ relation(U_46) ),
    inference(variable_rename,[status(thm)],[f_33_1]) ).

cnf(f_33_3,plain,
    ( relation_dom(relation_composition(U_46,U_45)) = relation_dom(U_46)
    | ~ subset(relation_rng(U_46),relation_dom(U_45))
    | ~ relation(U_45)
    | ~ relation(U_46) ),
    inference(clausify,[status(thm)],[f_33_2]) ).

fof(f_34_1,plain,
    ! [A] :
      ( ! [B] :
          ( relation_rng(relation_composition(B,A)) = relation_rng(A)
          | ~ subset(relation_dom(A),relation_rng(B))
          | ~ relation(B) )
      | ~ relation(A) ),
    inference(fof_nnf,[status(thm)],[t47_relat_1]) ).

fof(f_34_2,plain,
    ! [U_48] :
      ( ! [U_47] :
          ( relation_rng(relation_composition(U_47,U_48)) = relation_rng(U_48)
          | ~ subset(relation_dom(U_48),relation_rng(U_47))
          | ~ relation(U_47) )
      | ~ relation(U_48) ),
    inference(variable_rename,[status(thm)],[f_34_1]) ).

cnf(f_34_3,plain,
    ( relation_rng(relation_composition(U_47,U_48)) = relation_rng(U_48)
    | ~ subset(relation_dom(U_48),relation_rng(U_47))
    | ~ relation(U_47)
    | ~ relation(U_48) ),
    inference(clausify,[status(thm)],[f_34_2]) ).

fof(f_36_1,plain,
    ! [A] :
      ( ( relation_dom(A) = relation_rng(function_inverse(A))
        & relation_rng(A) = relation_dom(function_inverse(A)) )
      | ~ one_to_one(A)
      | ~ function(A)
      | ~ relation(A) ),
    inference(fof_nnf,[status(thm)],[t55_funct_1]) ).

fof(f_36_2,plain,
    ! [U_52] :
      ( ( relation_dom(U_52) = relation_rng(function_inverse(U_52))
        & relation_rng(U_52) = relation_dom(function_inverse(U_52)) )
      | ~ one_to_one(U_52)
      | ~ function(U_52)
      | ~ relation(U_52) ),
    inference(variable_rename,[status(thm)],[f_36_1]) ).

cnf(f_36_3,plain,
    ( relation_rng(U_52) = relation_dom(function_inverse(U_52))
    | ~ one_to_one(U_52)
    | ~ function(U_52)
    | ~ relation(U_52) ),
    inference(clausify,[status(thm)],[f_36_2]) ).

cnf(f_36_4,plain,
    ( relation_dom(U_52) = relation_rng(function_inverse(U_52))
    | ~ one_to_one(U_52)
    | ~ function(U_52)
    | ~ relation(U_52) ),
    inference(clausify,[status(thm)],[f_36_2]) ).

fof(f_37_1,negated_conjecture,
    ~ ! [A] :
        ( ( function(A)
          & relation(A) )
       => ( one_to_one(A)
         => ( relation_rng(relation_composition(function_inverse(A),A)) = relation_rng(A)
            & relation_dom(relation_composition(function_inverse(A),A)) = relation_rng(A) ) ) ),
    inference(negate,[status(cth)],[t59_funct_1]) ).

fof(f_37_2,negated_conjecture,
    ? [A] :
      ( ( relation_rng(relation_composition(function_inverse(A),A)) != relation_rng(A)
        | relation_dom(relation_composition(function_inverse(A),A)) != relation_rng(A) )
      & one_to_one(A)
      & function(A)
      & relation(A) ),
    inference(fof_nnf,[status(thm)],[f_37_1]) ).

fof(f_37_3,negated_conjecture,
    ? [U_53] :
      ( ( relation_rng(relation_composition(function_inverse(U_53),U_53)) != relation_rng(U_53)
        | relation_dom(relation_composition(function_inverse(U_53),U_53)) != relation_rng(U_53) )
      & one_to_one(U_53)
      & function(U_53)
      & relation(U_53) ),
    inference(variable_rename,[status(thm)],[f_37_2]) ).

fof(f_37_4,negated_conjecture,
    ( ( relation_rng(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12)
      | relation_dom(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12) )
    & one_to_one(sK12)
    & function(sK12)
    & relation(sK12) ),
    inference(skolemize,[status(esa),new_symbols(skolem,[sK12]),skolemize(U_53,sK12)],[f_37_3]) ).

fof(f_37_5,negated_conjecture,
    ( ( relation_rng(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12)
      | relation_dom(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12) )
    & one_to_one(sK12)
    & function(sK12)
    & relation(sK12) ),
    inference(definitional_conversion,[status(esa)],[f_37_4]) ).

cnf(f_37_6,negated_conjecture,
    relation(sK12),
    inference(clausify,[status(thm)],[f_37_5]) ).

cnf(f_37_7,negated_conjecture,
    function(sK12),
    inference(clausify,[status(thm)],[f_37_5]) ).

cnf(f_37_8,negated_conjecture,
    one_to_one(sK12),
    inference(clausify,[status(thm)],[f_37_5]) ).

cnf(f_37_9,negated_conjecture,
    ( relation_rng(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12)
    | relation_dom(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12) ),
    inference(clausify,[status(thm)],[f_37_5]) ).

cnf(equality_1,axiom,
    Eq_x_0 = Eq_x_0,
    theory(equality,[reflexivity]) ).

cnf(equality_2,axiom,
    ( Eq_x_1 = Eq_x_0
    | Eq_x_0 != Eq_x_1 ),
    theory(equality,[symmetry]) ).

cnf(equality_3,axiom,
    ( Eq_x_0 = Eq_x_2
    | Eq_x_1 != Eq_x_2
    | Eq_x_0 != Eq_x_1 ),
    theory(equality,[transitivity]) ).

cnf(equality_7,axiom,
    ( relation_dom(Eq_x_0) = relation_dom(Eq_y_0)
    | Eq_x_0 != Eq_y_0 ),
    theory(equality,[substitution_functions]) ).

cnf(equality_19,axiom,
    ( subset(Eq_y_0,Eq_y_1)
    | ~ subset(Eq_x_0,Eq_x_1)
    | Eq_x_1 != Eq_y_1
    | Eq_x_0 != Eq_y_0 ),
    theory(equality,[substitution_predicates]) ).

cnf(t1,plain,
    ( relation_rng(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12)
    | relation_dom(relation_composition(function_inverse(sK12),sK12)) != relation_rng(sK12) ),
    inference(start,[status(thm),parent(0:0)],[f_37_9]) ).

cnf(t2,plain,
    ( relation_dom(function_inverse(sK12)) != relation_rng(sK12)
    | relation_dom(relation_composition(function_inverse(sK12),sK12)) != relation_dom(function_inverse(sK12))
    | relation_dom(relation_composition(function_inverse(sK12),sK12)) = relation_rng(sK12) ),
    inference(extension,[status(thm),parent(t1:1)],[equality_3]) ).

cnf(t3,plain,
    $false,
    inference(connection,[status(thm),parent(t2:1)],[t2:1,t1:1]) ).

cnf(t4,plain,
    ( ~ relation(sK12)
    | ~ subset(relation_rng(function_inverse(sK12)),relation_dom(sK12))
    | ~ relation(function_inverse(sK12))
    | relation_dom(relation_composition(function_inverse(sK12),sK12)) = relation_dom(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t2:2)],[f_33_3]) ).

cnf(t5,plain,
    $false,
    inference(connection,[status(thm),parent(t4:1)],[t4:1,t2:2]) ).

cnf(t6,plain,
    ( ~ function(sK12)
    | ~ relation(sK12)
    | relation(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t4:2)],[f_5_3]) ).

cnf(t7,plain,
    $false,
    inference(connection,[status(thm),parent(t6:1)],[t6:1,t4:2]) ).

cnf(t8,plain,
    relation(sK12),
    inference(extension,[status(thm),parent(t6:2)],[f_37_6]) ).

cnf(t9,plain,
    $false,
    inference(connection,[status(thm),parent(t8:1)],[t8:1,t6:2]) ).

cnf(t10,plain,
    function(sK12),
    inference(extension,[status(thm),parent(t6:3)],[f_37_7]) ).

cnf(t11,plain,
    $false,
    inference(connection,[status(thm),parent(t10:1)],[t10:1,t6:3]) ).

cnf(t12,plain,
    ( relation_dom(sK12) != relation_dom(sK12)
    | ~ subset(relation_dom(sK12),relation_dom(sK12))
    | relation_dom(sK12) != relation_rng(function_inverse(sK12))
    | subset(relation_rng(function_inverse(sK12)),relation_dom(sK12)) ),
    inference(extension,[status(thm),parent(t4:3)],[equality_19]) ).

cnf(t13,plain,
    $false,
    inference(connection,[status(thm),parent(t12:1)],[t12:1,t4:3]) ).

cnf(t14,plain,
    ( ~ function(sK12)
    | ~ one_to_one(sK12)
    | ~ relation(sK12)
    | relation_dom(sK12) = relation_rng(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t12:2)],[f_36_4]) ).

cnf(t15,plain,
    $false,
    inference(connection,[status(thm),parent(t14:1)],[t14:1,t12:2]) ).

cnf(t16,plain,
    relation(sK12),
    inference(extension,[status(thm),parent(t14:2)],[f_37_6]) ).

cnf(t17,plain,
    $false,
    inference(connection,[status(thm),parent(t16:1)],[t16:1,t14:2]) ).

cnf(t18,plain,
    one_to_one(sK12),
    inference(extension,[status(thm),parent(t14:3)],[f_37_8]) ).

cnf(t19,plain,
    $false,
    inference(connection,[status(thm),parent(t18:1)],[t18:1,t14:3]) ).

cnf(t20,plain,
    function(sK12),
    inference(extension,[status(thm),parent(t14:4)],[f_37_7]) ).

cnf(t21,plain,
    $false,
    inference(connection,[status(thm),parent(t20:1)],[t20:1,t14:4]) ).

cnf(t22,plain,
    subset(relation_dom(sK12),relation_dom(sK12)),
    inference(extension,[status(thm),parent(t12:3)],[f_29_4]) ).

cnf(t23,plain,
    $false,
    inference(connection,[status(thm),parent(t22:1)],[t22:1,t12:3]) ).

cnf(t24,plain,
    ( sK12 != sK12
    | relation_dom(sK12) = relation_dom(sK12) ),
    inference(extension,[status(thm),parent(t12:4)],[equality_7]) ).

cnf(t25,plain,
    $false,
    inference(connection,[status(thm),parent(t24:1)],[t24:1,t12:4]) ).

cnf(t26,plain,
    sK12 = sK12,
    inference(extension,[status(thm),parent(t24:2)],[equality_1]) ).

cnf(t27,plain,
    $false,
    inference(connection,[status(thm),parent(t26:1)],[t26:1,t24:2]) ).

cnf(t28,plain,
    relation(sK12),
    inference(extension,[status(thm),parent(t4:4)],[f_37_6]) ).

cnf(t29,plain,
    $false,
    inference(connection,[status(thm),parent(t28:1)],[t28:1,t4:4]) ).

cnf(t30,plain,
    ( relation_rng(sK12) != relation_dom(function_inverse(sK12))
    | relation_dom(function_inverse(sK12)) = relation_rng(sK12) ),
    inference(extension,[status(thm),parent(t2:3)],[equality_2]) ).

cnf(t31,plain,
    $false,
    inference(connection,[status(thm),parent(t30:1)],[t30:1,t2:3]) ).

cnf(t32,plain,
    ( ~ function(sK12)
    | ~ one_to_one(sK12)
    | ~ relation(sK12)
    | relation_rng(sK12) = relation_dom(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t30:2)],[f_36_3]) ).

cnf(t33,plain,
    $false,
    inference(connection,[status(thm),parent(t32:1)],[t32:1,t30:2]) ).

cnf(t34,plain,
    relation(sK12),
    inference(extension,[status(thm),parent(t32:2)],[f_37_6]) ).

cnf(t35,plain,
    $false,
    inference(connection,[status(thm),parent(t34:1)],[t34:1,t32:2]) ).

cnf(t36,plain,
    one_to_one(sK12),
    inference(extension,[status(thm),parent(t32:3)],[f_37_8]) ).

cnf(t37,plain,
    $false,
    inference(connection,[status(thm),parent(t36:1)],[t36:1,t32:3]) ).

cnf(t38,plain,
    function(sK12),
    inference(extension,[status(thm),parent(t32:4)],[f_37_7]) ).

cnf(t39,plain,
    $false,
    inference(connection,[status(thm),parent(t38:1)],[t38:1,t32:4]) ).

cnf(t40,plain,
    ( ~ relation(function_inverse(sK12))
    | ~ subset(relation_dom(sK12),relation_rng(function_inverse(sK12)))
    | ~ relation(sK12)
    | relation_rng(relation_composition(function_inverse(sK12),sK12)) = relation_rng(sK12) ),
    inference(extension,[status(thm),parent(t1:2)],[f_34_3]) ).

cnf(t41,plain,
    $false,
    inference(connection,[status(thm),parent(t40:1)],[t40:1,t1:2]) ).

cnf(t42,plain,
    relation(sK12),
    inference(extension,[status(thm),parent(t40:2)],[f_37_6]) ).

cnf(t43,plain,
    $false,
    inference(connection,[status(thm),parent(t42:1)],[t42:1,t40:2]) ).

cnf(l21,lemma,
    relation(sK12),
    inference(lemma,[status(cth),parent(t40:2),below(t1:2)],[t40:2]) ).

cnf(t44,plain,
    ( relation_dom(sK12) != relation_rng(function_inverse(sK12))
    | ~ subset(relation_dom(sK12),relation_dom(sK12))
    | relation_dom(sK12) != relation_dom(sK12)
    | subset(relation_dom(sK12),relation_rng(function_inverse(sK12))) ),
    inference(extension,[status(thm),parent(t40:3)],[equality_19]) ).

cnf(t45,plain,
    $false,
    inference(connection,[status(thm),parent(t44:1)],[t44:1,t40:3]) ).

cnf(t46,plain,
    ( sK12 != sK12
    | relation_dom(sK12) = relation_dom(sK12) ),
    inference(extension,[status(thm),parent(t44:2)],[equality_7]) ).

cnf(t47,plain,
    $false,
    inference(connection,[status(thm),parent(t46:1)],[t46:1,t44:2]) ).

cnf(t48,plain,
    ( sK12 != sK12
    | sK12 = sK12 ),
    inference(extension,[status(thm),parent(t46:2)],[equality_2]) ).

cnf(t49,plain,
    $false,
    inference(connection,[status(thm),parent(t48:1)],[t48:1,t46:2]) ).

cnf(t50,plain,
    sK12 = sK12,
    inference(extension,[status(thm),parent(t48:2)],[equality_1]) ).

cnf(t51,plain,
    $false,
    inference(connection,[status(thm),parent(t50:1)],[t50:1,t48:2]) ).

cnf(t52,plain,
    subset(relation_dom(sK12),relation_dom(sK12)),
    inference(extension,[status(thm),parent(t44:3)],[f_29_4]) ).

cnf(t53,plain,
    $false,
    inference(connection,[status(thm),parent(t52:1)],[t52:1,t44:3]) ).

cnf(t54,plain,
    ( ~ function(sK12)
    | ~ one_to_one(sK12)
    | ~ relation(sK12)
    | relation_dom(sK12) = relation_rng(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t44:4)],[f_36_4]) ).

cnf(t55,plain,
    $false,
    inference(connection,[status(thm),parent(t54:1)],[t54:1,t44:4]) ).

cnf(t56,plain,
    relation(sK12),
    inference(lemma_extension,[status(thm),parent(t54:2)],[l21:1]) ).

cnf(t57,plain,
    $false,
    inference(connection,[status(thm),parent(t56:1)],[t56:1,t54:2]) ).

cnf(t58,plain,
    one_to_one(sK12),
    inference(extension,[status(thm),parent(t54:3)],[f_37_8]) ).

cnf(t59,plain,
    $false,
    inference(connection,[status(thm),parent(t58:1)],[t58:1,t54:3]) ).

cnf(t60,plain,
    function(sK12),
    inference(extension,[status(thm),parent(t54:4)],[f_37_7]) ).

cnf(t61,plain,
    $false,
    inference(connection,[status(thm),parent(t60:1)],[t60:1,t54:4]) ).

cnf(t62,plain,
    ( ~ function(sK12)
    | ~ relation(sK12)
    | relation(function_inverse(sK12)) ),
    inference(extension,[status(thm),parent(t40:4)],[f_5_3]) ).

cnf(t63,plain,
    $false,
    inference(connection,[status(thm),parent(t62:1)],[t62:1,t40:4]) ).

cnf(t64,plain,
    relation(sK12),
    inference(lemma_extension,[status(thm),parent(t62:2)],[l21:1]) ).

cnf(t65,plain,
    $false,
    inference(connection,[status(thm),parent(t64:1)],[t64:1,t62:2]) ).

cnf(t66,plain,
    function(sK12),
    inference(extension,[status(thm),parent(t62:3)],[f_37_7]) ).

cnf(t67,plain,
    $false,
    inference(connection,[status(thm),parent(t66:1)],[t66:1,t62:3]) ).


%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03  % Problem  : SEU026+1 : TPTP v9.3.1. Released v3.2.0.
% 0.00/0.03  This is a FOF_THM_RFO_SEQ problem
% 0.00/0.04  % Command  : /export/starexec/sandbox2/solver/bin/connect++ --verbosity 1 --no-colour --tptp-proof --schedule default --timeout 300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.09/0.35  % Computer : n018.cluster.edu
% 0.09/0.35  % Model    : x86_64 x86_64
% 0.09/0.35  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.09/0.35  % Memory   : 8046.5625MB
% 0.09/0.35  % OS       : Linux 6.8.0-71-generic
% 0.09/0.35  % CPULimit : 300
% 0.09/0.35  % WCLimit  : 300
% 0.09/0.35  % DateTime : Sat Sep 19 23:15:41 UTC 2026
% 0.09/0.35  % CPUTime  : 
% 3.27/3.54  % SZS status Theorem for theBenchmark
% 3.27/3.54  % SZS output start Proof for theBenchmark
% See solution above
%------------------------------------------------------------------------------