↑ Up

DT2H2X---1.9.5.THM-Ref.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : DT2H2X---1.9.5
% Problem  : SYO360^5 : TPTP v9.2.1. Released v4.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : /export/starexec/sandbox2/solver/bin/run_DT2H2X /export/starexec/sandbox2/benchmark/theBenchmark.p 300

% Computer : n015.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 Feb 25 09:54:02 AM UTC 2026

% Result   : Theorem 1.45s 1.29s
% Output   : Refutation 1.45s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   11
%            Number of leaves      :    1
% Syntax   : Number of formulae    :   14 (   8 unt;   0 typ;   0 def)
%            Number of atoms       :   26 (  25 equ;   0 cnn)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   88 (  10   ~;   0   |;   9   &;  66   @)
%                                         (   0 <=>;   3  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    6 (   3 avg)
%            Number of types       :    1 (   1 usr)
%            Number of type conns  :    7 (   7   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :    9 (   7 usr;   3 con; 0-2 aty)
%            Number of variables   :   21 (   0   ^;  21   !;   0   ?;  21   :)

% Comments : 
%------------------------------------------------------------------------------
thf(type_def_5,type,
    a: $tType ).

thf(func_def_0,type,
    a: $tType ).

thf(func_def_1,type,
    j: a > a ).

thf(func_def_2,type,
    g: ( a > a ) > a > a ).

thf(func_def_3,type,
    h: a > a ).

thf(func_def_4,type,
    f: ( a > a ) > a > a ).

thf(func_def_9,type,
    ph1: 
      !>[X0: $tType] : X0 ).

thf(func_def_10,type,
    sK2: a ).

thf(func_def_11,type,
    sK3: a ).

thf(f15,plain,
    $false,
    inference(subsumption_resolution,[status(thm)],[f14,f8]) ).

thf(f8,plain,
    ! [X2: a] :
      ( ( h @ X2 )
      = ( j @ X2 ) ),
    inference(cnf_transformation,[status(thm)],[f7]) ).

thf(f7,plain,
    ( ! [X0: a,X1: a > a] :
        ( ( g @ X1 @ X0 )
        = ( f @ X1 @ X0 ) )
    & ( ( f @ h )
     != ( g @ j ) )
    & ! [X2: a] :
        ( ( h @ X2 )
        = ( j @ X2 ) ) ),
    inference(rectify,[status(thm)],[f6]) ).

thf(f6,plain,
    ( ! [X1: a,X2: a > a] :
        ( ( f @ X2 @ X1 )
        = ( g @ X2 @ X1 ) )
    & ( ( f @ h )
     != ( g @ j ) )
    & ! [X0: a] :
        ( ( h @ X0 )
        = ( j @ X0 ) ) ),
    inference(flattening,[status(thm)],[f5]) ).

thf(f5,plain,
    ( ( ( f @ h )
     != ( g @ j ) )
    & ! [X0: a] :
        ( ( h @ X0 )
        = ( j @ X0 ) )
    & ! [X1: a,X2: a > a] :
        ( ( f @ X2 @ X1 )
        = ( g @ X2 @ X1 ) ) ),
    inference(ennf_transformation,[status(thm)],[f4]) ).

thf(f4,plain,
    ~ ( ( ! [X0: a] :
            ( ( h @ X0 )
            = ( j @ X0 ) )
        & ! [X1: a,X2: a > a] :
            ( ( f @ X2 @ X1 )
            = ( g @ X2 @ X1 ) ) )
     => ( ( f @ h )
        = ( g @ j ) ) ),
    inference(rectify,[status(thm)],[f2]) ).

thf(f2,negated_conjecture,
    ~ ( ( ! [X2: a] :
            ( ( h @ X2 )
            = ( j @ X2 ) )
        & ! [X1: a,X0: a > a] :
            ( ( f @ X0 @ X1 )
            = ( g @ X0 @ X1 ) ) )
     => ( ( f @ h )
        = ( g @ j ) ) ),
    inference(negated_conjecture,[status(cth)],[f1]) ).

thf(f1,conjecture,
    ( ( ! [X2: a] :
          ( ( h @ X2 )
          = ( j @ X2 ) )
      & ! [X1: a,X0: a > a] :
          ( ( f @ X0 @ X1 )
          = ( g @ X0 @ X1 ) ) )
   => ( ( f @ h )
      = ( g @ j ) ) ),
    file('/export/starexec/sandbox2/tmp/tmp.NGN5LuUnpA/DTF2THF_32552.p',cEDEC1) ).

thf(f14,plain,
    ( ( j @ sK3 )
   != ( h @ sK3 ) ),
    inference(negative_extensionality,[status(thm)],[f13]) ).

thf(f13,plain,
    h != j,
    inference(equality_resolution,[status(thm)],[f12]) ).

thf(f12,plain,
    ( ( g @ h @ sK2 )
   != ( g @ j @ sK2 ) ),
    inference(superposition,[status(thm)],[f11,f10]) ).

thf(f10,plain,
    ! [X0: a,X1: a > a] :
      ( ( g @ X1 @ X0 )
      = ( f @ X1 @ X0 ) ),
    inference(cnf_transformation,[status(thm)],[f7]) ).

thf(f11,plain,
    ( ( f @ h @ sK2 )
   != ( g @ j @ sK2 ) ),
    inference(negative_extensionality,[status(thm)],[f9]) ).

thf(f9,plain,
    ( ( f @ h )
   != ( g @ j ) ),
    inference(cnf_transformation,[status(thm)],[f7]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12  % Problem  : SYO360^5 : TPTP v9.2.1. Released v4.0.0.
% 0.12/0.13  % Command  : /export/starexec/sandbox2/solver/bin/run_DT2H2X /export/starexec/sandbox2/benchmark/theBenchmark.p 300
% 0.16/0.34  % Computer : n015.cluster.edu
% 0.16/0.34  % Model    : x86_64 x86_64
% 0.16/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.16/0.34  % Memory   : 8042.1875MB
% 0.16/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.16/0.34  % CPULimit : 300
% 0.16/0.34  % WCLimit  : 300
% 0.16/0.34  % DateTime : Tue Feb 24 14:28:46 EST 2026
% 0.16/0.34  % CPUTime  : 
% 0.16/0.34  Running /export/starexec/sandbox2/solver/bin/run_DT2H2X /export/starexec/sandbox2/benchmark/theBenchmark.p 300
% 0.30/0.46  ---- Original DTF file ---
% 0.30/0.46  thf(spec,logic,$$dhol).
% 0.30/0.46  %------------------------------------------------------------------------------
% 0.30/0.46  % File     : SYO360^5 : TPTP v9.2.1. Released v4.0.0.
% 0.30/0.46  % Domain   : Syntactic
% 0.30/0.46  % Problem  : TPS problem EDEC1
% 0.30/0.46  % Version  : Especial.
% 0.30/0.46  % English  : A version of EDEC from [Ben99] using = instead of LeibEq.
% 0.30/0.46  
% 0.30/0.46  % Refs     : [Ben99] Benzmueller (1999), Equality and Extensionality in Hig
% 0.30/0.46  %          : [Bro09] Brown (2009), Email to Geoff Sutcliffe
% 0.30/0.46  % Source   : [Bro09]
% 0.30/0.46  % Names    : tps_0290 [Bro09]
% 0.30/0.46  %          : EDEC1 [TPS]
% 0.30/0.46  
% 0.30/0.46  % Status   : Theorem
% 0.30/0.46  % Rating   : 0.00 v8.2.0, 0.08 v8.1.0, 0.09 v7.5.0, 0.00 v7.4.0, 0.11 v7.3.0, 0.22 v7.2.0, 0.12 v7.1.0, 0.25 v7.0.0, 0.14 v6.4.0, 0.17 v6.3.0, 0.20 v6.2.0, 0.29 v6.1.0, 0.14 v5.5.0, 0.17 v5.4.0, 0.40 v5.3.0, 0.60 v4.1.0, 0.67 v4.0.1, 1.00 v4.0.0
% 0.30/0.46  % Syntax   : Number of formulae    :    6 (   0 unt;   5 typ;   0 def)
% 0.30/0.46  %            Number of atoms       :    3 (   3 equ;   0 cnn)
% 0.30/0.46  %            Maximal formula atoms :    3 (   3 avg)
% 0.30/0.46  %            Number of connectives :   10 (   0   ~;   0   |;   1   &;   8   @)
% 0.30/0.46  %                                         (   0 <=>;   1  =>;   0  <=;   0 <~>)
% 0.30/0.46  %            Maximal formula depth :    5 (   5 avg)
% 0.30/0.46  %            Number of types       :    1 (   1 usr)
% 0.30/0.46  %            Number of type conns  :    9 (   9   >;   0   *;   0   +;   0  <<)
% 0.30/0.46  %            Number of symbols     :    5 (   4 usr;   0 con; 1-2 aty)
% 0.30/0.46  %            Number of variables   :    3 (   0   ^;   3   !;   0   ?;   3   :)
% 0.30/0.46  % SPC      : TH0_THM_EQU_NAR
% 0.30/0.46  
% 0.30/0.46  % Comments : This problem is from the TPS library. Copyright (c) 2009 The TPS
% 0.30/0.46  %            project in the Department of Mathematical Sciences at Carnegie
% 0.30/0.46  %            Mellon University. Distributed under the Creative Commons copyleft
% 0.30/0.46  %            license: http://creativecommons.org/licenses/by-sa/3.0/
% 0.30/0.46  %------------------------------------------------------------------------------
% 0.30/0.46  thf(a_type,type,
% 0.30/0.46      a: $tType ).
% 0.30/0.46  
% 0.30/0.46  thf(j,type,
% 0.30/0.46      j: a > a ).
% 0.30/0.46  
% 0.30/0.46  thf(g,type,
% 0.30/0.46      g: ( a > a ) > a > a ).
% 0.30/0.46  
% 0.30/0.46  thf(h,type,
% 0.30/0.46      h: a > a ).
% 0.30/0.46  
% 0.30/0.46  thf(f,type,
% 0.30/0.46      f: ( a > a ) > a > a ).
% 0.30/0.46  
% 0.30/0.46  thf(cEDEC1,conjecture,
% 0.30/0.46      ( ( ! [X: a > a,Y: a] :
% 0.30/0.46            ( ( f @ X @ Y )
% 0.30/0.46            = ( g @ X @ Y ) )
% 0.30/0.46        & ! [Z: a] :
% 0.30/0.46            ( ( h @ Z )
% 0.30/0.46            = ( j @ Z ) ) )
% 0.30/0.46     => ( ( f @ h )
% 0.30/0.46        = ( g @ j ) ) ) ).
% 0.30/0.46  
% 0.30/0.46  %------------------------------------------------------------------------------
% 0.30/0.46  ------------------------
% 1.45/1.26  ---- Embedded in THF ---
% 1.45/1.26  %%% This output was generated by embedproblem, version 1.9.5 (library version 1.9).
% 1.45/1.26  %%% Generated on Tue Feb 24 14:28:47 EST 2026
% 1.45/1.26  %%% using '$$dhol' embedding, version 1.3.0.
% 1.45/1.26  %%% Logic specification used:
% 1.45/1.26  %%% thf(spec, logic, $$dhol).
% 1.45/1.26  
% 1.45/1.26  % SZS output start ListOfTHF for /export/starexec/sandbox2/tmp/tmp.NGN5LuUnpA/DTF2DTF32552.p
% See solution above
% 1.45/1.26  ------------------------
% 1.45/1.27  ---- Cleaned THF ---
% 1.45/1.27  thf(a_type,type,
% 1.45/1.27      a: $tType ).
% 1.45/1.27  
% 1.45/1.27  thf(j,type,
% 1.45/1.27      j: a > a ).
% 1.45/1.27  
% 1.45/1.27  thf(g,type,
% 1.45/1.27      g: ( a > a ) > a > a ).
% 1.45/1.27  
% 1.45/1.27  thf(h,type,
% 1.45/1.27      h: a > a ).
% 1.45/1.27  
% 1.45/1.27  thf(f,type,
% 1.45/1.27      f: ( a > a ) > a > a ).
% 1.45/1.27  
% 1.45/1.27  thf(cEDEC1,conjecture,
% 1.45/1.27      ( ( ! [X: a > a,Y: a] :
% 1.45/1.27            ( ( f @ X @ Y )
% 1.45/1.27            = ( g @ X @ Y ) )
% 1.45/1.27        & ! [Z: a] :
% 1.45/1.27            ( ( h @ Z )
% 1.45/1.27            = ( j @ Z ) ) )
% 1.45/1.27     => ( ( f @ h )
% 1.45/1.27        = ( g @ j ) ) ) ).
% 1.45/1.27  ------------------------
% 1.45/1.28  % (32762)lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/4Mi)
% 1.45/1.28  % (32762)Refutation not found, incomplete strategy
% 1.45/1.28  % (32762)------------------------------
% 1.45/1.28  % (32762)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.28  % (32762)Termination reason: Refutation not found, incomplete strategy
% 1.45/1.28  
% 1.45/1.28  
% 1.45/1.28  % (32762)Memory used [KB]: 5500
% 1.45/1.28  % (32762)Time elapsed: 0.002 s
% 1.45/1.28  % (32762)Instructions burned: 1 (million)
% 1.45/1.28  % (32762)------------------------------
% 1.45/1.28  % (32762)------------------------------
% 1.45/1.29  % (32761)lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=183:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/183Mi)
% 1.45/1.29  % (32763)dis+1010_1:1_au=on:cbe=off:chr=on:fsr=off:hfsq=on:nm=64:sos=theory:sp=weighted_frequency:i=27:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/27Mi)
% 1.45/1.29  % (32764)lrs+10_1:1_au=on:inj=on:i=2:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/2Mi)
% 1.45/1.29  % (32766)lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/275Mi)
% 1.45/1.29  % (32767)lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=18:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/18Mi)
% 1.45/1.29  % (32765)lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=2:si=on:rtra=on_0 on DTF2THF_32552 for (3000ds/2Mi)
% 1.45/1.29  % (32761)First to succeed.
% 1.45/1.29  % (32764)Instruction limit reached!
% 1.45/1.29  % (32764)------------------------------
% 1.45/1.29  % (32764)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.29  % (32764)Termination reason: Unknown
% 1.45/1.29  % (32764)Termination phase: Saturation
% 1.45/1.29  
% 1.45/1.29  % (32764)Memory used [KB]: 5500
% 1.45/1.29  % (32764)Time elapsed: 0.004 s
% 1.45/1.29  % (32764)Instructions burned: 2 (million)
% 1.45/1.29  % (32764)------------------------------
% 1.45/1.29  % (32764)------------------------------
% 1.45/1.29  % (32765)Instruction limit reached!
% 1.45/1.29  % (32765)------------------------------
% 1.45/1.29  % (32765)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.29  % (32765)Termination reason: Unknown
% 1.45/1.29  % (32765)Termination phase: Saturation
% 1.45/1.29  
% 1.45/1.29  % (32765)Memory used [KB]: 5500
% 1.45/1.29  % (32765)Time elapsed: 0.004 s
% 1.45/1.29  % (32765)Instructions burned: 2 (million)
% 1.45/1.29  % (32765)------------------------------
% 1.45/1.29  % (32765)------------------------------
% 1.45/1.29  % (32766)Refutation not found, incomplete strategy
% 1.45/1.29  % (32766)------------------------------
% 1.45/1.29  % (32766)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.29  % (32766)Termination reason: Refutation not found, incomplete strategy
% 1.45/1.29  
% 1.45/1.29  
% 1.45/1.29  % (32766)Memory used [KB]: 5500
% 1.45/1.29  % (32766)Time elapsed: 0.004 s
% 1.45/1.29  % (32766)Instructions burned: 1 (million)
% 1.45/1.29  % (32766)------------------------------
% 1.45/1.29  % (32766)------------------------------
% 1.45/1.29  % (32763)Refutation not found, incomplete strategy
% 1.45/1.29  % (32763)------------------------------
% 1.45/1.29  % (32763)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.29  % (32763)Termination reason: Refutation not found, incomplete strategy
% 1.45/1.29  
% 1.45/1.29  
% 1.45/1.29  % (32763)Memory used [KB]: 5500
% 1.45/1.29  % (32763)Time elapsed: 0.004 s
% 1.45/1.29  % (32763)Instructions burned: 2 (million)
% 1.45/1.29  % (32763)------------------------------
% 1.45/1.29  % (32763)------------------------------
% 1.45/1.29  % (32767)Also succeeded, but the first one will report.
% 1.45/1.29  % (301)lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:inj=on:i=3:si=on:rtra=on_0 on DTF2THF_32552 for (2999ds/3Mi)
% 1.45/1.29  % (32761)Refutation found. Thanks to Tanya!
% 1.45/1.29  % SZS status Theorem for DTF2THF_32552
% 1.45/1.29  % SZS output start Proof for DTF2THF_32552
% 1.45/1.29  thf(type_def_5, type, a: $tType).
% 1.45/1.29  thf(func_def_0, type, a: $tType).
% 1.45/1.29  thf(func_def_1, type, j: a > a).
% 1.45/1.29  thf(func_def_2, type, g: (a > a) > a > a).
% 1.45/1.29  thf(func_def_3, type, h: a > a).
% 1.45/1.29  thf(func_def_4, type, f: (a > a) > a > a).
% 1.45/1.29  thf(func_def_9, type, ph1: !>[X0: $tType]:(X0)).
% 1.45/1.29  thf(func_def_10, type, sK2: a).
% 1.45/1.29  thf(func_def_11, type, sK3: a).
% 1.45/1.29  thf(f15,plain,(
% 1.45/1.29    $false),
% 1.45/1.29    inference(subsumption_resolution,[status(thm)],[f14,f8])).
% 1.45/1.29  thf(f8,plain,(
% 1.45/1.29    ( ! [X2 : a] : (((h @ X2) = (j @ X2))) )),
% 1.45/1.29    inference(cnf_transformation,[status(thm)],[f7])).
% 1.45/1.29  thf(f7,plain,(
% 1.45/1.29    ! [X0 : a,X1 : a > a] : ((g @ X1 @ X0) = (f @ X1 @ X0)) & ((f @ h) != (g @ j)) & ! [X2 : a] : ((h @ X2) = (j @ X2))),
% 1.45/1.29    inference(rectify,[status(thm)],[f6])).
% 1.45/1.29  thf(f6,plain,(
% 1.45/1.29    ! [X1 : a,X2 : a > a] : ((f @ X2 @ X1) = (g @ X2 @ X1)) & ((f @ h) != (g @ j)) & ! [X0 : a] : ((h @ X0) = (j @ X0))),
% 1.45/1.29    inference(flattening,[status(thm)],[f5])).
% 1.45/1.29  thf(f5,plain,(
% 1.45/1.29    ((f @ h) != (g @ j)) & (! [X0 : a] : ((h @ X0) = (j @ X0)) & ! [X1 : a,X2 : a > a] : ((f @ X2 @ X1) = (g @ X2 @ X1)))),
% 1.45/1.29    inference(ennf_transformation,[status(thm)],[f4])).
% 1.45/1.29  thf(f4,plain,(
% 1.45/1.29    ~((! [X0 : a] : ((h @ X0) = (j @ X0)) & ! [X1 : a,X2 : a > a] : ((f @ X2 @ X1) = (g @ X2 @ X1))) => ((f @ h) = (g @ j)))),
% 1.45/1.29    inference(rectify,[status(thm)],[f2])).
% 1.45/1.29  thf(f2,negated_conjecture,(
% 1.45/1.29    ~((! [X2 : a] : ((h @ X2) = (j @ X2)) & ! [X1 : a,X0 : a > a] : ((f @ X0 @ X1) = (g @ X0 @ X1))) => ((f @ h) = (g @ j)))),
% 1.45/1.29    inference(negated_conjecture,[status(cth)],[f1])).
% 1.45/1.29  thf(f1,conjecture,(
% 1.45/1.29    (! [X2 : a] : ((h @ X2) = (j @ X2)) & ! [X1 : a,X0 : a > a] : ((f @ X0 @ X1) = (g @ X0 @ X1))) => ((f @ h) = (g @ j))),
% 1.45/1.29    file('/export/starexec/sandbox2/tmp/tmp.NGN5LuUnpA/DTF2THF_32552.p',cEDEC1)).
% 1.45/1.29  thf(f14,plain,(
% 1.45/1.29    ((j @ sK3) != (h @ sK3))),
% 1.45/1.29    inference(negative_extensionality,[status(thm)],[f13])).
% 1.45/1.29  thf(f13,plain,(
% 1.45/1.29    (h != j)),
% 1.45/1.29    inference(equality_resolution,[status(thm)],[f12])).
% 1.45/1.29  thf(f12,plain,(
% 1.45/1.29    ((g @ h @ sK2) != (g @ j @ sK2))),
% 1.45/1.29    inference(superposition,[status(thm)],[f11,f10])).
% 1.45/1.29  thf(f10,plain,(
% 1.45/1.29    ( ! [X0 : a,X1 : a > a] : (((g @ X1 @ X0) = (f @ X1 @ X0))) )),
% 1.45/1.29    inference(cnf_transformation,[status(thm)],[f7])).
% 1.45/1.29  thf(f11,plain,(
% 1.45/1.29    ((f @ h @ sK2) != (g @ j @ sK2))),
% 1.45/1.29    inference(negative_extensionality,[status(thm)],[f9])).
% 1.45/1.29  thf(f9,plain,(
% 1.45/1.29    ((f @ h) != (g @ j))),
% 1.45/1.29    inference(cnf_transformation,[status(thm)],[f7])).
% 1.45/1.29  % SZS output end Proof for DTF2THF_32552
% 1.45/1.29  % (32761)------------------------------
% 1.45/1.29  % (32761)Version: Vampire 4.8 (commit 7b44b1c2f on 2025-07-15 09:50:17 +0100)
% 1.45/1.29  % (32761)Termination reason: Refutation
% 1.45/1.29  
% 1.45/1.29  % (32761)Memory used [KB]: 5500
% 1.45/1.29  % (32761)Time elapsed: 0.004 s
% 1.45/1.29  % (32761)Instructions burned: 2 (million)
% 1.45/1.29  % (32761)------------------------------
% 1.45/1.29  % (32761)------------------------------
% 1.45/1.29  % (32760)Success in time 0.019 s
%------------------------------------------------------------------------------