↑ Up

Prover9---2026-6A.THM-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : Prover9---2026-6A
% Problem  : LCL368+2 : TPTP v9.3.1. Released v9.1.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p

% Computer : n007.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 : Sun Sep 27 07:58:41 AM UTC 2026

% Result   : Theorem 15.46s 7.61s
% Output   : CNFRefutation 15.46s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   35
%            Number of leaves      :    3
% Syntax   : Number of formulae    :   88 (  46 unt;   0 def)
%            Number of atoms       :  132 (   0 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   88 (  44   ~;  42   |;   1   &)
%                                         (   0 <=>;   1  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   16 (   2 avg)
%            Maximal term depth    :   12 (   2 avg)
%            Number of predicates  :    2 (   1 usr;   1 prp; 0-1 aty)
%            Number of functors    :    6 (   6 usr;   4 con; 0-2 aty)
%            Number of variables   :  357 (  84 sgn  17   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(condensed_detachment,axiom,
    ! [X,Y] :
      ( ( is_a_theorem(X)
        & is_a_theorem(implies(X,Y)) )
     => is_a_theorem(Y) ),
    file('theBenchmark.p',condensed_detachment) ).

fof(f2,axiom,
    ! [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] : is_a_theorem(implies(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(G,H),implies(implies(H,I),implies(G,I))),implies(implies(implies(n(J),J),J),K)),K),implies(implies(L,implies(n(L),M)),N)),N),O)),O)),
    file('theBenchmark.p',f2) ).

fof(f3,conjecture,
    is_a_theorem(implies(implies(implies(x,implies(y,z)),u),implies(implies(y,implies(x,z)),u))),
    file('theBenchmark.p',f3) ).

fof(f3_neg,negated_conjecture,
    ~ is_a_theorem(implies(implies(implies(x,implies(y,z)),u),implies(implies(y,implies(x,z)),u))),
    inference(assume_negation,[status(cth)],[f3]) ).

cnf(c_4,plain,
    ( is_a_theorem(B)
    | ~ is_a_theorem(A)
    | ~ is_a_theorem(implies(A,B)) ),
    inference(clausify,[status(thm)],[condensed_detachment]) ).

cnf(c_5,plain,
    is_a_theorem(implies(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(V6,V7),implies(implies(V7,V8),implies(V6,V8))),implies(implies(implies(n(V9),V9),V9),V10)),V10),implies(implies(V11,implies(n(V11),V12)),V13)),V13),V14)),V14)),
    inference(clausify,[status(thm)],[f2]) ).

cnf(c_6,negated_conjecture,
    ~ is_a_theorem(implies(implies(implies(x,implies(y,z)),u),implies(implies(y,implies(x,z)),u))),
    inference(clausify,[status(thm)],[f3_neg]) ).

cnf(c_14156,plain,
    ( is_a_theorem(V14)
    | ~ is_a_theorem(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(V6,V7),implies(implies(V7,V8),implies(V6,V8))),implies(implies(implies(n(V9),V9),V9),V10)),V10),implies(implies(V11,implies(n(V11),V12)),V13)),V13),V14))) ),
    inference(resolve,[status(thm)],[c_4,c_5]) ).

cnf(c_7,plain,
    is_a_theorem(implies(A,implies(B,A))),
    inference(resolve,[status(thm)],[c_14156,c_5]) ).

cnf(c_14157,plain,
    ( is_a_theorem(implies(B,A))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_7]) ).

cnf(c_8,plain,
    is_a_theorem(implies(A,implies(B,implies(C,B)))),
    inference(resolve,[status(thm)],[c_14157,c_7]) ).

cnf(c_14158,plain,
    ( is_a_theorem(V14)
    | ~ is_a_theorem(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(V6,V7),implies(implies(V7,V8),implies(V6,V8))),implies(implies(implies(n(V9),V9),V9),V10)),V10),implies(implies(V11,implies(n(V11),V12)),V13)),V13),V14))) ),
    inference(resolve,[status(thm)],[c_4,c_5]) ).

cnf(c_9,plain,
    is_a_theorem(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F)),
    inference(resolve,[status(thm)],[c_14158,c_7]) ).

cnf(c_14159,plain,
    ( is_a_theorem(V14)
    | ~ is_a_theorem(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(V6,V7),implies(implies(V7,V8),implies(V6,V8))),implies(implies(implies(n(V9),V9),V9),V10)),V10),implies(implies(V11,implies(n(V11),V12)),V13)),V13),V14))) ),
    inference(resolve,[status(thm)],[c_4,c_5]) ).

cnf(c_11,plain,
    is_a_theorem(implies(A,implies(implies(implies(implies(implies(implies(B,C),implies(implies(C,D),implies(B,D))),implies(implies(implies(n(E),E),E),F)),F),implies(implies(V6,implies(n(V6),V7)),V8)),V8))),
    inference(resolve,[status(thm)],[c_14159,c_8]) ).

cnf(c_14160,plain,
    ( is_a_theorem(implies(B,A))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_7]) ).

cnf(c_15,plain,
    is_a_theorem(implies(A,implies(implies(implies(B,implies(C,B)),implies(implies(D,implies(E,implies(F,E))),V6)),V6))),
    inference(resolve,[status(thm)],[c_14160,c_9]) ).

cnf(c_14161,plain,
    ( is_a_theorem(V14)
    | ~ is_a_theorem(implies(implies(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F)),F),implies(implies(implies(implies(implies(implies(implies(V6,V7),implies(implies(V7,V8),implies(V6,V8))),implies(implies(implies(n(V9),V9),V9),V10)),V10),implies(implies(V11,implies(n(V11),V12)),V13)),V13),V14))) ),
    inference(resolve,[status(thm)],[c_4,c_5]) ).

cnf(c_18,plain,
    is_a_theorem(implies(A,implies(implies(n(B),B),B))),
    inference(resolve,[status(thm)],[c_14161,c_15]) ).

cnf(c_14162,plain,
    ( is_a_theorem(implies(implies(implies(implies(implies(implies(B,C),implies(implies(C,D),implies(B,D))),implies(implies(implies(n(E),E),E),F)),F),implies(implies(V6,implies(n(V6),V7)),V8)),V8))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_11]) ).

cnf(c_19,plain,
    is_a_theorem(implies(implies(implies(implies(implies(implies(A,B),implies(implies(B,C),implies(A,C))),implies(implies(implies(n(D),D),D),E)),E),implies(implies(F,implies(n(F),V6)),V7)),V7)),
    inference(resolve,[status(thm)],[c_14162,c_11]) ).

cnf(c_14163,plain,
    ( is_a_theorem(F)
    | ~ is_a_theorem(implies(implies(A,implies(B,A)),implies(implies(C,implies(D,implies(E,D))),F))) ),
    inference(resolve,[status(thm)],[c_4,c_9]) ).

cnf(c_20,plain,
    is_a_theorem(implies(A,implies(B,implies(n(B),C)))),
    inference(resolve,[status(thm)],[c_14163,c_11]) ).

cnf(c_14164,plain,
    ( is_a_theorem(implies(implies(n(B),B),B))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_18]) ).

cnf(c_23,plain,
    is_a_theorem(implies(implies(n(A),A),A)),
    inference(resolve,[status(thm)],[c_14164,c_18]) ).

cnf(c_14165,plain,
    ( is_a_theorem(A)
    | ~ is_a_theorem(implies(n(A),A)) ),
    inference(resolve,[status(thm)],[c_4,c_23]) ).

cnf(c_25,plain,
    is_a_theorem(implies(A,implies(n(A),B))),
    inference(resolve,[status(thm)],[c_14165,c_20]) ).

cnf(c_14166,plain,
    ( is_a_theorem(V7)
    | ~ is_a_theorem(implies(implies(implies(implies(implies(A,B),implies(implies(B,C),implies(A,C))),implies(implies(implies(n(D),D),D),E)),E),implies(implies(F,implies(n(F),V6)),V7))) ),
    inference(resolve,[status(thm)],[c_4,c_19]) ).

cnf(c_48,plain,
    is_a_theorem(implies(implies(implies(implies(A,B),implies(implies(B,C),implies(A,C))),implies(implies(implies(n(D),D),D),E)),E)),
    inference(resolve,[status(thm)],[c_14166,c_7]) ).

cnf(c_14167,plain,
    ( is_a_theorem(E)
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(implies(B,C),implies(A,C))),implies(implies(implies(n(D),D),D),E))) ),
    inference(resolve,[status(thm)],[c_4,c_48]) ).

cnf(c_130,plain,
    is_a_theorem(implies(implies(A,B),implies(implies(B,C),implies(A,C)))),
    inference(resolve,[status(thm)],[c_14167,c_7]) ).

cnf(c_14168,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_131,plain,
    is_a_theorem(implies(implies(implies(implies(A,B),implies(C,B)),D),implies(implies(C,A),D))),
    inference(resolve,[status(thm)],[c_14168,c_130]) ).

cnf(c_14169,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_154,plain,
    is_a_theorem(implies(implies(implies(n(A),B),C),implies(A,C))),
    inference(resolve,[status(thm)],[c_14169,c_25]) ).

cnf(c_14170,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_170,plain,
    is_a_theorem(implies(implies(implies(A,B),C),implies(B,C))),
    inference(resolve,[status(thm)],[c_14170,c_7]) ).

cnf(c_14171,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_171,plain,
    is_a_theorem(implies(implies(implies(A,B),C),implies(implies(implies(D,A),B),C))),
    inference(resolve,[status(thm)],[c_14171,c_170]) ).

cnf(c_14172,plain,
    ( is_a_theorem(implies(B,C))
    | ~ is_a_theorem(implies(implies(A,B),C)) ),
    inference(resolve,[status(thm)],[c_4,c_170]) ).

cnf(c_174,plain,
    is_a_theorem(implies(A,implies(implies(A,B),implies(C,B)))),
    inference(resolve,[status(thm)],[c_14172,c_130]) ).

cnf(c_14173,plain,
    ( is_a_theorem(implies(B,C))
    | ~ is_a_theorem(implies(implies(A,B),C)) ),
    inference(resolve,[status(thm)],[c_4,c_170]) ).

cnf(c_177,plain,
    is_a_theorem(implies(A,A)),
    inference(resolve,[status(thm)],[c_14173,c_23]) ).

cnf(c_14174,plain,
    ( is_a_theorem(implies(B,A))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_7]) ).

cnf(c_183,plain,
    is_a_theorem(implies(A,implies(B,B))),
    inference(resolve,[status(thm)],[c_14174,c_177]) ).

cnf(c_14175,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_184,plain,
    is_a_theorem(implies(implies(implies(A,A),B),implies(C,B))),
    inference(resolve,[status(thm)],[c_14175,c_183]) ).

cnf(c_14176,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_237,plain,
    is_a_theorem(implies(implies(implies(implies(A,B),implies(C,B)),D),implies(A,D))),
    inference(resolve,[status(thm)],[c_14176,c_174]) ).

cnf(c_14177,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_274,plain,
    is_a_theorem(implies(implies(implies(A,B),C),implies(implies(implies(D,D),B),C))),
    inference(resolve,[status(thm)],[c_14177,c_184]) ).

cnf(c_14178,plain,
    ( is_a_theorem(implies(implies(implies(D,A),B),C))
    | ~ is_a_theorem(implies(implies(A,B),C)) ),
    inference(resolve,[status(thm)],[c_4,c_171]) ).

cnf(c_785,plain,
    is_a_theorem(implies(implies(implies(A,n(B)),B),B)),
    inference(resolve,[status(thm)],[c_14178,c_23]) ).

cnf(c_14179,plain,
    ( is_a_theorem(implies(A,D))
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(C,B)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_237]) ).

cnf(c_909,plain,
    is_a_theorem(implies(n(A),implies(A,implies(B,C)))),
    inference(resolve,[status(thm)],[c_14179,c_154]) ).

cnf(c_14180,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_928,plain,
    is_a_theorem(implies(implies(implies(A,implies(B,C)),D),implies(n(A),D))),
    inference(resolve,[status(thm)],[c_14180,c_909]) ).

cnf(c_14181,plain,
    ( is_a_theorem(implies(implies(implies(D,D),B),C))
    | ~ is_a_theorem(implies(implies(A,B),C)) ),
    inference(resolve,[status(thm)],[c_4,c_274]) ).

cnf(c_1329,plain,
    is_a_theorem(implies(implies(implies(A,A),B),B)),
    inference(resolve,[status(thm)],[c_14181,c_785]) ).

cnf(c_14182,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_1365,plain,
    is_a_theorem(implies(implies(A,B),implies(implies(implies(C,C),A),B))),
    inference(resolve,[status(thm)],[c_14182,c_1329]) ).

cnf(c_14183,plain,
    ( is_a_theorem(implies(implies(implies(C,C),A),B))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_1365]) ).

cnf(c_1510,plain,
    is_a_theorem(implies(implies(implies(A,A),implies(B,C)),implies(implies(C,D),implies(B,D)))),
    inference(resolve,[status(thm)],[c_14183,c_130]) ).

cnf(c_14184,plain,
    ( is_a_theorem(implies(A,D))
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(C,B)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_237]) ).

cnf(c_3511,plain,
    is_a_theorem(implies(implies(A,B),implies(implies(C,A),implies(D,implies(C,B))))),
    inference(resolve,[status(thm)],[c_14184,c_131]) ).

cnf(c_14185,plain,
    ( is_a_theorem(implies(implies(C,A),implies(D,implies(C,B))))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_3511]) ).

cnf(c_4047,plain,
    is_a_theorem(implies(implies(A,implies(n(B),B)),implies(C,implies(A,B)))),
    inference(resolve,[status(thm)],[c_14185,c_23]) ).

cnf(c_14186,plain,
    ( is_a_theorem(implies(n(A),D))
    | ~ is_a_theorem(implies(implies(A,implies(B,C)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_928]) ).

cnf(c_4344,plain,
    is_a_theorem(implies(n(A),implies(B,implies(A,C)))),
    inference(resolve,[status(thm)],[c_14186,c_4047]) ).

cnf(c_14187,plain,
    ( is_a_theorem(implies(C,implies(A,B)))
    | ~ is_a_theorem(implies(A,implies(n(B),B))) ),
    inference(resolve,[status(thm)],[c_4,c_4047]) ).

cnf(c_4397,plain,
    is_a_theorem(implies(A,implies(n(B),implies(B,C)))),
    inference(resolve,[status(thm)],[c_14187,c_4344]) ).

cnf(c_14188,plain,
    ( is_a_theorem(implies(implies(C,D),implies(B,D)))
    | ~ is_a_theorem(implies(implies(A,A),implies(B,C))) ),
    inference(resolve,[status(thm)],[c_4,c_1510]) ).

cnf(c_4426,plain,
    is_a_theorem(implies(implies(implies(A,B),C),implies(n(A),C))),
    inference(resolve,[status(thm)],[c_14188,c_4397]) ).

cnf(c_14189,plain,
    ( is_a_theorem(implies(C,implies(A,B)))
    | ~ is_a_theorem(implies(A,implies(n(B),B))) ),
    inference(resolve,[status(thm)],[c_4,c_4047]) ).

cnf(c_4497,plain,
    is_a_theorem(implies(A,implies(implies(implies(B,C),B),B))),
    inference(resolve,[status(thm)],[c_14189,c_4426]) ).

cnf(c_14190,plain,
    ( is_a_theorem(implies(implies(implies(B,C),B),B))
    | ~ is_a_theorem(A) ),
    inference(resolve,[status(thm)],[c_4,c_4497]) ).

cnf(c_5323,plain,
    is_a_theorem(implies(implies(implies(A,B),A),A)),
    inference(resolve,[status(thm)],[c_14190,c_4497]) ).

cnf(c_14191,plain,
    ( is_a_theorem(implies(implies(C,A),D))
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(C,B)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_131]) ).

cnf(c_5360,plain,
    is_a_theorem(implies(implies(A,implies(A,B)),implies(A,B))),
    inference(resolve,[status(thm)],[c_14191,c_5323]) ).

cnf(c_14192,plain,
    ( is_a_theorem(implies(A,D))
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(C,B)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_237]) ).

cnf(c_5417,plain,
    is_a_theorem(implies(A,implies(implies(A,B),B))),
    inference(resolve,[status(thm)],[c_14192,c_5360]) ).

cnf(c_14193,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_5490,plain,
    is_a_theorem(implies(implies(implies(implies(A,B),B),C),implies(A,C))),
    inference(resolve,[status(thm)],[c_14193,c_5417]) ).

cnf(c_14194,plain,
    ( is_a_theorem(implies(implies(C,A),D))
    | ~ is_a_theorem(implies(implies(implies(A,B),implies(C,B)),D)) ),
    inference(resolve,[status(thm)],[c_4,c_131]) ).

cnf(c_14073,plain,
    is_a_theorem(implies(implies(A,implies(B,C)),implies(B,implies(A,C)))),
    inference(resolve,[status(thm)],[c_14194,c_5490]) ).

cnf(c_14195,plain,
    ( is_a_theorem(implies(implies(B,C),implies(A,C)))
    | ~ is_a_theorem(implies(A,B)) ),
    inference(resolve,[status(thm)],[c_4,c_130]) ).

cnf(c_14154,plain,
    is_a_theorem(implies(implies(implies(A,implies(B,C)),D),implies(implies(B,implies(A,C)),D))),
    inference(resolve,[status(thm)],[c_14195,c_14073]) ).

cnf(c_14155,plain,
    $false,
    inference(resolve,[status(thm)],[c_14154,c_6]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02  % Problem  : LCL368+2 : TPTP v9.3.1. Released v9.1.0.
% 0.00/0.03  % Command  : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.08/5.37  % Computer : n007.cluster.edu
% 0.08/5.37  % Model    : x86_64 x86_64
% 0.08/5.37  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/5.37  % Memory   : 8046.5625MB
% 0.08/5.37  % OS       : Linux 6.8.0-71-generic
% 0.08/5.37  % CPULimit : 300
% 0.08/5.37  % WCLimit  : 300
% 0.08/5.37  % DateTime : Fri Sep 25 22:18:14 UTC 2026
% 0.08/5.37  % CPUTime  : 
% 0.08/5.37  % Prover9 (64) version 2026-6A, July 2026, CASC-J13.
% 0.08/5.37  % Process 2059368 was started by sandbox on n007,
% 0.08/5.37  % Fri Sep 25 22:18:14 2026
% 0.08/5.37  % The command was "/export/starexec/sandbox/solver/bin/prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p".
% 0.08/5.38  
% 0.08/5.38  % From the command line: assign(max_seconds, 300).
% 15.46/7.61  
% 15.46/7.61  % SZS status Theorem for theBenchmark
% 15.46/7.61  
% 15.46/7.61  % Proof 1 at 1.53 (+ 0.69) seconds.
% 15.46/7.61  % Length of proof is 47.
% 15.46/7.61  % Level of proof is 24.
% 15.46/7.61  % Maximum clause weight is 116.000.
% 15.46/7.61  % Given clauses 473.
% 15.46/7.61  
% 15.46/7.61  % SZS output start CNFRefutation for theBenchmark
% See solution above
%------------------------------------------------------------------------------