TSTP Solution File: BOO028-1 by Vampire---4.8

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Vampire---4.8
% Problem  : BOO028-1 : TPTP v8.1.2. Released v2.2.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : vampire --ignore_missing on --mode portfolio/casc [--schedule casc_hol_2020] -p tptp -om szs -t %d %s

% Computer : n011.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 300s
% DateTime : Wed Aug 30 18:12:06 EDT 2023

% Result   : Unsatisfiable 0.22s 0.52s
% Output   : Refutation 0.22s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   22
%            Number of leaves      :   16
% Syntax   : Number of formulae    :  116 ( 116 unt;   0 def)
%            Number of atoms       :  116 ( 115 equ)
%            Maximal formula atoms :    1 (   1 avg)
%            Number of connectives :    2 (   2   ~;   0   |;   0   &)
%                                         (   0 <=>;   0  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    4 (   2 avg)
%            Maximal term depth    :    6 (   2 avg)
%            Number of predicates  :    2 (   0 usr;   1 prp; 0-2 aty)
%            Number of functors    :   11 (  11 usr;   8 con; 0-2 aty)
%            Number of variables   :   97 (;  97   !;   0   ?)

% Comments : 
%------------------------------------------------------------------------------
fof(f5266,plain,
    $false,
    inference(subsumption_resolution,[],[f5265,f17]) ).

fof(f17,plain,
    sF1 != sF4,
    inference(definition_folding,[],[f11,f16,f15,f14,f13,f12]) ).

fof(f12,plain,
    add(b,c) = sF0,
    introduced(function_definition,[]) ).

fof(f13,plain,
    multiply(a,sF0) = sF1,
    introduced(function_definition,[]) ).

fof(f14,plain,
    multiply(b,a) = sF2,
    introduced(function_definition,[]) ).

fof(f15,plain,
    multiply(c,a) = sF3,
    introduced(function_definition,[]) ).

fof(f16,plain,
    add(sF2,sF3) = sF4,
    introduced(function_definition,[]) ).

fof(f11,axiom,
    multiply(a,add(b,c)) != add(multiply(b,a),multiply(c,a)),
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',prove_multiply_add_property) ).

fof(f5265,plain,
    sF1 = sF4,
    inference(forward_demodulation,[],[f5264,f13]) ).

fof(f5264,plain,
    multiply(a,sF0) = sF4,
    inference(forward_demodulation,[],[f5263,f1893]) ).

fof(f1893,plain,
    ! [X11] : sF0 = multiply(sF0,add(b,add(c,X11))),
    inference(forward_demodulation,[],[f1866,f448]) ).

fof(f448,plain,
    ! [X10,X11,X12] : multiply(X10,multiply(add(X11,X10),X12)) = multiply(X10,X12),
    inference(superposition,[],[f10,f45]) ).

fof(f45,plain,
    ! [X6,X9] : multiply(X6,add(X9,X6)) = X6,
    inference(superposition,[],[f4,f1]) ).

fof(f1,axiom,
    ! [X2,X0,X1] : add(X0,multiply(X1,multiply(X0,X2))) = X0,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',l1) ).

fof(f4,axiom,
    ! [X2,X0,X1] : multiply(X0,add(X1,add(X0,X2))) = X0,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',l2) ).

fof(f10,axiom,
    ! [X2,X0,X1] : multiply(multiply(X0,X1),X2) = multiply(X0,multiply(X1,X2)),
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',associativity_of_multiply) ).

fof(f1866,plain,
    ! [X11,X12] : sF0 = multiply(sF0,multiply(add(X12,sF0),add(b,add(c,X11)))),
    inference(superposition,[],[f19,f249]) ).

fof(f249,plain,
    ! [X27] : add(b,add(c,X27)) = add(sF0,X27),
    inference(superposition,[],[f9,f12]) ).

fof(f9,axiom,
    ! [X2,X0,X1] : add(add(X0,X1),X2) = add(X0,add(X1,X2)),
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',associativity_of_add) ).

fof(f19,plain,
    ! [X2,X0,X1] : multiply(X1,multiply(add(X0,X1),add(X1,X2))) = X1,
    inference(forward_demodulation,[],[f5,f8]) ).

fof(f8,axiom,
    ! [X0,X1] : multiply(X0,X1) = multiply(X1,X0),
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',commutativity_of_multiply) ).

fof(f5,axiom,
    ! [X2,X0,X1] : multiply(multiply(add(X0,X1),add(X1,X2)),X1) = X1,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',l4) ).

fof(f5263,plain,
    sF4 = multiply(a,multiply(sF0,add(b,add(c,inverse(sF1))))),
    inference(forward_demodulation,[],[f5262,f279]) ).

fof(f279,plain,
    ! [X2,X0,X1] : add(X1,add(X0,X2)) = add(X0,add(X1,X2)),
    inference(forward_demodulation,[],[f238,f9]) ).

fof(f238,plain,
    ! [X2,X0,X1] : add(X0,add(X1,X2)) = add(add(X1,X0),X2),
    inference(superposition,[],[f9,f7]) ).

fof(f7,axiom,
    ! [X0,X1] : add(X0,X1) = add(X1,X0),
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',commutativity_of_add) ).

fof(f5262,plain,
    sF4 = multiply(a,multiply(sF0,add(c,add(b,inverse(sF1))))),
    inference(forward_demodulation,[],[f5261,f5110]) ).

fof(f5110,plain,
    add(b,inverse(sF1)) = add(sF2,inverse(sF1)),
    inference(forward_demodulation,[],[f5109,f7]) ).

fof(f5109,plain,
    add(inverse(sF1),b) = add(sF2,inverse(sF1)),
    inference(forward_demodulation,[],[f5096,f7]) ).

fof(f5096,plain,
    add(inverse(sF1),b) = add(inverse(sF1),sF2),
    inference(superposition,[],[f132,f4906]) ).

fof(f4906,plain,
    b = add(sF2,multiply(b,inverse(sF1))),
    inference(superposition,[],[f6,f4855]) ).

fof(f4855,plain,
    sF2 = multiply(b,sF1),
    inference(forward_demodulation,[],[f4854,f20]) ).

fof(f20,plain,
    sF2 = multiply(a,b),
    inference(superposition,[],[f8,f14]) ).

fof(f4854,plain,
    multiply(a,b) = multiply(b,sF1),
    inference(forward_demodulation,[],[f4853,f137]) ).

fof(f137,plain,
    b = multiply(b,sF0),
    inference(superposition,[],[f47,f97]) ).

fof(f97,plain,
    sF0 = add(c,sF0),
    inference(forward_demodulation,[],[f89,f7]) ).

fof(f89,plain,
    sF0 = add(sF0,c),
    inference(superposition,[],[f52,f62]) ).

fof(f62,plain,
    c = multiply(c,sF0),
    inference(superposition,[],[f45,f12]) ).

fof(f52,plain,
    ! [X3,X0] : add(X0,multiply(X3,X0)) = X0,
    inference(superposition,[],[f1,f4]) ).

fof(f47,plain,
    ! [X12] : b = multiply(b,add(X12,sF0)),
    inference(superposition,[],[f4,f12]) ).

fof(f4853,plain,
    multiply(b,sF1) = multiply(a,multiply(b,sF0)),
    inference(forward_demodulation,[],[f4852,f2973]) ).

fof(f2973,plain,
    ! [X5] : multiply(X5,sF2) = multiply(a,multiply(b,X5)),
    inference(superposition,[],[f453,f8]) ).

fof(f453,plain,
    ! [X25] : multiply(sF2,X25) = multiply(a,multiply(b,X25)),
    inference(superposition,[],[f10,f20]) ).

fof(f4852,plain,
    multiply(sF0,sF2) = multiply(b,sF1),
    inference(forward_demodulation,[],[f4851,f3025]) ).

fof(f3025,plain,
    ! [X9] : multiply(X9,sF2) = multiply(a,multiply(X9,sF2)),
    inference(forward_demodulation,[],[f2976,f69]) ).

fof(f69,plain,
    ! [X8] : multiply(X8,sF2) = multiply(b,multiply(X8,sF2)),
    inference(forward_demodulation,[],[f63,f8]) ).

fof(f63,plain,
    ! [X8] : multiply(X8,sF2) = multiply(multiply(X8,sF2),b),
    inference(superposition,[],[f45,f33]) ).

fof(f33,plain,
    ! [X9] : b = add(b,multiply(X9,sF2)),
    inference(superposition,[],[f1,f14]) ).

fof(f2976,plain,
    ! [X9] : multiply(X9,sF2) = multiply(a,multiply(b,multiply(X9,sF2))),
    inference(superposition,[],[f453,f100]) ).

fof(f100,plain,
    ! [X0,X1] : multiply(X1,X0) = multiply(X0,multiply(X1,X0)),
    inference(forward_demodulation,[],[f92,f8]) ).

fof(f92,plain,
    ! [X0,X1] : multiply(X1,X0) = multiply(multiply(X1,X0),X0),
    inference(superposition,[],[f45,f52]) ).

fof(f4851,plain,
    multiply(a,multiply(sF0,sF2)) = multiply(b,sF1),
    inference(forward_demodulation,[],[f4793,f68]) ).

fof(f68,plain,
    ! [X7] : multiply(X7,sF1) = multiply(a,multiply(X7,sF1)),
    inference(forward_demodulation,[],[f61,f8]) ).

fof(f61,plain,
    ! [X7] : multiply(X7,sF1) = multiply(multiply(X7,sF1),a),
    inference(superposition,[],[f45,f30]) ).

fof(f30,plain,
    ! [X6] : a = add(a,multiply(X6,sF1)),
    inference(superposition,[],[f1,f13]) ).

fof(f4793,plain,
    multiply(a,multiply(sF0,sF2)) = multiply(a,multiply(b,sF1)),
    inference(superposition,[],[f1972,f453]) ).

fof(f1972,plain,
    ! [X1] : multiply(X1,sF1) = multiply(a,multiply(sF0,X1)),
    inference(superposition,[],[f455,f8]) ).

fof(f455,plain,
    ! [X27] : multiply(a,multiply(sF0,X27)) = multiply(sF1,X27),
    inference(superposition,[],[f10,f13]) ).

fof(f6,axiom,
    ! [X0,X1] : add(multiply(X0,X1),multiply(X0,inverse(X1))) = X0,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',b2) ).

fof(f132,plain,
    ! [X2,X3,X4] : add(X2,X3) = add(X2,add(X3,multiply(X4,X2))),
    inference(forward_demodulation,[],[f129,f9]) ).

fof(f129,plain,
    ! [X2,X3,X4] : add(X2,X3) = add(add(X2,X3),multiply(X4,X2)),
    inference(superposition,[],[f1,f3]) ).

fof(f3,axiom,
    ! [X0,X1] : multiply(add(X0,X1),add(X0,inverse(X1))) = X0,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',b1) ).

fof(f5261,plain,
    sF4 = multiply(a,multiply(sF0,add(c,add(sF2,inverse(sF1))))),
    inference(forward_demodulation,[],[f5260,f279]) ).

fof(f5260,plain,
    sF4 = multiply(a,multiply(sF0,add(sF2,add(c,inverse(sF1))))),
    inference(forward_demodulation,[],[f5259,f5140]) ).

fof(f5140,plain,
    add(c,inverse(sF1)) = add(sF3,inverse(sF1)),
    inference(forward_demodulation,[],[f5139,f7]) ).

fof(f5139,plain,
    add(inverse(sF1),c) = add(sF3,inverse(sF1)),
    inference(forward_demodulation,[],[f5125,f7]) ).

fof(f5125,plain,
    add(inverse(sF1),c) = add(inverse(sF1),sF3),
    inference(superposition,[],[f132,f4935]) ).

fof(f4935,plain,
    c = add(sF3,multiply(c,inverse(sF1))),
    inference(superposition,[],[f6,f4860]) ).

fof(f4860,plain,
    sF3 = multiply(c,sF1),
    inference(forward_demodulation,[],[f4859,f21]) ).

fof(f21,plain,
    sF3 = multiply(a,c),
    inference(superposition,[],[f8,f15]) ).

fof(f4859,plain,
    multiply(a,c) = multiply(c,sF1),
    inference(forward_demodulation,[],[f4858,f62]) ).

fof(f4858,plain,
    multiply(c,sF1) = multiply(a,multiply(c,sF0)),
    inference(forward_demodulation,[],[f4857,f3068]) ).

fof(f3068,plain,
    ! [X2] : multiply(X2,sF3) = multiply(a,multiply(c,X2)),
    inference(superposition,[],[f454,f8]) ).

fof(f454,plain,
    ! [X26] : multiply(a,multiply(c,X26)) = multiply(sF3,X26),
    inference(superposition,[],[f10,f21]) ).

fof(f4857,plain,
    multiply(sF0,sF3) = multiply(c,sF1),
    inference(forward_demodulation,[],[f4856,f3117]) ).

fof(f3117,plain,
    ! [X6] : multiply(X6,sF3) = multiply(a,multiply(X6,sF3)),
    inference(forward_demodulation,[],[f3071,f70]) ).

fof(f70,plain,
    ! [X9] : multiply(X9,sF3) = multiply(c,multiply(X9,sF3)),
    inference(forward_demodulation,[],[f64,f8]) ).

fof(f64,plain,
    ! [X9] : multiply(X9,sF3) = multiply(multiply(X9,sF3),c),
    inference(superposition,[],[f45,f34]) ).

fof(f34,plain,
    ! [X10] : c = add(c,multiply(X10,sF3)),
    inference(superposition,[],[f1,f15]) ).

fof(f3071,plain,
    ! [X6] : multiply(X6,sF3) = multiply(a,multiply(c,multiply(X6,sF3))),
    inference(superposition,[],[f454,f100]) ).

fof(f4856,plain,
    multiply(a,multiply(sF0,sF3)) = multiply(c,sF1),
    inference(forward_demodulation,[],[f4794,f68]) ).

fof(f4794,plain,
    multiply(a,multiply(sF0,sF3)) = multiply(a,multiply(c,sF1)),
    inference(superposition,[],[f1972,f454]) ).

fof(f5259,plain,
    sF4 = multiply(a,multiply(sF0,add(sF2,add(sF3,inverse(sF1))))),
    inference(forward_demodulation,[],[f5258,f258]) ).

fof(f258,plain,
    ! [X37] : add(sF2,add(sF3,X37)) = add(sF4,X37),
    inference(superposition,[],[f9,f16]) ).

fof(f5258,plain,
    sF4 = multiply(a,multiply(sF0,add(sF4,inverse(sF1)))),
    inference(forward_demodulation,[],[f5235,f455]) ).

fof(f5235,plain,
    sF4 = multiply(sF1,add(sF4,inverse(sF1))),
    inference(superposition,[],[f113,f5195]) ).

fof(f5195,plain,
    sF1 = add(sF1,sF4),
    inference(forward_demodulation,[],[f5162,f4073]) ).

fof(f4073,plain,
    sF4 = multiply(a,sF4),
    inference(forward_demodulation,[],[f4072,f8]) ).

fof(f4072,plain,
    sF4 = multiply(sF4,a),
    inference(forward_demodulation,[],[f4071,f86]) ).

fof(f86,plain,
    a = add(a,sF2),
    inference(superposition,[],[f52,f14]) ).

fof(f4071,plain,
    sF4 = multiply(sF4,add(a,sF2)),
    inference(forward_demodulation,[],[f4038,f7]) ).

fof(f4038,plain,
    sF4 = multiply(sF4,add(sF2,a)),
    inference(superposition,[],[f1965,f174]) ).

fof(f174,plain,
    a = add(sF3,multiply(a,inverse(c))),
    inference(superposition,[],[f6,f21]) ).

fof(f1965,plain,
    ! [X10] : sF4 = multiply(sF4,add(sF2,add(sF3,X10))),
    inference(forward_demodulation,[],[f1938,f448]) ).

fof(f1938,plain,
    ! [X10,X11] : sF4 = multiply(sF4,multiply(add(X11,sF4),add(sF2,add(sF3,X10)))),
    inference(superposition,[],[f19,f258]) ).

fof(f5162,plain,
    sF1 = add(sF1,multiply(a,sF4)),
    inference(superposition,[],[f2018,f3830]) ).

fof(f3830,plain,
    sF4 = multiply(sF0,sF4),
    inference(forward_demodulation,[],[f3814,f8]) ).

fof(f3814,plain,
    sF4 = multiply(sF4,sF0),
    inference(superposition,[],[f43,f3780]) ).

fof(f3780,plain,
    sF0 = add(b,add(c,sF4)),
    inference(forward_demodulation,[],[f3779,f12]) ).

fof(f3779,plain,
    add(b,c) = add(b,add(c,sF4)),
    inference(forward_demodulation,[],[f3778,f249]) ).

fof(f3778,plain,
    add(b,c) = add(sF0,sF4),
    inference(forward_demodulation,[],[f3777,f85]) ).

fof(f85,plain,
    c = add(c,sF3),
    inference(superposition,[],[f52,f21]) ).

fof(f3777,plain,
    add(sF0,sF4) = add(b,add(c,sF3)),
    inference(forward_demodulation,[],[f3776,f251]) ).

fof(f251,plain,
    ! [X29] : add(b,add(sF2,X29)) = add(b,X29),
    inference(superposition,[],[f9,f84]) ).

fof(f84,plain,
    b = add(b,sF2),
    inference(superposition,[],[f52,f20]) ).

fof(f3776,plain,
    add(sF0,sF4) = add(b,add(sF2,add(c,sF3))),
    inference(forward_demodulation,[],[f3730,f279]) ).

fof(f3730,plain,
    add(sF0,sF4) = add(sF2,add(b,add(c,sF3))),
    inference(superposition,[],[f1921,f1847]) ).

fof(f1847,plain,
    ! [X2] : add(X2,sF0) = add(b,add(c,X2)),
    inference(superposition,[],[f249,f7]) ).

fof(f1921,plain,
    ! [X1] : add(X1,sF4) = add(sF2,add(sF3,X1)),
    inference(superposition,[],[f258,f7]) ).

fof(f43,plain,
    ! [X2,X0,X1] : multiply(X0,add(X2,add(X1,X0))) = X0,
    inference(superposition,[],[f4,f7]) ).

fof(f2018,plain,
    ! [X10] : sF1 = add(sF1,multiply(a,multiply(sF0,X10))),
    inference(forward_demodulation,[],[f1989,f241]) ).

fof(f241,plain,
    ! [X10,X11,X12] : add(X10,add(multiply(X11,X10),X12)) = add(X10,X12),
    inference(superposition,[],[f9,f52]) ).

fof(f1989,plain,
    ! [X10,X11] : sF1 = add(sF1,add(multiply(X11,sF1),multiply(a,multiply(sF0,X10)))),
    inference(superposition,[],[f18,f455]) ).

fof(f18,plain,
    ! [X2,X0,X1] : add(X1,add(multiply(X0,X1),multiply(X1,X2))) = X1,
    inference(forward_demodulation,[],[f2,f7]) ).

fof(f2,axiom,
    ! [X2,X0,X1] : add(add(multiply(X0,X1),multiply(X1,X2)),X1) = X1,
    file('/export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039',l3) ).

fof(f113,plain,
    ! [X0,X1] : multiply(add(X1,X0),add(X0,inverse(X1))) = X0,
    inference(superposition,[],[f3,f7]) ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.07/0.13  % Problem    : BOO028-1 : TPTP v8.1.2. Released v2.2.0.
% 0.07/0.15  % Command    : vampire --ignore_missing on --mode portfolio/casc [--schedule casc_hol_2020] -p tptp -om szs -t %d %s
% 0.15/0.36  % Computer : n011.cluster.edu
% 0.15/0.36  % Model    : x86_64 x86_64
% 0.15/0.36  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.15/0.36  % Memory   : 8042.1875MB
% 0.15/0.36  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.15/0.36  % CPULimit   : 300
% 0.15/0.36  % WCLimit    : 300
% 0.15/0.36  % DateTime   : Sun Aug 27 08:20:54 EDT 2023
% 0.15/0.37  % CPUTime    : 
% 0.15/0.37  This is a CNF_UNS_RFO_PEQ_UEQ problem
% 0.15/0.37  Running vampire_casc2023 --mode casc -m 16384 --cores 7 -t 300 /export/starexec/sandbox/tmp/tmp.UHSgZYpVTz/Vampire---4.8_30039
% 0.15/0.37  % (30250)Running in auto input_syntax mode. Trying TPTP
% 0.22/0.43  % (30252)ott+10_14_av=off:bd=preordered:drc=off:sp=weighted_frequency_1200 on Vampire---4 for (1200ds/0Mi)
% 0.22/0.43  % (30253)ott+10_11_av=off:bd=off:drc=off:fde=none:nwc=1.2:to=lpo:tgt=ground_1200 on Vampire---4 for (1200ds/0Mi)
% 0.22/0.43  % (30254)ott+10_32_av=off:drc=off:fde=none:nwc=5.0:sp=reverse_weighted_frequency:tgt=full_1200 on Vampire---4 for (1200ds/0Mi)
% 0.22/0.43  % (30256)dis+10_7_av=off:drc=off:nwc=1.5:sims=off:sp=scramble:tgt=ground_485 on Vampire---4 for (485ds/0Mi)
% 0.22/0.43  % (30257)lrs+10_50_av=off:bd=off:drc=off:sp=reverse_arity:tgt=ground:stl=62_361 on Vampire---4 for (361ds/0Mi)
% 0.22/0.43  % (30255)ott+10_4_av=off:drc=off:fde=none:nwc=1.2:sims=off:to=lpo:tgt=ground_606 on Vampire---4 for (606ds/0Mi)
% 0.22/0.43  % (30251)lrs+10_6_av=off:drc=off:fde=unused:nwc=2.5:sims=off:sp=reverse_frequency:stl=188_1200 on Vampire---4 for (1200ds/0Mi)
% 0.22/0.52  % (30253)First to succeed.
% 0.22/0.52  % (30253)Refutation found. Thanks to Tanya!
% 0.22/0.52  % SZS status Unsatisfiable for Vampire---4
% 0.22/0.52  % SZS output start Proof for Vampire---4
% See solution above
% 0.22/0.52  % (30253)------------------------------
% 0.22/0.52  % (30253)Version: Vampire 4.7 (commit 05ef610bd on 2023-06-21 19:03:17 +0100)
% 0.22/0.52  % (30253)Linked with Z3 4.9.1.0 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee z3-4.8.4-6427-g6ed071b44
% 0.22/0.52  % (30253)Termination reason: Refutation
% 0.22/0.52  
% 0.22/0.52  % (30253)Memory used [KB]: 3965
% 0.22/0.52  % (30253)Time elapsed: 0.092 s
% 0.22/0.52  % (30253)------------------------------
% 0.22/0.52  % (30253)------------------------------
% 0.22/0.52  % (30250)Success in time 0.149 s
% 0.22/0.52  % Vampire---4.8 exiting
%------------------------------------------------------------------------------