%------------------------------------------------------------------------------
% File : SRASS---0.1
% Problem : SEU236+1 : TPTP v5.0.0. Released v3.3.0.
% Transfm : none
% Format : tptp
% Command : SRASS -q2 -a 0 10 10 10 -i3 -n60 %s
% Computer : art05.cs.miami.edu
% Model : i686 i686
% CPU : Intel(R) Pentium(R) 4 CPU 2.80GHz @ 2793MHz
% Memory : 2018MB
% OS : Linux 2.6.26.8-57.fc8
% CPULimit : 300s
% DateTime : Thu Dec 30 02:19:57 EST 2010
% Result : Theorem 1.65s
% Output : Solution 1.65s
% Verified :
% SZS Type : None (Parsing solution fails)
% Syntax : Number of formulae : 0
% Comments :
%------------------------------------------------------------------------------
%----ERROR: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% Reading problem from /tmp/SystemOnTPTP29126/SEU236+1.tptp
% Adding relevance values
% Extracting the conjecture
% Sorting axioms by relevance
% Looking for THM ...
% found
% SZS status THM for /tmp/SystemOnTPTP29126/SEU236+1.tptp
% SZS output start Solution for /tmp/SystemOnTPTP29126/SEU236+1.tptp
% TreeLimitedRun: ----------------------------------------------------------
% TreeLimitedRun: /home/graph/tptp/Systems/EP---1.2/eproof --print-statistics -xAuto -tAuto --cpu-limit=60 --proof-time-unlimited --memory-limit=Auto --tstp-in --tstp-out /tmp/SRASS.s.p
% TreeLimitedRun: CPU time limit is 60s
% TreeLimitedRun: WC time limit is 120s
% TreeLimitedRun: PID is 29222
% TreeLimitedRun: ----------------------------------------------------------
% PrfWatch: 0.00 CPU 0.01 WC
% # Preprocessing time : 0.016 s
% # Problem is unsatisfiable (or provable), constructing proof object
% # SZS status Theorem
% # SZS output start CNFRefutation.
% fof(4, axiom,![X1]:in(X1,succ(X1)),file('/tmp/SRASS.s.p', t10_ordinal1)).
% fof(5, axiom,![X1]:![X2]:((ordinal(X1)&ordinal(X2))=>(ordinal_subset(X1,X2)<=>subset(X1,X2))),file('/tmp/SRASS.s.p', redefinition_r1_ordinal1)).
% fof(14, axiom,![X1]:![X2]:(subset(X1,X2)<=>![X3]:(in(X3,X1)=>in(X3,X2))),file('/tmp/SRASS.s.p', d3_tarski)).
% fof(16, axiom,![X1]:(ordinal(X1)=>(((~(empty(succ(X1)))&epsilon_transitive(succ(X1)))&epsilon_connected(succ(X1)))&ordinal(succ(X1)))),file('/tmp/SRASS.s.p', fc3_ordinal1)).
% fof(21, axiom,![X1]:(ordinal(X1)=>(epsilon_transitive(X1)&epsilon_connected(X1))),file('/tmp/SRASS.s.p', cc1_ordinal1)).
% fof(23, axiom,![X1]:(epsilon_transitive(X1)<=>![X2]:(in(X2,X1)=>subset(X2,X1))),file('/tmp/SRASS.s.p', d2_ordinal1)).
% fof(26, axiom,![X1]:![X2]:(X2=singleton(X1)<=>![X3]:(in(X3,X2)<=>X3=X1)),file('/tmp/SRASS.s.p', d1_tarski)).
% fof(30, axiom,![X1]:succ(X1)=set_union2(X1,singleton(X1)),file('/tmp/SRASS.s.p', d1_ordinal1)).
% fof(31, axiom,![X1]:![X2]:![X3]:((subset(X1,X2)&subset(X3,X2))=>subset(set_union2(X1,X3),X2)),file('/tmp/SRASS.s.p', t8_xboole_1)).
% fof(47, axiom,![X1]:![X2]:set_union2(X1,X2)=set_union2(X2,X1),file('/tmp/SRASS.s.p', commutativity_k2_xboole_0)).
% fof(57, conjecture,![X1]:(ordinal(X1)=>![X2]:(ordinal(X2)=>(in(X1,X2)<=>ordinal_subset(succ(X1),X2)))),file('/tmp/SRASS.s.p', t33_ordinal1)).
% fof(58, negated_conjecture,~(![X1]:(ordinal(X1)=>![X2]:(ordinal(X2)=>(in(X1,X2)<=>ordinal_subset(succ(X1),X2))))),inference(assume_negation,[status(cth)],[57])).
% fof(63, plain,![X1]:(ordinal(X1)=>(((~(empty(succ(X1)))&epsilon_transitive(succ(X1)))&epsilon_connected(succ(X1)))&ordinal(succ(X1)))),inference(fof_simplification,[status(thm)],[16,theory(equality)])).
% fof(76, plain,![X2]:in(X2,succ(X2)),inference(variable_rename,[status(thm)],[4])).
% cnf(77,plain,(in(X1,succ(X1))),inference(split_conjunct,[status(thm)],[76])).
% fof(78, plain,![X1]:![X2]:((~(ordinal(X1))|~(ordinal(X2)))|((~(ordinal_subset(X1,X2))|subset(X1,X2))&(~(subset(X1,X2))|ordinal_subset(X1,X2)))),inference(fof_nnf,[status(thm)],[5])).
% fof(79, plain,![X3]:![X4]:((~(ordinal(X3))|~(ordinal(X4)))|((~(ordinal_subset(X3,X4))|subset(X3,X4))&(~(subset(X3,X4))|ordinal_subset(X3,X4)))),inference(variable_rename,[status(thm)],[78])).
% fof(80, plain,![X3]:![X4]:(((~(ordinal_subset(X3,X4))|subset(X3,X4))|(~(ordinal(X3))|~(ordinal(X4))))&((~(subset(X3,X4))|ordinal_subset(X3,X4))|(~(ordinal(X3))|~(ordinal(X4))))),inference(distribute,[status(thm)],[79])).
% cnf(81,plain,(ordinal_subset(X2,X1)|~ordinal(X1)|~ordinal(X2)|~subset(X2,X1)),inference(split_conjunct,[status(thm)],[80])).
% cnf(82,plain,(subset(X2,X1)|~ordinal(X1)|~ordinal(X2)|~ordinal_subset(X2,X1)),inference(split_conjunct,[status(thm)],[80])).
% fof(111, plain,![X1]:![X2]:((~(subset(X1,X2))|![X3]:(~(in(X3,X1))|in(X3,X2)))&(?[X3]:(in(X3,X1)&~(in(X3,X2)))|subset(X1,X2))),inference(fof_nnf,[status(thm)],[14])).
% fof(112, plain,![X4]:![X5]:((~(subset(X4,X5))|![X6]:(~(in(X6,X4))|in(X6,X5)))&(?[X7]:(in(X7,X4)&~(in(X7,X5)))|subset(X4,X5))),inference(variable_rename,[status(thm)],[111])).
% fof(113, plain,![X4]:![X5]:((~(subset(X4,X5))|![X6]:(~(in(X6,X4))|in(X6,X5)))&((in(esk5_2(X4,X5),X4)&~(in(esk5_2(X4,X5),X5)))|subset(X4,X5))),inference(skolemize,[status(esa)],[112])).
% fof(114, plain,![X4]:![X5]:![X6]:(((~(in(X6,X4))|in(X6,X5))|~(subset(X4,X5)))&((in(esk5_2(X4,X5),X4)&~(in(esk5_2(X4,X5),X5)))|subset(X4,X5))),inference(shift_quantors,[status(thm)],[113])).
% fof(115, plain,![X4]:![X5]:![X6]:(((~(in(X6,X4))|in(X6,X5))|~(subset(X4,X5)))&((in(esk5_2(X4,X5),X4)|subset(X4,X5))&(~(in(esk5_2(X4,X5),X5))|subset(X4,X5)))),inference(distribute,[status(thm)],[114])).
% cnf(116,plain,(subset(X1,X2)|~in(esk5_2(X1,X2),X2)),inference(split_conjunct,[status(thm)],[115])).
% cnf(117,plain,(subset(X1,X2)|in(esk5_2(X1,X2),X1)),inference(split_conjunct,[status(thm)],[115])).
% cnf(118,plain,(in(X3,X2)|~subset(X1,X2)|~in(X3,X1)),inference(split_conjunct,[status(thm)],[115])).
% fof(122, plain,![X1]:(~(ordinal(X1))|(((~(empty(succ(X1)))&epsilon_transitive(succ(X1)))&epsilon_connected(succ(X1)))&ordinal(succ(X1)))),inference(fof_nnf,[status(thm)],[63])).
% fof(123, plain,![X2]:(~(ordinal(X2))|(((~(empty(succ(X2)))&epsilon_transitive(succ(X2)))&epsilon_connected(succ(X2)))&ordinal(succ(X2)))),inference(variable_rename,[status(thm)],[122])).
% fof(124, plain,![X2]:((((~(empty(succ(X2)))|~(ordinal(X2)))&(epsilon_transitive(succ(X2))|~(ordinal(X2))))&(epsilon_connected(succ(X2))|~(ordinal(X2))))&(ordinal(succ(X2))|~(ordinal(X2)))),inference(distribute,[status(thm)],[123])).
% cnf(125,plain,(ordinal(succ(X1))|~ordinal(X1)),inference(split_conjunct,[status(thm)],[124])).
% fof(149, plain,![X1]:(~(ordinal(X1))|(epsilon_transitive(X1)&epsilon_connected(X1))),inference(fof_nnf,[status(thm)],[21])).
% fof(150, plain,![X2]:(~(ordinal(X2))|(epsilon_transitive(X2)&epsilon_connected(X2))),inference(variable_rename,[status(thm)],[149])).
% fof(151, plain,![X2]:((epsilon_transitive(X2)|~(ordinal(X2)))&(epsilon_connected(X2)|~(ordinal(X2)))),inference(distribute,[status(thm)],[150])).
% cnf(153,plain,(epsilon_transitive(X1)|~ordinal(X1)),inference(split_conjunct,[status(thm)],[151])).
% fof(157, plain,![X1]:((~(epsilon_transitive(X1))|![X2]:(~(in(X2,X1))|subset(X2,X1)))&(?[X2]:(in(X2,X1)&~(subset(X2,X1)))|epsilon_transitive(X1))),inference(fof_nnf,[status(thm)],[23])).
% fof(158, plain,![X3]:((~(epsilon_transitive(X3))|![X4]:(~(in(X4,X3))|subset(X4,X3)))&(?[X5]:(in(X5,X3)&~(subset(X5,X3)))|epsilon_transitive(X3))),inference(variable_rename,[status(thm)],[157])).
% fof(159, plain,![X3]:((~(epsilon_transitive(X3))|![X4]:(~(in(X4,X3))|subset(X4,X3)))&((in(esk9_1(X3),X3)&~(subset(esk9_1(X3),X3)))|epsilon_transitive(X3))),inference(skolemize,[status(esa)],[158])).
% fof(160, plain,![X3]:![X4]:(((~(in(X4,X3))|subset(X4,X3))|~(epsilon_transitive(X3)))&((in(esk9_1(X3),X3)&~(subset(esk9_1(X3),X3)))|epsilon_transitive(X3))),inference(shift_quantors,[status(thm)],[159])).
% fof(161, plain,![X3]:![X4]:(((~(in(X4,X3))|subset(X4,X3))|~(epsilon_transitive(X3)))&((in(esk9_1(X3),X3)|epsilon_transitive(X3))&(~(subset(esk9_1(X3),X3))|epsilon_transitive(X3)))),inference(distribute,[status(thm)],[160])).
% cnf(164,plain,(subset(X2,X1)|~epsilon_transitive(X1)|~in(X2,X1)),inference(split_conjunct,[status(thm)],[161])).
% fof(173, plain,![X1]:![X2]:((~(X2=singleton(X1))|![X3]:((~(in(X3,X2))|X3=X1)&(~(X3=X1)|in(X3,X2))))&(?[X3]:((~(in(X3,X2))|~(X3=X1))&(in(X3,X2)|X3=X1))|X2=singleton(X1))),inference(fof_nnf,[status(thm)],[26])).
% fof(174, plain,![X4]:![X5]:((~(X5=singleton(X4))|![X6]:((~(in(X6,X5))|X6=X4)&(~(X6=X4)|in(X6,X5))))&(?[X7]:((~(in(X7,X5))|~(X7=X4))&(in(X7,X5)|X7=X4))|X5=singleton(X4))),inference(variable_rename,[status(thm)],[173])).
% fof(175, plain,![X4]:![X5]:((~(X5=singleton(X4))|![X6]:((~(in(X6,X5))|X6=X4)&(~(X6=X4)|in(X6,X5))))&(((~(in(esk11_2(X4,X5),X5))|~(esk11_2(X4,X5)=X4))&(in(esk11_2(X4,X5),X5)|esk11_2(X4,X5)=X4))|X5=singleton(X4))),inference(skolemize,[status(esa)],[174])).
% fof(176, plain,![X4]:![X5]:![X6]:((((~(in(X6,X5))|X6=X4)&(~(X6=X4)|in(X6,X5)))|~(X5=singleton(X4)))&(((~(in(esk11_2(X4,X5),X5))|~(esk11_2(X4,X5)=X4))&(in(esk11_2(X4,X5),X5)|esk11_2(X4,X5)=X4))|X5=singleton(X4))),inference(shift_quantors,[status(thm)],[175])).
% fof(177, plain,![X4]:![X5]:![X6]:((((~(in(X6,X5))|X6=X4)|~(X5=singleton(X4)))&((~(X6=X4)|in(X6,X5))|~(X5=singleton(X4))))&(((~(in(esk11_2(X4,X5),X5))|~(esk11_2(X4,X5)=X4))|X5=singleton(X4))&((in(esk11_2(X4,X5),X5)|esk11_2(X4,X5)=X4)|X5=singleton(X4)))),inference(distribute,[status(thm)],[176])).
% cnf(181,plain,(X3=X2|X1!=singleton(X2)|~in(X3,X1)),inference(split_conjunct,[status(thm)],[177])).
% fof(197, plain,![X2]:succ(X2)=set_union2(X2,singleton(X2)),inference(variable_rename,[status(thm)],[30])).
% cnf(198,plain,(succ(X1)=set_union2(X1,singleton(X1))),inference(split_conjunct,[status(thm)],[197])).
% fof(199, plain,![X1]:![X2]:![X3]:((~(subset(X1,X2))|~(subset(X3,X2)))|subset(set_union2(X1,X3),X2)),inference(fof_nnf,[status(thm)],[31])).
% fof(200, plain,![X4]:![X5]:![X6]:((~(subset(X4,X5))|~(subset(X6,X5)))|subset(set_union2(X4,X6),X5)),inference(variable_rename,[status(thm)],[199])).
% cnf(201,plain,(subset(set_union2(X1,X2),X3)|~subset(X2,X3)|~subset(X1,X3)),inference(split_conjunct,[status(thm)],[200])).
% fof(253, plain,![X3]:![X4]:set_union2(X3,X4)=set_union2(X4,X3),inference(variable_rename,[status(thm)],[47])).
% cnf(254,plain,(set_union2(X1,X2)=set_union2(X2,X1)),inference(split_conjunct,[status(thm)],[253])).
% fof(270, negated_conjecture,?[X1]:(ordinal(X1)&?[X2]:(ordinal(X2)&((~(in(X1,X2))|~(ordinal_subset(succ(X1),X2)))&(in(X1,X2)|ordinal_subset(succ(X1),X2))))),inference(fof_nnf,[status(thm)],[58])).
% fof(271, negated_conjecture,?[X3]:(ordinal(X3)&?[X4]:(ordinal(X4)&((~(in(X3,X4))|~(ordinal_subset(succ(X3),X4)))&(in(X3,X4)|ordinal_subset(succ(X3),X4))))),inference(variable_rename,[status(thm)],[270])).
% fof(272, negated_conjecture,(ordinal(esk17_0)&(ordinal(esk18_0)&((~(in(esk17_0,esk18_0))|~(ordinal_subset(succ(esk17_0),esk18_0)))&(in(esk17_0,esk18_0)|ordinal_subset(succ(esk17_0),esk18_0))))),inference(skolemize,[status(esa)],[271])).
% cnf(273,negated_conjecture,(ordinal_subset(succ(esk17_0),esk18_0)|in(esk17_0,esk18_0)),inference(split_conjunct,[status(thm)],[272])).
% cnf(274,negated_conjecture,(~ordinal_subset(succ(esk17_0),esk18_0)|~in(esk17_0,esk18_0)),inference(split_conjunct,[status(thm)],[272])).
% cnf(275,negated_conjecture,(ordinal(esk18_0)),inference(split_conjunct,[status(thm)],[272])).
% cnf(276,negated_conjecture,(ordinal(esk17_0)),inference(split_conjunct,[status(thm)],[272])).
% cnf(277,plain,(in(X1,set_union2(X1,singleton(X1)))),inference(rw,[status(thm)],[77,198,theory(equality)]),['unfolding']).
% cnf(278,negated_conjecture,(in(esk17_0,esk18_0)|ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)),inference(rw,[status(thm)],[273,198,theory(equality)]),['unfolding']).
% cnf(279,plain,(ordinal(set_union2(X1,singleton(X1)))|~ordinal(X1)),inference(rw,[status(thm)],[125,198,theory(equality)]),['unfolding']).
% cnf(284,negated_conjecture,(~in(esk17_0,esk18_0)|~ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)),inference(rw,[status(thm)],[274,198,theory(equality)]),['unfolding']).
% cnf(302,negated_conjecture,(epsilon_transitive(esk18_0)),inference(pm,[status(thm)],[153,275,theory(equality)])).
% cnf(443,negated_conjecture,(ordinal(set_union2(esk17_0,singleton(esk17_0)))),inference(pm,[status(thm)],[279,276,theory(equality)])).
% cnf(469,plain,(X1=esk5_2(X2,X3)|subset(X2,X3)|singleton(X1)!=X2),inference(pm,[status(thm)],[181,117,theory(equality)])).
% cnf(479,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|in(esk17_0,esk18_0)|~ordinal(set_union2(esk17_0,singleton(esk17_0)))|~ordinal(esk18_0)),inference(pm,[status(thm)],[82,278,theory(equality)])).
% cnf(480,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|in(esk17_0,esk18_0)|~ordinal(set_union2(esk17_0,singleton(esk17_0)))|$false),inference(rw,[status(thm)],[479,275,theory(equality)])).
% cnf(481,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|in(esk17_0,esk18_0)|~ordinal(set_union2(esk17_0,singleton(esk17_0)))),inference(cn,[status(thm)],[480,theory(equality)])).
% cnf(1135,plain,(X1=esk5_2(singleton(X1),X2)|subset(singleton(X1),X2)),inference(er,[status(thm)],[469,theory(equality)])).
% cnf(1350,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|in(esk17_0,esk18_0)|$false),inference(rw,[status(thm)],[481,443,theory(equality)])).
% cnf(1351,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|in(esk17_0,esk18_0)),inference(cn,[status(thm)],[1350,theory(equality)])).
% cnf(1356,negated_conjecture,(in(X1,esk18_0)|in(esk17_0,esk18_0)|~in(X1,set_union2(esk17_0,singleton(esk17_0)))),inference(pm,[status(thm)],[118,1351,theory(equality)])).
% cnf(13130,plain,(subset(singleton(X1),X2)|~in(X1,X2)),inference(pm,[status(thm)],[116,1135,theory(equality)])).
% cnf(18528,negated_conjecture,(in(esk17_0,esk18_0)),inference(pm,[status(thm)],[1356,277,theory(equality)])).
% cnf(18652,negated_conjecture,(subset(esk17_0,esk18_0)|~epsilon_transitive(esk18_0)),inference(pm,[status(thm)],[164,18528,theory(equality)])).
% cnf(18654,negated_conjecture,(subset(singleton(esk17_0),esk18_0)),inference(pm,[status(thm)],[13130,18528,theory(equality)])).
% cnf(18670,negated_conjecture,(~ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|$false),inference(rw,[status(thm)],[284,18528,theory(equality)])).
% cnf(18671,negated_conjecture,(~ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)),inference(cn,[status(thm)],[18670,theory(equality)])).
% cnf(18673,negated_conjecture,(subset(esk17_0,esk18_0)|$false),inference(rw,[status(thm)],[18652,302,theory(equality)])).
% cnf(18674,negated_conjecture,(subset(esk17_0,esk18_0)),inference(cn,[status(thm)],[18673,theory(equality)])).
% cnf(18682,negated_conjecture,(subset(set_union2(X1,esk17_0),esk18_0)|~subset(X1,esk18_0)),inference(pm,[status(thm)],[201,18674,theory(equality)])).
% cnf(19068,negated_conjecture,(subset(set_union2(singleton(esk17_0),esk17_0),esk18_0)),inference(pm,[status(thm)],[18682,18654,theory(equality)])).
% cnf(19369,negated_conjecture,(subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)),inference(rw,[status(thm)],[19068,254,theory(equality)])).
% cnf(19371,negated_conjecture,(ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|~ordinal(set_union2(esk17_0,singleton(esk17_0)))|~ordinal(esk18_0)),inference(pm,[status(thm)],[81,19369,theory(equality)])).
% cnf(19382,negated_conjecture,(ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|$false|~ordinal(esk18_0)),inference(rw,[status(thm)],[19371,443,theory(equality)])).
% cnf(19383,negated_conjecture,(ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)|$false|$false),inference(rw,[status(thm)],[19382,275,theory(equality)])).
% cnf(19384,negated_conjecture,(ordinal_subset(set_union2(esk17_0,singleton(esk17_0)),esk18_0)),inference(cn,[status(thm)],[19383,theory(equality)])).
% cnf(19385,negated_conjecture,($false),inference(sr,[status(thm)],[19384,18671,theory(equality)])).
% cnf(19386,negated_conjecture,($false),19385,['proof']).
% # SZS output end CNFRefutation
% # Processed clauses : 1508
% # ...of these trivial : 71
% # ...subsumed : 331
% # ...remaining for further processing: 1106
% # Other redundant clauses eliminated : 1
% # Clauses deleted for lack of memory : 0
% # Backward-subsumed : 23
% # Backward-rewritten : 63
% # Generated clauses : 17269
% # ...of the previous two non-trivial : 16596
% # Contextual simplify-reflections : 0
% # Paramodulations : 17250
% # Factorizations : 0
% # Equation resolutions : 9
% # Current number of processed clauses: 1012
% # Positive orientable unit clauses: 333
% # Positive unorientable unit clauses: 1
% # Negative unit clauses : 17
% # Non-unit-clauses : 661
% # Current number of unprocessed clauses: 14604
% # ...number of literals in the above : 20758
% # Clause-clause subsumption calls (NU) : 3637
% # Rec. Clause-clause subsumption calls : 2945
% # Unit Clause-clause subsumption calls : 483
% # Rewrite failures with RHS unbound : 0
% # Indexed BW rewrite attempts : 2178
% # Indexed BW rewrite successes : 26
% # Backwards rewriting index: 934 leaves, 1.50+/-2.992 terms/leaf
% # Paramod-from index: 385 leaves, 1.43+/-3.250 terms/leaf
% # Paramod-into index: 726 leaves, 1.41+/-2.440 terms/leaf
% # -------------------------------------------------
% # User time : 0.427 s
% # System time : 0.018 s
% # Total time : 0.445 s
% # Maximum resident set size: 0 pages
% PrfWatch: 0.77 CPU 0.86 WC
% FINAL PrfWatch: 0.77 CPU 0.86 WC
% SZS output end Solution for /tmp/SystemOnTPTP29126/SEU236+1.tptp
%
%------------------------------------------------------------------------------