↑ Up

FindProof---0.1.UNS-CRf.s

View TPTP
Problem
Process solution in
SystemOnTSTP
Download .tgz
%------------------------------------------------------------------------------
% File     : FindProof---0.1
% Problem  : GRP178-2 : TPTP v9.3.1. Bugfixed v1.2.1.
% Transfm  : none
% Format   : tptp:raw
% Command  : run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300

% Computer : n009.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 : Fri Sep 25 01:25:33 PM UTC 2026

% Result   : Unsatisfiable 26.69s 4.02s
% Output   : CNFRefutation 26.69s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   31
%            Number of leaves      :   19
% Syntax   : Number of clauses     :  128 ( 128 unt;   0 nHn;  65 RR)
%            Number of literals    :  128 ( 127 equ;   6 neg)
%            Maximal clause size   :    1 (   1 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    2 (   0 usr;   1 prp; 0-2 aty)
%            Number of functors    :   11 (  11 usr;   7 con; 0-2 aty)
%            Number of variables   :  104 (  17 sgn)

% Comments : 
%------------------------------------------------------------------------------
cnf(t19,axiom,
    sFlat0 = multiply(b,c),
    introduced(definition) ).

cnf(t42,plain,
    multiply(b,c) = sFlat0,
    inference(orient,[status(thm)],[t19]) ).

cnf(t8,axiom,
    greatest_lower_bound(X1,X2) = greatest_lower_bound(X2,X1),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t62,plain,
    greatest_lower_bound(X1,X2) = greatest_lower_bound(X2,X1),
    inference(orient,[status(thm)],[t8]) ).

cnf(t20,axiom,
    sFlat1 = greatest_lower_bound(a,multiply(b,c)),
    introduced(definition) ).

cnf(t8211,plain,
    sFlat1 = greatest_lower_bound(a,sFlat0),
    inference(step,[status(thm)],[t20,t42]) ).

cnf(t8212,plain,
    sFlat1 = greatest_lower_bound(sFlat0,a),
    inference(step,[status(thm)],[t8211,t62]) ).

cnf(t79,plain,
    greatest_lower_bound(sFlat0,a) = sFlat1,
    inference(orient,[status(thm)],[t8212]) ).

cnf(t21,axiom,
    sFlat2 = greatest_lower_bound(a,c),
    introduced(definition) ).

cnf(t8214,plain,
    sFlat2 = greatest_lower_bound(c,a),
    inference(step,[status(thm)],[t21,t62]) ).

cnf(t85,plain,
    greatest_lower_bound(c,a) = sFlat2,
    inference(orient,[status(thm)],[t8214]) ).

cnf(t9,axiom,
    greatest_lower_bound(X1,least_upper_bound(X1,X2)) = X1,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t24,plain,
    greatest_lower_bound(X1,least_upper_bound(X1,X2)) = X1,
    inference(orient,[status(thm)],[t9]) ).

cnf(t11,axiom,
    least_upper_bound(X1,greatest_lower_bound(X1,X2)) = X1,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t26,plain,
    least_upper_bound(X1,greatest_lower_bound(X1,X2)) = X1,
    inference(orient,[status(thm)],[t11]) ).

cnf(t12,axiom,
    greatest_lower_bound(greatest_lower_bound(X1,X2),X3) = greatest_lower_bound(X1,greatest_lower_bound(X2,X3)),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t63,plain,
    greatest_lower_bound(greatest_lower_bound(X1,X2),X3) = greatest_lower_bound(X1,greatest_lower_bound(X2,X3)),
    inference(orient,[status(thm)],[t12]) ).

cnf(t72,plain,
    greatest_lower_bound(X1,X2) = least_upper_bound(greatest_lower_bound(X1,X2),greatest_lower_bound(X1,greatest_lower_bound(X2,X3))),
    inference(cp,[status(thm)],[t26,t63]) ).

cnf(t5073,plain,
    least_upper_bound(greatest_lower_bound(X1,X2),greatest_lower_bound(X1,greatest_lower_bound(X2,X3))) = greatest_lower_bound(X1,X2),
    inference(orient,[status(thm)],[t72]) ).

cnf(t80,plain,
    greatest_lower_bound(sFlat0,greatest_lower_bound(a,X1)) = greatest_lower_bound(sFlat1,X1),
    inference(cp,[status(thm)],[t63,t79]) ).

cnf(t141,plain,
    greatest_lower_bound(sFlat0,greatest_lower_bound(a,X1)) = greatest_lower_bound(sFlat1,X1),
    inference(orient,[status(thm)],[t80]) ).

cnf(t145,plain,
    greatest_lower_bound(sFlat1,X1) = greatest_lower_bound(sFlat0,greatest_lower_bound(X1,a)),
    inference(cp,[status(thm)],[t141,t62]) ).

cnf(t402,plain,
    greatest_lower_bound(sFlat0,greatest_lower_bound(X1,a)) = greatest_lower_bound(sFlat1,X1),
    inference(orient,[status(thm)],[t145]) ).

cnf(t5076,plain,
    greatest_lower_bound(sFlat0,X1) = least_upper_bound(greatest_lower_bound(sFlat0,X1),greatest_lower_bound(sFlat1,X1)),
    inference(cp,[status(thm)],[t5073,t402]) ).

cnf(t6371,plain,
    least_upper_bound(greatest_lower_bound(sFlat0,X1),greatest_lower_bound(sFlat1,X1)) = greatest_lower_bound(sFlat0,X1),
    inference(orient,[status(thm)],[t5076]) ).

cnf(t144,plain,
    greatest_lower_bound(sFlat1,least_upper_bound(a,X1)) = greatest_lower_bound(sFlat0,a),
    inference(cp,[status(thm)],[t141,t24]) ).

cnf(t8225,plain,
    greatest_lower_bound(sFlat1,least_upper_bound(a,X1)) = sFlat1,
    inference(step,[status(thm)],[t144,t79]) ).

cnf(t174,plain,
    greatest_lower_bound(sFlat1,least_upper_bound(a,X1)) = sFlat1,
    inference(orient,[status(thm)],[t8225]) ).

cnf(t17,axiom,
    least_upper_bound(multiply(X1,X2),multiply(X1,X3)) = multiply(X1,least_upper_bound(X2,X3)),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t30,plain,
    least_upper_bound(multiply(X1,X2),multiply(X1,X3)) = multiply(X1,least_upper_bound(X2,X3)),
    inference(orient,[status(thm)],[t17]) ).

cnf(t14,axiom,
    multiply(multiply(X1,X2),X3) = multiply(X1,multiply(X2,X3)),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t27,plain,
    multiply(multiply(X1,X2),X3) = multiply(X1,multiply(X2,X3)),
    inference(orient,[status(thm)],[t14]) ).

cnf(t7,axiom,
    multiply(inverse(X1),X1) = identity,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t52,plain,
    multiply(inverse(X1),X1) = identity,
    inference(orient,[status(thm)],[t7]) ).

cnf(t61,plain,
    multiply(inverse(X1),multiply(X1,X2)) = multiply(identity,X2),
    inference(cp,[status(thm)],[t27,t52]) ).

cnf(t6,axiom,
    multiply(identity,X1) = X1,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t22,plain,
    multiply(identity,X1) = X1,
    inference(orient,[status(thm)],[t6]) ).

cnf(t8233,plain,
    multiply(inverse(X1),multiply(X1,X2)) = X2,
    inference(step,[status(thm)],[t61,t22]) ).

cnf(t243,plain,
    multiply(inverse(X1),multiply(X1,X2)) = X2,
    inference(orient,[status(thm)],[t8233]) ).

cnf(t244,plain,
    X1 = multiply(inverse(inverse(X1)),identity),
    inference(cp,[status(thm)],[t243,t52]) ).

cnf(t278,plain,
    multiply(inverse(inverse(X1)),identity) = X1,
    inference(orient,[status(thm)],[t244]) ).

cnf(t249,plain,
    multiply(X1,X2) = multiply(inverse(inverse(X1)),X2),
    inference(cp,[status(thm)],[t243,t243]) ).

cnf(t304,plain,
    multiply(inverse(inverse(X1)),X2) = multiply(X1,X2),
    inference(orient,[status(thm)],[t249]) ).

cnf(t8234,plain,
    multiply(X1,identity) = X1,
    inference(step,[status(thm)],[t278,t304]) ).

cnf(t313,plain,
    multiply(X1,identity) = X1,
    inference(rw,[status(thm)],[t8234]) ).

cnf(t314,plain,
    multiply(X1,identity) = X1,
    inference(orient,[status(thm)],[t313]) ).

cnf(t318,plain,
    multiply(X1,least_upper_bound(identity,X2)) = least_upper_bound(X1,multiply(X1,X2)),
    inference(cp,[status(thm)],[t30,t314]) ).

cnf(t609,plain,
    least_upper_bound(X1,multiply(X1,X2)) = multiply(X1,least_upper_bound(identity,X2)),
    inference(orient,[status(thm)],[t318]) ).

cnf(t631,plain,
    sFlat1 = greatest_lower_bound(sFlat1,multiply(a,least_upper_bound(identity,X1))),
    inference(cp,[status(thm)],[t174,t609]) ).

cnf(t8054,plain,
    greatest_lower_bound(sFlat1,multiply(a,least_upper_bound(identity,X1))) = sFlat1,
    inference(orient,[status(thm)],[t631]) ).

cnf(t86,plain,
    greatest_lower_bound(c,greatest_lower_bound(a,X1)) = greatest_lower_bound(sFlat2,X1),
    inference(cp,[status(thm)],[t63,t85]) ).

cnf(t155,plain,
    greatest_lower_bound(c,greatest_lower_bound(a,X1)) = greatest_lower_bound(sFlat2,X1),
    inference(orient,[status(thm)],[t86]) ).

cnf(t162,plain,
    c = least_upper_bound(c,greatest_lower_bound(sFlat2,X1)),
    inference(cp,[status(thm)],[t26,t155]) ).

cnf(t186,plain,
    least_upper_bound(c,greatest_lower_bound(sFlat2,X1)) = c,
    inference(orient,[status(thm)],[t162]) ).

cnf(t4,axiom,
    greatest_lower_bound(identity,c) = identity,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t77,plain,
    greatest_lower_bound(identity,c) = identity,
    inference(orient,[status(thm)],[t4]) ).

cnf(t78,plain,
    greatest_lower_bound(identity,greatest_lower_bound(c,X1)) = greatest_lower_bound(identity,X1),
    inference(cp,[status(thm)],[t63,t77]) ).

cnf(t132,plain,
    greatest_lower_bound(identity,greatest_lower_bound(c,X1)) = greatest_lower_bound(identity,X1),
    inference(orient,[status(thm)],[t78]) ).

cnf(t133,plain,
    greatest_lower_bound(identity,a) = greatest_lower_bound(identity,sFlat2),
    inference(cp,[status(thm)],[t132,t85]) ).

cnf(t2,axiom,
    greatest_lower_bound(identity,a) = identity,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t73,plain,
    greatest_lower_bound(identity,a) = identity,
    inference(orient,[status(thm)],[t2]) ).

cnf(t8218,plain,
    identity = greatest_lower_bound(identity,sFlat2),
    inference(step,[status(thm)],[t133,t73]) ).

cnf(t8219,plain,
    identity = greatest_lower_bound(sFlat2,identity),
    inference(step,[status(thm)],[t8218,t62]) ).

cnf(t136,plain,
    greatest_lower_bound(sFlat2,identity) = identity,
    inference(orient,[status(thm)],[t8219]) ).

cnf(t187,plain,
    c = least_upper_bound(c,identity),
    inference(cp,[status(thm)],[t186,t136]) ).

cnf(t10,axiom,
    least_upper_bound(X1,X2) = least_upper_bound(X2,X1),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t88,plain,
    least_upper_bound(X1,X2) = least_upper_bound(X2,X1),
    inference(orient,[status(thm)],[t10]) ).

cnf(t8227,plain,
    c = least_upper_bound(identity,c),
    inference(step,[status(thm)],[t187,t88]) ).

cnf(t190,plain,
    least_upper_bound(identity,c) = c,
    inference(orient,[status(thm)],[t8227]) ).

cnf(t8093,plain,
    sFlat1 = greatest_lower_bound(sFlat1,multiply(a,c)),
    inference(cp,[status(thm)],[t8054,t190]) ).

cnf(t8115,plain,
    greatest_lower_bound(sFlat1,multiply(a,c)) = sFlat1,
    inference(orient,[status(thm)],[t8093]) ).

cnf(t8116,plain,
    greatest_lower_bound(sFlat0,multiply(a,c)) = least_upper_bound(greatest_lower_bound(sFlat0,multiply(a,c)),sFlat1),
    inference(cp,[status(thm)],[t6371,t8115]) ).

cnf(t16,axiom,
    greatest_lower_bound(multiply(X1,X2),multiply(X3,X2)) = multiply(greatest_lower_bound(X1,X3),X2),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t31,plain,
    greatest_lower_bound(multiply(X1,X2),multiply(X3,X2)) = multiply(greatest_lower_bound(X1,X3),X2),
    inference(orient,[status(thm)],[t16]) ).

cnf(t45,plain,
    multiply(greatest_lower_bound(b,X1),c) = greatest_lower_bound(sFlat0,multiply(X1,c)),
    inference(cp,[status(thm)],[t31,t42]) ).

cnf(t369,plain,
    greatest_lower_bound(sFlat0,multiply(X1,c)) = multiply(greatest_lower_bound(b,X1),c),
    inference(orient,[status(thm)],[t45]) ).

cnf(t8570,plain,
    multiply(greatest_lower_bound(b,a),c) = least_upper_bound(greatest_lower_bound(sFlat0,multiply(a,c)),sFlat1),
    inference(step,[status(thm)],[t8116,t369]) ).

cnf(t1,axiom,
    greatest_lower_bound(a,b) = identity,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t8213,plain,
    greatest_lower_bound(b,a) = identity,
    inference(step,[status(thm)],[t1,t62]) ).

cnf(t82,plain,
    greatest_lower_bound(b,a) = identity,
    inference(orient,[status(thm)],[t8213]) ).

cnf(t8571,plain,
    multiply(identity,c) = least_upper_bound(greatest_lower_bound(sFlat0,multiply(a,c)),sFlat1),
    inference(step,[status(thm)],[t8570,t82]) ).

cnf(t8572,plain,
    c = least_upper_bound(greatest_lower_bound(sFlat0,multiply(a,c)),sFlat1),
    inference(step,[status(thm)],[t8571,t22]) ).

cnf(t8573,plain,
    c = least_upper_bound(sFlat1,greatest_lower_bound(sFlat0,multiply(a,c))),
    inference(step,[status(thm)],[t8572,t88]) ).

cnf(t8574,plain,
    c = least_upper_bound(sFlat1,multiply(greatest_lower_bound(b,a),c)),
    inference(step,[status(thm)],[t8573,t369]) ).

cnf(t8575,plain,
    c = least_upper_bound(sFlat1,multiply(identity,c)),
    inference(step,[status(thm)],[t8574,t82]) ).

cnf(t8576,plain,
    c = least_upper_bound(sFlat1,c),
    inference(step,[status(thm)],[t8575,t22]) ).

cnf(t8122,plain,
    least_upper_bound(sFlat1,c) = c,
    inference(orient,[status(thm)],[t8576]) ).

cnf(t8123,plain,
    sFlat1 = greatest_lower_bound(sFlat1,c),
    inference(cp,[status(thm)],[t24,t8122]) ).

cnf(t404,plain,
    greatest_lower_bound(sFlat1,c) = greatest_lower_bound(sFlat0,sFlat2),
    inference(cp,[status(thm)],[t402,t85]) ).

cnf(t410,plain,
    greatest_lower_bound(sFlat1,c) = greatest_lower_bound(sFlat0,sFlat2),
    inference(orient,[status(thm)],[t404]) ).

cnf(t13,axiom,
    least_upper_bound(least_upper_bound(X1,X2),X3) = least_upper_bound(X1,least_upper_bound(X2,X3)),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t89,plain,
    least_upper_bound(least_upper_bound(X1,X2),X3) = least_upper_bound(X1,least_upper_bound(X2,X3)),
    inference(orient,[status(thm)],[t13]) ).

cnf(t87,plain,
    c = least_upper_bound(c,sFlat2),
    inference(cp,[status(thm)],[t26,t85]) ).

cnf(t8216,plain,
    c = least_upper_bound(sFlat2,c),
    inference(step,[status(thm)],[t87,t88]) ).

cnf(t103,plain,
    least_upper_bound(sFlat2,c) = c,
    inference(orient,[status(thm)],[t8216]) ).

cnf(t105,plain,
    least_upper_bound(sFlat2,least_upper_bound(c,X1)) = least_upper_bound(c,X1),
    inference(cp,[status(thm)],[t89,t103]) ).

cnf(t385,plain,
    least_upper_bound(sFlat2,least_upper_bound(c,X1)) = least_upper_bound(c,X1),
    inference(orient,[status(thm)],[t105]) ).

cnf(t387,plain,
    sFlat2 = greatest_lower_bound(sFlat2,least_upper_bound(c,X1)),
    inference(cp,[status(thm)],[t24,t385]) ).

cnf(t472,plain,
    greatest_lower_bound(sFlat2,least_upper_bound(c,X1)) = sFlat2,
    inference(orient,[status(thm)],[t387]) ).

cnf(t474,plain,
    sFlat2 = greatest_lower_bound(sFlat2,least_upper_bound(X1,c)),
    inference(cp,[status(thm)],[t472,t88]) ).

cnf(t505,plain,
    greatest_lower_bound(sFlat2,least_upper_bound(X1,c)) = sFlat2,
    inference(orient,[status(thm)],[t474]) ).

cnf(t32,plain,
    multiply(greatest_lower_bound(identity,X1),X2) = greatest_lower_bound(X2,multiply(X1,X2)),
    inference(cp,[status(thm)],[t31,t22]) ).

cnf(t204,plain,
    greatest_lower_bound(X1,multiply(X2,X1)) = multiply(greatest_lower_bound(identity,X2),X1),
    inference(orient,[status(thm)],[t32]) ).

cnf(t208,plain,
    multiply(greatest_lower_bound(identity,b),c) = greatest_lower_bound(c,sFlat0),
    inference(cp,[status(thm)],[t204,t42]) ).

cnf(t3,axiom,
    greatest_lower_bound(identity,b) = identity,
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(t75,plain,
    greatest_lower_bound(identity,b) = identity,
    inference(orient,[status(thm)],[t3]) ).

cnf(t8229,plain,
    multiply(identity,c) = greatest_lower_bound(c,sFlat0),
    inference(step,[status(thm)],[t208,t75]) ).

cnf(t8230,plain,
    c = greatest_lower_bound(c,sFlat0),
    inference(step,[status(thm)],[t8229,t22]) ).

cnf(t8231,plain,
    c = greatest_lower_bound(sFlat0,c),
    inference(step,[status(thm)],[t8230,t62]) ).

cnf(t221,plain,
    greatest_lower_bound(sFlat0,c) = c,
    inference(orient,[status(thm)],[t8231]) ).

cnf(t222,plain,
    sFlat0 = least_upper_bound(sFlat0,c),
    inference(cp,[status(thm)],[t26,t221]) ).

cnf(t223,plain,
    least_upper_bound(sFlat0,c) = sFlat0,
    inference(orient,[status(thm)],[t222]) ).

cnf(t506,plain,
    sFlat2 = greatest_lower_bound(sFlat2,sFlat0),
    inference(cp,[status(thm)],[t505,t223]) ).

cnf(t8253,plain,
    sFlat2 = greatest_lower_bound(sFlat0,sFlat2),
    inference(step,[status(thm)],[t506,t62]) ).

cnf(t508,plain,
    greatest_lower_bound(sFlat0,sFlat2) = sFlat2,
    inference(orient,[status(thm)],[t8253]) ).

cnf(t8256,plain,
    greatest_lower_bound(sFlat1,c) = sFlat2,
    inference(step,[status(thm)],[t410,t508]) ).

cnf(t511,plain,
    greatest_lower_bound(sFlat1,c) = sFlat2,
    inference(orient,[status(thm)],[t8256]) ).

cnf(t8577,plain,
    sFlat1 = sFlat2,
    inference(step,[status(thm)],[t8123,t511]) ).

cnf(t8128,plain,
    sFlat2 = sFlat1,
    inference(orient,[status(thm)],[t8577]) ).

cnf(t8578,plain,
    greatest_lower_bound(c,a) = sFlat1,
    inference(step,[status(thm)],[t85,t8128]) ).

cnf(t8129,plain,
    greatest_lower_bound(c,a) = sFlat1,
    inference(orient,[status(thm)],[t8578]) ).

cnf(goal_0,negated_conjecture,
    greatest_lower_bound(a,multiply(b,c)) != greatest_lower_bound(a,c),
    file('/export/starexec/sandbox/benchmark/theBenchmark.p') ).

cnf(g0_0,plain,
    greatest_lower_bound(a,sFlat0) != greatest_lower_bound(a,c),
    inference(rw,[status(thm)],[goal_0,t42]) ).

cnf(g0_1,plain,
    greatest_lower_bound(sFlat0,a) != greatest_lower_bound(a,c),
    inference(rw,[status(thm)],[g0_0,t62]) ).

cnf(g0_2,plain,
    sFlat1 != greatest_lower_bound(a,c),
    inference(rw,[status(thm)],[g0_1,t79]) ).

cnf(g0_3,plain,
    sFlat1 != greatest_lower_bound(c,a),
    inference(rw,[status(thm)],[g0_2,t62]) ).

cnf(g0_4,plain,
    sFlat1 != sFlat1,
    inference(rw,[status(thm)],[g0_3,t8129]) ).

cnf(contradiction_0,plain,
    $false,
    inference(trivial_inequality_removal,[status(thm)],[g0_4]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02  % Problem  : GRP178-2 : TPTP v9.3.1. Bugfixed v1.2.1.
% 0.00/0.03  % Command  : run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 0.08/0.36  % Computer : n009.cluster.edu
% 0.08/0.36  % Model    : x86_64 x86_64
% 0.08/0.36  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.36  % Memory   : 8046.5625MB
% 0.08/0.36  % OS       : Linux 6.8.0-71-generic
% 0.08/0.36  % CPULimit : 300
% 0.08/0.36  % WCLimit  : 300
% 0.08/0.36  % DateTime : Wed Sep 23 14:00:28 UTC 2026
% 0.08/0.37  % CPUTime  : 
% 0.08/0.37  Running run_findproof /export/starexec/sandbox/benchmark/theBenchmark.p 300
% 26.69/4.02  % SZS status Unsatisfiable for /export/starexec/sandbox/benchmark/theBenchmark.p
% 26.69/4.02  % SZS output start CNFRefutation for /export/starexec/sandbox/benchmark/theBenchmark.p
% See solution above
%------------------------------------------------------------------------------