TSTP Solution File: SYN180-1 by Beagle---0.9.51

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Beagle---0.9.51
% Problem  : SYN180-1 : TPTP v8.1.2. Released v1.1.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 : n004.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 : Tue Aug 22 11:09:51 EDT 2023

% Result   : Unsatisfiable 147.37s 130.22s
% Output   : CNFRefutation 147.66s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   13
%            Number of leaves      :   78
% Syntax   : Number of formulae    :  139 (  43 unt;  53 typ;   0 def)
%            Number of atoms       :  160 (   0 equ)
%            Maximal formula atoms :    5 (   1 avg)
%            Number of connectives :  154 (  80   ~;  74   |;   0   &)
%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   10 (   4 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of types       :    2 (   0 usr)
%            Number of type conns  :   90 (  48   >;  42   *;   0   +;   0  <<)
%            Number of predicates  :   49 (  48 usr;   1 prp; 0-3 aty)
%            Number of functors    :    5 (   5 usr;   5 con; 0-0 aty)
%            Number of variables   :  121 (; 121   !;   0   ?;   0   :)

% Comments : 
%------------------------------------------------------------------------------
%$ r3 > q2 > q1 > p5 > p4 > p3 > p2 > p1 > n1 > m3 > m1 > m0 > k3 > s3 > r5 > q5 > q4 > q3 > q0 > p0 > n5 > n4 > n0 > m5 > m4 > l3 > l2 > l1 > k2 > s5 > s4 > s2 > s1 > s0 > r4 > r2 > r1 > r0 > n3 > n2 > m2 > l5 > l4 > l0 > k5 > k4 > k1 > k0 > #nlpp > e > d > c > b > a

%Foreground sorts:

%Background operators:

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

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

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

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

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

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

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

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

tff(a,type,
    a: $i ).

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

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

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

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

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

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

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

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

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

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

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

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

tff(b,type,
    b: $i ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tff(d,type,
    d: $i ).

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

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

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

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

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

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

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

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

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

tff(e,type,
    e: $i ).

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

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

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

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

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

tff(c,type,
    c: $i ).

tff(f_75,axiom,
    k0(e),
    file(unknown,unknown) ).

tff(f_85,axiom,
    m0(b,a,a),
    file(unknown,unknown) ).

tff(f_56,axiom,
    ! [X] : m0(a,X,a),
    file(unknown,unknown) ).

tff(f_52,axiom,
    r0(b),
    file(unknown,unknown) ).

tff(f_67,axiom,
    l0(a),
    file(unknown,unknown) ).

tff(f_780,axiom,
    ( p1(a,a,a)
    | ~ l0(a) ),
    file(unknown,unknown) ).

tff(f_776,axiom,
    ( p1(a,b,a)
    | ~ r0(b)
    | ~ p1(a,a,a) ),
    file(unknown,unknown) ).

tff(f_740,axiom,
    ! [H,I,J,A] :
      ( p1(H,I,J)
      | ~ m0(J,H,A)
      | ~ p1(J,H,A) ),
    file(unknown,unknown) ).

tff(f_1698,axiom,
    ! [B,C,D,E] :
      ( k3(B,B,C)
      | ~ p1(C,D,B)
      | ~ m2(E)
      | ~ m2(D) ),
    file(unknown,unknown) ).

tff(f_44,axiom,
    s0(d),
    file(unknown,unknown) ).

tff(f_1160,axiom,
    ! [F,G,H] :
      ( m2(F)
      | ~ s0(F)
      | ~ l1(G,H) ),
    file(unknown,unknown) ).

tff(f_81,axiom,
    n0(c,d),
    file(unknown,unknown) ).

tff(f_96,axiom,
    ! [G,H] :
      ( l1(G,G)
      | ~ n0(H,G) ),
    file(unknown,unknown) ).

tff(f_66,axiom,
    ! [X,Y] : m0(X,d,Y),
    file(unknown,unknown) ).

tff(f_63,axiom,
    ! [X] : q0(X,d),
    file(unknown,unknown) ).

tff(f_1044,axiom,
    ! [I,J,A] :
      ( q1(I,I,I)
      | ~ m0(J,A,I) ),
    file(unknown,unknown) ).

tff(f_1068,axiom,
    ! [D,E] :
      ( r1(D)
      | ~ q0(D,E)
      | ~ s0(d)
      | ~ q1(d,E,d) ),
    file(unknown,unknown) ).

tff(f_59,axiom,
    ! [X] : p0(b,X),
    file(unknown,unknown) ).

tff(f_761,axiom,
    ! [B,C] :
      ( p1(B,B,B)
      | ~ p0(C,B) ),
    file(unknown,unknown) ).

tff(f_1524,axiom,
    ! [I] :
      ( q2(I,I,I)
      | ~ p1(I,I,I) ),
    file(unknown,unknown) ).

tff(f_1581,axiom,
    ! [C,D,E,F] :
      ( q2(C,D,C)
      | ~ r1(D)
      | ~ m0(E,F,C)
      | ~ k0(D)
      | ~ q2(D,D,D) ),
    file(unknown,unknown) ).

tff(f_1169,axiom,
    ! [A,B,C] :
      ( n2(A)
      | ~ p1(B,C,A) ),
    file(unknown,unknown) ).

tff(f_1985,axiom,
    ! [A] :
      ( m3(A,A,A)
      | ~ n2(A) ),
    file(unknown,unknown) ).

tff(f_2485,axiom,
    ! [F,B,C,E,D] :
      ( q4(B,C)
      | ~ k3(D,D,B)
      | ~ q2(E,C,B)
      | ~ m3(E,F,E) ),
    file(unknown,unknown) ).

tff(f_2764,axiom,
    ~ q4(a,e),
    file(unknown,unknown) ).

tff(c_56,plain,
    k0(e),
    inference(cnfTransformation,[status(thm)],[f_75]) ).

tff(c_76,plain,
    m0(b,a,a),
    inference(cnfTransformation,[status(thm)],[f_85]) ).

tff(c_24,plain,
    ! [X_1] : m0(a,X_1,a),
    inference(cnfTransformation,[status(thm)],[f_56]) ).

tff(c_18,plain,
    r0(b),
    inference(cnfTransformation,[status(thm)],[f_52]) ).

tff(c_40,plain,
    l0(a),
    inference(cnfTransformation,[status(thm)],[f_67]) ).

tff(c_252,plain,
    ( ~ l0(a)
    | p1(a,a,a) ),
    inference(cnfTransformation,[status(thm)],[f_780]) ).

tff(c_768,plain,
    p1(a,a,a),
    inference(demodulation,[status(thm),theory(equality)],[c_40,c_252]) ).

tff(c_250,plain,
    ( ~ p1(a,a,a)
    | ~ r0(b)
    | p1(a,b,a) ),
    inference(cnfTransformation,[status(thm)],[f_776]) ).

tff(c_772,plain,
    ( ~ r0(b)
    | p1(a,b,a) ),
    inference(demodulation,[status(thm),theory(equality)],[c_768,c_250]) ).

tff(c_809,plain,
    p1(a,b,a),
    inference(demodulation,[status(thm),theory(equality)],[c_18,c_772]) ).

tff(c_646055,plain,
    ! [J_64430,H_64431,A_64432,I_64433] :
      ( ~ p1(J_64430,H_64431,A_64432)
      | ~ m0(J_64430,H_64431,A_64432)
      | p1(H_64431,I_64433,J_64430) ),
    inference(cnfTransformation,[status(thm)],[f_740]) ).

tff(c_646075,plain,
    ! [I_64433] :
      ( ~ m0(a,b,a)
      | p1(b,I_64433,a) ),
    inference(resolution,[status(thm)],[c_809,c_646055]) ).

tff(c_646090,plain,
    ! [I_64434] : p1(b,I_64434,a),
    inference(demodulation,[status(thm),theory(equality)],[c_24,c_646075]) ).

tff(c_240,plain,
    ! [J_156,H_154,A_157,I_155] :
      ( ~ p1(J_156,H_154,A_157)
      | ~ m0(J_156,H_154,A_157)
      | p1(H_154,I_155,J_156) ),
    inference(cnfTransformation,[status(thm)],[f_740]) ).

tff(c_648816,plain,
    ! [I_64614,I_64615] :
      ( ~ m0(b,I_64614,a)
      | p1(I_64614,I_64615,b) ),
    inference(resolution,[status(thm)],[c_646090,c_240]) ).

tff(c_478,plain,
    ! [D_366,E_367,C_365,B_364] :
      ( ~ m2(D_366)
      | ~ m2(E_367)
      | ~ p1(C_365,D_366,B_364)
      | k3(B_364,B_364,C_365) ),
    inference(cnfTransformation,[status(thm)],[f_1698]) ).

tff(c_634158,plain,
    ! [E_367] : ~ m2(E_367),
    inference(splitLeft,[status(thm)],[c_478]) ).

tff(c_2,plain,
    s0(d),
    inference(cnfTransformation,[status(thm)],[f_44]) ).

tff(c_346,plain,
    ! [G_254,H_255,F_253] :
      ( ~ l1(G_254,H_255)
      | ~ s0(F_253)
      | m2(F_253) ),
    inference(cnfTransformation,[status(thm)],[f_1160]) ).

tff(c_214954,plain,
    ! [G_254,H_255] : ~ l1(G_254,H_255),
    inference(splitLeft,[status(thm)],[c_346]) ).

tff(c_68,plain,
    n0(c,d),
    inference(cnfTransformation,[status(thm)],[f_81]) ).

tff(c_14359,plain,
    ! [H_2653,G_2654] :
      ( ~ n0(H_2653,G_2654)
      | l1(G_2654,G_2654) ),
    inference(cnfTransformation,[status(thm)],[f_96]) ).

tff(c_14383,plain,
    l1(d,d),
    inference(resolution,[status(thm)],[c_68,c_14359]) ).

tff(c_214961,plain,
    $false,
    inference(negUnitSimplification,[status(thm)],[c_214954,c_14383]) ).

tff(c_214963,plain,
    ! [F_24916] :
      ( ~ s0(F_24916)
      | m2(F_24916) ),
    inference(splitRight,[status(thm)],[c_346]) ).

tff(c_214972,plain,
    m2(d),
    inference(resolution,[status(thm)],[c_2,c_214963]) ).

tff(c_634162,plain,
    $false,
    inference(negUnitSimplification,[status(thm)],[c_634158,c_214972]) ).

tff(c_634163,plain,
    ! [D_366,C_365,B_364] :
      ( ~ m2(D_366)
      | ~ p1(C_365,D_366,B_364)
      | k3(B_364,B_364,C_365) ),
    inference(splitRight,[status(thm)],[c_478]) ).

tff(c_648824,plain,
    ! [I_64615,I_64614] :
      ( ~ m2(I_64615)
      | k3(b,b,I_64614)
      | ~ m0(b,I_64614,a) ),
    inference(resolution,[status(thm)],[c_648816,c_634163]) ).

tff(c_656233,plain,
    ! [I_64615] : ~ m2(I_64615),
    inference(splitLeft,[status(thm)],[c_648824]) ).

tff(c_656237,plain,
    $false,
    inference(negUnitSimplification,[status(thm)],[c_656233,c_214972]) ).

tff(c_656240,plain,
    ! [I_65089] :
      ( k3(b,b,I_65089)
      | ~ m0(b,I_65089,a) ),
    inference(splitRight,[status(thm)],[c_648824]) ).

tff(c_656250,plain,
    k3(b,b,a),
    inference(resolution,[status(thm)],[c_76,c_656240]) ).

tff(c_38,plain,
    ! [X_4,Y_5] : m0(X_4,d,Y_5),
    inference(cnfTransformation,[status(thm)],[f_66]) ).

tff(c_34,plain,
    ! [X_3] : q0(X_3,d),
    inference(cnfTransformation,[status(thm)],[f_63]) ).

tff(c_495594,plain,
    ! [J_52294,A_52295,I_52296] :
      ( ~ m0(J_52294,A_52295,I_52296)
      | q1(I_52296,I_52296,I_52296) ),
    inference(cnfTransformation,[status(thm)],[f_1044]) ).

tff(c_495613,plain,
    ! [Y_5] : q1(Y_5,Y_5,Y_5),
    inference(resolution,[status(thm)],[c_38,c_495594]) ).

tff(c_324,plain,
    ! [E_232,D_231] :
      ( ~ q1(d,E_232,d)
      | ~ s0(d)
      | ~ q0(D_231,E_232)
      | r1(D_231) ),
    inference(cnfTransformation,[status(thm)],[f_1068]) ).

tff(c_600391,plain,
    ! [E_61134,D_61135] :
      ( ~ q1(d,E_61134,d)
      | ~ q0(D_61135,E_61134)
      | r1(D_61135) ),
    inference(demodulation,[status(thm),theory(equality)],[c_2,c_324]) ).

tff(c_600394,plain,
    ! [D_61135] :
      ( ~ q0(D_61135,d)
      | r1(D_61135) ),
    inference(resolution,[status(thm)],[c_495613,c_600391]) ).

tff(c_600400,plain,
    ! [D_61135] : r1(D_61135),
    inference(demodulation,[status(thm),theory(equality)],[c_34,c_600394]) ).

tff(c_28,plain,
    ! [X_2] : p0(b,X_2),
    inference(cnfTransformation,[status(thm)],[f_59]) ).

tff(c_237124,plain,
    ! [C_27595,B_27596] :
      ( ~ p0(C_27595,B_27596)
      | p1(B_27596,B_27596,B_27596) ),
    inference(cnfTransformation,[status(thm)],[f_761]) ).

tff(c_237130,plain,
    ! [X_2] : p1(X_2,X_2,X_2),
    inference(resolution,[status(thm)],[c_28,c_237124]) ).

tff(c_438,plain,
    ! [I_327] :
      ( ~ p1(I_327,I_327,I_327)
      | q2(I_327,I_327,I_327) ),
    inference(cnfTransformation,[status(thm)],[f_1524]) ).

tff(c_590034,plain,
    ! [I_327] : q2(I_327,I_327,I_327),
    inference(demodulation,[status(thm),theory(equality)],[c_237130,c_438]) ).

tff(c_450,plain,
    ! [D_341,E_342,F_343,C_340] :
      ( ~ q2(D_341,D_341,D_341)
      | ~ k0(D_341)
      | ~ m0(E_342,F_343,C_340)
      | ~ r1(D_341)
      | q2(C_340,D_341,C_340) ),
    inference(cnfTransformation,[status(thm)],[f_1581]) ).

tff(c_654819,plain,
    ! [D_64997,E_64998,F_64999,C_65000] :
      ( ~ k0(D_64997)
      | ~ m0(E_64998,F_64999,C_65000)
      | q2(C_65000,D_64997,C_65000) ),
    inference(demodulation,[status(thm),theory(equality)],[c_600400,c_590034,c_450]) ).

tff(c_654837,plain,
    ! [D_64997,Y_5] :
      ( ~ k0(D_64997)
      | q2(Y_5,D_64997,Y_5) ),
    inference(resolution,[status(thm)],[c_38,c_654819]) ).

tff(c_377749,plain,
    ! [X_41045] : p1(X_41045,X_41045,X_41045),
    inference(resolution,[status(thm)],[c_28,c_237124]) ).

tff(c_350,plain,
    ! [B_257,C_258,A_256] :
      ( ~ p1(B_257,C_258,A_256)
      | n2(A_256) ),
    inference(cnfTransformation,[status(thm)],[f_1169]) ).

tff(c_377753,plain,
    ! [X_41045] : n2(X_41045),
    inference(resolution,[status(thm)],[c_377749,c_350]) ).

tff(c_548,plain,
    ! [A_428] :
      ( ~ n2(A_428)
      | m3(A_428,A_428,A_428) ),
    inference(cnfTransformation,[status(thm)],[f_1985]) ).

tff(c_377764,plain,
    ! [A_428] : m3(A_428,A_428,A_428),
    inference(demodulation,[status(thm),theory(equality)],[c_377753,c_548]) ).

tff(c_650935,plain,
    ! [E_64739,B_64736,C_64738,D_64735,F_64737] :
      ( ~ m3(E_64739,F_64737,E_64739)
      | ~ q2(E_64739,C_64738,B_64736)
      | ~ k3(D_64735,D_64735,B_64736)
      | q4(B_64736,C_64738) ),
    inference(cnfTransformation,[status(thm)],[f_2485]) ).

tff(c_658618,plain,
    ! [A_65213,C_65214,B_65215,D_65216] :
      ( ~ q2(A_65213,C_65214,B_65215)
      | ~ k3(D_65216,D_65216,B_65215)
      | q4(B_65215,C_65214) ),
    inference(resolution,[status(thm)],[c_377764,c_650935]) ).

tff(c_658644,plain,
    ! [D_65217,Y_65218,D_65219] :
      ( ~ k3(D_65217,D_65217,Y_65218)
      | q4(Y_65218,D_65219)
      | ~ k0(D_65219) ),
    inference(resolution,[status(thm)],[c_654837,c_658618]) ).

tff(c_658763,plain,
    ! [D_65220] :
      ( q4(a,D_65220)
      | ~ k0(D_65220) ),
    inference(resolution,[status(thm)],[c_656250,c_658644]) ).

tff(c_738,plain,
    ~ q4(a,e),
    inference(cnfTransformation,[status(thm)],[f_2764]) ).

tff(c_658766,plain,
    ~ k0(e),
    inference(resolution,[status(thm)],[c_658763,c_738]) ).

tff(c_658770,plain,
    $false,
    inference(demodulation,[status(thm),theory(equality)],[c_56,c_658766]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12  % Problem  : SYN180-1 : TPTP v8.1.2. Released v1.1.0.
% 0.00/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.12/0.33  % Computer : n004.cluster.edu
% 0.12/0.33  % Model    : x86_64 x86_64
% 0.12/0.33  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.33  % Memory   : 8042.1875MB
% 0.12/0.33  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.12/0.33  % CPULimit : 300
% 0.12/0.33  % WCLimit  : 300
% 0.12/0.33  % DateTime : Thu Aug  3 17:15:56 EDT 2023
% 0.12/0.34  % CPUTime  : 
% 147.37/130.22  % SZS status Unsatisfiable for /export/starexec/sandbox2/benchmark/theBenchmark.p
% 147.45/130.23  
% 147.45/130.23  % SZS output start CNFRefutation for /export/starexec/sandbox2/benchmark/theBenchmark.p
% See solution above
% 147.66/130.28  
% 147.66/130.28  Inference rules
% 147.66/130.28  ----------------------
% 147.66/130.28  #Ref     : 0
% 147.66/130.28  #Sup     : 119439
% 147.66/130.28  #Fact    : 0
% 147.66/130.28  #Define  : 0
% 147.66/130.28  #Split   : 10148
% 147.66/130.28  #Chain   : 0
% 147.66/130.28  #Close   : 0
% 147.66/130.28  
% 147.66/130.28  Ordering : KBO
% 147.66/130.28  
% 147.66/130.28  Simplification rules
% 147.66/130.28  ----------------------
% 147.66/130.28  #Subsume      : 40761
% 147.66/130.28  #Demod        : 117378
% 147.66/130.28  #Tautology    : 66833
% 147.66/130.28  #SimpNegUnit  : 8229
% 147.66/130.28  #BackRed      : 8558
% 147.66/130.28  
% 147.66/130.28  #Partial instantiations: 0
% 147.66/130.28  #Strategies tried      : 1
% 147.66/130.28  
% 147.66/130.28  Timing (in seconds)
% 147.66/130.28  ----------------------
% 147.66/130.28  Preprocessing        : 1.08
% 147.66/130.28  Parsing              : 0.62
% 147.66/130.28  CNF conversion       : 0.09
% 147.66/130.28  Main loop            : 128.08
% 147.66/130.28  Inferencing          : 35.95
% 147.66/130.28  Reduction            : 54.36
% 147.66/130.28  Demodulation         : 38.77
% 147.66/130.28  BG Simplification    : 0.45
% 147.66/130.28  Subsumption          : 29.58
% 147.66/130.28  Abstraction          : 1.03
% 147.66/130.28  MUC search           : 0.00
% 147.66/130.28  Cooper               : 0.00
% 147.66/130.28  Total                : 129.24
% 147.66/130.28  Index Insertion      : 0.00
% 147.66/130.28  Index Deletion       : 0.00
% 147.66/130.28  Index Matching       : 0.00
% 147.66/130.28  BG Taut test         : 0.00
%------------------------------------------------------------------------------