%------------------------------------------------------------------------------
% File : Prover9---2026-6A
% Problem : KLE027+4 : TPTP v9.3.1. Released v4.0.0.
% Transfm : none
% Format : tptp:raw
% Command : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p
% Computer : n014.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:44:08 AM UTC 2026
% Result : Theorem 0.23s 6.05s
% Output : CNFRefutation 0.23s
% Verified :
% SZS Type : Refutation
% Derivation depth : 23
% Number of leaves : 13
% Syntax : Number of formulae : 91 ( 40 unt; 0 def)
% Number of atoms : 176 ( 80 equ)
% Maximal formula atoms : 4 ( 1 avg)
% Number of connectives : 159 ( 74 ~; 61 |; 15 &)
% ( 4 <=>; 5 =>; 0 <=; 0 <~>)
% Maximal formula depth : 10 ( 3 avg)
% Maximal term depth : 6 ( 2 avg)
% Number of predicates : 5 ( 3 usr; 1 prp; 0-2 aty)
% Number of functors : 11 ( 11 usr; 7 con; 0-2 aty)
% Number of variables : 112 ( 8 sgn 39 !; 7 ?)
% Comments :
%------------------------------------------------------------------------------
fof(additive_commutativity,axiom,
! [A,B] : addition(A,B) = addition(B,A),
file('theBenchmark.p',additive_commutativity) ).
fof(additive_identity,axiom,
! [A] : addition(A,zero) = A,
file('theBenchmark.p',additive_identity) ).
fof(additive_idempotence,axiom,
! [A] : addition(A,A) = A,
file('theBenchmark.p',additive_idempotence) ).
fof(multiplicative_associativity,axiom,
! [A,B,C] : multiplication(A,multiplication(B,C)) = multiplication(multiplication(A,B),C),
file('theBenchmark.p',multiplicative_associativity) ).
fof(right_distributivity,axiom,
! [A,B,C] : multiplication(A,addition(B,C)) = addition(multiplication(A,B),multiplication(A,C)),
file('theBenchmark.p',right_distributivity) ).
fof(left_annihilation,axiom,
! [A] : multiplication(zero,A) = zero,
file('theBenchmark.p',left_annihilation) ).
fof(order,axiom,
! [A,B] :
( leq(A,B)
<=> addition(A,B) = B ),
file('theBenchmark.p',order) ).
fof(test_1,axiom,
! [X0] :
( test(X0)
<=> ? [X1] : complement(X1,X0) ),
file('theBenchmark.p',test_1) ).
fof(test_2,axiom,
! [X0,X1] :
( complement(X1,X0)
<=> ( addition(X0,X1) = one
& multiplication(X1,X0) = zero
& multiplication(X0,X1) = zero ) ),
file('theBenchmark.p',test_2) ).
fof(test_3,axiom,
! [X0,X1] :
( test(X0)
=> ( c(X0) = X1
<=> complement(X0,X1) ) ),
file('theBenchmark.p',test_3) ).
fof(test_deMorgan1,axiom,
! [X0,X1] :
( ( test(X1)
& test(X0) )
=> c(addition(X0,X1)) = multiplication(c(X0),c(X1)) ),
file('theBenchmark.p',test_deMorgan1) ).
fof(test_deMorgan2,axiom,
! [X0,X1] :
( ( test(X1)
& test(X0) )
=> c(multiplication(X0,X1)) = addition(c(X0),c(X1)) ),
file('theBenchmark.p',test_deMorgan2) ).
fof(goals,conjecture,
! [X0,X1,X2,X3,X4] :
( ( test(X4)
& test(X3) )
=> ( leq(addition(multiplication(X3,X0),multiplication(c(X3),X2)),addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)))
& leq(addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)),addition(multiplication(X3,X0),multiplication(c(X3),X2))) ) ),
file('theBenchmark.p',goals) ).
fof(goals_neg,negated_conjecture,
~ ! [X0,X1,X2,X3,X4] :
( ( test(X4)
& test(X3) )
=> ( leq(addition(multiplication(X3,X0),multiplication(c(X3),X2)),addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)))
& leq(addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)),addition(multiplication(X3,X0),multiplication(c(X3),X2))) ) ),
inference(assume_negation,[status(cth)],[goals]) ).
fof(nnf_13,plain,
! [X0] :
( ( ! [X1] : ~ complement(X1,X0)
| test(X0) )
& ( ? [X5] : complement(X5,X0)
| ~ test(X0) ) ),
inference(fof_nnf,[status(thm)],[test_1]) ).
fof(sk_test_1_sk,plain,
! [X0] :
( ( ! [X1] : ~ complement(X1,X0)
| test(X0) )
& ( complement(sK0(X0),X0)
| ~ test(X0) ) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK0]),skolemize(X5,sK0(X0))],[nnf_13]) ).
fof(sk_test_1,plain,
( ! [VAR_0,VAR_1] :
( ~ complement(VAR_1,VAR_0)
| test(VAR_0) )
& ! [VAR_0] :
( complement(sK0(VAR_0),VAR_0)
| ~ test(VAR_0) ) ),
inference(cnf_transformation,[status(thm)],[sk_test_1_sk]) ).
cnf(c_20,plain,
( ~ complement(B,A)
| test(A) ),
inference(split_conjunct,[status(thm)],[sk_test_1]) ).
cnf(c_21,plain,
( complement(sK0(A),A)
| ~ test(A) ),
inference(split_conjunct,[status(thm)],[sk_test_1]) ).
cnf(c_22,plain,
( multiplication(B,A) = zero
| ~ complement(A,B) ),
inference(clausify,[status(thm)],[test_2]) ).
cnf(c_23,plain,
( multiplication(A,B) = zero
| ~ complement(A,B) ),
inference(clausify,[status(thm)],[test_2]) ).
cnf(c_24,plain,
( addition(B,A) = one
| ~ complement(A,B) ),
inference(clausify,[status(thm)],[test_2]) ).
cnf(c_25,plain,
( addition(B,A) != one
| multiplication(A,B) != zero
| multiplication(B,A) != zero
| complement(A,B) ),
inference(clausify,[status(thm)],[test_2]) ).
cnf(c_26,plain,
( complement(A,B)
| c(A) != B
| ~ test(A) ),
inference(clausify,[status(thm)],[test_3]) ).
cnf(c_27,plain,
( ~ complement(A,B)
| c(A) = B
| ~ test(A) ),
inference(clausify,[status(thm)],[test_3]) ).
cnf(c_28,plain,
( ~ test(A)
| c(sK0(A)) = A
| ~ test(sK0(A)) ),
inference(resolve,[status(thm)],[c_27,c_21]) ).
cnf(c_32,plain,
( multiplication(A,B) = zero
| c(A) != B
| ~ test(A) ),
inference(resolve,[status(thm)],[c_26,c_23]) ).
cnf(c_34,plain,
( test(A)
| addition(A,B) != one
| multiplication(B,A) != zero
| multiplication(A,B) != zero ),
inference(resolve,[status(thm)],[c_25,c_20]) ).
cnf(c_35,plain,
( ~ test(A)
| addition(A,sK0(A)) = one ),
inference(resolve,[status(thm)],[c_24,c_21]) ).
cnf(c_36,plain,
( ~ test(A)
| multiplication(sK0(A),A) = zero ),
inference(resolve,[status(thm)],[c_23,c_21]) ).
cnf(c_37,plain,
( ~ test(A)
| multiplication(A,sK0(A)) = zero ),
inference(resolve,[status(thm)],[c_22,c_21]) ).
fof(nnf_19,plain,
? [X0,X1,X2,X3,X4] :
( ( ~ leq(addition(multiplication(X3,X0),multiplication(c(X3),X2)),addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)))
| ~ leq(addition(multiplication(X3,addition(multiplication(X3,X0),multiplication(c(X3),X1))),multiplication(c(X3),X2)),addition(multiplication(X3,X0),multiplication(c(X3),X2))) )
& test(X4)
& test(X3) ),
inference(fof_nnf,[status(thm)],[goals_neg]) ).
fof(sk_goals_neg,plain,
( ( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3))),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3))),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) )
& test(sK5)
& test(sK1) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK1,sK5,sK2,sK3,sK4]),skolemize(X0,sK2),skolemize(X1,sK3),skolemize(X2,sK4),skolemize(X3,sK1),skolemize(X4,sK5)],[nnf_19]) ).
cnf(c_38,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3))),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3))),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(split_conjunct,[status(thm)],[sk_goals_neg]) ).
cnf(c_40,negated_conjecture,
test(sK1),
inference(split_conjunct,[status(thm)],[sk_goals_neg]) ).
cnf(c_41,plain,
( c(multiplication(A,B)) = addition(c(A),c(B))
| ~ test(B)
| ~ test(A) ),
inference(clausify,[status(thm)],[test_deMorgan2]) ).
cnf(c_42,plain,
( c(addition(A,B)) = multiplication(c(A),c(B))
| ~ test(B)
| ~ test(A) ),
inference(clausify,[status(thm)],[test_deMorgan1]) ).
cnf(c_44,plain,
( addition(A,B) != B
| leq(A,B) ),
inference(clausify,[status(thm)],[order]) ).
cnf(c_46,plain,
multiplication(zero,A) = zero,
inference(clausify,[status(thm)],[left_annihilation]) ).
cnf(c_50,plain,
multiplication(A,addition(B,C)) = addition(multiplication(A,B),multiplication(A,C)),
inference(clausify,[status(thm)],[right_distributivity]) ).
cnf(c_51,plain,
addition(multiplication(A,B),multiplication(A,C)) = multiplication(A,addition(B,C)),
inference(copy,[status(thm)],[c_50]) ).
cnf(c_54,plain,
multiplication(multiplication(A,B),C) = multiplication(A,multiplication(B,C)),
inference(clausify,[status(thm)],[multiplicative_associativity]) ).
cnf(c_55,plain,
addition(A,A) = A,
inference(clausify,[status(thm)],[additive_idempotence]) ).
cnf(c_56,plain,
addition(A,zero) = A,
inference(clausify,[status(thm)],[additive_identity]) ).
cnf(c_58,plain,
addition(A,B) = addition(B,A),
inference(clausify,[status(thm)],[additive_commutativity]) ).
cnf(c_1957,plain,
( c(multiplication(A,A)) = addition(c(A),c(A))
| ~ test(A) ),
inference(factor,[status(thm)],[c_41]) ).
cnf(c_61,plain,
( c(multiplication(A,A)) = c(A)
| ~ test(A) ),
inference(paramod,[status(thm)],[c_55,c_1957]) ).
cnf(c_1958,plain,
( c(addition(A,A)) = multiplication(c(A),c(A))
| ~ test(A) ),
inference(factor,[status(thm)],[c_42]) ).
cnf(c_1959,plain,
( c(A) = multiplication(c(A),c(A))
| ~ test(A) ),
inference(paramod,[status(thm)],[c_55,c_1958]) ).
cnf(c_62,plain,
( multiplication(c(A),c(A)) = c(A)
| ~ test(A) ),
inference(copy,[status(thm)],[c_1959]) ).
cnf(c_1960,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3))),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(c(sK1),sK4),multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3)))),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_58,c_38]) ).
cnf(c_63,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(c(sK1),sK4),multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3)))))
| ~ leq(addition(multiplication(c(sK1),sK4),multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3)))),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_58,c_1960]) ).
cnf(c_73,plain,
multiplication(sK1,sK0(sK1)) = zero,
inference(resolve,[status(thm)],[c_40,c_37]) ).
cnf(c_74,plain,
multiplication(sK0(sK1),sK1) = zero,
inference(resolve,[status(thm)],[c_40,c_36]) ).
cnf(c_75,plain,
addition(sK1,sK0(sK1)) = one,
inference(resolve,[status(thm)],[c_40,c_35]) ).
cnf(c_77,plain,
( multiplication(sK1,A) = zero
| c(sK1) != A ),
inference(resolve,[status(thm)],[c_40,c_32]) ).
cnf(c_122,plain,
leq(A,A),
inference(resolve,[status(thm)],[c_55,c_44]) ).
cnf(c_137,plain,
( test(A)
| addition(B,A) != one
| multiplication(B,A) != zero
| multiplication(A,B) != zero ),
inference(paramod,[status(thm)],[c_58,c_34]) ).
cnf(c_139,plain,
addition(zero,A) = A,
inference(paramod,[status(thm)],[c_58,c_56]) ).
cnf(c_143,plain,
c(multiplication(sK1,sK1)) = c(sK1),
inference(resolve,[status(thm)],[c_61,c_40]) ).
cnf(c_1961,plain,
c(sK1) = c(multiplication(sK1,sK1)),
inference(copy,[status(thm)],[c_143]) ).
cnf(c_1962,plain,
multiplication(sK1,c(multiplication(sK1,sK1))) = zero,
inference(resolve,[status(thm)],[c_77,c_1961]) ).
cnf(c_283,plain,
multiplication(sK1,c(sK1)) = zero,
inference(paramod,[status(thm)],[c_143,c_1962]) ).
cnf(c_1963,plain,
multiplication(zero,A) = multiplication(sK1,multiplication(c(sK1),A)),
inference(paramod,[status(thm)],[c_283,c_54]) ).
cnf(c_1964,plain,
zero = multiplication(sK1,multiplication(c(sK1),A)),
inference(paramod,[status(thm)],[c_46,c_1963]) ).
cnf(c_288,plain,
multiplication(sK1,multiplication(c(sK1),A)) = zero,
inference(copy,[status(thm)],[c_1964]) ).
cnf(c_1965,plain,
addition(multiplication(sK1,A),zero) = multiplication(sK1,addition(A,multiplication(c(sK1),B))),
inference(paramod,[status(thm)],[c_288,c_51]) ).
cnf(c_1966,plain,
addition(zero,multiplication(sK1,A)) = multiplication(sK1,addition(A,multiplication(c(sK1),B))),
inference(paramod,[status(thm)],[c_58,c_1965]) ).
cnf(c_1967,plain,
multiplication(sK1,A) = multiplication(sK1,addition(A,multiplication(c(sK1),B))),
inference(paramod,[status(thm)],[c_139,c_1966]) ).
cnf(c_468,plain,
multiplication(sK1,addition(A,multiplication(c(sK1),B))) = multiplication(sK1,A),
inference(copy,[status(thm)],[c_1967]) ).
cnf(c_1968,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(c(sK1),sK4),multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3)))))
| ~ leq(addition(multiplication(c(sK1),sK4),multiplication(sK1,multiplication(sK1,sK2))),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_468,c_63]) ).
cnf(c_1969,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(c(sK1),sK4),multiplication(sK1,addition(multiplication(sK1,sK2),multiplication(c(sK1),sK3)))))
| ~ leq(addition(multiplication(sK1,multiplication(sK1,sK2)),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_58,c_1968]) ).
cnf(c_1970,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(c(sK1),sK4),multiplication(sK1,multiplication(sK1,sK2))))
| ~ leq(addition(multiplication(sK1,multiplication(sK1,sK2)),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_468,c_1969]) ).
cnf(c_469,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,multiplication(sK1,sK2)),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(sK1,multiplication(sK1,sK2)),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_58,c_1970]) ).
cnf(c_1971,plain,
( test(sK0(sK1))
| multiplication(sK1,sK0(sK1)) != zero
| multiplication(sK0(sK1),sK1) != zero ),
inference(resolve,[status(thm)],[c_137,c_75]) ).
cnf(c_1972,plain,
( test(sK0(sK1))
| multiplication(sK1,sK0(sK1)) != zero
| zero != zero ),
inference(paramod,[status(thm)],[c_74,c_1971]) ).
cnf(c_1973,plain,
( test(sK0(sK1))
| zero != zero
| zero != zero ),
inference(paramod,[status(thm)],[c_73,c_1972]) ).
cnf(c_1974,plain,
( test(sK0(sK1))
| zero != zero ),
inference(copy,[status(thm)],[c_1973]) ).
cnf(c_1647,plain,
test(sK0(sK1)),
inference(copy,[status(thm)],[c_1974]) ).
cnf(c_1682,plain,
multiplication(c(sK0(sK1)),c(sK0(sK1))) = c(sK0(sK1)),
inference(resolve,[status(thm)],[c_1647,c_62]) ).
cnf(c_1975,plain,
( ~ test(sK1)
| c(sK0(sK1)) = sK1 ),
inference(resolve,[status(thm)],[c_1647,c_28]) ).
cnf(c_1697,negated_conjecture,
c(sK0(sK1)) = sK1,
inference(resolve,[status(thm)],[c_40,c_1975]) ).
cnf(c_1976,plain,
multiplication(sK1,c(sK0(sK1))) = c(sK0(sK1)),
inference(paramod,[status(thm)],[c_1697,c_1682]) ).
cnf(c_1977,plain,
multiplication(sK1,sK1) = c(sK0(sK1)),
inference(paramod,[status(thm)],[c_1697,c_1976]) ).
cnf(c_1710,plain,
multiplication(sK1,sK1) = sK1,
inference(paramod,[status(thm)],[c_1697,c_1977]) ).
cnf(c_1978,plain,
multiplication(sK1,A) = multiplication(sK1,multiplication(sK1,A)),
inference(paramod,[status(thm)],[c_1710,c_54]) ).
cnf(c_1948,plain,
multiplication(sK1,multiplication(sK1,A)) = multiplication(sK1,A),
inference(copy,[status(thm)],[c_1978]) ).
cnf(c_1979,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,multiplication(sK1,sK2)),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_1948,c_469]) ).
cnf(c_1980,negated_conjecture,
( ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)))
| ~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))) ),
inference(paramod,[status(thm)],[c_1948,c_1979]) ).
cnf(c_1981,negated_conjecture,
~ leq(addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4)),addition(multiplication(sK1,sK2),multiplication(c(sK1),sK4))),
inference(copy,[status(thm)],[c_1980]) ).
cnf(c_1956,negated_conjecture,
$false,
inference(resolve,[status(thm)],[c_122,c_1981]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.05 % Problem : KLE027+4 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.06 % Command : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.18/5.45 % Computer : n014.cluster.edu
% 0.18/5.45 % Model : x86_64 x86_64
% 0.18/5.45 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.18/5.45 % Memory : 8046.5625MB
% 0.18/5.45 % OS : Linux 6.8.0-71-generic
% 0.18/5.45 % CPULimit : 300
% 0.18/5.45 % WCLimit : 300
% 0.18/5.45 % DateTime : Fri Sep 25 19:15:07 UTC 2026
% 0.18/5.46 % CPUTime :
% 0.18/5.46 % Prover9 (64) version 2026-6A, July 2026, CASC-J13.
% 0.18/5.46 % Process 854413 was started by sandbox on n014,
% 0.18/5.46 % Fri Sep 25 19:15:07 2026
% 0.18/5.46 % The command was "/export/starexec/sandbox/solver/bin/prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p".
% 0.18/5.47
% 0.18/5.47 % From the command line: assign(max_seconds, 300).
% 0.23/6.05
% 0.23/6.05 % SZS status Theorem for theBenchmark
% 0.23/6.05
% 0.23/6.05 % Proof 1 at 0.39 (+ 0.17) seconds.
% 0.23/6.05 % Length of proof is 60.
% 0.23/6.05 % Level of proof is 8.
% 0.23/6.05 % Maximum clause weight is 48.000.
% 0.23/6.05 % Given clauses 287.
% 0.23/6.05
% 0.23/6.05 % SZS output start CNFRefutation for theBenchmark
% See solution above
%------------------------------------------------------------------------------