%------------------------------------------------------------------------------
% File : E---3.5.1
% Problem : SET701+4 : TPTP v9.3.1. Released v2.2.0.
% Transfm : none
% Format : tptp:raw
% Command : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% Computer : n017.cluster.edu
% Model : x86_64 x86_64
% CPU : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory : 8046.5625MB
% OS : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit : 300s
% DateTime : Thu Sep 24 02:15:01 PM UTC 2026
% Result : Theorem 6.16s 1.37s
% Output : CNFRefutation 6.16s
% Verified :
% SZS Type : Refutation
% Derivation depth : 14
% Number of leaves : 5
% Syntax : Number of formulae : 48 ( 6 unt; 0 def)
% Number of atoms : 130 ( 0 equ)
% Maximal formula atoms : 7 ( 2 avg)
% Number of connectives : 135 ( 53 ~; 57 |; 15 &)
% ( 7 <=>; 3 =>; 0 <=; 0 <~>)
% Maximal formula depth : 10 ( 4 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 3 ( 2 usr; 1 prp; 0-2 aty)
% Number of functors : 8 ( 8 usr; 4 con; 0-2 aty)
% Number of variables : 78 ( 4 sgn 35 !; 0 ?)
% Comments :
%------------------------------------------------------------------------------
fof(thI35,conjecture,
! [X1,X2,X6,X4] :
( ( subset(X2,X4)
& subset(X1,X4) )
=> ( subset(X1,X2)
<=> subset(intersection(X1,difference(X4,X2)),intersection(X6,difference(X4,X6))) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',thI35) ).
fof(subset,axiom,
! [X1,X2] :
( subset(X1,X2)
<=> ! [X3] :
( member(X3,X1)
=> member(X3,X2) ) ),
file('/export/starexec/sandbox/benchmark/Axioms/SET006+0.ax',subset) ).
fof(intersection,axiom,
! [X3,X1,X2] :
( member(X3,intersection(X1,X2))
<=> ( member(X3,X2)
& member(X3,X1) ) ),
file('/export/starexec/sandbox/benchmark/Axioms/SET006+0.ax',intersection) ).
fof(difference,axiom,
! [X2,X1,X4] :
( member(X2,difference(X4,X1))
<=> ( ~ member(X2,X1)
& member(X2,X4) ) ),
file('/export/starexec/sandbox/benchmark/Axioms/SET006+0.ax',difference) ).
fof(power_set,axiom,
! [X3,X1] :
( member(X3,power_set(X1))
<=> subset(X3,X1) ),
file('/export/starexec/sandbox/benchmark/Axioms/SET006+0.ax',power_set) ).
fof(c_0_5,negated_conjecture,
~ ! [X1,X2,X6,X4] :
( ( subset(X2,X4)
& subset(X1,X4) )
=> ( subset(X1,X2)
<=> subset(intersection(X1,difference(X4,X2)),intersection(X6,difference(X4,X6))) ) ),
inference(assume_negation,[status(cth)],[thI35]) ).
fof(c_0_6,negated_conjecture,
( ( subset(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0)))
| subset(esk4_0,esk5_0) )
& ( ~ subset(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0)))
| ~ subset(esk4_0,esk5_0) )
& subset(esk5_0,esk7_0)
& subset(esk4_0,esk7_0) ),
inference(fof_nnf,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_5])])])]) ).
fof(c_0_7,plain,
! [X7,X8,X9,X10,X11] :
( ( subset(X10,X11)
| ~ member(esk1_2(X10,X11),X11) )
& ( subset(X10,X11)
| member(esk1_2(X10,X11),X10) )
& ( member(X9,X8)
| ~ member(X9,X7)
| ~ subset(X7,X8) ) ),
inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(fof_nnf,[status(thm)],[subset])])])])])])]) ).
fof(c_0_8,plain,
! [X17,X18,X19] :
( ( member(X17,intersection(X18,X19))
| ~ member(X17,X19)
| ~ member(X17,X18) )
& ( ~ member(X17,intersection(X18,X19))
| member(X17,X19) )
& ( ~ member(X17,intersection(X18,X19))
| member(X17,X18) ) ),
inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[intersection])])])]) ).
cnf(c_0_9,negated_conjecture,
( ~ subset(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0)))
| ~ subset(esk4_0,esk5_0) ),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
cnf(c_0_10,plain,
( subset(X1,X2)
| member(esk1_2(X1,X2),X1) ),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
fof(c_0_11,plain,
! [X2,X1,X4] :
( member(X2,difference(X4,X1))
<=> ( ~ member(X2,X1)
& member(X2,X4) ) ),
inference(fof_simplification,[status(thm)],[difference]) ).
cnf(c_0_12,plain,
( ~ member(X3,X1)
| ~ subset(X1,X2)
| member(X3,X2) ),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
cnf(c_0_13,negated_conjecture,
( subset(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0)))
| subset(esk4_0,esk5_0) ),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
cnf(c_0_14,plain,
( ~ member(X1,intersection(X2,X3))
| member(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_8]) ).
cnf(c_0_15,negated_conjecture,
( ~ subset(esk4_0,esk5_0)
| member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),intersection(esk4_0,difference(esk7_0,esk5_0))) ),
inference(spm,[status(thm)],[c_0_9,c_0_10]) ).
fof(c_0_16,plain,
! [X24,X25,X26] :
( ( member(X24,difference(X26,X25))
| member(X24,X25)
| ~ member(X24,X26) )
& ( ~ member(X24,difference(X26,X25))
| ~ member(X24,X25) )
& ( ~ member(X24,difference(X26,X25))
| member(X24,X26) ) ),
inference(distribute,[status(thm)],[inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_11])])])]) ).
cnf(c_0_17,plain,
( ~ member(X1,intersection(X3,X2))
| member(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_8]) ).
cnf(c_0_18,negated_conjecture,
( ~ member(X1,intersection(esk4_0,difference(esk7_0,esk5_0)))
| subset(esk4_0,esk5_0)
| member(X1,intersection(esk6_0,difference(esk7_0,esk6_0))) ),
inference(spm,[status(thm)],[c_0_12,c_0_13]) ).
cnf(c_0_19,plain,
( ~ member(X3,X1)
| member(X3,X2)
| member(esk1_2(X1,X2),X1) ),
inference(spm,[status(thm)],[c_0_12,c_0_10]) ).
cnf(c_0_20,negated_conjecture,
( ~ subset(esk4_0,esk5_0)
| member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),esk4_0) ),
inference(spm,[status(thm)],[c_0_14,c_0_15]) ).
cnf(c_0_21,plain,
( ~ member(X1,difference(X3,X2))
| ~ member(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_16]) ).
cnf(c_0_22,negated_conjecture,
( ~ member(X1,intersection(esk4_0,difference(esk7_0,esk5_0)))
| subset(esk4_0,esk5_0)
| member(X1,difference(esk7_0,esk6_0)) ),
inference(spm,[status(thm)],[c_0_17,c_0_18]) ).
cnf(c_0_23,negated_conjecture,
( ~ member(X1,intersection(esk4_0,difference(esk7_0,esk5_0)))
| subset(esk4_0,esk5_0)
| member(X1,esk6_0) ),
inference(spm,[status(thm)],[c_0_14,c_0_18]) ).
cnf(c_0_24,negated_conjecture,
( ~ subset(esk4_0,esk5_0)
| member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),difference(esk7_0,esk5_0)) ),
inference(spm,[status(thm)],[c_0_17,c_0_15]) ).
cnf(c_0_25,negated_conjecture,
( ~ subset(esk4_0,esk5_0)
| member(esk1_2(esk4_0,X1),esk4_0)
| member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),X1) ),
inference(spm,[status(thm)],[c_0_19,c_0_20]) ).
cnf(c_0_26,negated_conjecture,
( ~ member(X1,intersection(esk4_0,difference(esk7_0,esk5_0)))
| subset(esk4_0,esk5_0) ),
inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_21,c_0_22]),c_0_23]) ).
cnf(c_0_27,plain,
( ~ member(X1,X3)
| ~ member(X1,X2)
| member(X1,intersection(X2,X3)) ),
inference(split_conjunct,[status(thm)],[c_0_8]) ).
cnf(c_0_28,negated_conjecture,
( ~ subset(esk4_0,esk5_0)
| ~ member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),esk5_0) ),
inference(spm,[status(thm)],[c_0_21,c_0_24]) ).
cnf(c_0_29,negated_conjecture,
( member(esk1_2(esk4_0,X1),esk4_0)
| member(esk1_2(esk4_0,esk5_0),esk4_0)
| member(esk1_2(intersection(esk4_0,difference(esk7_0,esk5_0)),intersection(esk6_0,difference(esk7_0,esk6_0))),X1) ),
inference(spm,[status(thm)],[c_0_25,c_0_10]) ).
fof(c_0_30,plain,
! [X15,X16] :
( ( member(X15,power_set(X16))
| ~ subset(X15,X16) )
& ( subset(X15,X16)
| ~ member(X15,power_set(X16)) ) ),
inference(fof_nnf,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[power_set])])]) ).
cnf(c_0_31,negated_conjecture,
( ~ member(X1,esk4_0)
| ~ member(X1,difference(esk7_0,esk5_0))
| subset(esk4_0,esk5_0) ),
inference(spm,[status(thm)],[c_0_26,c_0_27]) ).
cnf(c_0_32,negated_conjecture,
member(esk1_2(esk4_0,esk5_0),esk4_0),
inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_28,c_0_29]),c_0_10]) ).
cnf(c_0_33,negated_conjecture,
subset(esk4_0,esk7_0),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
cnf(c_0_34,plain,
( ~ subset(X1,X2)
| member(X1,power_set(X2)) ),
inference(split_conjunct,[status(thm)],[c_0_30]) ).
cnf(c_0_35,negated_conjecture,
( ~ member(esk1_2(esk4_0,esk5_0),difference(esk7_0,esk5_0))
| subset(esk4_0,esk5_0) ),
inference(spm,[status(thm)],[c_0_31,c_0_32]) ).
cnf(c_0_36,negated_conjecture,
( ~ member(X1,esk4_0)
| member(X1,esk7_0) ),
inference(spm,[status(thm)],[c_0_12,c_0_33]) ).
cnf(c_0_37,plain,
( ~ member(esk1_2(X1,X2),X2)
| subset(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
cnf(c_0_38,plain,
( ~ member(X1,power_set(X2))
| subset(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_30]) ).
cnf(c_0_39,negated_conjecture,
( ~ member(esk1_2(esk4_0,esk5_0),difference(esk7_0,esk5_0))
| member(esk4_0,power_set(esk5_0)) ),
inference(spm,[status(thm)],[c_0_34,c_0_35]) ).
cnf(c_0_40,plain,
( ~ member(X1,X2)
| member(X1,difference(X2,X3))
| member(X1,X3) ),
inference(split_conjunct,[status(thm)],[c_0_16]) ).
cnf(c_0_41,negated_conjecture,
member(esk1_2(esk4_0,esk5_0),esk7_0),
inference(spm,[status(thm)],[c_0_36,c_0_32]) ).
cnf(c_0_42,plain,
( ~ member(esk1_2(X1,X2),X2)
| member(X1,power_set(X2)) ),
inference(spm,[status(thm)],[c_0_34,c_0_37]) ).
cnf(c_0_43,plain,
( ~ member(X1,X3)
| ~ member(X3,power_set(X2))
| member(X1,X2) ),
inference(spm,[status(thm)],[c_0_12,c_0_38]) ).
cnf(c_0_44,negated_conjecture,
member(esk4_0,power_set(esk5_0)),
inference(csr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_39,c_0_40]),c_0_41])]),c_0_42]) ).
cnf(c_0_45,negated_conjecture,
( ~ member(X1,esk4_0)
| member(X1,esk5_0) ),
inference(spm,[status(thm)],[c_0_43,c_0_44]) ).
cnf(c_0_46,negated_conjecture,
~ subset(esk4_0,esk5_0),
inference(csr,[status(thm)],[inference(spm,[status(thm)],[c_0_45,c_0_20]),c_0_28]) ).
cnf(c_0_47,negated_conjecture,
$false,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_46,c_0_38]),c_0_44])]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.05 % Problem : SET701+4 : TPTP v9.3.1. Released v2.2.0.
% 0.00/0.08 % Command : run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.22/0.48 % Computer : n017.cluster.edu
% 0.22/0.48 % Model : x86_64 x86_64
% 0.22/0.48 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.22/0.48 % Memory : 8046.5625MB
% 0.22/0.48 % OS : Linux 6.8.0-71-generic
% 0.22/0.49 % CPULimit : 300
% 0.22/0.49 % WCLimit : 300
% 0.22/0.49 % DateTime : Mon Sep 21 05:28:13 UTC 2026
% 0.22/0.49 % CPUTime :
% 0.25/0.49 Running run_E /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.25/0.53 Running first-order theorem proving
% 0.25/0.53 Running: /export/starexec/sandbox/solver/bin/eprover --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --auto-schedule=8 --cpu-limit=300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 6.16/1.37 % Version: 3.5.1
% 6.16/1.37 % Preprocessing class: FSMSSMSSSSSNFFN.
% 6.16/1.37 % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 6.16/1.37 % Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 6.16/1.37 % Starting new_bool_3 with 300s (1) cores
% 6.16/1.37 % Starting new_bool_1 with 300s (1) cores
% 6.16/1.37 % Starting sh5l with 300s (1) cores
% 6.16/1.37 % G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with pid 1526649 completed with status 0
% 6.16/1.37 % Result found by G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN
% 6.16/1.37 % Preprocessing class: FSMSSMSSSSSNFFN.
% 6.16/1.37 % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 6.16/1.37 % Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 6.16/1.37 % (lift_lambdas = 1, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 6.16/1.37 % No SInE strategy applied
% 6.16/1.37 % Search class: FGHSF-FFMS21-SFFFFFNN
% 6.16/1.37 % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 6.16/1.37 % Starting SubtermCWHack with 136s (1) cores
% 6.16/1.37 % Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 151s (1) cores
% 6.16/1.37 % Starting 208_C09_12_F1_SE_CS_SP_PS_S070I with 136s (1) cores
% 6.16/1.37 % Starting G-E--_107_B42_F1_PI_SE_Q4_CS_SP_PS_S0Y with 136s (1) cores
% 6.16/1.37 % Starting new_bool_3 with 136s (1) cores
% 6.16/1.37 % G-E--_107_B42_F1_PI_SE_Q4_CS_SP_PS_S0Y with pid 1526661 completed with status 0
% 6.16/1.37 % Result found by G-E--_107_B42_F1_PI_SE_Q4_CS_SP_PS_S0Y
% 6.16/1.37 % Preprocessing class: FSMSSMSSSSSNFFN.
% 6.16/1.37 % Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 6.16/1.37 % Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 6.16/1.37 % (lift_lambdas = 1, lambda_to_forall = 1,unroll_only_formulas = 1, sine = Auto)
% 6.16/1.37 % No SInE strategy applied
% 6.16/1.37 % Search class: FGHSF-FFMS21-SFFFFFNN
% 6.16/1.37 % Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 6.16/1.37 % Starting SubtermCWHack with 136s (1) cores
% 6.16/1.37 % Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 151s (1) cores
% 6.16/1.37 % Starting 208_C09_12_F1_SE_CS_SP_PS_S070I with 136s (1) cores
% 6.16/1.37 % Starting G-E--_107_B42_F1_PI_SE_Q4_CS_SP_PS_S0Y with 136s (1) cores
% 6.16/1.37 % Preprocessing time : 0.002 s
% 6.16/1.37 % Presaturation interreduction done
% 6.16/1.37
% 6.16/1.37 % Proof found!
% 6.16/1.37 % SZS status Theorem
% 6.16/1.37 % SZS output start CNFRefutation
% See solution above
% 6.16/1.37 % Parsed axioms : 12
% 6.16/1.37 % Removed by relevancy pruning/SinE : 0
% 6.16/1.37 % Initial clauses : 33
% 6.16/1.37 % Removed in clause preprocessing : 0
% 6.16/1.37 % Initial clauses in saturation : 33
% 6.16/1.37 % Processed clauses : 4137
% 6.16/1.37 % ...of these trivial : 588
% 6.16/1.37 % ...subsumed : 1701
% 6.16/1.37 % ...remaining for further processing : 1848
% 6.16/1.37 % Other redundant clauses eliminated : 9
% 6.16/1.37 % Clauses deleted for lack of memory : 0
% 6.16/1.37 % Backward-subsumed : 231
% 6.16/1.37 % Backward-rewritten : 77
% 6.16/1.37 % Generated clauses : 47557
% 6.16/1.37 % ...of the previous two non-redundant : 43344
% 6.16/1.37 % ...aggressively subsumed : 0
% 6.16/1.37 % Contextual simplify-reflections : 12
% 6.16/1.37 % Paramodulations : 47436
% 6.16/1.37 % Factorizations : 16
% 6.16/1.37 % NegExts : 0
% 6.16/1.37 % Equation resolutions : 9
% 6.16/1.37 % Disequality decompositions : 0
% 6.16/1.37 % Total rewrite steps : 4980
% 6.16/1.37 % ...of those cached : 2941
% 6.16/1.37 % Propositional unsat checks : 0
% 6.16/1.37 % Propositional check models : 0
% 6.16/1.37 % Propositional check unsatisfiable : 0
% 6.16/1.37 % Propositional clauses : 0
% 6.16/1.37 % Propositional clauses after purity: 0
% 6.16/1.37 % Propositional unsat core size : 0
% 6.16/1.37 % Propositional preprocessing time : 0.000
% 6.16/1.37 % Propositional encoding time : 0.000
% 6.16/1.37 % Propositional solver time : 0.000
% 6.16/1.37 % Success case prop preproc time : 0.000
% 6.16/1.37 % Success case prop encoding time : 0.000
% 6.16/1.37 % Success case prop solver time : 0.000
% 6.16/1.37 % Current number of processed clauses : 1408
% 6.16/1.37 % Positive orientable unit clauses : 910
% 6.16/1.37 % Positive unorientable unit clauses: 0
% 6.16/1.37 % Negative unit clauses : 116
% 6.16/1.37 % Non-unit-clauses : 382
% 6.16/1.37 % Current number of unprocessed clauses: 38741
% 6.16/1.37 % ...number of literals in the above : 78579
% 6.16/1.37 % Current number of archived formulas : 0
% 6.16/1.37 % Current number of archived clauses : 437
% 6.16/1.37 % Clause-clause subsumption calls (NU) : 87298
% 6.16/1.37 % Rec. Clause-clause subsumption calls : 70163
% 6.16/1.37 % Non-unit clause-clause subsumptions : 468
% 6.16/1.37 % Unit Clause-clause subsumption calls : 51156
% 6.16/1.37 % Rewrite failures with RHS unbound : 0
% 6.16/1.37 % BW rewrite match attempts : 6415
% 6.16/1.37 % BW rewrite match successes : 39
% 6.16/1.37 % Condensation attempts : 0
% 6.16/1.37 % Condensation successes : 0
% 6.16/1.37 % Termbank termtop insertions : 638764
% 6.16/1.37 % Search garbage collected termcells : 507
% 6.16/1.37
% 6.16/1.37 % -------------------------------------------------
% 6.16/1.37 % User time : 0.733 s
% 6.16/1.37 % System time : 0.047 s
% 6.16/1.37 % Total time : 0.780 s
% 6.16/1.37 % Maximum resident set size: 3648 pages
% 6.16/1.37
% 6.16/1.37 % -------------------------------------------------
% 6.16/1.37 % User time : 3.682 s
% 6.16/1.37 % System time : 0.249 s
% 6.16/1.37 % Total time : 3.931 s
% 6.16/1.37 % Maximum resident set size: 4864 pages
% 6.16/1.37 % E exiting
%------------------------------------------------------------------------------