↑ Up

Beagle---0.9.52.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : Beagle---0.9.52
% Problem  : SEU244+1 : TPTP v9.0.0. Released v3.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : java -Dfile.encoding=UTF-8 -Xms512M -Xmx4G -Xss10M -jar /export/starexec/sandbox2/solver/bin/beagle.jar -auto -q -proof -print tff -smtsolver /export/starexec/sandbox2/solver/bin/cvc4-1.4-x86_64-linux-opt -liasolver cooper -t %d %s

% Computer : n019.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  : 300s
% DateTime : Wed Apr  9 08:53:22 PM UTC 2025

% Result   : Theorem 3.71s 1.91s
% Output   : CNFRefutation 3.98s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   10
%            Number of leaves      :    8
% Syntax   : Number of formulae    :   89 (  31 unt;   0 typ;   0 def)
%            Number of atoms       :  207 (   0 equ)
%            Maximal formula atoms :    7 (   2 avg)
%            Number of connectives :  231 ( 113   ~;  94   |;   8   &)
%                                         (   8 <=>;   8  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   10 (   3 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :    0 (   0   >;   0   *;   0   +;   0  <<)
%            Number of predicates  :   14 (  13 usr;   1 prp; 0-2 aty)
%            Number of functors    :    5 (   5 usr;   1 con; 0-2 aty)
%            Number of variables   :   37 (  37   !;   0   ?;   0   :)

% Comments : 
%------------------------------------------------------------------------------
%$ well_orders > is_well_founded_in > is_transitive_in > is_reflexive_in > is_connected_in > is_antisymmetric_in > well_ordering > well_founded_relation > transitive > relation > reflexive > connected > antisymmetric > set_union2 > #nlpp > relation_rng > relation_field > relation_dom > #skF_1

%Foreground sorts:

%Background operators:

%Foreground operators:
tff(well_ordering,type,
    well_ordering: $i > $o ).

tff(antisymmetric,type,
    antisymmetric: $i > $o ).

tff(relation_field,type,
    relation_field: $i > $i ).

tff(relation,type,
    relation: $i > $o ).

tff(connected,type,
    connected: $i > $o ).

tff(is_reflexive_in,type,
    is_reflexive_in: ( $i * $i ) > $o ).

tff(well_founded_relation,type,
    well_founded_relation: $i > $o ).

tff(is_well_founded_in,type,
    is_well_founded_in: ( $i * $i ) > $o ).

tff('#skF_1',type,
    '#skF_1': $i ).

tff(well_orders,type,
    well_orders: ( $i * $i ) > $o ).

tff(relation_dom,type,
    relation_dom: $i > $i ).

tff(transitive,type,
    transitive: $i > $o ).

tff(is_connected_in,type,
    is_connected_in: ( $i * $i ) > $o ).

tff(set_union2,type,
    set_union2: ( $i * $i ) > $i ).

tff(reflexive,type,
    reflexive: $i > $o ).

tff(relation_rng,type,
    relation_rng: $i > $i ).

tff(is_transitive_in,type,
    is_transitive_in: ( $i * $i ) > $o ).

tff(is_antisymmetric_in,type,
    is_antisymmetric_in: ( $i * $i ) > $o ).

tff(f_101,negated_conjecture,
    ~ ! [A] :
        ( relation(A)
       => ( well_orders(A,relation_field(A))
        <=> well_ordering(A) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t8_wellord1) ).

tff(f_60,axiom,
    ! [A] :
      ( relation(A)
     => ( well_ordering(A)
      <=> ( reflexive(A)
          & transitive(A)
          & antisymmetric(A)
          & connected(A)
          & well_founded_relation(A) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d4_wellord1) ).

tff(f_34,axiom,
    ! [A] :
      ( relation(A)
     => ( antisymmetric(A)
      <=> is_antisymmetric_in(A,relation_field(A)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d12_relat_2) ).

tff(f_40,axiom,
    ! [A] :
      ( relation(A)
     => ( connected(A)
      <=> is_connected_in(A,relation_field(A)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d14_relat_2) ).

tff(f_46,axiom,
    ! [A] :
      ( relation(A)
     => ( transitive(A)
      <=> is_transitive_in(A,relation_field(A)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d16_relat_2) ).

tff(f_94,axiom,
    ! [A] :
      ( relation(A)
     => ( well_founded_relation(A)
      <=> is_well_founded_in(A,relation_field(A)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t5_wellord1) ).

tff(f_85,axiom,
    ! [A] :
      ( relation(A)
     => ( reflexive(A)
      <=> is_reflexive_in(A,relation_field(A)) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d9_relat_2) ).

tff(f_75,axiom,
    ! [A] :
      ( relation(A)
     => ! [B] :
          ( well_orders(A,B)
        <=> ( is_reflexive_in(A,B)
            & is_transitive_in(A,B)
            & is_antisymmetric_in(A,B)
            & is_connected_in(A,B)
            & is_well_founded_in(A,B) ) ) ),
    file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d5_wellord1) ).

tff(c_60,plain,
    relation('#skF_1'),
    inference(cnfTransformation,[status(thm)],[f_101]) ).

tff(c_62,plain,
    ( ~ well_ordering('#skF_1')
    | ~ well_orders('#skF_1',relation_field('#skF_1')) ),
    inference(cnfTransformation,[status(thm)],[f_101]) ).

tff(c_78,plain,
    ~ well_orders('#skF_1',relation_field('#skF_1')),
    inference(splitLeft,[status(thm)],[c_62]) ).

tff(c_68,plain,
    ( well_orders('#skF_1',relation_field('#skF_1'))
    | well_ordering('#skF_1') ),
    inference(cnfTransformation,[status(thm)],[f_101]) ).

tff(c_115,plain,
    well_ordering('#skF_1'),
    inference(negUnitSimplification,[status(thm)],[c_78,c_68]) ).

tff(c_22,plain,
    ! [A_6] :
      ( antisymmetric(A_6)
      | ~ well_ordering(A_6)
      | ~ relation(A_6) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_121,plain,
    ( antisymmetric('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_115,c_22]) ).

tff(c_130,plain,
    antisymmetric('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_121]) ).

tff(c_6,plain,
    ! [A_3] :
      ( is_antisymmetric_in(A_3,relation_field(A_3))
      | ~ antisymmetric(A_3)
      | ~ relation(A_3) ),
    inference(cnfTransformation,[status(thm)],[f_34]) ).

tff(c_20,plain,
    ! [A_6] :
      ( connected(A_6)
      | ~ well_ordering(A_6)
      | ~ relation(A_6) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_118,plain,
    ( connected('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_115,c_20]) ).

tff(c_127,plain,
    connected('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_118]) ).

tff(c_10,plain,
    ! [A_4] :
      ( is_connected_in(A_4,relation_field(A_4))
      | ~ connected(A_4)
      | ~ relation(A_4) ),
    inference(cnfTransformation,[status(thm)],[f_40]) ).

tff(c_24,plain,
    ! [A_6] :
      ( transitive(A_6)
      | ~ well_ordering(A_6)
      | ~ relation(A_6) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_124,plain,
    ( transitive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_115,c_24]) ).

tff(c_133,plain,
    transitive('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_124]) ).

tff(c_14,plain,
    ! [A_5] :
      ( is_transitive_in(A_5,relation_field(A_5))
      | ~ transitive(A_5)
      | ~ relation(A_5) ),
    inference(cnfTransformation,[status(thm)],[f_46]) ).

tff(c_141,plain,
    ! [A_22] :
      ( well_founded_relation(A_22)
      | ~ well_ordering(A_22)
      | ~ relation(A_22) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_144,plain,
    ( well_founded_relation('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_115,c_141]) ).

tff(c_147,plain,
    well_founded_relation('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_144]) ).

tff(c_58,plain,
    ! [A_14] :
      ( is_well_founded_in(A_14,relation_field(A_14))
      | ~ well_founded_relation(A_14)
      | ~ relation(A_14) ),
    inference(cnfTransformation,[status(thm)],[f_94]) ).

tff(c_134,plain,
    ! [A_21] :
      ( reflexive(A_21)
      | ~ well_ordering(A_21)
      | ~ relation(A_21) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_137,plain,
    ( reflexive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_115,c_134]) ).

tff(c_140,plain,
    reflexive('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_137]) ).

tff(c_44,plain,
    ! [A_11] :
      ( is_reflexive_in(A_11,relation_field(A_11))
      | ~ reflexive(A_11)
      | ~ relation(A_11) ),
    inference(cnfTransformation,[status(thm)],[f_85]) ).

tff(c_213,plain,
    ! [A_45,B_46] :
      ( well_orders(A_45,B_46)
      | ~ is_well_founded_in(A_45,B_46)
      | ~ is_connected_in(A_45,B_46)
      | ~ is_antisymmetric_in(A_45,B_46)
      | ~ is_transitive_in(A_45,B_46)
      | ~ is_reflexive_in(A_45,B_46)
      | ~ relation(A_45) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_231,plain,
    ( ~ is_well_founded_in('#skF_1',relation_field('#skF_1'))
    | ~ is_connected_in('#skF_1',relation_field('#skF_1'))
    | ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ is_transitive_in('#skF_1',relation_field('#skF_1'))
    | ~ is_reflexive_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_213,c_78]) ).

tff(c_239,plain,
    ( ~ is_well_founded_in('#skF_1',relation_field('#skF_1'))
    | ~ is_connected_in('#skF_1',relation_field('#skF_1'))
    | ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ is_transitive_in('#skF_1',relation_field('#skF_1'))
    | ~ is_reflexive_in('#skF_1',relation_field('#skF_1')) ),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_231]) ).

tff(c_240,plain,
    ~ is_reflexive_in('#skF_1',relation_field('#skF_1')),
    inference(splitLeft,[status(thm)],[c_239]) ).

tff(c_243,plain,
    ( ~ reflexive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_44,c_240]) ).

tff(c_247,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_140,c_243]) ).

tff(c_248,plain,
    ( ~ is_transitive_in('#skF_1',relation_field('#skF_1'))
    | ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ is_connected_in('#skF_1',relation_field('#skF_1'))
    | ~ is_well_founded_in('#skF_1',relation_field('#skF_1')) ),
    inference(splitRight,[status(thm)],[c_239]) ).

tff(c_256,plain,
    ~ is_well_founded_in('#skF_1',relation_field('#skF_1')),
    inference(splitLeft,[status(thm)],[c_248]) ).

tff(c_259,plain,
    ( ~ well_founded_relation('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_58,c_256]) ).

tff(c_263,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_147,c_259]) ).

tff(c_264,plain,
    ( ~ is_connected_in('#skF_1',relation_field('#skF_1'))
    | ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ is_transitive_in('#skF_1',relation_field('#skF_1')) ),
    inference(splitRight,[status(thm)],[c_248]) ).

tff(c_272,plain,
    ~ is_transitive_in('#skF_1',relation_field('#skF_1')),
    inference(splitLeft,[status(thm)],[c_264]) ).

tff(c_275,plain,
    ( ~ transitive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_14,c_272]) ).

tff(c_279,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_133,c_275]) ).

tff(c_280,plain,
    ( ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ is_connected_in('#skF_1',relation_field('#skF_1')) ),
    inference(splitRight,[status(thm)],[c_264]) ).

tff(c_288,plain,
    ~ is_connected_in('#skF_1',relation_field('#skF_1')),
    inference(splitLeft,[status(thm)],[c_280]) ).

tff(c_291,plain,
    ( ~ connected('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_10,c_288]) ).

tff(c_295,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_127,c_291]) ).

tff(c_296,plain,
    ~ is_antisymmetric_in('#skF_1',relation_field('#skF_1')),
    inference(splitRight,[status(thm)],[c_280]) ).

tff(c_300,plain,
    ( ~ antisymmetric('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_6,c_296]) ).

tff(c_304,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_130,c_300]) ).

tff(c_306,plain,
    well_orders('#skF_1',relation_field('#skF_1')),
    inference(splitRight,[status(thm)],[c_62]) ).

tff(c_349,plain,
    ! [A_56,B_57] :
      ( is_reflexive_in(A_56,B_57)
      | ~ well_orders(A_56,B_57)
      | ~ relation(A_56) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_352,plain,
    ( is_reflexive_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_306,c_349]) ).

tff(c_355,plain,
    is_reflexive_in('#skF_1',relation_field('#skF_1')),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_352]) ).

tff(c_431,plain,
    ! [A_73] :
      ( reflexive(A_73)
      | ~ is_reflexive_in(A_73,relation_field(A_73))
      | ~ relation(A_73) ),
    inference(cnfTransformation,[status(thm)],[f_85]) ).

tff(c_434,plain,
    ( reflexive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_355,c_431]) ).

tff(c_440,plain,
    reflexive('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_434]) ).

tff(c_418,plain,
    ! [A_71,B_72] :
      ( is_transitive_in(A_71,B_72)
      | ~ well_orders(A_71,B_72)
      | ~ relation(A_71) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_421,plain,
    ( is_transitive_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_306,c_418]) ).

tff(c_424,plain,
    is_transitive_in('#skF_1',relation_field('#skF_1')),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_421]) ).

tff(c_12,plain,
    ! [A_5] :
      ( transitive(A_5)
      | ~ is_transitive_in(A_5,relation_field(A_5))
      | ~ relation(A_5) ),
    inference(cnfTransformation,[status(thm)],[f_46]) ).

tff(c_427,plain,
    ( transitive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_424,c_12]) ).

tff(c_430,plain,
    transitive('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_427]) ).

tff(c_388,plain,
    ! [A_64,B_65] :
      ( is_antisymmetric_in(A_64,B_65)
      | ~ well_orders(A_64,B_65)
      | ~ relation(A_64) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_391,plain,
    ( is_antisymmetric_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_306,c_388]) ).

tff(c_394,plain,
    is_antisymmetric_in('#skF_1',relation_field('#skF_1')),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_391]) ).

tff(c_395,plain,
    ! [A_66] :
      ( antisymmetric(A_66)
      | ~ is_antisymmetric_in(A_66,relation_field(A_66))
      | ~ relation(A_66) ),
    inference(cnfTransformation,[status(thm)],[f_34]) ).

tff(c_398,plain,
    ( antisymmetric('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_394,c_395]) ).

tff(c_401,plain,
    antisymmetric('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_398]) ).

tff(c_356,plain,
    ! [A_58,B_59] :
      ( is_connected_in(A_58,B_59)
      | ~ well_orders(A_58,B_59)
      | ~ relation(A_58) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_359,plain,
    ( is_connected_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_306,c_356]) ).

tff(c_362,plain,
    is_connected_in('#skF_1',relation_field('#skF_1')),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_359]) ).

tff(c_377,plain,
    ! [A_63] :
      ( connected(A_63)
      | ~ is_connected_in(A_63,relation_field(A_63))
      | ~ relation(A_63) ),
    inference(cnfTransformation,[status(thm)],[f_40]) ).

tff(c_383,plain,
    ( connected('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_362,c_377]) ).

tff(c_387,plain,
    connected('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_383]) ).

tff(c_363,plain,
    ! [A_60,B_61] :
      ( is_well_founded_in(A_60,B_61)
      | ~ well_orders(A_60,B_61)
      | ~ relation(A_60) ),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_366,plain,
    ( is_well_founded_in('#skF_1',relation_field('#skF_1'))
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_306,c_363]) ).

tff(c_369,plain,
    is_well_founded_in('#skF_1',relation_field('#skF_1')),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_366]) ).

tff(c_56,plain,
    ! [A_14] :
      ( well_founded_relation(A_14)
      | ~ is_well_founded_in(A_14,relation_field(A_14))
      | ~ relation(A_14) ),
    inference(cnfTransformation,[status(thm)],[f_94]) ).

tff(c_372,plain,
    ( well_founded_relation('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_369,c_56]) ).

tff(c_375,plain,
    well_founded_relation('#skF_1'),
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_372]) ).

tff(c_451,plain,
    ! [A_75] :
      ( well_ordering(A_75)
      | ~ well_founded_relation(A_75)
      | ~ connected(A_75)
      | ~ antisymmetric(A_75)
      | ~ transitive(A_75)
      | ~ reflexive(A_75)
      | ~ relation(A_75) ),
    inference(cnfTransformation,[status(thm)],[f_60]) ).

tff(c_305,plain,
    ~ well_ordering('#skF_1'),
    inference(splitRight,[status(thm)],[c_62]) ).

tff(c_469,plain,
    ( ~ well_founded_relation('#skF_1')
    | ~ connected('#skF_1')
    | ~ antisymmetric('#skF_1')
    | ~ transitive('#skF_1')
    | ~ reflexive('#skF_1')
    | ~ relation('#skF_1') ),
    inference(resolution,[status(thm)],[c_451,c_305]) ).

tff(c_478,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_60,c_440,c_430,c_401,c_387,c_375,c_469]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.04/0.12  % Problem  : SEU244+1 : TPTP v9.0.0. Released v3.3.0.
% 0.04/0.13  % Command  : java -Dfile.encoding=UTF-8 -Xms512M -Xmx4G -Xss10M -jar /export/starexec/sandbox2/solver/bin/beagle.jar -auto -q -proof -print tff -smtsolver /export/starexec/sandbox2/solver/bin/cvc4-1.4-x86_64-linux-opt -liasolver cooper -t %d %s
% 0.14/0.34  % Computer : n019.cluster.edu
% 0.14/0.34  % Model    : x86_64 x86_64
% 0.14/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.34  % Memory   : 8042.1875MB
% 0.14/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.34  % CPULimit : 300
% 0.14/0.34  % WCLimit  : 300
% 0.14/0.34  % DateTime : Tue Apr  8 22:29:32 EDT 2025
% 0.14/0.34  % CPUTime  : 
% 3.71/1.91  % SZS status Theorem for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 3.98/1.92  
% 3.98/1.92  % SZS output start CNFRefutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% See solution above
%------------------------------------------------------------------------------