TSTP Solution File: GRP579-1 by SPASS---3.9

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : SPASS---3.9
% Problem  : GRP579-1 : TPTP v8.1.0. Released v2.6.0.
% Transfm  : none
% Format   : tptp
% Command  : run_spass %d %s

% Computer : n022.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  : 600s
% DateTime : Sat Jul 16 11:48:07 EDT 2022

% Result   : Unsatisfiable 0.39s 0.58s
% Output   : Refutation 0.39s
% Verified : 
% SZS Type : Refutation
%            Derivation depth      :   34
%            Number of leaves      :    5
% Syntax   : Number of clauses     :   87 (  87 unt;   0 nHn;  87 RR)
%            Number of literals    :   87 (   0 equ;   4 neg)
%            Maximal clause size   :    1 (   1 avg)
%            Maximal term depth    :    8 (   2 avg)
%            Number of predicates  :    2 (   1 usr;   1 prp; 0-2 aty)
%            Number of functors    :   10 (  10 usr;   7 con; 0-2 aty)
%            Number of variables   :    0 (   0 sgn)

% Comments : 
%------------------------------------------------------------------------------
cnf(1,axiom,
    equal(double_divide(double_divide(u,double_divide(double_divide(double_divide(v,u),w),double_divide(v,identity))),double_divide(identity,identity)),w),
    file('GRP579-1.p',unknown),
    [] ).

cnf(2,axiom,
    equal(double_divide(double_divide(u,v),identity),multiply(v,u)),
    file('GRP579-1.p',unknown),
    [] ).

cnf(3,axiom,
    equal(double_divide(u,identity),inverse(u)),
    file('GRP579-1.p',unknown),
    [] ).

cnf(4,axiom,
    equal(double_divide(u,inverse(u)),identity),
    file('GRP579-1.p',unknown),
    [] ).

cnf(5,axiom,
    ~ equal(multiply(multiply(a3,b3),c3),multiply(a3,multiply(b3,c3))),
    file('GRP579-1.p',unknown),
    [] ).

cnf(6,plain,
    equal(inverse(double_divide(u,v)),multiply(v,u)),
    inference(rew,[status(thm),theory(equality)],[3,2]),
    [iquote('0:Rew:3.0,2.0')] ).

cnf(7,plain,
    equal(double_divide(double_divide(u,double_divide(double_divide(double_divide(v,u),w),inverse(v))),inverse(identity)),w),
    inference(rew,[status(thm),theory(equality)],[3,1]),
    [iquote('0:Rew:3.0,1.0,3.0,1.0')] ).

cnf(10,plain,
    equal(double_divide(double_divide(u,v),multiply(v,u)),identity),
    inference(spr,[status(thm),theory(equality)],[6,4]),
    [iquote('0:SpR:6.0,4.0')] ).

cnf(12,plain,
    equal(multiply(inverse(u),u),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[4,6]),
    [iquote('0:SpR:4.0,6.0')] ).

cnf(13,plain,
    equal(multiply(identity,u),inverse(inverse(u))),
    inference(spr,[status(thm),theory(equality)],[3,6]),
    [iquote('0:SpR:3.0,6.0')] ).

cnf(47,plain,
    equal(double_divide(double_divide(double_divide(u,double_divide(identity,v)),w),inverse(u)),double_divide(double_divide(v,w),inverse(identity))),
    inference(spr,[status(thm),theory(equality)],[7]),
    [iquote('0:SpR:7.0,7.0')] ).

cnf(52,plain,
    equal(double_divide(double_divide(inverse(u),double_divide(double_divide(identity,v),inverse(u))),inverse(identity)),v),
    inference(spr,[status(thm),theory(equality)],[4,7]),
    [iquote('0:SpR:4.0,7.0')] ).

cnf(53,plain,
    equal(double_divide(double_divide(identity,double_divide(double_divide(inverse(u),v),inverse(u))),inverse(identity)),v),
    inference(spr,[status(thm),theory(equality)],[3,7]),
    [iquote('0:SpR:3.0,7.0')] ).

cnf(56,plain,
    equal(double_divide(double_divide(u,double_divide(inverse(double_divide(v,u)),inverse(v))),inverse(identity)),identity),
    inference(spr,[status(thm),theory(equality)],[3,7]),
    [iquote('0:SpR:3.0,7.0')] ).

cnf(57,plain,
    equal(double_divide(double_divide(u,double_divide(identity,inverse(v))),inverse(identity)),multiply(u,v)),
    inference(spr,[status(thm),theory(equality)],[10,7]),
    [iquote('0:SpR:10.0,7.0')] ).

cnf(59,plain,
    equal(double_divide(double_divide(u,double_divide(multiply(u,v),inverse(v))),inverse(identity)),identity),
    inference(rew,[status(thm),theory(equality)],[6,56]),
    [iquote('0:Rew:6.0,56.0')] ).

cnf(66,plain,
    equal(double_divide(double_divide(double_divide(multiply(u,v),inverse(v)),double_divide(identity,inverse(u))),inverse(identity)),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[59,7]),
    [iquote('0:SpR:59.0,7.0')] ).

cnf(79,plain,
    equal(multiply(double_divide(multiply(u,v),inverse(v)),u),inverse(identity)),
    inference(rew,[status(thm),theory(equality)],[57,66]),
    [iquote('0:Rew:57.0,66.0')] ).

cnf(88,plain,
    equal(multiply(double_divide(inverse(identity),inverse(u)),inverse(u)),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[12,79]),
    [iquote('0:SpR:12.0,79.0')] ).

cnf(99,plain,
    equal(multiply(identity,inverse(inverse(identity))),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[4,88]),
    [iquote('0:SpR:4.0,88.0')] ).

cnf(100,plain,
    equal(inverse(inverse(inverse(inverse(identity)))),inverse(identity)),
    inference(rew,[status(thm),theory(equality)],[13,99]),
    [iquote('0:Rew:13.0,99.0')] ).

cnf(120,plain,
    equal(double_divide(double_divide(inverse(identity),double_divide(double_divide(u,v),inverse(double_divide(inverse(w),double_divide(double_divide(identity,u),inverse(w)))))),inverse(identity)),v),
    inference(spr,[status(thm),theory(equality)],[52,7]),
    [iquote('0:SpR:52.0,7.0')] ).

cnf(126,plain,
    equal(double_divide(double_divide(inverse(double_divide(identity,u)),identity),inverse(identity)),u),
    inference(spr,[status(thm),theory(equality)],[4,52]),
    [iquote('0:SpR:4.0,52.0')] ).

cnf(128,plain,
    equal(double_divide(double_divide(inverse(identity),identity),inverse(identity)),double_divide(multiply(identity,u),inverse(u))),
    inference(spr,[status(thm),theory(equality)],[59,52]),
    [iquote('0:SpR:59.0,52.0')] ).

cnf(131,plain,
    equal(double_divide(inverse(multiply(u,identity)),inverse(identity)),u),
    inference(rew,[status(thm),theory(equality)],[3,126,6]),
    [iquote('0:Rew:3.0,126.0,6.0,126.0')] ).

cnf(133,plain,
    equal(double_divide(inverse(inverse(identity)),inverse(identity)),double_divide(inverse(inverse(u)),inverse(u))),
    inference(rew,[status(thm),theory(equality)],[3,128,13]),
    [iquote('0:Rew:3.0,128.0,13.0,128.0')] ).

cnf(137,plain,
    equal(double_divide(double_divide(inverse(identity),double_divide(double_divide(u,v),multiply(double_divide(double_divide(identity,u),inverse(w)),inverse(w)))),inverse(identity)),v),
    inference(rew,[status(thm),theory(equality)],[6,120]),
    [iquote('0:Rew:6.0,120.0')] ).

cnf(138,plain,
    equal(multiply(inverse(identity),inverse(multiply(u,identity))),inverse(u)),
    inference(spr,[status(thm),theory(equality)],[131,6]),
    [iquote('0:SpR:131.0,6.0')] ).

cnf(143,plain,
    equal(double_divide(inverse(inverse(identity)),inverse(identity)),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[12,131]),
    [iquote('0:SpR:12.0,131.0')] ).

cnf(146,plain,
    equal(double_divide(inverse(inverse(u)),inverse(u)),inverse(identity)),
    inference(rew,[status(thm),theory(equality)],[143,133]),
    [iquote('0:Rew:143.0,133.0')] ).

cnf(154,plain,
    equal(multiply(inverse(u),inverse(inverse(u))),inverse(inverse(identity))),
    inference(spr,[status(thm),theory(equality)],[146,6]),
    [iquote('0:SpR:146.0,6.0')] ).

cnf(159,plain,
    equal(double_divide(inverse(multiply(u,v)),multiply(u,v)),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[6,146]),
    [iquote('0:SpR:6.0,146.0')] ).

cnf(163,plain,
    equal(double_divide(inverse(identity),inverse(inverse(inverse(identity)))),inverse(identity)),
    inference(spr,[status(thm),theory(equality)],[100,146]),
    [iquote('0:SpR:100.0,146.0')] ).

cnf(199,plain,
    equal(double_divide(double_divide(identity,double_divide(inverse(identity),inverse(identity))),inverse(identity)),inverse(inverse(inverse(identity)))),
    inference(spr,[status(thm),theory(equality)],[163,53]),
    [iquote('0:SpR:163.0,53.0')] ).

cnf(201,plain,
    equal(double_divide(multiply(inverse(identity),u),inverse(u)),double_divide(double_divide(identity,identity),inverse(identity))),
    inference(spr,[status(thm),theory(equality)],[59,53]),
    [iquote('0:SpR:59.0,53.0')] ).

cnf(207,plain,
    equal(double_divide(multiply(inverse(identity),u),inverse(u)),double_divide(inverse(identity),inverse(identity))),
    inference(rew,[status(thm),theory(equality)],[3,201]),
    [iquote('0:Rew:3.0,201.0')] ).

cnf(245,plain,
    equal(double_divide(double_divide(identity,double_divide(inverse(identity),inverse(multiply(u,v)))),inverse(identity)),multiply(u,v)),
    inference(spr,[status(thm),theory(equality)],[159,53]),
    [iquote('0:SpR:159.0,53.0')] ).

cnf(379,plain,
    equal(double_divide(inverse(u),inverse(inverse(multiply(u,identity)))),double_divide(inverse(identity),inverse(identity))),
    inference(spr,[status(thm),theory(equality)],[138,207]),
    [iquote('0:SpR:138.0,207.0')] ).

cnf(380,plain,
    equal(double_divide(inverse(inverse(identity)),inverse(inverse(inverse(identity)))),double_divide(inverse(identity),inverse(identity))),
    inference(spr,[status(thm),theory(equality)],[154,207]),
    [iquote('0:SpR:154.0,207.0')] ).

cnf(385,plain,
    equal(double_divide(inverse(identity),inverse(identity)),identity),
    inference(rew,[status(thm),theory(equality)],[4,380]),
    [iquote('0:Rew:4.0,380.0')] ).

cnf(387,plain,
    equal(double_divide(double_divide(identity,identity),inverse(identity)),inverse(inverse(inverse(identity)))),
    inference(rew,[status(thm),theory(equality)],[385,199]),
    [iquote('0:Rew:385.0,199.0')] ).

cnf(388,plain,
    equal(double_divide(inverse(u),inverse(inverse(multiply(u,identity)))),identity),
    inference(rew,[status(thm),theory(equality)],[385,379]),
    [iquote('0:Rew:385.0,379.0')] ).

cnf(389,plain,
    equal(double_divide(inverse(identity),inverse(identity)),inverse(inverse(inverse(identity)))),
    inference(rew,[status(thm),theory(equality)],[3,387]),
    [iquote('0:Rew:3.0,387.0')] ).

cnf(390,plain,
    equal(inverse(inverse(inverse(identity))),identity),
    inference(rew,[status(thm),theory(equality)],[385,389]),
    [iquote('0:Rew:385.0,389.0')] ).

cnf(394,plain,
    equal(double_divide(inverse(identity),identity),inverse(identity)),
    inference(rew,[status(thm),theory(equality)],[390,163]),
    [iquote('0:Rew:390.0,163.0')] ).

cnf(404,plain,
    equal(inverse(inverse(identity)),inverse(identity)),
    inference(rew,[status(thm),theory(equality)],[3,394]),
    [iquote('0:Rew:3.0,394.0')] ).

cnf(414,plain,
    equal(inverse(inverse(identity)),identity),
    inference(rew,[status(thm),theory(equality)],[404,390]),
    [iquote('0:Rew:404.0,390.0')] ).

cnf(415,plain,
    equal(inverse(identity),identity),
    inference(rew,[status(thm),theory(equality)],[404,414]),
    [iquote('0:Rew:404.0,414.0')] ).

cnf(422,plain,
    equal(double_divide(double_divide(inverse(u),double_divide(double_divide(identity,v),inverse(u))),identity),v),
    inference(rew,[status(thm),theory(equality)],[415,52]),
    [iquote('0:Rew:415.0,52.0')] ).

cnf(423,plain,
    equal(double_divide(inverse(multiply(u,identity)),identity),u),
    inference(rew,[status(thm),theory(equality)],[415,131]),
    [iquote('0:Rew:415.0,131.0')] ).

cnf(430,plain,
    equal(double_divide(double_divide(u,double_divide(identity,inverse(v))),identity),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[415,57]),
    [iquote('0:Rew:415.0,57.0')] ).

cnf(431,plain,
    equal(double_divide(double_divide(double_divide(u,double_divide(identity,v)),w),inverse(u)),double_divide(double_divide(v,w),identity)),
    inference(rew,[status(thm),theory(equality)],[415,47]),
    [iquote('0:Rew:415.0,47.0')] ).

cnf(450,plain,
    equal(double_divide(double_divide(identity,double_divide(double_divide(u,v),multiply(double_divide(double_divide(identity,u),inverse(w)),inverse(w)))),identity),v),
    inference(rew,[status(thm),theory(equality)],[415,137]),
    [iquote('0:Rew:415.0,137.0')] ).

cnf(460,plain,
    equal(double_divide(double_divide(identity,double_divide(identity,inverse(multiply(u,v)))),identity),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[415,245]),
    [iquote('0:Rew:415.0,245.0')] ).

cnf(482,plain,
    equal(inverse(inverse(multiply(u,identity))),u),
    inference(rew,[status(thm),theory(equality)],[3,423]),
    [iquote('0:Rew:3.0,423.0')] ).

cnf(483,plain,
    equal(double_divide(inverse(u),u),identity),
    inference(rew,[status(thm),theory(equality)],[482,388]),
    [iquote('0:Rew:482.0,388.0')] ).

cnf(499,plain,
    equal(multiply(double_divide(identity,inverse(u)),v),multiply(v,u)),
    inference(rew,[status(thm),theory(equality)],[6,430,3]),
    [iquote('0:Rew:6.0,430.0,3.0,430.0')] ).

cnf(511,plain,
    equal(multiply(double_divide(double_divide(identity,u),inverse(v)),inverse(v)),u),
    inference(rew,[status(thm),theory(equality)],[6,422,3]),
    [iquote('0:Rew:6.0,422.0,3.0,422.0')] ).

cnf(532,plain,
    equal(multiply(double_divide(identity,inverse(multiply(u,v))),identity),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[6,460,3]),
    [iquote('0:Rew:6.0,460.0,3.0,460.0')] ).

cnf(533,plain,
    equal(multiply(identity,multiply(u,v)),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[499,532]),
    [iquote('0:Rew:499.0,532.0')] ).

cnf(534,plain,
    equal(inverse(inverse(multiply(u,v))),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[13,533]),
    [iquote('0:Rew:13.0,533.0')] ).

cnf(535,plain,
    equal(multiply(u,identity),u),
    inference(rew,[status(thm),theory(equality)],[534,482]),
    [iquote('0:Rew:534.0,482.0')] ).

cnf(581,plain,
    equal(double_divide(double_divide(double_divide(u,double_divide(identity,v)),w),inverse(u)),multiply(w,v)),
    inference(rew,[status(thm),theory(equality)],[6,431,3]),
    [iquote('0:Rew:6.0,431.0,3.0,431.0')] ).

cnf(610,plain,
    equal(multiply(double_divide(double_divide(u,v),multiply(double_divide(double_divide(identity,u),inverse(w)),inverse(w))),identity),v),
    inference(rew,[status(thm),theory(equality)],[6,450,3]),
    [iquote('0:Rew:6.0,450.0,3.0,450.0')] ).

cnf(611,plain,
    equal(double_divide(double_divide(u,v),u),v),
    inference(rew,[status(thm),theory(equality)],[535,610,511]),
    [iquote('0:Rew:535.0,610.0,511.0,610.0')] ).

cnf(690,plain,
    equal(multiply(identity,inverse(double_divide(identity,u))),u),
    inference(spr,[status(thm),theory(equality)],[4,511]),
    [iquote('0:SpR:4.0,511.0')] ).

cnf(691,plain,
    equal(inverse(inverse(u)),u),
    inference(rew,[status(thm),theory(equality)],[13,690,535,6]),
    [iquote('0:Rew:13.0,690.0,535.0,690.0,6.0,690.0')] ).

cnf(710,plain,
    equal(inverse(multiply(u,v)),double_divide(v,u)),
    inference(spr,[status(thm),theory(equality)],[6,691]),
    [iquote('0:SpR:6.0,691.0')] ).

cnf(747,plain,
    equal(double_divide(double_divide(double_divide(inverse(u),double_divide(identity,v)),w),u),multiply(w,v)),
    inference(spr,[status(thm),theory(equality)],[691,581]),
    [iquote('0:SpR:691.0,581.0')] ).

cnf(750,plain,
    equal(double_divide(double_divide(identity,u),inverse(inverse(double_divide(identity,v)))),multiply(u,v)),
    inference(spr,[status(thm),theory(equality)],[483,581]),
    [iquote('0:SpR:483.0,581.0')] ).

cnf(760,plain,
    equal(double_divide(double_divide(identity,u),inverse(v)),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[535,750,6]),
    [iquote('0:Rew:535.0,750.0,6.0,750.0')] ).

cnf(779,plain,
    equal(multiply(u,double_divide(u,v)),inverse(v)),
    inference(spr,[status(thm),theory(equality)],[611,6]),
    [iquote('0:SpR:611.0,6.0')] ).

cnf(788,plain,
    equal(double_divide(identity,u),inverse(u)),
    inference(spr,[status(thm),theory(equality)],[4,611]),
    [iquote('0:SpR:4.0,611.0')] ).

cnf(805,plain,
    equal(double_divide(double_divide(double_divide(inverse(u),inverse(v)),w),u),multiply(w,v)),
    inference(rew,[status(thm),theory(equality)],[788,747]),
    [iquote('0:Rew:788.0,747.0')] ).

cnf(813,plain,
    equal(double_divide(inverse(u),inverse(v)),multiply(u,v)),
    inference(rew,[status(thm),theory(equality)],[788,760]),
    [iquote('0:Rew:788.0,760.0')] ).

cnf(814,plain,
    equal(multiply(inverse(inverse(u)),v),multiply(v,u)),
    inference(rew,[status(thm),theory(equality)],[788,499]),
    [iquote('0:Rew:788.0,499.0')] ).

cnf(819,plain,
    equal(multiply(u,v),multiply(v,u)),
    inference(rew,[status(thm),theory(equality)],[691,814]),
    [iquote('0:Rew:691.0,814.0')] ).

cnf(821,plain,
    ~ equal(multiply(c3,multiply(a3,b3)),multiply(a3,multiply(b3,c3))),
    inference(rew,[status(thm),theory(equality)],[819,5]),
    [iquote('0:Rew:819.0,5.0')] ).

cnf(841,plain,
    equal(double_divide(double_divide(multiply(u,v),w),u),multiply(w,v)),
    inference(rew,[status(thm),theory(equality)],[813,805]),
    [iquote('0:Rew:813.0,805.0')] ).

cnf(891,plain,
    equal(inverse(multiply(u,v)),double_divide(u,v)),
    inference(spr,[status(thm),theory(equality)],[819,710]),
    [iquote('0:SpR:819.0,710.0')] ).

cnf(897,plain,
    equal(double_divide(u,v),double_divide(v,u)),
    inference(rew,[status(thm),theory(equality)],[710,891]),
    [iquote('0:Rew:710.0,891.0')] ).

cnf(913,plain,
    equal(double_divide(u,double_divide(multiply(u,v),w)),multiply(w,v)),
    inference(rew,[status(thm),theory(equality)],[897,841]),
    [iquote('0:Rew:897.0,841.0')] ).

cnf(1949,plain,
    equal(inverse(double_divide(multiply(u,v),w)),multiply(u,multiply(w,v))),
    inference(spr,[status(thm),theory(equality)],[913,779]),
    [iquote('0:SpR:913.0,779.0')] ).

cnf(2027,plain,
    equal(multiply(u,multiply(v,w)),multiply(v,multiply(u,w))),
    inference(rew,[status(thm),theory(equality)],[6,1949]),
    [iquote('0:Rew:6.0,1949.0')] ).

cnf(2028,plain,
    ~ equal(multiply(a3,multiply(c3,b3)),multiply(a3,multiply(b3,c3))),
    inference(rew,[status(thm),theory(equality)],[2027,821]),
    [iquote('0:Rew:2027.0,821.0')] ).

cnf(2039,plain,
    ~ equal(multiply(a3,multiply(b3,c3)),multiply(a3,multiply(b3,c3))),
    inference(rew,[status(thm),theory(equality)],[819,2028]),
    [iquote('0:Rew:819.0,2028.0')] ).

cnf(2040,plain,
    $false,
    inference(obv,[status(thm),theory(equality)],[2039]),
    [iquote('0:Obv:2039.0')] ).

%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12  % Problem  : GRP579-1 : TPTP v8.1.0. Released v2.6.0.
% 0.03/0.13  % Command  : run_spass %d %s
% 0.13/0.34  % Computer : n022.cluster.edu
% 0.13/0.34  % Model    : x86_64 x86_64
% 0.13/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.34  % Memory   : 8042.1875MB
% 0.13/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.13/0.34  % CPULimit : 300
% 0.13/0.34  % WCLimit  : 600
% 0.13/0.34  % DateTime : Tue Jun 14 12:24:18 EDT 2022
% 0.13/0.34  % CPUTime  : 
% 0.39/0.58  
% 0.39/0.58  SPASS V 3.9 
% 0.39/0.58  SPASS beiseite: Proof found.
% 0.39/0.58  % SZS status Theorem
% 0.39/0.58  Problem: /export/starexec/sandbox/benchmark/theBenchmark.p 
% 0.39/0.58  SPASS derived 1154 clauses, backtracked 0 clauses, performed 0 splits and kept 324 clauses.
% 0.39/0.58  SPASS allocated 65118 KBytes.
% 0.39/0.58  SPASS spent	0:00:00.22 on the problem.
% 0.39/0.58  		0:00:00.03 for the input.
% 0.39/0.58  		0:00:00.00 for the FLOTTER CNF translation.
% 0.39/0.58  		0:00:00.01 for inferences.
% 0.39/0.58  		0:00:00.00 for the backtracking.
% 0.39/0.58  		0:00:00.16 for the reduction.
% 0.39/0.58  
% 0.39/0.58  
% 0.39/0.58  Here is a proof with depth 6, length 87 :
% 0.39/0.58  % SZS output start Refutation
% See solution above
% 0.39/0.60  Formulae used in the proof : single_axiom multiply inverse identity prove_these_axioms_3
% 0.39/0.60  
%------------------------------------------------------------------------------