TSTP Solution File: SET012-4 by CSE---1.6
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : CSE---1.6
% Problem : SET012-4 : TPTP v8.1.2. Bugfixed v1.2.1.
% Transfm : none
% Format : tptp:raw
% Command : java -jar /export/starexec/sandbox2/solver/bin/mcs_scs.jar %s %d
% Computer : n007.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 : Thu Aug 31 14:27:49 EDT 2023
% Result : Unsatisfiable 82.08s 82.19s
% Output : CNFRefutation 82.20s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.07/0.12 % Problem : SET012-4 : TPTP v8.1.2. Bugfixed v1.2.1.
% 0.07/0.13 % Command : java -jar /export/starexec/sandbox2/solver/bin/mcs_scs.jar %s %d
% 0.13/0.34 % Computer : n007.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 : 300
% 0.13/0.34 % DateTime : Sat Aug 26 13:27:26 EDT 2023
% 0.13/0.34 % CPUTime :
% 0.20/0.58 start to proof:theBenchmark
% 82.08/82.18 %-------------------------------------------
% 82.08/82.18 % File :CSE---1.6
% 82.08/82.18 % Problem :theBenchmark
% 82.08/82.18 % Transform :cnf
% 82.08/82.18 % Format :tptp:raw
% 82.08/82.18 % Command :java -jar mcs_scs.jar %d %s
% 82.08/82.18
% 82.08/82.18 % Result :Theorem 81.550000s
% 82.08/82.18 % Output :CNFRefutation 81.550000s
% 82.08/82.18 %-------------------------------------------
% 82.08/82.19 %--------------------------------------------------------------------------
% 82.08/82.19 % File : SET012-4 : TPTP v8.1.2. Bugfixed v1.2.1.
% 82.08/82.19 % Domain : Set Theory
% 82.08/82.19 % Problem : Complement is an involution
% 82.08/82.19 % Version : [BL+86] axioms : Reduced > Incomplete.
% 82.08/82.19 % English :
% 82.08/82.19
% 82.08/82.19 % Refs : [BL+86] Boyer et al. (1986), Set Theory in First-Order Logic:
% 82.08/82.19 % Source : [ANL]
% 82.08/82.19 % Names : compl.ver2.in [ANL]
% 82.08/82.19
% 82.08/82.19 % Status : Unsatisfiable
% 82.08/82.19 % Rating : 0.10 v8.1.0, 0.00 v7.5.0, 0.05 v7.4.0, 0.06 v7.3.0, 0.08 v7.1.0, 0.00 v7.0.0, 0.13 v6.4.0, 0.07 v6.3.0, 0.09 v6.2.0, 0.00 v6.1.0, 0.07 v6.0.0, 0.00 v5.5.0, 0.10 v5.4.0, 0.05 v5.3.0, 0.06 v5.2.0, 0.00 v3.3.0, 0.07 v3.2.0, 0.08 v3.1.0, 0.09 v2.7.0, 0.08 v2.6.0, 0.00 v2.5.0, 0.18 v2.4.0, 0.12 v2.2.1, 0.00 v2.1.0, 0.00 v2.0.0
% 82.08/82.19 % Syntax : Number of clauses : 11 ( 4 unt; 3 nHn; 8 RR)
% 82.08/82.19 % Number of literals : 21 ( 6 equ; 9 neg)
% 82.08/82.19 % Maximal clause size : 3 ( 1 avg)
% 82.08/82.19 % Maximal term depth : 2 ( 1 avg)
% 82.08/82.19 % Number of predicates : 3 ( 2 usr; 0 prp; 1-2 aty)
% 82.08/82.19 % Number of functors : 7 ( 7 usr; 5 con; 0-2 aty)
% 82.08/82.19 % Number of variables : 14 ( 2 sgn)
% 82.08/82.19 % SPC : CNF_UNS_RFO_SEQ_NHN
% 82.08/82.19
% 82.08/82.19 % Comments :
% 82.08/82.19 % Bugfixes : v1.2.1 - Missing substitution axioms added.
% 82.08/82.19 %--------------------------------------------------------------------------
% 82.08/82.19 %----Axiom A-2, elements of sets are little sets.
% 82.08/82.19 cnf(a2,axiom,
% 82.08/82.19 ( ~ member(X,Y)
% 82.08/82.19 | little_set(X) ) ).
% 82.08/82.19
% 82.08/82.19 %----Axiom A-3, principle of extensionality
% 82.08/82.19 cnf(extensionality1,axiom,
% 82.08/82.19 ( little_set(f1(X,Y))
% 82.08/82.19 | X = Y ) ).
% 82.08/82.19
% 82.08/82.19 cnf(extensionality2,axiom,
% 82.08/82.19 ( member(f1(X,Y),X)
% 82.08/82.19 | member(f1(X,Y),Y)
% 82.08/82.19 | X = Y ) ).
% 82.08/82.19
% 82.08/82.19 cnf(extensionality3,axiom,
% 82.08/82.19 ( ~ member(f1(X,Y),X)
% 82.08/82.19 | ~ member(f1(X,Y),Y)
% 82.08/82.19 | X = Y ) ).
% 82.08/82.19
% 82.08/82.19 %----Axiom B-3, complement
% 82.08/82.19 cnf(complement1,axiom,
% 82.08/82.19 ( ~ member(Z,complement(X))
% 82.08/82.19 | ~ member(Z,X) ) ).
% 82.08/82.19
% 82.08/82.19 cnf(complement2,axiom,
% 82.08/82.19 ( member(Z,complement(X))
% 82.08/82.19 | ~ little_set(Z)
% 82.08/82.19 | member(Z,X) ) ).
% 82.08/82.19
% 82.08/82.19 %----Definition of empty set
% 82.08/82.19 cnf(empty_set,axiom,
% 82.08/82.19 ~ member(Z,empty_set) ).
% 82.08/82.19
% 82.08/82.19 %----Definition of universal set
% 82.08/82.19 cnf(universal_set,axiom,
% 82.08/82.19 ( member(Z,universal_set)
% 82.08/82.19 | ~ little_set(Z) ) ).
% 82.08/82.19
% 82.08/82.19 cnf(complement_of_a_is_b,hypothesis,
% 82.08/82.19 complement(as) = bs ).
% 82.08/82.19
% 82.08/82.19 cnf(complement_of_b_is_c,hypothesis,
% 82.08/82.19 complement(bs) = cs ).
% 82.08/82.19
% 82.08/82.19 cnf(prove_a_equals_c,negated_conjecture,
% 82.08/82.19 as != cs ).
% 82.08/82.19
% 82.08/82.19 %--------------------------------------------------------------------------
% 82.08/82.19 %-------------------------------------------
% 82.08/82.19 % Proof found
% 82.08/82.19 % SZS status Theorem for theBenchmark
% 82.08/82.19 % SZS output start Proof
% 82.08/82.19 %ClaNum:20(EqnAxiom:9)
% 82.08/82.19 %VarNum:35(SingletonVarNum:14)
% 82.08/82.19 %MaxLitNum:3
% 82.08/82.19 %MaxfuncDepth:1
% 82.08/82.19 %SharedTerms:10
% 82.08/82.19 %goalClause: 12
% 82.08/82.19 %singleGoalClaCount:1
% 82.08/82.19 [12]~E(a1,a4)
% 82.08/82.19 [10]E(f2(a1),a3)
% 82.08/82.19 [11]E(f2(a3),a4)
% 82.08/82.19 [13]~P1(x131,a5)
% 82.08/82.19 [14]~P2(x141)+P1(x141,a6)
% 82.08/82.19 [15]P2(x151)+~P1(x151,x152)
% 82.08/82.19 [16]E(x161,x162)+P2(f7(x161,x162))
% 82.08/82.19 [18]~P1(x181,x182)+~P1(x181,f2(x182))
% 82.08/82.19 [17]~P2(x171)+P1(x171,x172)+P1(x171,f2(x172))
% 82.08/82.19 [19]E(x191,x192)+P1(f7(x191,x192),x192)+P1(f7(x191,x192),x191)
% 82.08/82.19 [20]E(x201,x202)+~P1(f7(x201,x202),x202)+~P1(f7(x201,x202),x201)
% 82.08/82.19 %EqnAxiom
% 82.08/82.19 [1]E(x11,x11)
% 82.08/82.19 [2]E(x22,x21)+~E(x21,x22)
% 82.08/82.19 [3]E(x31,x33)+~E(x31,x32)+~E(x32,x33)
% 82.08/82.19 [4]~E(x41,x42)+E(f2(x41),f2(x42))
% 82.08/82.19 [5]~E(x51,x52)+E(f7(x51,x53),f7(x52,x53))
% 82.08/82.19 [6]~E(x61,x62)+E(f7(x63,x61),f7(x63,x62))
% 82.08/82.19 [7]P1(x72,x73)+~E(x71,x72)+~P1(x71,x73)
% 82.08/82.19 [8]P1(x83,x82)+~E(x81,x82)+~P1(x83,x81)
% 82.08/82.19 [9]~P2(x91)+P2(x92)+~E(x91,x92)
% 82.08/82.19
% 82.08/82.19 %-------------------------------------------
% 82.08/82.20 cnf(21,plain,
% 82.08/82.20 (E(a3,f2(a1))),
% 82.08/82.20 inference(scs_inference,[],[10,2])).
% 82.08/82.20 cnf(22,plain,
% 82.08/82.20 (~E(a1,f2(a3))),
% 82.08/82.20 inference(scs_inference,[],[12,10,11,2,3])).
% 82.08/82.20 cnf(23,plain,
% 82.08/82.20 (E(f7(x231,f2(a1)),f7(x231,a3))),
% 82.08/82.20 inference(scs_inference,[],[12,10,11,2,3,6])).
% 82.08/82.20 cnf(24,plain,
% 82.08/82.20 (E(f7(f2(a1),x241),f7(a3,x241))),
% 82.08/82.20 inference(scs_inference,[],[12,10,11,2,3,6,5])).
% 82.08/82.20 cnf(25,plain,
% 82.08/82.20 (E(f2(f2(a1)),f2(a3))),
% 82.08/82.20 inference(scs_inference,[],[12,10,11,2,3,6,5,4])).
% 82.08/82.20 cnf(26,plain,
% 82.08/82.20 (P2(f7(a1,a4))),
% 82.08/82.20 inference(scs_inference,[],[12,10,11,2,3,6,5,4,16])).
% 82.08/82.20 cnf(29,plain,
% 82.08/82.20 (P1(f7(a1,a4),f2(a5))),
% 82.20/82.20 inference(scs_inference,[],[12,13,10,11,2,3,6,5,4,16,9,17])).
% 82.20/82.20 cnf(32,plain,
% 82.20/82.20 (~P1(x321,f2(a1))+P1(x321,a3)),
% 82.20/82.20 inference(scs_inference,[],[12,13,10,11,2,3,6,5,4,16,9,17,8])).
% 82.20/82.20 cnf(38,plain,
% 82.20/82.20 (P1(f7(a1,a4),a6)),
% 82.20/82.20 inference(scs_inference,[],[26,14])).
% 82.20/82.20 cnf(40,plain,
% 82.20/82.20 (~P1(f7(a1,a4),f2(f2(a5)))),
% 82.20/82.20 inference(scs_inference,[],[29,26,14,18])).
% 82.20/82.20 cnf(42,plain,
% 82.20/82.20 (~E(f2(a5),a5)),
% 82.20/82.20 inference(scs_inference,[],[13,29,26,14,18,8])).
% 82.20/82.20 cnf(44,plain,
% 82.20/82.20 (~E(a1,f2(f2(a1)))),
% 82.20/82.20 inference(scs_inference,[],[13,29,25,26,22,14,18,8,3])).
% 82.20/82.20 cnf(45,plain,
% 82.20/82.20 (~E(a4,a1)),
% 82.20/82.20 inference(scs_inference,[],[12,13,29,25,26,22,14,18,8,3,2])).
% 82.20/82.20 cnf(48,plain,
% 82.20/82.20 (~E(a6,a5)),
% 82.20/82.20 inference(scs_inference,[],[13,38,8])).
% 82.20/82.20 cnf(50,plain,
% 82.20/82.20 (E(a4,f2(a3))),
% 82.20/82.20 inference(scs_inference,[],[11,13,38,8,2])).
% 82.20/82.20 cnf(51,plain,
% 82.20/82.20 (E(f7(f2(a1),f2(a1)),f7(a3,a3))),
% 82.20/82.20 inference(scs_inference,[],[11,13,23,24,38,8,2,3])).
% 82.20/82.20 cnf(59,plain,
% 82.20/82.20 (~E(a6,f2(f2(a5)))),
% 82.20/82.20 inference(scs_inference,[],[44,40,38,2,3,8])).
% 82.20/82.20 cnf(62,plain,
% 82.20/82.20 (P2(f7(a1,f2(a3)))),
% 82.20/82.20 inference(scs_inference,[],[11,22,51,25,2,3,16])).
% 82.20/82.20 cnf(64,plain,
% 82.20/82.20 (E(f7(x641,f2(a3)),f7(x641,a4))),
% 82.20/82.20 inference(scs_inference,[],[11,22,51,25,2,3,16,6])).
% 82.20/82.20 cnf(65,plain,
% 82.20/82.20 (E(f7(f2(a3),x651),f7(a4,x651))),
% 82.20/82.20 inference(scs_inference,[],[11,22,51,25,2,3,16,6,5])).
% 82.20/82.20 cnf(67,plain,
% 82.20/82.20 (~P1(x671,f2(a3))+P1(x671,a4)),
% 82.20/82.20 inference(scs_inference,[],[11,22,51,25,2,3,16,6,5,4,8])).
% 82.20/82.20 cnf(68,plain,
% 82.20/82.20 (P1(f7(a1,f2(a3)),f2(a5))),
% 82.20/82.20 inference(scs_inference,[],[13,62,17])).
% 82.20/82.20 cnf(75,plain,
% 82.20/82.20 (P1(f7(a1,f2(a3)),a6)),
% 82.20/82.20 inference(scs_inference,[],[22,13,64,65,62,17,2,3,14])).
% 82.20/82.20 cnf(77,plain,
% 82.20/82.20 (~P1(f7(a1,a4),f2(a6))),
% 82.20/82.20 inference(scs_inference,[],[22,13,64,65,62,38,17,2,3,14,18])).
% 82.20/82.20 cnf(79,plain,
% 82.20/82.20 (~P1(f7(a1,f2(a3)),f2(a6))),
% 82.20/82.20 inference(scs_inference,[],[77,64,7])).
% 82.20/82.20 cnf(85,plain,
% 82.20/82.20 (E(f7(f2(a3),f2(a1)),f7(a4,a3))),
% 82.20/82.20 inference(scs_inference,[],[23,42,65,2,3])).
% 82.20/82.20 cnf(88,plain,
% 82.20/82.20 (P1(f7(a5,f2(a5)),f2(a5))),
% 82.20/82.20 inference(scs_inference,[],[13,23,42,65,2,3,19])).
% 82.20/82.20 cnf(98,plain,
% 82.20/82.20 (P2(f7(a5,f2(a5)))),
% 82.20/82.20 inference(scs_inference,[],[88,15])).
% 82.20/82.20 cnf(101,plain,
% 82.20/82.20 (~P1(x1011,a5)),
% 82.20/82.20 inference(rename_variables,[],[13])).
% 82.20/82.20 cnf(103,plain,
% 82.20/82.20 (~E(a6,f2(a6))),
% 82.20/82.20 inference(scs_inference,[],[48,88,79,75,13,15,19,8])).
% 82.20/82.20 cnf(109,plain,
% 82.20/82.20 (E(f7(a4,x1091),f7(f2(a3),x1091))),
% 82.20/82.20 inference(scs_inference,[],[21,24,48,88,79,50,75,13,15,19,8,2,16,6,4,5])).
% 82.20/82.20 cnf(111,plain,
% 82.20/82.20 (P1(f7(a6,a5),f2(a5))),
% 82.20/82.20 inference(scs_inference,[],[21,24,48,88,79,50,75,13,101,15,19,8,2,16,6,4,5,3,17])).
% 82.20/82.20 cnf(118,plain,
% 82.20/82.20 (~E(f2(a5),f2(a6))),
% 82.20/82.20 inference(scs_inference,[],[68,79,8])).
% 82.20/82.20 cnf(119,plain,
% 82.20/82.20 (E(f7(f2(a1),f2(a3)),f7(a3,a4))),
% 82.20/82.20 inference(scs_inference,[],[24,68,79,64,8,3])).
% 82.20/82.20 cnf(123,plain,
% 82.20/82.20 (P1(f7(a5,f2(a5)),a6)),
% 82.20/82.20 inference(scs_inference,[],[24,59,98,68,79,64,8,3,2,14])).
% 82.20/82.20 cnf(125,plain,
% 82.20/82.20 (~P1(f7(a6,a5),f2(f2(a5)))),
% 82.20/82.20 inference(scs_inference,[],[24,59,111,98,68,79,64,8,3,2,14,18])).
% 82.20/82.20 cnf(127,plain,
% 82.20/82.20 (~E(a5,a6)),
% 82.20/82.20 inference(scs_inference,[],[24,59,111,98,68,79,64,8,3,2,14,18,4])).
% 82.20/82.20 cnf(130,plain,
% 82.20/82.20 (P1(f7(a1,a4),f2(f2(a6)))),
% 82.20/82.20 inference(scs_inference,[],[85,77,26,50,4,2,17])).
% 82.20/82.20 cnf(141,plain,
% 82.20/82.20 (~E(f2(f2(a6)),f2(a6))),
% 82.20/82.20 inference(scs_inference,[],[130,123,77,18,8])).
% 82.20/82.20 cnf(142,plain,
% 82.20/82.20 (~E(f2(a6),a6)),
% 82.20/82.20 inference(scs_inference,[],[130,123,103,77,18,8,2])).
% 82.20/82.20 cnf(147,plain,
% 82.20/82.20 (P2(f7(a5,a6))),
% 82.20/82.20 inference(scs_inference,[],[127,119,111,125,8,2,16])).
% 82.20/82.20 cnf(154,plain,
% 82.20/82.20 (~P1(x1541,a5)),
% 82.20/82.20 inference(rename_variables,[],[13])).
% 82.20/82.20 cnf(161,plain,
% 82.20/82.20 (P2(f7(f2(a5),a5))),
% 82.20/82.20 inference(scs_inference,[],[23,141,147,42,13,154,17,19,2,8,15])).
% 82.20/82.20 cnf(168,plain,
% 82.20/82.20 (P1(f7(f2(a5),a5),a6)),
% 82.20/82.20 inference(scs_inference,[],[161,14])).
% 82.20/82.21 cnf(182,plain,
% 82.20/82.21 (P2(f7(a4,a1))),
% 82.20/82.21 inference(scs_inference,[],[45,16])).
% 82.20/82.21 cnf(184,plain,
% 82.20/82.21 (~E(f2(a6),f2(a5))),
% 82.20/82.21 inference(scs_inference,[],[45,118,16,2])).
% 82.20/82.21 cnf(187,plain,
% 82.20/82.21 (P2(f7(f2(a3),a1))),
% 82.20/82.21 inference(scs_inference,[],[182,109,9])).
% 82.20/82.21 cnf(215,plain,
% 82.20/82.21 (P2(f7(a6,f2(a6)))),
% 82.20/82.21 inference(scs_inference,[],[103,16])).
% 82.20/82.21 cnf(221,plain,
% 82.20/82.21 (~P1(f7(a4,a1),a4)+~P1(f7(a4,a1),a1)),
% 82.20/82.21 inference(scs_inference,[],[45,20])).
% 82.20/82.21 cnf(229,plain,
% 82.20/82.21 (P1(f7(a6,f2(a6)),a6)),
% 82.20/82.21 inference(scs_inference,[],[215,14])).
% 82.20/82.21 cnf(235,plain,
% 82.20/82.21 (~P1(f7(a6,f2(a6)),f2(a6))),
% 82.20/82.21 inference(scs_inference,[],[229,103,20])).
% 82.20/82.21 cnf(244,plain,
% 82.20/82.21 (P2(f7(f2(a6),f2(a5)))),
% 82.20/82.21 inference(scs_inference,[],[184,16])).
% 82.20/82.21 cnf(251,plain,
% 82.20/82.21 (~P1(f7(f2(a6),f2(a5)),f2(a6))),
% 82.20/82.21 inference(scs_inference,[],[244,184,13,17,20])).
% 82.20/82.21 cnf(259,plain,
% 82.20/82.21 (P1(f7(f2(a3),a1),a6)),
% 82.20/82.21 inference(scs_inference,[],[251,244,187,118,17,20,14])).
% 82.20/82.21 cnf(266,plain,
% 82.20/82.21 (~P1(f7(f2(a3),a1),f2(a6))),
% 82.20/82.21 inference(scs_inference,[],[259,18])).
% 82.20/82.21 cnf(269,plain,
% 82.20/82.21 (~P1(f7(a4,a1),f2(a6))),
% 82.20/82.21 inference(scs_inference,[],[266,109,7])).
% 82.20/82.21 cnf(276,plain,
% 82.20/82.21 (P1(f7(a4,a1),a1)+P1(f7(a4,a1),a4)),
% 82.20/82.21 inference(scs_inference,[],[45,266,109,142,13,7,16,17,19])).
% 82.20/82.21 cnf(289,plain,
% 82.20/82.21 (~P1(x2891,a4)+P1(x2891,f2(a3))),
% 82.20/82.21 inference(scs_inference,[],[50,269,235,168,182,17,18,7,8])).
% 82.20/82.21 cnf(520,plain,
% 82.20/82.21 (~P1(x5201,a3)+P1(x5201,f2(a1))),
% 82.20/82.21 inference(scs_inference,[],[21,8])).
% 82.20/82.21 cnf(1656,plain,
% 82.20/82.21 (~P1(x16561,f2(a1))+~P1(x16561,f2(a3))),
% 82.20/82.21 inference(scs_inference,[],[32,18])).
% 82.20/82.21 cnf(1657,plain,
% 82.20/82.21 (~P1(x16571,f2(a1))+~P1(x16571,a4)),
% 82.20/82.21 inference(scs_inference,[],[1656,289])).
% 82.20/82.21 cnf(1658,plain,
% 82.20/82.21 (~P1(x16581,a4)+~P1(x16581,a3)),
% 82.20/82.21 inference(scs_inference,[],[1657,520])).
% 82.20/82.21 cnf(1663,plain,
% 82.20/82.21 (P1(f7(a4,a1),a1)+~P1(f7(a4,a1),a3)),
% 82.20/82.21 inference(scs_inference,[],[1658,276])).
% 82.20/82.21 cnf(1664,plain,
% 82.20/82.21 (~P1(f7(a4,a1),a3)+~P1(f7(a4,a1),f2(a1))),
% 82.20/82.21 inference(scs_inference,[],[1663,18])).
% 82.20/82.21 cnf(1665,plain,
% 82.20/82.21 (~P1(f7(a4,a1),a3)),
% 82.20/82.21 inference(scs_inference,[],[1664,520])).
% 82.20/82.21 cnf(1666,plain,
% 82.20/82.21 (~P1(f7(a4,a1),f2(a1))),
% 82.20/82.21 inference(scs_inference,[],[10,1665,8])).
% 82.20/82.21 cnf(1669,plain,
% 82.20/82.21 (P1(f7(a4,a1),a4)),
% 82.20/82.21 inference(scs_inference,[],[182,10,1665,8,17,67])).
% 82.20/82.21 cnf(1688,plain,
% 82.20/82.21 (~P1(f7(a4,a1),a1)),
% 82.20/82.21 inference(scs_inference,[],[1669,221])).
% 82.20/82.21 cnf(1707,plain,
% 82.20/82.21 ($false),
% 82.20/82.21 inference(scs_inference,[],[182,1688,1666,17]),
% 82.20/82.21 ['proof']).
% 82.20/82.21 % SZS output end Proof
% 82.20/82.21 % Total time :81.550000s
%------------------------------------------------------------------------------