%------------------------------------------------------------------------------
% File : Prover9---2026-6A
% Problem : GRP185-1 : TPTP v9.3.1. Bugfixed v1.2.1.
% Transfm : none
% Format : tptp:raw
% Command : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p
% Computer : n010.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:28:18 AM UTC 2026
% Result : Unsatisfiable 11.68s 6.95s
% Output : CNFRefutation 11.68s
% Verified :
% SZS Type : Refutation
% Derivation depth : 23
% Number of leaves : 13
% Syntax : Number of formulae : 90 ( 90 unt; 0 def)
% Number of atoms : 90 ( 89 equ)
% Maximal formula atoms : 1 ( 1 avg)
% Number of connectives : 23 ( 23 ~; 0 |; 0 &)
% ( 0 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 4 ( 2 avg)
% Maximal term depth : 8 ( 2 avg)
% Number of predicates : 2 ( 0 usr; 1 prp; 0-2 aty)
% Number of functors : 7 ( 7 usr; 3 con; 0-2 aty)
% Number of variables : 145 ( 11 sgn 26 !; 0 ?)
% Comments :
%------------------------------------------------------------------------------
fof(left_identity,axiom,
! [VAR_0] : multiply(identity,VAR_0) = VAR_0,
file('theBenchmark.p',left_identity) ).
cnf(c_1,plain,
multiply(identity,A) = A,
inference(clausify,[status(thm)],[left_identity]) ).
fof(left_inverse,axiom,
! [VAR_0] : multiply(inverse(VAR_0),VAR_0) = identity,
file('theBenchmark.p',left_inverse) ).
cnf(c_2,plain,
multiply(inverse(A),A) = identity,
inference(clausify,[status(thm)],[left_inverse]) ).
fof(associativity,axiom,
! [VAR_0,VAR_1,VAR_2] : multiply(multiply(VAR_0,VAR_1),VAR_2) = multiply(VAR_0,multiply(VAR_1,VAR_2)),
file('theBenchmark.p',associativity) ).
cnf(c_3,plain,
multiply(multiply(A,B),C) = multiply(A,multiply(B,C)),
inference(clausify,[status(thm)],[associativity]) ).
fof(symmetry_of_glb,axiom,
! [VAR_0,VAR_1] : greatest_lower_bound(VAR_0,VAR_1) = greatest_lower_bound(VAR_1,VAR_0),
file('theBenchmark.p',symmetry_of_glb) ).
cnf(c_4,plain,
greatest_lower_bound(A,B) = greatest_lower_bound(B,A),
inference(clausify,[status(thm)],[symmetry_of_glb]) ).
fof(symmetry_of_lub,axiom,
! [VAR_0,VAR_1] : least_upper_bound(VAR_0,VAR_1) = least_upper_bound(VAR_1,VAR_0),
file('theBenchmark.p',symmetry_of_lub) ).
cnf(c_5,plain,
least_upper_bound(A,B) = least_upper_bound(B,A),
inference(clausify,[status(thm)],[symmetry_of_lub]) ).
fof(associativity_of_glb,axiom,
! [VAR_0,VAR_1,VAR_2] : greatest_lower_bound(VAR_0,greatest_lower_bound(VAR_1,VAR_2)) = greatest_lower_bound(greatest_lower_bound(VAR_0,VAR_1),VAR_2),
file('theBenchmark.p',associativity_of_glb) ).
cnf(c_6,plain,
greatest_lower_bound(A,greatest_lower_bound(B,C)) = greatest_lower_bound(greatest_lower_bound(A,B),C),
inference(clausify,[status(thm)],[associativity_of_glb]) ).
cnf(c_7,plain,
greatest_lower_bound(greatest_lower_bound(A,B),C) = greatest_lower_bound(A,greatest_lower_bound(B,C)),
inference(copy,[status(thm)],[c_6]) ).
fof(associativity_of_lub,axiom,
! [VAR_0,VAR_1,VAR_2] : least_upper_bound(VAR_0,least_upper_bound(VAR_1,VAR_2)) = least_upper_bound(least_upper_bound(VAR_0,VAR_1),VAR_2),
file('theBenchmark.p',associativity_of_lub) ).
cnf(c_8,plain,
least_upper_bound(A,least_upper_bound(B,C)) = least_upper_bound(least_upper_bound(A,B),C),
inference(clausify,[status(thm)],[associativity_of_lub]) ).
cnf(c_9,plain,
least_upper_bound(least_upper_bound(A,B),C) = least_upper_bound(A,least_upper_bound(B,C)),
inference(copy,[status(thm)],[c_8]) ).
fof(idempotence_of_lub,axiom,
! [VAR_0] : least_upper_bound(VAR_0,VAR_0) = VAR_0,
file('theBenchmark.p',idempotence_of_lub) ).
cnf(c_10,plain,
least_upper_bound(A,A) = A,
inference(clausify,[status(thm)],[idempotence_of_lub]) ).
fof(lub_absorbtion,axiom,
! [VAR_0,VAR_1] : least_upper_bound(VAR_0,greatest_lower_bound(VAR_0,VAR_1)) = VAR_0,
file('theBenchmark.p',lub_absorbtion) ).
cnf(c_12,plain,
least_upper_bound(A,greatest_lower_bound(A,B)) = A,
inference(clausify,[status(thm)],[lub_absorbtion]) ).
fof(glb_absorbtion,axiom,
! [VAR_0,VAR_1] : greatest_lower_bound(VAR_0,least_upper_bound(VAR_0,VAR_1)) = VAR_0,
file('theBenchmark.p',glb_absorbtion) ).
cnf(c_13,plain,
greatest_lower_bound(A,least_upper_bound(A,B)) = A,
inference(clausify,[status(thm)],[glb_absorbtion]) ).
fof(monotony_lub1,axiom,
! [VAR_0,VAR_1,VAR_2] : multiply(VAR_0,least_upper_bound(VAR_1,VAR_2)) = least_upper_bound(multiply(VAR_0,VAR_1),multiply(VAR_0,VAR_2)),
file('theBenchmark.p',monotony_lub1) ).
cnf(c_14,plain,
multiply(A,least_upper_bound(B,C)) = least_upper_bound(multiply(A,B),multiply(A,C)),
inference(clausify,[status(thm)],[monotony_lub1]) ).
cnf(c_15,plain,
least_upper_bound(multiply(A,B),multiply(A,C)) = multiply(A,least_upper_bound(B,C)),
inference(copy,[status(thm)],[c_14]) ).
fof(monotony_lub2,axiom,
! [VAR_0,VAR_1,VAR_2] : multiply(least_upper_bound(VAR_0,VAR_1),VAR_2) = least_upper_bound(multiply(VAR_0,VAR_2),multiply(VAR_1,VAR_2)),
file('theBenchmark.p',monotony_lub2) ).
cnf(c_18,plain,
multiply(least_upper_bound(A,B),C) = least_upper_bound(multiply(A,C),multiply(B,C)),
inference(clausify,[status(thm)],[monotony_lub2]) ).
cnf(c_19,plain,
least_upper_bound(multiply(A,B),multiply(C,B)) = multiply(least_upper_bound(A,C),B),
inference(copy,[status(thm)],[c_18]) ).
fof(prove_p22a,axiom,
least_upper_bound(least_upper_bound(multiply(a,b),identity),multiply(least_upper_bound(a,identity),least_upper_bound(b,identity))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
file('theBenchmark.p',prove_p22a) ).
cnf(c_22,plain,
least_upper_bound(least_upper_bound(multiply(a,b),identity),multiply(least_upper_bound(a,identity),least_upper_bound(b,identity))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
inference(clausify,[status(thm)],[prove_p22a]) ).
cnf(c_5950,plain,
least_upper_bound(least_upper_bound(identity,multiply(a,b)),multiply(least_upper_bound(a,identity),least_upper_bound(b,identity))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
inference(paramod,[status(thm)],[c_5,c_22]) ).
cnf(c_5951,plain,
least_upper_bound(least_upper_bound(identity,multiply(a,b)),multiply(least_upper_bound(identity,a),least_upper_bound(b,identity))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
inference(paramod,[status(thm)],[c_5,c_5950]) ).
cnf(c_5952,plain,
least_upper_bound(least_upper_bound(identity,multiply(a,b)),multiply(least_upper_bound(identity,a),least_upper_bound(identity,b))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
inference(paramod,[status(thm)],[c_5,c_5951]) ).
cnf(c_5953,plain,
least_upper_bound(multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),least_upper_bound(identity,multiply(a,b))) != multiply(least_upper_bound(a,identity),least_upper_bound(b,identity)),
inference(paramod,[status(thm)],[c_5,c_5952]) ).
cnf(c_5954,plain,
least_upper_bound(multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),least_upper_bound(identity,multiply(a,b))) != multiply(least_upper_bound(identity,a),least_upper_bound(b,identity)),
inference(paramod,[status(thm)],[c_5,c_5953]) ).
cnf(c_23,plain,
least_upper_bound(multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),least_upper_bound(identity,multiply(a,b))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_5,c_5954]) ).
cnf(c_5955,plain,
multiply(identity,A) = multiply(inverse(B),multiply(B,A)),
inference(paramod,[status(thm)],[c_2,c_3]) ).
cnf(c_5956,plain,
A = multiply(inverse(B),multiply(B,A)),
inference(paramod,[status(thm)],[c_1,c_5955]) ).
cnf(c_24,plain,
multiply(inverse(A),multiply(A,B)) = B,
inference(copy,[status(thm)],[c_5956]) ).
cnf(c_27,plain,
least_upper_bound(A,least_upper_bound(B,C)) = least_upper_bound(C,least_upper_bound(A,B)),
inference(paramod,[status(thm)],[c_9,c_5]) ).
cnf(c_5957,plain,
least_upper_bound(least_upper_bound(A,B),C) = least_upper_bound(B,least_upper_bound(A,C)),
inference(paramod,[status(thm)],[c_5,c_9]) ).
cnf(c_28,plain,
least_upper_bound(A,least_upper_bound(B,C)) = least_upper_bound(B,least_upper_bound(A,C)),
inference(paramod,[status(thm)],[c_9,c_5957]) ).
cnf(c_5958,plain,
least_upper_bound(multiply(a,b),least_upper_bound(multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),identity)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_27,c_23]) ).
cnf(c_5959,plain,
least_upper_bound(multiply(a,b),least_upper_bound(identity,multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_5,c_5958]) ).
cnf(c_29,plain,
least_upper_bound(identity,least_upper_bound(multiply(a,b),multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_28,c_5959]) ).
cnf(c_5960,plain,
least_upper_bound(least_upper_bound(A,B),B) = least_upper_bound(A,B),
inference(paramod,[status(thm)],[c_10,c_9]) ).
cnf(c_32,plain,
least_upper_bound(A,least_upper_bound(B,A)) = least_upper_bound(B,A),
inference(paramod,[status(thm)],[c_5,c_5960]) ).
cnf(c_36,plain,
least_upper_bound(A,greatest_lower_bound(B,A)) = A,
inference(paramod,[status(thm)],[c_4,c_12]) ).
cnf(c_5961,plain,
greatest_lower_bound(A,B) = greatest_lower_bound(A,greatest_lower_bound(least_upper_bound(A,C),B)),
inference(paramod,[status(thm)],[c_13,c_7]) ).
cnf(c_41,plain,
greatest_lower_bound(A,greatest_lower_bound(least_upper_bound(A,B),C)) = greatest_lower_bound(A,C),
inference(copy,[status(thm)],[c_5961]) ).
cnf(c_44,plain,
least_upper_bound(identity,multiply(inverse(A),B)) = multiply(inverse(A),least_upper_bound(A,B)),
inference(paramod,[status(thm)],[c_2,c_15]) ).
cnf(c_50,plain,
least_upper_bound(A,multiply(B,A)) = multiply(least_upper_bound(identity,B),A),
inference(paramod,[status(thm)],[c_1,c_19]) ).
cnf(c_55,plain,
least_upper_bound(multiply(A,B),multiply(C,multiply(D,B))) = multiply(least_upper_bound(A,multiply(C,D)),B),
inference(paramod,[status(thm)],[c_3,c_19]) ).
cnf(c_65,plain,
multiply(inverse(inverse(A)),identity) = A,
inference(paramod,[status(thm)],[c_2,c_24]) ).
cnf(c_75,plain,
multiply(inverse(inverse(A)),B) = multiply(A,B),
inference(paramod,[status(thm)],[c_24,c_24]) ).
cnf(c_76,plain,
multiply(A,identity) = A,
inference(paramod,[status(thm)],[c_75,c_65]) ).
cnf(c_86,plain,
least_upper_bound(A,multiply(A,B)) = multiply(A,least_upper_bound(identity,B)),
inference(paramod,[status(thm)],[c_76,c_15]) ).
cnf(c_5962,plain,
least_upper_bound(A,multiply(least_upper_bound(identity,B),C)) = least_upper_bound(C,least_upper_bound(A,multiply(B,C))),
inference(paramod,[status(thm)],[c_50,c_28]) ).
cnf(c_118,plain,
least_upper_bound(A,least_upper_bound(B,multiply(C,A))) = least_upper_bound(B,multiply(least_upper_bound(identity,C),A)),
inference(copy,[status(thm)],[c_5962]) ).
cnf(c_5963,plain,
least_upper_bound(inverse(A),identity) = multiply(inverse(A),least_upper_bound(identity,A)),
inference(paramod,[status(thm)],[c_2,c_86]) ).
cnf(c_173,plain,
least_upper_bound(identity,inverse(A)) = multiply(inverse(A),least_upper_bound(identity,A)),
inference(paramod,[status(thm)],[c_5,c_5963]) ).
cnf(c_179,plain,
greatest_lower_bound(A,multiply(A,least_upper_bound(identity,B))) = A,
inference(paramod,[status(thm)],[c_86,c_13]) ).
cnf(c_5964,plain,
multiply(A,least_upper_bound(identity,A)) = multiply(least_upper_bound(identity,A),A),
inference(paramod,[status(thm)],[c_86,c_50]) ).
cnf(c_192,plain,
multiply(least_upper_bound(identity,A),A) = multiply(A,least_upper_bound(identity,A)),
inference(copy,[status(thm)],[c_5964]) ).
cnf(c_492,plain,
least_upper_bound(identity,multiply(inverse(A),least_upper_bound(B,A))) = multiply(inverse(A),least_upper_bound(B,A)),
inference(paramod,[status(thm)],[c_32,c_44]) ).
cnf(c_5965,plain,
greatest_lower_bound(A,least_upper_bound(A,B)) = greatest_lower_bound(A,multiply(least_upper_bound(A,B),least_upper_bound(identity,C))),
inference(paramod,[status(thm)],[c_179,c_41]) ).
cnf(c_5966,plain,
A = greatest_lower_bound(A,multiply(least_upper_bound(A,B),least_upper_bound(identity,C))),
inference(paramod,[status(thm)],[c_13,c_5965]) ).
cnf(c_561,plain,
greatest_lower_bound(A,multiply(least_upper_bound(A,B),least_upper_bound(identity,C))) = A,
inference(copy,[status(thm)],[c_5966]) ).
cnf(c_5967,plain,
least_upper_bound(multiply(A,B),multiply(C,identity)) = multiply(least_upper_bound(A,multiply(C,inverse(B))),B),
inference(paramod,[status(thm)],[c_2,c_55]) ).
cnf(c_1081,plain,
least_upper_bound(multiply(A,B),C) = multiply(least_upper_bound(A,multiply(C,inverse(B))),B),
inference(paramod,[status(thm)],[c_76,c_5967]) ).
cnf(c_5968,plain,
least_upper_bound(identity,multiply(least_upper_bound(a,multiply(multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),inverse(b))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_1081,c_29]) ).
cnf(c_1315,plain,
least_upper_bound(identity,multiply(least_upper_bound(a,multiply(least_upper_bound(identity,a),multiply(least_upper_bound(identity,b),inverse(b)))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_3,c_5968]) ).
cnf(c_5969,plain,
least_upper_bound(multiply(least_upper_bound(A,B),least_upper_bound(identity,C)),A) = multiply(least_upper_bound(A,B),least_upper_bound(identity,C)),
inference(paramod,[status(thm)],[c_561,c_36]) ).
cnf(c_1566,plain,
least_upper_bound(A,multiply(least_upper_bound(A,B),least_upper_bound(identity,C))) = multiply(least_upper_bound(A,B),least_upper_bound(identity,C)),
inference(paramod,[status(thm)],[c_5,c_5969]) ).
cnf(c_2329,plain,
multiply(A,inverse(A)) = identity,
inference(paramod,[status(thm)],[c_75,c_2]) ).
cnf(c_5970,plain,
least_upper_bound(inverse(A),identity) = multiply(least_upper_bound(identity,A),inverse(A)),
inference(paramod,[status(thm)],[c_2329,c_50]) ).
cnf(c_5971,plain,
least_upper_bound(identity,inverse(A)) = multiply(least_upper_bound(identity,A),inverse(A)),
inference(paramod,[status(thm)],[c_5,c_5970]) ).
cnf(c_5972,plain,
multiply(inverse(A),least_upper_bound(identity,A)) = multiply(least_upper_bound(identity,A),inverse(A)),
inference(paramod,[status(thm)],[c_173,c_5971]) ).
cnf(c_2364,plain,
multiply(least_upper_bound(identity,A),inverse(A)) = multiply(inverse(A),least_upper_bound(identity,A)),
inference(copy,[status(thm)],[c_5972]) ).
cnf(c_2376,plain,
least_upper_bound(identity,multiply(least_upper_bound(a,multiply(least_upper_bound(identity,a),multiply(inverse(b),least_upper_bound(identity,b)))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_2364,c_1315]) ).
cnf(c_5973,plain,
least_upper_bound(identity,multiply(least_upper_bound(multiply(inverse(b),least_upper_bound(identity,b)),least_upper_bound(a,multiply(a,multiply(inverse(b),least_upper_bound(identity,b))))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_118,c_2376]) ).
cnf(c_5974,plain,
least_upper_bound(identity,multiply(least_upper_bound(multiply(inverse(b),least_upper_bound(identity,b)),multiply(a,least_upper_bound(identity,multiply(inverse(b),least_upper_bound(identity,b))))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_86,c_5973]) ).
cnf(c_5975,plain,
least_upper_bound(identity,multiply(least_upper_bound(multiply(inverse(b),least_upper_bound(identity,b)),multiply(a,multiply(inverse(b),least_upper_bound(identity,b)))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_492,c_5974]) ).
cnf(c_5976,plain,
least_upper_bound(identity,multiply(multiply(least_upper_bound(identity,a),multiply(inverse(b),least_upper_bound(identity,b))),b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_50,c_5975]) ).
cnf(c_5977,plain,
least_upper_bound(identity,multiply(least_upper_bound(identity,a),multiply(multiply(inverse(b),least_upper_bound(identity,b)),b))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_3,c_5976]) ).
cnf(c_5978,plain,
least_upper_bound(identity,multiply(least_upper_bound(identity,a),multiply(inverse(b),multiply(least_upper_bound(identity,b),b)))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_3,c_5977]) ).
cnf(c_5979,plain,
least_upper_bound(identity,multiply(least_upper_bound(identity,a),multiply(inverse(b),multiply(b,least_upper_bound(identity,b))))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_192,c_5978]) ).
cnf(c_5980,plain,
least_upper_bound(identity,multiply(least_upper_bound(identity,a),least_upper_bound(identity,b))) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_24,c_5979]) ).
cnf(c_5981,plain,
multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)) != multiply(least_upper_bound(identity,a),least_upper_bound(identity,b)),
inference(paramod,[status(thm)],[c_1566,c_5980]) ).
cnf(c_5949,plain,
$false,
inference(copy,[status(thm)],[c_5981]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.05 % Problem : GRP185-1 : TPTP v9.3.1. Bugfixed v1.2.1.
% 0.00/0.06 % Command : prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.18/5.44 % Computer : n010.cluster.edu
% 0.18/5.44 % Model : x86_64 x86_64
% 0.18/5.44 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.18/5.44 % Memory : 8046.5625MB
% 0.18/5.44 % OS : Linux 6.8.0-71-generic
% 0.18/5.44 % CPULimit : 300
% 0.18/5.44 % WCLimit : 300
% 0.18/5.44 % DateTime : Fri Sep 25 14:36:38 UTC 2026
% 0.18/5.44 % CPUTime :
% 0.18/5.44 % Prover9 (64) version 2026-6A, July 2026, CASC-J13.
% 0.18/5.44 % Process 976303 was started by sandbox on n010,
% 0.18/5.44 % Fri Sep 25 14:36:38 2026
% 0.18/5.44 % The command was "/export/starexec/sandbox/solver/bin/prover9 -casc 300 -f /export/starexec/sandbox/benchmark/theBenchmark.p".
% 0.18/5.45
% 0.18/5.45 % From the command line: assign(max_seconds, 300).
% 11.68/6.95
% 11.68/6.95 % SZS status Unsatisfiable for theBenchmark
% 11.68/6.95
% 11.68/6.95 % Proof 1 at 1.18 (+ 0.31) seconds.
% 11.68/6.95 % Length of proof is 45.
% 11.68/6.95 % Level of proof is 8.
% 11.68/6.95 % Maximum clause weight is 64.000.
% 11.68/6.95 % Given clauses 190.
% 11.68/6.95
% 11.68/6.95 % SZS output start CNFRefutation for theBenchmark
% See solution above
%------------------------------------------------------------------------------