%------------------------------------------------------------------------------
% File : Drodi---4.1.1
% Problem : KLE042+2 : TPTP v9.3.1. Released v4.0.0.
% Transfm : none
% Format : tptp:raw
% Command : drodi -timeout(300) /export/starexec/sandbox2/benchmark/theBenchmark.p
% Computer : n019.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 : Thu Sep 24 12:57:50 PM UTC 2026
% Result : Theorem 0.21s 5.92s
% Output : CNFRefutation 0.21s
% Verified :
% SZS Type : Refutation
% Derivation depth : 16
% Number of leaves : 15
% Syntax : Number of formulae : 83 ( 39 unt; 2 def)
% Number of atoms : 131 ( 59 equ)
% Maximal formula atoms : 4 ( 1 avg)
% Number of connectives : 91 ( 43 ~; 39 |; 4 &)
% ( 3 <=>; 2 =>; 0 <=; 0 <~>)
% Maximal formula depth : 6 ( 3 avg)
% Maximal term depth : 8 ( 2 avg)
% Number of predicates : 5 ( 3 usr; 3 prp; 0-2 aty)
% Number of functors : 8 ( 8 usr; 5 con; 0-2 aty)
% Number of variables : 129 ( 123 !; 6 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f1,axiom,
! [A,B] : addition(A,B) = addition(B,A),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f2,axiom,
! [C,B,A] : addition(A,addition(B,C)) = addition(addition(A,B),C),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f5,axiom,
! [A,B,C] : multiplication(A,multiplication(B,C)) = multiplication(multiplication(A,B),C),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f6,axiom,
! [A] : multiplication(A,one) = A,
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f7,axiom,
! [A] : multiplication(one,A) = A,
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f8,axiom,
! [A,B,C] : multiplication(A,addition(B,C)) = addition(multiplication(A,B),multiplication(A,C)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f9,axiom,
! [A,B,C] : multiplication(addition(A,B),C) = addition(multiplication(A,C),multiplication(B,C)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f12,axiom,
! [A,B] :
( leq(A,B)
<=> addition(A,B) = B ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f13,axiom,
! [A] : leq(addition(one,multiplication(A,star(A))),star(A)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f14,axiom,
! [A] : leq(addition(one,multiplication(star(A),A)),star(A)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f15,axiom,
! [A,B,C] :
( leq(addition(multiplication(A,B),C),B)
=> leq(multiplication(star(A),C),B) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f16,axiom,
! [A,B,C] :
( leq(addition(multiplication(A,B),C),A)
=> leq(multiplication(C,star(B)),A) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f17,conjecture,
! [X0,X1] :
( leq(multiplication(X0,star(multiplication(X1,X0))),multiplication(star(multiplication(X0,X1)),X0))
& leq(multiplication(star(multiplication(X0,X1)),X0),multiplication(X0,star(multiplication(X1,X0)))) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p') ).
fof(f18,negated_conjecture,
~ ! [X0,X1] :
( leq(multiplication(X0,star(multiplication(X1,X0))),multiplication(star(multiplication(X0,X1)),X0))
& leq(multiplication(star(multiplication(X0,X1)),X0),multiplication(X0,star(multiplication(X1,X0)))) ),
inference(negated_conjecture,[status(cth)],[f17]) ).
fof(f19,plain,
! [X0,X1] : addition(X0,X1) = addition(X1,X0),
inference(cnf_transformation,[status(thm)],[f1]) ).
fof(f20,plain,
! [X0,X1,X2] : addition(X0,addition(X1,X2)) = addition(addition(X0,X1),X2),
inference(cnf_transformation,[status(thm)],[f2]) ).
fof(f23,plain,
! [X0,X1,X2] : multiplication(X0,multiplication(X1,X2)) = multiplication(multiplication(X0,X1),X2),
inference(cnf_transformation,[status(thm)],[f5]) ).
fof(f24,plain,
! [X0] : multiplication(X0,one) = X0,
inference(cnf_transformation,[status(thm)],[f6]) ).
fof(f25,plain,
! [X0] : multiplication(one,X0) = X0,
inference(cnf_transformation,[status(thm)],[f7]) ).
fof(f26,plain,
! [X0,X1,X2] : multiplication(X0,addition(X1,X2)) = addition(multiplication(X0,X1),multiplication(X0,X2)),
inference(cnf_transformation,[status(thm)],[f8]) ).
fof(f27,plain,
! [X0,X1,X2] : multiplication(addition(X0,X1),X2) = addition(multiplication(X0,X2),multiplication(X1,X2)),
inference(cnf_transformation,[status(thm)],[f9]) ).
fof(f30,plain,
! [A,B] :
( ( addition(A,B) != B
| leq(A,B) )
& ( addition(A,B) = B
| ~ leq(A,B) ) ),
inference(NNF_transformation,[status(thm)],[f12]) ).
fof(f31,plain,
( ! [A,B] :
( addition(A,B) != B
| leq(A,B) )
& ! [A,B] :
( addition(A,B) = B
| ~ leq(A,B) ) ),
inference(miniscoping,[status(thm)],[f30]) ).
fof(f32,plain,
! [X0,X1] :
( addition(X0,X1) = X1
| ~ leq(X0,X1) ),
inference(cnf_transformation,[status(thm)],[f31]) ).
fof(f33,plain,
! [X0,X1] :
( addition(X0,X1) != X1
| leq(X0,X1) ),
inference(cnf_transformation,[status(thm)],[f31]) ).
fof(f34,plain,
! [X0] : leq(addition(one,multiplication(X0,star(X0))),star(X0)),
inference(cnf_transformation,[status(thm)],[f13]) ).
fof(f35,plain,
! [X0] : leq(addition(one,multiplication(star(X0),X0)),star(X0)),
inference(cnf_transformation,[status(thm)],[f14]) ).
fof(f36,plain,
! [A,B,C] :
( leq(multiplication(star(A),C),B)
| ~ leq(addition(multiplication(A,B),C),B) ),
inference(pre_NNF_transformation,[status(thm)],[f15]) ).
fof(f37,plain,
! [X0,X1,X2] :
( leq(multiplication(star(X0),X2),X1)
| ~ leq(addition(multiplication(X0,X1),X2),X1) ),
inference(cnf_transformation,[status(thm)],[f36]) ).
fof(f38,plain,
! [A,B,C] :
( leq(multiplication(C,star(B)),A)
| ~ leq(addition(multiplication(A,B),C),A) ),
inference(pre_NNF_transformation,[status(thm)],[f16]) ).
fof(f39,plain,
! [X0,X1,X2] :
( leq(multiplication(X2,star(X1)),X0)
| ~ leq(addition(multiplication(X0,X1),X2),X0) ),
inference(cnf_transformation,[status(thm)],[f38]) ).
fof(f40,plain,
? [X0,X1] :
( ~ leq(multiplication(X0,star(multiplication(X1,X0))),multiplication(star(multiplication(X0,X1)),X0))
| ~ leq(multiplication(star(multiplication(X0,X1)),X0),multiplication(X0,star(multiplication(X1,X0)))) ),
inference(pre_NNF_transformation,[status(thm)],[f18]) ).
fof(f41,plain,
( ? [X0,X1] : ~ leq(multiplication(X0,star(multiplication(X1,X0))),multiplication(star(multiplication(X0,X1)),X0))
| ? [X0,X1] : ~ leq(multiplication(star(multiplication(X0,X1)),X0),multiplication(X0,star(multiplication(X1,X0)))) ),
inference(miniscoping,[status(thm)],[f40]) ).
fof(f42,plain,
( ~ leq(multiplication(sK2_skl,star(multiplication(sK3_skl,sK2_skl))),multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl))
| ~ leq(multiplication(star(multiplication(sK0_skl,sK1_skl)),sK0_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK0_skl,sK1_skl,sK2_skl,sK3_skl]),skolemize(X0,sK0_skl),skolemize(X1,sK1_skl),skolemize(X0,sK2_skl),skolemize(X1,sK3_skl)],[f41]) ).
fof(f43,plain,
( ~ leq(multiplication(sK2_skl,star(multiplication(sK3_skl,sK2_skl))),multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl))
| ~ leq(multiplication(star(multiplication(sK0_skl,sK1_skl)),sK0_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))) ),
inference(cnf_transformation,[status(thm)],[f42]) ).
fof(f44,definition,
( sQ0_spl
<=> leq(multiplication(star(multiplication(sK0_skl,sK1_skl)),sK0_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))) ),
introduced(definition,[new_symbols(definition,[sQ0_spl])],[split_symbol_definition]) ).
fof(f46,plain,
( sQ0_spl
| ~ leq(multiplication(star(multiplication(sK0_skl,sK1_skl)),sK0_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))) ),
inference(component_clause,[status(thm)],[f44]) ).
fof(f47,definition,
( sQ1_spl
<=> leq(multiplication(sK2_skl,star(multiplication(sK3_skl,sK2_skl))),multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl)) ),
introduced(definition,[new_symbols(definition,[sQ1_spl])],[split_symbol_definition]) ).
fof(f49,plain,
( sQ1_spl
| ~ leq(multiplication(sK2_skl,star(multiplication(sK3_skl,sK2_skl))),multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl)) ),
inference(component_clause,[status(thm)],[f47]) ).
fof(f50,plain,
( ~ sQ1_spl
| ~ sQ0_spl ),
inference(split_clause,[status(thm)],[f43,f44,f47]) ).
fof(f57,plain,
! [X0,X1,X2] :
( addition(addition(multiplication(X0,X2),X1),X2) != X2
| leq(multiplication(star(X0),X1),X2) ),
inference(resolution,[status(thm)],[f37,f33]) ).
fof(f59,plain,
! [X0,X1,X2] :
( addition(multiplication(X0,X2),addition(X1,X2)) != X2
| leq(multiplication(star(X0),X1),X2) ),
inference(forward_demodulation,[status(thm)],[f20,f57]) ).
fof(f60,plain,
! [X0,X1,X2] :
( addition(addition(multiplication(X2,X1),X0),X2) != X2
| leq(multiplication(X0,star(X1)),X2) ),
inference(resolution,[status(thm)],[f39,f33]) ).
fof(f62,plain,
! [X0,X1,X2] :
( addition(multiplication(X2,X1),addition(X0,X2)) != X2
| leq(multiplication(X0,star(X1)),X2) ),
inference(forward_demodulation,[status(thm)],[f20,f60]) ).
fof(f63,plain,
( sQ0_spl
| addition(multiplication(multiplication(sK0_skl,sK1_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))),addition(sK0_skl,multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(resolution,[status(thm)],[f59,f46]) ).
fof(f65,plain,
( sQ0_spl
| addition(addition(sK0_skl,multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))),multiplication(multiplication(sK0_skl,sK1_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(forward_demodulation,[status(thm)],[f19,f63]) ).
fof(f66,plain,
( sQ0_spl
| addition(sK0_skl,addition(multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))),multiplication(multiplication(sK0_skl,sK1_skl),multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl)))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(forward_demodulation,[status(thm)],[f20,f65]) ).
fof(f67,plain,
( sQ0_spl
| addition(sK0_skl,addition(multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))),multiplication(sK0_skl,multiplication(sK1_skl,multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(forward_demodulation,[status(thm)],[f23,f66]) ).
fof(f68,plain,
( sQ0_spl
| addition(sK0_skl,multiplication(sK0_skl,addition(star(multiplication(sK1_skl,sK0_skl)),multiplication(sK1_skl,multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(forward_demodulation,[status(thm)],[f26,f67]) ).
fof(f108,plain,
! [X0,X1,X2] : addition(X0,addition(X1,X2)) = addition(X2,addition(X0,X1)),
inference(paramodulation,[status(thm)],[f19,f20]) ).
fof(f124,plain,
! [X0,X1,X2] :
( addition(X2,addition(multiplication(X2,X1),X0)) != X2
| leq(multiplication(X0,star(X1)),X2) ),
inference(backward_demodulation,[status(thm)],[f108,f62]) ).
fof(f144,plain,
! [X0,X1] : multiplication(X0,addition(one,X1)) = addition(X0,multiplication(X0,X1)),
inference(paramodulation,[status(thm)],[f24,f26]) ).
fof(f161,plain,
( sQ0_spl
| multiplication(sK0_skl,addition(one,addition(star(multiplication(sK1_skl,sK0_skl)),multiplication(sK1_skl,multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(backward_demodulation,[status(thm)],[f144,f68]) ).
fof(f172,plain,
! [X0,X1,X2] : multiplication(addition(X0,X1),X2) = addition(multiplication(X1,X2),multiplication(X0,X2)),
inference(paramodulation,[status(thm)],[f19,f27]) ).
fof(f175,plain,
! [X0,X1] : multiplication(addition(one,X0),X1) = addition(X1,multiplication(X0,X1)),
inference(paramodulation,[status(thm)],[f25,f27]) ).
fof(f176,plain,
! [X0,X1,X2,X3] : multiplication(addition(multiplication(X0,X1),X2),X3) = addition(multiplication(X0,multiplication(X1,X3)),multiplication(X2,X3)),
inference(paramodulation,[status(thm)],[f23,f27]) ).
fof(f179,plain,
! [X0,X1,X2,X3] : multiplication(addition(X0,multiplication(X1,X2)),X3) = addition(multiplication(X0,X3),multiplication(X1,multiplication(X2,X3))),
inference(paramodulation,[status(thm)],[f23,f27]) ).
fof(f190,plain,
! [X0,X1,X2] : multiplication(addition(X0,X1),X2) = multiplication(addition(X1,X0),X2),
inference(forward_demodulation,[status(thm)],[f27,f172]) ).
fof(f290,plain,
! [X0,X1,X2] : multiplication(addition(multiplication(X0,X1),one),X2) = addition(multiplication(X0,multiplication(X1,X2)),X2),
inference(paramodulation,[status(thm)],[f25,f176]) ).
fof(f314,plain,
! [X0,X1,X2] : multiplication(addition(one,multiplication(X0,X1)),X2) = addition(multiplication(X0,multiplication(X1,X2)),X2),
inference(forward_demodulation,[status(thm)],[f190,f290]) ).
fof(f315,plain,
( sQ0_spl
| multiplication(sK0_skl,addition(one,multiplication(addition(one,multiplication(sK1_skl,sK0_skl)),star(multiplication(sK1_skl,sK0_skl))))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(backward_demodulation,[status(thm)],[f316,f161]) ).
fof(f316,plain,
! [X0,X1,X2] : multiplication(addition(one,multiplication(X0,X1)),X2) = addition(X2,multiplication(X0,multiplication(X1,X2))),
inference(forward_demodulation,[status(thm)],[f19,f314]) ).
fof(f543,plain,
! [X0] : addition(addition(one,multiplication(X0,star(X0))),star(X0)) = star(X0),
inference(resolution,[status(thm)],[f34,f32]) ).
fof(f547,plain,
! [X0] : addition(one,addition(multiplication(X0,star(X0)),star(X0))) = star(X0),
inference(forward_demodulation,[status(thm)],[f20,f543]) ).
fof(f548,plain,
! [X0] : addition(one,addition(star(X0),multiplication(X0,star(X0)))) = star(X0),
inference(forward_demodulation,[status(thm)],[f19,f547]) ).
fof(f549,plain,
( sQ0_spl
| multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) != multiplication(sK0_skl,star(multiplication(sK1_skl,sK0_skl))) ),
inference(backward_demodulation,[status(thm)],[f550,f315]) ).
fof(f550,plain,
! [X0] : addition(one,multiplication(addition(one,X0),star(X0))) = star(X0),
inference(forward_demodulation,[status(thm)],[f175,f548]) ).
fof(f552,plain,
( sQ0_spl
| $false ),
inference(trivial_equality_resolution,[status(thm)],[f549]) ).
fof(f553,plain,
sQ0_spl,
inference(contradiction_clause,[status(thm)],[f552]) ).
fof(f554,plain,
! [X0] : addition(addition(one,multiplication(star(X0),X0)),star(X0)) = star(X0),
inference(resolution,[status(thm)],[f35,f32]) ).
fof(f558,plain,
! [X0] : addition(one,addition(multiplication(star(X0),X0),star(X0))) = star(X0),
inference(forward_demodulation,[status(thm)],[f20,f554]) ).
fof(f559,plain,
! [X0] : addition(one,addition(star(X0),multiplication(star(X0),X0))) = star(X0),
inference(forward_demodulation,[status(thm)],[f19,f558]) ).
fof(f560,plain,
! [X0] : addition(one,multiplication(star(X0),addition(one,X0))) = star(X0),
inference(forward_demodulation,[status(thm)],[f144,f559]) ).
fof(f715,plain,
( sQ1_spl
| addition(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),addition(multiplication(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),multiplication(sK3_skl,sK2_skl)),sK2_skl)) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(resolution,[status(thm)],[f124,f49]) ).
fof(f722,plain,
( sQ1_spl
| addition(sK2_skl,addition(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),multiplication(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),multiplication(sK3_skl,sK2_skl)))) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f108,f715]) ).
fof(f723,plain,
( sQ1_spl
| addition(sK2_skl,multiplication(addition(star(multiplication(sK2_skl,sK3_skl)),multiplication(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),sK3_skl)),sK2_skl)) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f179,f722]) ).
fof(f724,plain,
( sQ1_spl
| multiplication(addition(one,addition(star(multiplication(sK2_skl,sK3_skl)),multiplication(multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl),sK3_skl))),sK2_skl) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f175,f723]) ).
fof(f725,plain,
( sQ1_spl
| multiplication(addition(one,addition(star(multiplication(sK2_skl,sK3_skl)),multiplication(star(multiplication(sK2_skl,sK3_skl)),multiplication(sK2_skl,sK3_skl)))),sK2_skl) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f23,f724]) ).
fof(f726,plain,
( sQ1_spl
| multiplication(addition(one,multiplication(star(multiplication(sK2_skl,sK3_skl)),addition(one,multiplication(sK2_skl,sK3_skl)))),sK2_skl) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f144,f725]) ).
fof(f727,plain,
( sQ1_spl
| multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) != multiplication(star(multiplication(sK2_skl,sK3_skl)),sK2_skl) ),
inference(forward_demodulation,[status(thm)],[f560,f726]) ).
fof(f728,plain,
( sQ1_spl
| $false ),
inference(trivial_equality_resolution,[status(thm)],[f727]) ).
fof(f729,plain,
sQ1_spl,
inference(contradiction_clause,[status(thm)],[f728]) ).
fof(f730,plain,
$false,
inference(sat_refutation,[status(thm)],[f50,f553,f729]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.05 % Problem : KLE042+2 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.07 % Command : drodi -timeout(300) /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.17/5.66 % Computer : n019.cluster.edu
% 0.17/5.66 % Model : x86_64 x86_64
% 0.17/5.66 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.17/5.66 % Memory : 8046.5625MB
% 0.17/5.66 % OS : Linux 6.8.0-71-generic
% 0.17/5.66 % CPULimit : 300
% 0.17/5.66 % WCLimit : 300
% 0.17/5.66 % DateTime : Sun Sep 20 22:40:41 UTC 2026
% 0.17/5.66 % CPUTime :
% 0.17/5.67 % Drodi V4.1.1
% 0.21/5.92 % Refutation found
% 0.21/5.92 % SZS status Theorem for theBenchmark: Theorem is valid
% 0.21/5.92 % SZS output start CNFRefutation for theBenchmark
% See solution above
% 0.21/5.95 % Elapsed time: 0.278199 seconds
% 0.21/5.95 % CPU time: 1.938595 seconds
% 0.21/5.95 % Total memory used: 87.336 MB
% 0.21/5.95 % Net memory used: 86.623 MB
%------------------------------------------------------------------------------