TSTP Solution File: SET754+4 by E---3.1
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : E---3.1
% Problem : SET754+4 : TPTP v8.1.2. Bugfixed v2.2.1.
% Transfm : none
% Format : tptp:raw
% Command : run_E %s %d THM
% Computer : n010.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 : 2400s
% WCLimit : 300s
% DateTime : Tue Oct 10 19:20:27 EDT 2023
% Result : Theorem 0.17s 0.48s
% Output : CNFRefutation 0.17s
% Verified :
% SZS Type : Refutation
% Derivation depth : 15
% Number of leaves : 5
% Syntax : Number of formulae : 39 ( 5 unt; 0 def)
% Number of atoms : 163 ( 4 equ)
% Maximal formula atoms : 55 ( 4 avg)
% Number of connectives : 181 ( 57 ~; 83 |; 31 &)
% ( 4 <=>; 6 =>; 0 <=; 0 <~>)
% Maximal formula depth : 30 ( 5 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 6 ( 4 usr; 1 prp; 0-3 aty)
% Number of functors : 14 ( 14 usr; 4 con; 0-4 aty)
% Number of variables : 101 ( 0 sgn; 54 !; 3 ?)
% Comments :
%------------------------------------------------------------------------------
fof(thIIa04,conjecture,
! [X6,X1,X2,X11] :
( ( maps(X6,X1,X2)
& subset(X11,X1) )
=> subset(X11,inverse_image2(X6,image2(X6,X11))) ),
file('/export/starexec/sandbox/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p',thIIa04) ).
fof(maps,axiom,
! [X6,X1,X2] :
( maps(X6,X1,X2)
<=> ( ! [X3] :
( member(X3,X1)
=> ? [X5] :
( member(X5,X2)
& apply(X6,X3,X5) ) )
& ! [X3,X7,X8] :
( ( member(X3,X1)
& member(X7,X2)
& member(X8,X2) )
=> ( ( apply(X6,X3,X7)
& apply(X6,X3,X8) )
=> X7 = X8 ) ) ) ),
file('/export/starexec/sandbox/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p',maps) ).
fof(subset,axiom,
! [X1,X2] :
( subset(X1,X2)
<=> ! [X3] :
( member(X3,X1)
=> member(X3,X2) ) ),
file('/export/starexec/sandbox/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p',subset) ).
fof(inverse_image2,axiom,
! [X6,X2,X3] :
( member(X3,inverse_image2(X6,X2))
<=> ? [X5] :
( member(X5,X2)
& apply(X6,X3,X5) ) ),
file('/export/starexec/sandbox/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p',inverse_image2) ).
fof(image2,axiom,
! [X6,X1,X5] :
( member(X5,image2(X6,X1))
<=> ? [X3] :
( member(X3,X1)
& apply(X6,X3,X5) ) ),
file('/export/starexec/sandbox/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p',image2) ).
fof(c_0_5,negated_conjecture,
~ ! [X6,X1,X2,X11] :
( ( maps(X6,X1,X2)
& subset(X11,X1) )
=> subset(X11,inverse_image2(X6,image2(X6,X11))) ),
inference(assume_negation,[status(cth)],[thIIa04]) ).
fof(c_0_6,plain,
! [X47,X48,X49,X50,X52,X53,X54,X55,X56,X57,X59] :
( ( member(esk8_4(X47,X48,X49,X50),X49)
| ~ member(X50,X48)
| ~ maps(X47,X48,X49) )
& ( apply(X47,X50,esk8_4(X47,X48,X49,X50))
| ~ member(X50,X48)
| ~ maps(X47,X48,X49) )
& ( ~ member(X52,X48)
| ~ member(X53,X49)
| ~ member(X54,X49)
| ~ apply(X47,X52,X53)
| ~ apply(X47,X52,X54)
| X53 = X54
| ~ maps(X47,X48,X49) )
& ( member(esk10_3(X55,X56,X57),X56)
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( member(esk11_3(X55,X56,X57),X57)
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( member(esk12_3(X55,X56,X57),X57)
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( apply(X55,esk10_3(X55,X56,X57),esk11_3(X55,X56,X57))
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( apply(X55,esk10_3(X55,X56,X57),esk12_3(X55,X56,X57))
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( esk11_3(X55,X56,X57) != esk12_3(X55,X56,X57)
| member(esk9_3(X55,X56,X57),X56)
| maps(X55,X56,X57) )
& ( member(esk10_3(X55,X56,X57),X56)
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) )
& ( member(esk11_3(X55,X56,X57),X57)
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) )
& ( member(esk12_3(X55,X56,X57),X57)
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) )
& ( apply(X55,esk10_3(X55,X56,X57),esk11_3(X55,X56,X57))
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) )
& ( apply(X55,esk10_3(X55,X56,X57),esk12_3(X55,X56,X57))
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) )
& ( esk11_3(X55,X56,X57) != esk12_3(X55,X56,X57)
| ~ member(X59,X57)
| ~ apply(X55,esk9_3(X55,X56,X57),X59)
| maps(X55,X56,X57) ) ),
inference(distribute,[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)],[maps])])])])])]) ).
fof(c_0_7,negated_conjecture,
( maps(esk1_0,esk2_0,esk3_0)
& subset(esk4_0,esk2_0)
& ~ subset(esk4_0,inverse_image2(esk1_0,image2(esk1_0,esk4_0))) ),
inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_5])])]) ).
cnf(c_0_8,plain,
( apply(X1,X2,esk8_4(X1,X3,X4,X2))
| ~ member(X2,X3)
| ~ maps(X1,X3,X4) ),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
cnf(c_0_9,negated_conjecture,
maps(esk1_0,esk2_0,esk3_0),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
fof(c_0_10,plain,
! [X21,X22,X23,X24,X25] :
( ( ~ subset(X21,X22)
| ~ member(X23,X21)
| member(X23,X22) )
& ( member(esk5_2(X24,X25),X24)
| subset(X24,X25) )
& ( ~ member(esk5_2(X24,X25),X25)
| subset(X24,X25) ) ),
inference(distribute,[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_11,plain,
! [X31,X32,X33,X35,X36,X37,X38] :
( ( member(esk6_3(X31,X32,X33),X32)
| ~ member(X33,inverse_image2(X31,X32)) )
& ( apply(X31,X33,esk6_3(X31,X32,X33))
| ~ member(X33,inverse_image2(X31,X32)) )
& ( ~ member(X38,X36)
| ~ apply(X35,X37,X38)
| member(X37,inverse_image2(X35,X36)) ) ),
inference(distribute,[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)],[inverse_image2])])])])])]) ).
cnf(c_0_12,negated_conjecture,
( apply(esk1_0,X1,esk8_4(esk1_0,esk2_0,esk3_0,X1))
| ~ member(X1,esk2_0) ),
inference(spm,[status(thm)],[c_0_8,c_0_9]) ).
cnf(c_0_13,plain,
( member(esk5_2(X1,X2),X1)
| subset(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_10]) ).
cnf(c_0_14,plain,
( member(esk8_4(X1,X2,X3,X4),X3)
| ~ member(X4,X2)
| ~ maps(X1,X2,X3) ),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
cnf(c_0_15,plain,
( member(X4,inverse_image2(X3,X2))
| ~ member(X1,X2)
| ~ apply(X3,X4,X1) ),
inference(split_conjunct,[status(thm)],[c_0_11]) ).
cnf(c_0_16,negated_conjecture,
( apply(esk1_0,esk5_2(esk2_0,X1),esk8_4(esk1_0,esk2_0,esk3_0,esk5_2(esk2_0,X1)))
| subset(esk2_0,X1) ),
inference(spm,[status(thm)],[c_0_12,c_0_13]) ).
cnf(c_0_17,negated_conjecture,
( member(esk8_4(esk1_0,esk2_0,esk3_0,X1),esk3_0)
| ~ member(X1,esk2_0) ),
inference(spm,[status(thm)],[c_0_14,c_0_9]) ).
cnf(c_0_18,negated_conjecture,
( member(esk5_2(esk2_0,X1),inverse_image2(esk1_0,X2))
| subset(esk2_0,X1)
| ~ member(esk8_4(esk1_0,esk2_0,esk3_0,esk5_2(esk2_0,X1)),X2) ),
inference(spm,[status(thm)],[c_0_15,c_0_16]) ).
cnf(c_0_19,negated_conjecture,
( member(esk8_4(esk1_0,esk2_0,esk3_0,esk5_2(esk2_0,X1)),esk3_0)
| subset(esk2_0,X1) ),
inference(spm,[status(thm)],[c_0_17,c_0_13]) ).
cnf(c_0_20,plain,
( subset(X1,X2)
| ~ member(esk5_2(X1,X2),X2) ),
inference(split_conjunct,[status(thm)],[c_0_10]) ).
cnf(c_0_21,negated_conjecture,
( member(esk5_2(esk2_0,X1),inverse_image2(esk1_0,esk3_0))
| subset(esk2_0,X1) ),
inference(spm,[status(thm)],[c_0_18,c_0_19]) ).
cnf(c_0_22,plain,
( member(X3,X2)
| ~ subset(X1,X2)
| ~ member(X3,X1) ),
inference(split_conjunct,[status(thm)],[c_0_10]) ).
cnf(c_0_23,negated_conjecture,
subset(esk4_0,esk2_0),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
cnf(c_0_24,negated_conjecture,
subset(esk2_0,inverse_image2(esk1_0,esk3_0)),
inference(spm,[status(thm)],[c_0_20,c_0_21]) ).
cnf(c_0_25,negated_conjecture,
( member(X1,esk2_0)
| ~ member(X1,esk4_0) ),
inference(spm,[status(thm)],[c_0_22,c_0_23]) ).
cnf(c_0_26,negated_conjecture,
( member(X1,inverse_image2(esk1_0,esk3_0))
| ~ member(X1,esk2_0) ),
inference(spm,[status(thm)],[c_0_22,c_0_24]) ).
cnf(c_0_27,negated_conjecture,
( member(esk5_2(esk4_0,X1),esk2_0)
| subset(esk4_0,X1) ),
inference(spm,[status(thm)],[c_0_25,c_0_13]) ).
fof(c_0_28,plain,
! [X39,X40,X41,X43,X44,X45,X46] :
( ( member(esk7_3(X39,X40,X41),X40)
| ~ member(X41,image2(X39,X40)) )
& ( apply(X39,esk7_3(X39,X40,X41),X41)
| ~ member(X41,image2(X39,X40)) )
& ( ~ member(X46,X44)
| ~ apply(X43,X46,X45)
| member(X45,image2(X43,X44)) ) ),
inference(distribute,[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)],[image2])])])])])]) ).
cnf(c_0_29,plain,
( apply(X1,X2,esk6_3(X1,X3,X2))
| ~ member(X2,inverse_image2(X1,X3)) ),
inference(split_conjunct,[status(thm)],[c_0_11]) ).
cnf(c_0_30,negated_conjecture,
( member(esk5_2(esk4_0,X1),inverse_image2(esk1_0,esk3_0))
| subset(esk4_0,X1) ),
inference(spm,[status(thm)],[c_0_26,c_0_27]) ).
cnf(c_0_31,plain,
( member(X4,image2(X3,X2))
| ~ member(X1,X2)
| ~ apply(X3,X1,X4) ),
inference(split_conjunct,[status(thm)],[c_0_28]) ).
cnf(c_0_32,negated_conjecture,
( apply(esk1_0,esk5_2(esk4_0,X1),esk6_3(esk1_0,esk3_0,esk5_2(esk4_0,X1)))
| subset(esk4_0,X1) ),
inference(spm,[status(thm)],[c_0_29,c_0_30]) ).
cnf(c_0_33,negated_conjecture,
( member(esk6_3(esk1_0,esk3_0,esk5_2(esk4_0,X1)),image2(esk1_0,X2))
| subset(esk4_0,X1)
| ~ member(esk5_2(esk4_0,X1),X2) ),
inference(spm,[status(thm)],[c_0_31,c_0_32]) ).
cnf(c_0_34,negated_conjecture,
( member(esk5_2(esk4_0,X1),inverse_image2(esk1_0,X2))
| subset(esk4_0,X1)
| ~ member(esk6_3(esk1_0,esk3_0,esk5_2(esk4_0,X1)),X2) ),
inference(spm,[status(thm)],[c_0_15,c_0_32]) ).
cnf(c_0_35,negated_conjecture,
( member(esk6_3(esk1_0,esk3_0,esk5_2(esk4_0,X1)),image2(esk1_0,esk4_0))
| subset(esk4_0,X1) ),
inference(spm,[status(thm)],[c_0_33,c_0_13]) ).
cnf(c_0_36,negated_conjecture,
( member(esk5_2(esk4_0,X1),inverse_image2(esk1_0,image2(esk1_0,esk4_0)))
| subset(esk4_0,X1) ),
inference(spm,[status(thm)],[c_0_34,c_0_35]) ).
cnf(c_0_37,negated_conjecture,
~ subset(esk4_0,inverse_image2(esk1_0,image2(esk1_0,esk4_0))),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
cnf(c_0_38,negated_conjecture,
$false,
inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_20,c_0_36]),c_0_37]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.05/0.11 % Problem : SET754+4 : TPTP v8.1.2. Bugfixed v2.2.1.
% 0.05/0.13 % Command : run_E %s %d THM
% 0.11/0.33 % Computer : n010.cluster.edu
% 0.11/0.33 % Model : x86_64 x86_64
% 0.11/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.11/0.33 % Memory : 8042.1875MB
% 0.11/0.33 % OS : Linux 3.10.0-693.el7.x86_64
% 0.11/0.33 % CPULimit : 2400
% 0.11/0.33 % WCLimit : 300
% 0.11/0.33 % DateTime : Mon Oct 2 17:12:05 EDT 2023
% 0.11/0.33 % CPUTime :
% 0.17/0.43 Running first-order theorem proving
% 0.17/0.43 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/tmp/tmp.u1O8xmaVfK/E---3.1_14796.p
% 0.17/0.48 # Version: 3.1pre001
% 0.17/0.48 # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.17/0.48 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.17/0.48 # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.17/0.48 # Starting new_bool_3 with 300s (1) cores
% 0.17/0.48 # Starting new_bool_1 with 300s (1) cores
% 0.17/0.48 # Starting sh5l with 300s (1) cores
% 0.17/0.48 # sh5l with pid 14878 completed with status 0
% 0.17/0.48 # Result found by sh5l
% 0.17/0.48 # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.17/0.48 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.17/0.48 # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.17/0.48 # Starting new_bool_3 with 300s (1) cores
% 0.17/0.48 # Starting new_bool_1 with 300s (1) cores
% 0.17/0.48 # Starting sh5l with 300s (1) cores
% 0.17/0.48 # SinE strategy is gf500_gu_R04_F100_L20000
% 0.17/0.48 # Search class: FGUSF-FFMF33-SFFFFFNN
% 0.17/0.48 # partial match(1): FGUSM-FFMF33-SFFFFFNN
% 0.17/0.48 # Scheduled 6 strats onto 1 cores with 300 seconds (300 total)
% 0.17/0.48 # Starting G-E--_215_C46_F1_AE_CS_SP_PS_S2S with 163s (1) cores
% 0.17/0.48 # G-E--_215_C46_F1_AE_CS_SP_PS_S2S with pid 14881 completed with status 0
% 0.17/0.48 # Result found by G-E--_215_C46_F1_AE_CS_SP_PS_S2S
% 0.17/0.48 # Preprocessing class: FSLSSMSSSSSNFFN.
% 0.17/0.48 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.17/0.48 # Starting G-E--_207_C18_F1_SE_CS_SP_PI_PS_S5PRR_S2S with 1500s (5) cores
% 0.17/0.48 # Starting new_bool_3 with 300s (1) cores
% 0.17/0.48 # Starting new_bool_1 with 300s (1) cores
% 0.17/0.48 # Starting sh5l with 300s (1) cores
% 0.17/0.48 # SinE strategy is gf500_gu_R04_F100_L20000
% 0.17/0.48 # Search class: FGUSF-FFMF33-SFFFFFNN
% 0.17/0.48 # partial match(1): FGUSM-FFMF33-SFFFFFNN
% 0.17/0.48 # Scheduled 6 strats onto 1 cores with 300 seconds (300 total)
% 0.17/0.48 # Starting G-E--_215_C46_F1_AE_CS_SP_PS_S2S with 163s (1) cores
% 0.17/0.48 # Preprocessing time : 0.002 s
% 0.17/0.48 # Presaturation interreduction done
% 0.17/0.48
% 0.17/0.48 # Proof found!
% 0.17/0.48 # SZS status Theorem
% 0.17/0.48 # SZS output start CNFRefutation
% See solution above
% 0.17/0.48 # Parsed axioms : 29
% 0.17/0.48 # Removed by relevancy pruning/SinE : 18
% 0.17/0.48 # Initial clauses : 58
% 0.17/0.48 # Removed in clause preprocessing : 0
% 0.17/0.48 # Initial clauses in saturation : 58
% 0.17/0.48 # Processed clauses : 445
% 0.17/0.48 # ...of these trivial : 0
% 0.17/0.48 # ...subsumed : 58
% 0.17/0.48 # ...remaining for further processing : 387
% 0.17/0.48 # Other redundant clauses eliminated : 0
% 0.17/0.48 # Clauses deleted for lack of memory : 0
% 0.17/0.48 # Backward-subsumed : 0
% 0.17/0.48 # Backward-rewritten : 0
% 0.17/0.48 # Generated clauses : 1001
% 0.17/0.48 # ...of the previous two non-redundant : 971
% 0.17/0.48 # ...aggressively subsumed : 0
% 0.17/0.48 # Contextual simplify-reflections : 0
% 0.17/0.48 # Paramodulations : 1001
% 0.17/0.48 # Factorizations : 0
% 0.17/0.48 # NegExts : 0
% 0.17/0.48 # Equation resolutions : 0
% 0.17/0.48 # Total rewrite steps : 28
% 0.17/0.48 # Propositional unsat checks : 0
% 0.17/0.48 # Propositional check models : 0
% 0.17/0.48 # Propositional check unsatisfiable : 0
% 0.17/0.48 # Propositional clauses : 0
% 0.17/0.48 # Propositional clauses after purity: 0
% 0.17/0.48 # Propositional unsat core size : 0
% 0.17/0.48 # Propositional preprocessing time : 0.000
% 0.17/0.48 # Propositional encoding time : 0.000
% 0.17/0.48 # Propositional solver time : 0.000
% 0.17/0.48 # Success case prop preproc time : 0.000
% 0.17/0.48 # Success case prop encoding time : 0.000
% 0.17/0.48 # Success case prop solver time : 0.000
% 0.17/0.48 # Current number of processed clauses : 329
% 0.17/0.48 # Positive orientable unit clauses : 50
% 0.17/0.48 # Positive unorientable unit clauses: 0
% 0.17/0.48 # Negative unit clauses : 1
% 0.17/0.48 # Non-unit-clauses : 278
% 0.17/0.48 # Current number of unprocessed clauses: 640
% 0.17/0.48 # ...number of literals in the above : 1486
% 0.17/0.48 # Current number of archived formulas : 0
% 0.17/0.48 # Current number of archived clauses : 58
% 0.17/0.48 # Clause-clause subsumption calls (NU) : 10988
% 0.17/0.48 # Rec. Clause-clause subsumption calls : 10150
% 0.17/0.48 # Non-unit clause-clause subsumptions : 58
% 0.17/0.48 # Unit Clause-clause subsumption calls : 321
% 0.17/0.48 # Rewrite failures with RHS unbound : 0
% 0.17/0.48 # BW rewrite match attempts : 220
% 0.17/0.48 # BW rewrite match successes : 0
% 0.17/0.48 # Condensation attempts : 0
% 0.17/0.48 # Condensation successes : 0
% 0.17/0.48 # Termbank termtop insertions : 30430
% 0.17/0.48
% 0.17/0.48 # -------------------------------------------------
% 0.17/0.48 # User time : 0.037 s
% 0.17/0.48 # System time : 0.002 s
% 0.17/0.48 # Total time : 0.039 s
% 0.17/0.48 # Maximum resident set size: 1892 pages
% 0.17/0.48
% 0.17/0.48 # -------------------------------------------------
% 0.17/0.48 # User time : 0.039 s
% 0.17/0.48 # System time : 0.002 s
% 0.17/0.48 # Total time : 0.041 s
% 0.17/0.48 # Maximum resident set size: 1744 pages
% 0.17/0.48 % E---3.1 exiting
% 0.17/0.48 % E---3.1 exiting
%------------------------------------------------------------------------------