TSTP Solution File: SEU126+2 by CSE---1.6
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : CSE---1.6
% Problem : SEU126+2 : TPTP v8.1.2. Released v3.3.0.
% Transfm : none
% Format : tptp:raw
% Command : java -jar /export/starexec/sandbox2/solver/bin/mcs_scs.jar %s %d
% Computer : n015.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 16:17:37 EDT 2023
% Result : Theorem 0.21s 0.67s
% Output : CNFRefutation 0.21s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12 % Problem : SEU126+2 : TPTP v8.1.2. Released v3.3.0.
% 0.00/0.13 % Command : java -jar /export/starexec/sandbox2/solver/bin/mcs_scs.jar %s %d
% 0.14/0.34 % Computer : n015.cluster.edu
% 0.14/0.34 % Model : x86_64 x86_64
% 0.14/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.34 % Memory : 8042.1875MB
% 0.14/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.14/0.35 % CPULimit : 300
% 0.14/0.35 % WCLimit : 300
% 0.14/0.35 % DateTime : Thu Aug 24 00:30:50 EDT 2023
% 0.14/0.35 % CPUTime :
% 0.21/0.57 start to proof:theBenchmark
% 0.21/0.66 %-------------------------------------------
% 0.21/0.66 % File :CSE---1.6
% 0.21/0.66 % Problem :theBenchmark
% 0.21/0.66 % Transform :cnf
% 0.21/0.66 % Format :tptp:raw
% 0.21/0.66 % Command :java -jar mcs_scs.jar %d %s
% 0.21/0.66
% 0.21/0.66 % Result :Theorem 0.020000s
% 0.21/0.66 % Output :CNFRefutation 0.020000s
% 0.21/0.66 %-------------------------------------------
% 0.21/0.66 %------------------------------------------------------------------------------
% 0.21/0.66 % File : SEU126+2 : TPTP v8.1.2. Released v3.3.0.
% 0.21/0.66 % Domain : Set theory
% 0.21/0.66 % Problem : MPTP chainy problem t12_xboole_1
% 0.21/0.66 % Version : [Urb07] axioms : Especial.
% 0.21/0.66 % English :
% 0.21/0.66
% 0.21/0.66 % Refs : [Ban01] Bancerek et al. (2001), On the Characterizations of Co
% 0.21/0.66 % : [Urb07] Urban (2006), Email to G. Sutcliffe
% 0.21/0.66 % Source : [Urb07]
% 0.21/0.66 % Names : chainy-t12_xboole_1 [Urb07]
% 0.21/0.66
% 0.21/0.66 % Status : Theorem
% 0.21/0.66 % Rating : 0.06 v8.1.0, 0.08 v7.5.0, 0.09 v7.4.0, 0.00 v7.1.0, 0.04 v7.0.0, 0.03 v6.4.0, 0.08 v6.3.0, 0.12 v6.1.0, 0.20 v6.0.0, 0.22 v5.4.0, 0.25 v5.3.0, 0.26 v5.2.0, 0.05 v5.0.0, 0.12 v4.1.0, 0.13 v4.0.1, 0.22 v4.0.0, 0.25 v3.5.0, 0.26 v3.4.0, 0.32 v3.3.0
% 0.21/0.66 % Syntax : Number of formulae : 33 ( 14 unt; 0 def)
% 0.21/0.66 % Number of atoms : 67 ( 14 equ)
% 0.21/0.66 % Maximal formula atoms : 6 ( 2 avg)
% 0.21/0.66 % Number of connectives : 52 ( 18 ~; 1 |; 15 &)
% 0.21/0.66 % ( 8 <=>; 10 =>; 0 <=; 0 <~>)
% 0.21/0.66 % Maximal formula depth : 9 ( 4 avg)
% 0.21/0.66 % Maximal term depth : 2 ( 1 avg)
% 0.21/0.66 % Number of predicates : 6 ( 4 usr; 1 prp; 0-2 aty)
% 0.21/0.66 % Number of functors : 3 ( 3 usr; 1 con; 0-2 aty)
% 0.21/0.66 % Number of variables : 63 ( 59 !; 4 ?)
% 0.21/0.66 % SPC : FOF_THM_RFO_SEQ
% 0.21/0.66
% 0.21/0.66 % Comments : Translated by MPTP 0.2 from the original problem in the Mizar
% 0.21/0.66 % library, www.mizar.org
% 0.21/0.66 %------------------------------------------------------------------------------
% 0.21/0.66 fof(antisymmetry_r2_hidden,axiom,
% 0.21/0.66 ! [A,B] :
% 0.21/0.66 ( in(A,B)
% 0.21/0.66 => ~ in(B,A) ) ).
% 0.21/0.66
% 0.21/0.66 fof(commutativity_k2_xboole_0,axiom,
% 0.21/0.66 ! [A,B] : set_union2(A,B) = set_union2(B,A) ).
% 0.21/0.66
% 0.21/0.66 fof(commutativity_k3_xboole_0,axiom,
% 0.21/0.66 ! [A,B] : set_intersection2(A,B) = set_intersection2(B,A) ).
% 0.21/0.66
% 0.21/0.66 fof(d10_xboole_0,axiom,
% 0.21/0.66 ! [A,B] :
% 0.21/0.66 ( A = B
% 0.21/0.66 <=> ( subset(A,B)
% 0.21/0.66 & subset(B,A) ) ) ).
% 0.21/0.66
% 0.21/0.66 fof(d1_xboole_0,axiom,
% 0.21/0.66 ! [A] :
% 0.21/0.66 ( A = empty_set
% 0.21/0.66 <=> ! [B] : ~ in(B,A) ) ).
% 0.21/0.66
% 0.21/0.66 fof(d2_xboole_0,axiom,
% 0.21/0.66 ! [A,B,C] :
% 0.21/0.67 ( C = set_union2(A,B)
% 0.21/0.67 <=> ! [D] :
% 0.21/0.67 ( in(D,C)
% 0.21/0.67 <=> ( in(D,A)
% 0.21/0.67 | in(D,B) ) ) ) ).
% 0.21/0.67
% 0.21/0.67 fof(d3_tarski,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( subset(A,B)
% 0.21/0.67 <=> ! [C] :
% 0.21/0.67 ( in(C,A)
% 0.21/0.67 => in(C,B) ) ) ).
% 0.21/0.67
% 0.21/0.67 fof(d3_xboole_0,axiom,
% 0.21/0.67 ! [A,B,C] :
% 0.21/0.67 ( C = set_intersection2(A,B)
% 0.21/0.67 <=> ! [D] :
% 0.21/0.67 ( in(D,C)
% 0.21/0.67 <=> ( in(D,A)
% 0.21/0.67 & in(D,B) ) ) ) ).
% 0.21/0.67
% 0.21/0.67 fof(d7_xboole_0,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( disjoint(A,B)
% 0.21/0.67 <=> set_intersection2(A,B) = empty_set ) ).
% 0.21/0.67
% 0.21/0.67 fof(dt_k1_xboole_0,axiom,
% 0.21/0.67 $true ).
% 0.21/0.67
% 0.21/0.67 fof(dt_k2_xboole_0,axiom,
% 0.21/0.67 $true ).
% 0.21/0.67
% 0.21/0.67 fof(dt_k3_xboole_0,axiom,
% 0.21/0.67 $true ).
% 0.21/0.67
% 0.21/0.67 fof(fc1_xboole_0,axiom,
% 0.21/0.67 empty(empty_set) ).
% 0.21/0.67
% 0.21/0.67 fof(fc2_xboole_0,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( ~ empty(A)
% 0.21/0.67 => ~ empty(set_union2(A,B)) ) ).
% 0.21/0.67
% 0.21/0.67 fof(fc3_xboole_0,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( ~ empty(A)
% 0.21/0.67 => ~ empty(set_union2(B,A)) ) ).
% 0.21/0.67
% 0.21/0.67 fof(idempotence_k2_xboole_0,axiom,
% 0.21/0.67 ! [A,B] : set_union2(A,A) = A ).
% 0.21/0.67
% 0.21/0.67 fof(idempotence_k3_xboole_0,axiom,
% 0.21/0.67 ! [A,B] : set_intersection2(A,A) = A ).
% 0.21/0.67
% 0.21/0.67 fof(rc1_xboole_0,axiom,
% 0.21/0.67 ? [A] : empty(A) ).
% 0.21/0.67
% 0.21/0.67 fof(rc2_xboole_0,axiom,
% 0.21/0.67 ? [A] : ~ empty(A) ).
% 0.21/0.67
% 0.21/0.67 fof(reflexivity_r1_tarski,axiom,
% 0.21/0.67 ! [A,B] : subset(A,A) ).
% 0.21/0.67
% 0.21/0.67 fof(symmetry_r1_xboole_0,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( disjoint(A,B)
% 0.21/0.67 => disjoint(B,A) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t12_xboole_1,conjecture,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( subset(A,B)
% 0.21/0.67 => set_union2(A,B) = B ) ).
% 0.21/0.67
% 0.21/0.67 fof(t1_boole,axiom,
% 0.21/0.67 ! [A] : set_union2(A,empty_set) = A ).
% 0.21/0.67
% 0.21/0.67 fof(t1_xboole_1,lemma,
% 0.21/0.67 ! [A,B,C] :
% 0.21/0.67 ( ( subset(A,B)
% 0.21/0.67 & subset(B,C) )
% 0.21/0.67 => subset(A,C) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t2_xboole_1,lemma,
% 0.21/0.67 ! [A] : subset(empty_set,A) ).
% 0.21/0.67
% 0.21/0.67 fof(t3_xboole_0,lemma,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( ~ ( ~ disjoint(A,B)
% 0.21/0.67 & ! [C] :
% 0.21/0.67 ~ ( in(C,A)
% 0.21/0.67 & in(C,B) ) )
% 0.21/0.67 & ~ ( ? [C] :
% 0.21/0.67 ( in(C,A)
% 0.21/0.67 & in(C,B) )
% 0.21/0.67 & disjoint(A,B) ) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t3_xboole_1,lemma,
% 0.21/0.67 ! [A] :
% 0.21/0.67 ( subset(A,empty_set)
% 0.21/0.67 => A = empty_set ) ).
% 0.21/0.67
% 0.21/0.67 fof(t4_xboole_0,lemma,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ( ~ ( ~ disjoint(A,B)
% 0.21/0.67 & ! [C] : ~ in(C,set_intersection2(A,B)) )
% 0.21/0.67 & ~ ( ? [C] : in(C,set_intersection2(A,B))
% 0.21/0.67 & disjoint(A,B) ) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t6_boole,axiom,
% 0.21/0.67 ! [A] :
% 0.21/0.67 ( empty(A)
% 0.21/0.67 => A = empty_set ) ).
% 0.21/0.67
% 0.21/0.67 fof(t7_boole,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ~ ( in(A,B)
% 0.21/0.67 & empty(B) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t7_xboole_1,lemma,
% 0.21/0.67 ! [A,B] : subset(A,set_union2(A,B)) ).
% 0.21/0.67
% 0.21/0.67 fof(t8_boole,axiom,
% 0.21/0.67 ! [A,B] :
% 0.21/0.67 ~ ( empty(A)
% 0.21/0.67 & A != B
% 0.21/0.67 & empty(B) ) ).
% 0.21/0.67
% 0.21/0.67 fof(t8_xboole_1,lemma,
% 0.21/0.67 ! [A,B,C] :
% 0.21/0.67 ( ( subset(A,B)
% 0.21/0.67 & subset(C,B) )
% 0.21/0.67 => subset(set_union2(A,C),B) ) ).
% 0.21/0.67
% 0.21/0.67 %------------------------------------------------------------------------------
% 0.21/0.67 %-------------------------------------------
% 0.21/0.67 % Proof found
% 0.21/0.67 % SZS status Theorem for theBenchmark
% 0.21/0.67 % SZS output start Proof
% 0.21/0.67 %ClaNum:77(EqnAxiom:27)
% 0.21/0.67 %VarNum:247(SingletonVarNum:103)
% 0.21/0.67 %MaxLitNum:4
% 0.21/0.67 %MaxfuncDepth:1
% 0.21/0.67 %SharedTerms:11
% 0.21/0.67 %goalClause: 30 40
% 0.21/0.67 %singleGoalClaCount:2
% 0.21/0.67 [28]P1(a1)
% 0.21/0.67 [29]P1(a2)
% 0.21/0.67 [30]P3(a8,a10)
% 0.21/0.67 [39]~P1(a9)
% 0.21/0.67 [40]~E(f11(a8,a10),a10)
% 0.21/0.67 [31]P3(a1,x311)
% 0.21/0.67 [33]P3(x331,x331)
% 0.21/0.67 [32]E(f11(x321,a1),x321)
% 0.21/0.67 [34]E(f11(x341,x341),x341)
% 0.21/0.67 [35]E(f12(x351,x351),x351)
% 0.21/0.67 [36]E(f11(x361,x362),f11(x362,x361))
% 0.21/0.67 [37]E(f12(x371,x372),f12(x372,x371))
% 0.21/0.67 [38]P3(x381,f11(x381,x382))
% 0.21/0.67 [41]~P1(x411)+E(x411,a1)
% 0.21/0.67 [45]~P3(x451,a1)+E(x451,a1)
% 0.21/0.67 [46]P4(f3(x461),x461)+E(x461,a1)
% 0.21/0.67 [44]~E(x441,x442)+P3(x441,x442)
% 0.21/0.67 [47]~P4(x472,x471)+~E(x471,a1)
% 0.21/0.67 [48]~P1(x481)+~P4(x482,x481)
% 0.21/0.67 [51]~P2(x512,x511)+P2(x511,x512)
% 0.21/0.67 [52]~P4(x522,x521)+~P4(x521,x522)
% 0.21/0.67 [49]~P2(x491,x492)+E(f12(x491,x492),a1)
% 0.21/0.67 [50]P2(x501,x502)+~E(f12(x501,x502),a1)
% 0.21/0.67 [54]P1(x541)+~P1(f11(x542,x541))
% 0.21/0.67 [55]P1(x551)+~P1(f11(x551,x552))
% 0.21/0.67 [56]P3(x561,x562)+P4(f5(x561,x562),x561)
% 0.21/0.67 [57]P2(x571,x572)+P4(f13(x571,x572),x572)
% 0.21/0.67 [58]P2(x581,x582)+P4(f13(x581,x582),x581)
% 0.21/0.67 [67]P3(x671,x672)+~P4(f5(x671,x672),x672)
% 0.21/0.67 [68]P2(x681,x682)+P4(f4(x681,x682),f12(x681,x682))
% 0.21/0.67 [71]~P2(x711,x712)+~P4(x713,f12(x711,x712))
% 0.21/0.67 [42]~P1(x422)+~P1(x421)+E(x421,x422)
% 0.21/0.67 [53]~P3(x532,x531)+~P3(x531,x532)+E(x531,x532)
% 0.21/0.67 [59]~P3(x593,x592)+P4(x591,x592)+~P4(x591,x593)
% 0.21/0.67 [60]~P3(x601,x603)+P3(x601,x602)+~P3(x603,x602)
% 0.21/0.67 [65]~P2(x653,x652)+~P4(x651,x652)+~P4(x651,x653)
% 0.21/0.67 [70]~P3(x702,x703)+~P3(x701,x703)+P3(f11(x701,x702),x703)
% 0.21/0.67 [72]P4(f7(x722,x723,x721),x721)+P4(f7(x722,x723,x721),x723)+E(x721,f12(x722,x723))
% 0.21/0.67 [73]P4(f7(x732,x733,x731),x731)+P4(f7(x732,x733,x731),x732)+E(x731,f12(x732,x733))
% 0.21/0.67 [75]~P4(f6(x752,x753,x751),x751)+~P4(f6(x752,x753,x751),x753)+E(x751,f11(x752,x753))
% 0.21/0.67 [76]~P4(f6(x762,x763,x761),x761)+~P4(f6(x762,x763,x761),x762)+E(x761,f11(x762,x763))
% 0.21/0.67 [61]~P4(x611,x614)+P4(x611,x612)+~E(x612,f11(x613,x614))
% 0.21/0.67 [62]~P4(x621,x623)+P4(x621,x622)+~E(x622,f11(x623,x624))
% 0.21/0.67 [63]~P4(x631,x633)+P4(x631,x632)+~E(x633,f12(x634,x632))
% 0.21/0.67 [64]~P4(x641,x643)+P4(x641,x642)+~E(x643,f12(x642,x644))
% 0.21/0.67 [74]P4(f6(x742,x743,x741),x741)+P4(f6(x742,x743,x741),x743)+P4(f6(x742,x743,x741),x742)+E(x741,f11(x742,x743))
% 0.21/0.67 [77]~P4(f7(x772,x773,x771),x771)+~P4(f7(x772,x773,x771),x773)+~P4(f7(x772,x773,x771),x772)+E(x771,f12(x772,x773))
% 0.21/0.67 [66]~P4(x661,x664)+P4(x661,x662)+P4(x661,x663)+~E(x664,f11(x663,x662))
% 0.21/0.67 [69]~P4(x691,x694)+~P4(x691,x693)+P4(x691,x692)+~E(x692,f12(x693,x694))
% 0.21/0.67 %EqnAxiom
% 0.21/0.67 [1]E(x11,x11)
% 0.21/0.67 [2]E(x22,x21)+~E(x21,x22)
% 0.21/0.67 [3]E(x31,x33)+~E(x31,x32)+~E(x32,x33)
% 0.21/0.67 [4]~E(x41,x42)+E(f11(x41,x43),f11(x42,x43))
% 0.21/0.67 [5]~E(x51,x52)+E(f11(x53,x51),f11(x53,x52))
% 0.21/0.67 [6]~E(x61,x62)+E(f7(x61,x63,x64),f7(x62,x63,x64))
% 0.21/0.67 [7]~E(x71,x72)+E(f7(x73,x71,x74),f7(x73,x72,x74))
% 0.21/0.67 [8]~E(x81,x82)+E(f7(x83,x84,x81),f7(x83,x84,x82))
% 0.21/0.67 [9]~E(x91,x92)+E(f12(x91,x93),f12(x92,x93))
% 0.21/0.67 [10]~E(x101,x102)+E(f12(x103,x101),f12(x103,x102))
% 0.21/0.67 [11]~E(x111,x112)+E(f6(x111,x113,x114),f6(x112,x113,x114))
% 0.21/0.67 [12]~E(x121,x122)+E(f6(x123,x121,x124),f6(x123,x122,x124))
% 0.21/0.67 [13]~E(x131,x132)+E(f6(x133,x134,x131),f6(x133,x134,x132))
% 0.21/0.67 [14]~E(x141,x142)+E(f4(x141,x143),f4(x142,x143))
% 0.21/0.67 [15]~E(x151,x152)+E(f4(x153,x151),f4(x153,x152))
% 0.21/0.67 [16]~E(x161,x162)+E(f5(x161,x163),f5(x162,x163))
% 0.21/0.67 [17]~E(x171,x172)+E(f5(x173,x171),f5(x173,x172))
% 0.21/0.67 [18]~E(x181,x182)+E(f13(x181,x183),f13(x182,x183))
% 0.21/0.67 [19]~E(x191,x192)+E(f13(x193,x191),f13(x193,x192))
% 0.21/0.67 [20]~E(x201,x202)+E(f3(x201),f3(x202))
% 0.21/0.67 [21]~P1(x211)+P1(x212)+~E(x211,x212)
% 0.21/0.67 [22]P4(x222,x223)+~E(x221,x222)+~P4(x221,x223)
% 0.21/0.67 [23]P4(x233,x232)+~E(x231,x232)+~P4(x233,x231)
% 0.21/0.67 [24]P3(x242,x243)+~E(x241,x242)+~P3(x241,x243)
% 0.21/0.67 [25]P3(x253,x252)+~E(x251,x252)+~P3(x253,x251)
% 0.21/0.67 [26]P2(x262,x263)+~E(x261,x262)+~P2(x261,x263)
% 0.21/0.67 [27]P2(x273,x272)+~E(x271,x272)+~P2(x273,x271)
% 0.21/0.67
% 0.21/0.67 %-------------------------------------------
% 0.21/0.67 cnf(79,plain,
% 0.21/0.67 (~P4(x791,a1)),
% 0.21/0.67 inference(scs_inference,[],[28,34,2,48])).
% 0.21/0.67 cnf(82,plain,
% 0.21/0.67 (E(f11(x821,x821),x821)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(89,plain,
% 0.21/0.67 (E(f11(x891,x891),x891)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(91,plain,
% 0.21/0.67 (P3(f11(x911,x911),x911)),
% 0.21/0.67 inference(scs_inference,[],[33,28,34,82,89,2,48,47,58,57,27,26,25])).
% 0.21/0.67 cnf(95,plain,
% 0.21/0.67 (E(f11(x951,x951),x951)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(97,plain,
% 0.21/0.67 (E(f11(x971,x971),x971)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(102,plain,
% 0.21/0.67 (E(f11(x1021,x1021),x1021)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(105,plain,
% 0.21/0.67 (E(f11(x1051,x1051),x1051)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(108,plain,
% 0.21/0.67 (E(f11(x1081,x1081),x1081)),
% 0.21/0.67 inference(rename_variables,[],[34])).
% 0.21/0.67 cnf(135,plain,
% 0.21/0.67 (~P4(x1351,f12(a1,x1352))),
% 0.21/0.67 inference(scs_inference,[],[30,33,31,28,29,39,40,34,82,89,95,97,102,105,108,35,38,2,48,47,58,57,27,26,25,24,21,3,60,64,63,66,44,41,55,54,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,71])).
% 0.21/0.67 cnf(139,plain,
% 0.21/0.67 (~P4(x1391,f11(f12(a1,x1392),f12(a1,x1392)))),
% 0.21/0.67 inference(scs_inference,[],[30,33,31,28,29,39,40,34,82,89,95,97,102,105,108,35,38,2,48,47,58,57,27,26,25,24,21,3,60,64,63,66,44,41,55,54,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,71,49,23])).
% 0.21/0.67 cnf(178,plain,
% 0.21/0.67 ($false),
% 0.21/0.67 inference(scs_inference,[],[30,37,33,29,40,38,36,39,91,139,135,79,73,60,2,21,3,70,23,53]),
% 0.21/0.67 ['proof']).
% 0.21/0.67 % SZS output end Proof
% 0.21/0.67 % Total time :0.020000s
%------------------------------------------------------------------------------