TSTP Solution File: ANA015-2 by E-SAT---3.1.00
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : E-SAT---3.1.00
% Problem : ANA015-2 : TPTP v8.2.0. Released v3.2.0.
% Transfm : none
% Format : tptp:raw
% Command : run_E %s %d THM
% Computer : n024.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 : Mon May 20 18:38:29 EDT 2024
% Result : Unsatisfiable 0.19s 0.49s
% Output : CNFRefutation 0.19s
% Verified :
% SZS Type : Refutation
% Derivation depth : 10
% Number of leaves : 12
% Syntax : Number of clauses : 44 ( 9 unt; 0 nHn; 33 RR)
% Number of literals : 96 ( 6 equ; 62 neg)
% Maximal clause size : 5 ( 2 avg)
% Maximal term depth : 8 ( 2 avg)
% Number of predicates : 9 ( 7 usr; 1 prp; 0-3 aty)
% Number of functors : 10 ( 10 usr; 4 con; 0-3 aty)
% Number of variables : 67 ( 3 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(cls_conjecture_2,negated_conjecture,
~ c_lessequals(c_HOL_Oabs(c_times(c_HOL_Oinverse(v_c,t_a),v_g(v_x(X1)),t_a),t_a),c_times(X1,c_HOL_Oabs(v_f(v_x(X1)),t_a),t_a),t_a),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_conjecture_2) ).
cnf(cls_OrderedGroup_Osemigroup__mult__class_Omult__assoc_0,axiom,
( c_times(c_times(X2,X3,X1),X4,X1) = c_times(X2,c_times(X3,X4,X1),X1)
| ~ class_OrderedGroup_Osemigroup__mult(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_OrderedGroup_Osemigroup__mult__class_Omult__assoc_0) ).
cnf(cls_Ring__and__Field_Opordered__semiring__class_Omult__left__mono_0,axiom,
( c_lessequals(c_times(X4,X2,X1),c_times(X4,X3,X1),X1)
| ~ class_Ring__and__Field_Opordered__semiring(X1)
| ~ c_lessequals(X2,X3,X1)
| ~ c_lessequals(c_0,X4,X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_Ring__and__Field_Opordered__semiring__class_Omult__left__mono_0) ).
cnf(cls_Ring__and__Field_Oabs__mult_0,axiom,
( c_HOL_Oabs(c_times(X2,X3,X1),X1) = c_times(c_HOL_Oabs(X2,X1),c_HOL_Oabs(X3,X1),X1)
| ~ class_Ring__and__Field_Oordered__idom(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_Ring__and__Field_Oabs__mult_0) ).
cnf(cls_conjecture_1,negated_conjecture,
c_lessequals(c_HOL_Oabs(v_g(X1),t_a),c_times(v_d,c_HOL_Oabs(v_f(X1),t_a),t_a),t_a),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_conjecture_1) ).
cnf(cls_OrderedGroup_Oabs__ge__zero_0,axiom,
( c_lessequals(c_0,c_HOL_Oabs(X2,X1),X1)
| ~ class_OrderedGroup_Olordered__ab__group__abs(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',cls_OrderedGroup_Oabs__ge__zero_0) ).
cnf(clsrel_Ring__and__Field_Oordered__field_46,axiom,
( class_Ring__and__Field_Opordered__semiring(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',clsrel_Ring__and__Field_Oordered__field_46) ).
cnf(tfree_tcs,negated_conjecture,
class_Ring__and__Field_Oordered__field(t_a),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',tfree_tcs) ).
cnf(clsrel_Ring__and__Field_Oordered__field_34,axiom,
( class_Ring__and__Field_Oordered__idom(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',clsrel_Ring__and__Field_Oordered__field_34) ).
cnf(clsrel_Ring__and__Field_Ofield_21,axiom,
( class_OrderedGroup_Osemigroup__mult(X1)
| ~ class_Ring__and__Field_Ofield(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',clsrel_Ring__and__Field_Ofield_21) ).
cnf(clsrel_Ring__and__Field_Oordered__field_0,axiom,
( class_Ring__and__Field_Ofield(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',clsrel_Ring__and__Field_Oordered__field_0) ).
cnf(clsrel_Ring__and__Field_Oordered__field_47,axiom,
( class_OrderedGroup_Olordered__ab__group__abs(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',clsrel_Ring__and__Field_Oordered__field_47) ).
cnf(c_0_12,negated_conjecture,
~ c_lessequals(c_HOL_Oabs(c_times(c_HOL_Oinverse(v_c,t_a),v_g(v_x(X1)),t_a),t_a),c_times(X1,c_HOL_Oabs(v_f(v_x(X1)),t_a),t_a),t_a),
inference(fof_simplification,[status(thm)],[cls_conjecture_2]) ).
cnf(c_0_13,plain,
( c_times(c_times(X2,X3,X1),X4,X1) = c_times(X2,c_times(X3,X4,X1),X1)
| ~ class_OrderedGroup_Osemigroup__mult(X1) ),
inference(fof_simplification,[status(thm)],[cls_OrderedGroup_Osemigroup__mult__class_Omult__assoc_0]) ).
cnf(c_0_14,plain,
( c_lessequals(c_times(X4,X2,X1),c_times(X4,X3,X1),X1)
| ~ class_Ring__and__Field_Opordered__semiring(X1)
| ~ c_lessequals(X2,X3,X1)
| ~ c_lessequals(c_0,X4,X1) ),
inference(fof_simplification,[status(thm)],[cls_Ring__and__Field_Opordered__semiring__class_Omult__left__mono_0]) ).
cnf(c_0_15,plain,
( c_HOL_Oabs(c_times(X2,X3,X1),X1) = c_times(c_HOL_Oabs(X2,X1),c_HOL_Oabs(X3,X1),X1)
| ~ class_Ring__and__Field_Oordered__idom(X1) ),
inference(fof_simplification,[status(thm)],[cls_Ring__and__Field_Oabs__mult_0]) ).
cnf(c_0_16,negated_conjecture,
~ c_lessequals(c_HOL_Oabs(c_times(c_HOL_Oinverse(v_c,t_a),v_g(v_x(X1)),t_a),t_a),c_times(X1,c_HOL_Oabs(v_f(v_x(X1)),t_a),t_a),t_a),
c_0_12 ).
cnf(c_0_17,plain,
( c_times(c_times(X2,X3,X1),X4,X1) = c_times(X2,c_times(X3,X4,X1),X1)
| ~ class_OrderedGroup_Osemigroup__mult(X1) ),
c_0_13 ).
cnf(c_0_18,plain,
( c_lessequals(c_times(X4,X2,X1),c_times(X4,X3,X1),X1)
| ~ class_Ring__and__Field_Opordered__semiring(X1)
| ~ c_lessequals(X2,X3,X1)
| ~ c_lessequals(c_0,X4,X1) ),
c_0_14 ).
cnf(c_0_19,plain,
( c_HOL_Oabs(c_times(X2,X3,X1),X1) = c_times(c_HOL_Oabs(X2,X1),c_HOL_Oabs(X3,X1),X1)
| ~ class_Ring__and__Field_Oordered__idom(X1) ),
c_0_15 ).
cnf(c_0_20,negated_conjecture,
( ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ c_lessequals(c_HOL_Oabs(c_times(c_HOL_Oinverse(v_c,t_a),v_g(v_x(c_times(X1,X2,t_a))),t_a),t_a),c_times(X1,c_times(X2,c_HOL_Oabs(v_f(v_x(c_times(X1,X2,t_a))),t_a),t_a),t_a),t_a) ),
inference(spm,[status(thm)],[c_0_16,c_0_17]) ).
cnf(c_0_21,plain,
( c_lessequals(c_HOL_Oabs(c_times(X1,X2,X3),X3),c_times(c_HOL_Oabs(X1,X3),X4,X3),X3)
| ~ class_Ring__and__Field_Opordered__semiring(X3)
| ~ class_Ring__and__Field_Oordered__idom(X3)
| ~ c_lessequals(c_0,c_HOL_Oabs(X1,X3),X3)
| ~ c_lessequals(c_HOL_Oabs(X2,X3),X4,X3) ),
inference(spm,[status(thm)],[c_0_18,c_0_19]) ).
cnf(c_0_22,negated_conjecture,
( ~ class_Ring__and__Field_Opordered__semiring(t_a)
| ~ class_Ring__and__Field_Oordered__idom(t_a)
| ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ c_lessequals(c_HOL_Oabs(v_g(v_x(c_times(c_HOL_Oabs(c_HOL_Oinverse(v_c,t_a),t_a),X1,t_a))),t_a),c_times(X1,c_HOL_Oabs(v_f(v_x(c_times(c_HOL_Oabs(c_HOL_Oinverse(v_c,t_a),t_a),X1,t_a))),t_a),t_a),t_a)
| ~ c_lessequals(c_0,c_HOL_Oabs(c_HOL_Oinverse(v_c,t_a),t_a),t_a) ),
inference(spm,[status(thm)],[c_0_20,c_0_21]) ).
cnf(c_0_23,negated_conjecture,
c_lessequals(c_HOL_Oabs(v_g(X1),t_a),c_times(v_d,c_HOL_Oabs(v_f(X1),t_a),t_a),t_a),
cls_conjecture_1 ).
cnf(c_0_24,plain,
( c_lessequals(c_0,c_HOL_Oabs(X2,X1),X1)
| ~ class_OrderedGroup_Olordered__ab__group__abs(X1) ),
inference(fof_simplification,[status(thm)],[cls_OrderedGroup_Oabs__ge__zero_0]) ).
cnf(c_0_25,negated_conjecture,
( ~ class_Ring__and__Field_Opordered__semiring(t_a)
| ~ class_Ring__and__Field_Oordered__idom(t_a)
| ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ c_lessequals(c_0,c_HOL_Oabs(c_HOL_Oinverse(v_c,t_a),t_a),t_a) ),
inference(spm,[status(thm)],[c_0_22,c_0_23]) ).
cnf(c_0_26,plain,
( c_lessequals(c_0,c_HOL_Oabs(X2,X1),X1)
| ~ class_OrderedGroup_Olordered__ab__group__abs(X1) ),
c_0_24 ).
cnf(c_0_27,plain,
( class_Ring__and__Field_Opordered__semiring(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
inference(fof_simplification,[status(thm)],[clsrel_Ring__and__Field_Oordered__field_46]) ).
cnf(c_0_28,negated_conjecture,
( ~ class_Ring__and__Field_Opordered__semiring(t_a)
| ~ class_Ring__and__Field_Oordered__idom(t_a)
| ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ class_OrderedGroup_Olordered__ab__group__abs(t_a) ),
inference(spm,[status(thm)],[c_0_25,c_0_26]) ).
cnf(c_0_29,plain,
( class_Ring__and__Field_Opordered__semiring(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
c_0_27 ).
cnf(c_0_30,negated_conjecture,
class_Ring__and__Field_Oordered__field(t_a),
tfree_tcs ).
cnf(c_0_31,plain,
( class_Ring__and__Field_Oordered__idom(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
inference(fof_simplification,[status(thm)],[clsrel_Ring__and__Field_Oordered__field_34]) ).
cnf(c_0_32,plain,
( class_OrderedGroup_Osemigroup__mult(X1)
| ~ class_Ring__and__Field_Ofield(X1) ),
inference(fof_simplification,[status(thm)],[clsrel_Ring__and__Field_Ofield_21]) ).
cnf(c_0_33,plain,
( class_Ring__and__Field_Ofield(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
inference(fof_simplification,[status(thm)],[clsrel_Ring__and__Field_Oordered__field_0]) ).
cnf(c_0_34,negated_conjecture,
( ~ class_Ring__and__Field_Oordered__idom(t_a)
| ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ class_OrderedGroup_Olordered__ab__group__abs(t_a) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_28,c_0_29]),c_0_30])]) ).
cnf(c_0_35,plain,
( class_Ring__and__Field_Oordered__idom(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
c_0_31 ).
cnf(c_0_36,plain,
( class_OrderedGroup_Osemigroup__mult(X1)
| ~ class_Ring__and__Field_Ofield(X1) ),
c_0_32 ).
cnf(c_0_37,plain,
( class_Ring__and__Field_Ofield(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
c_0_33 ).
cnf(c_0_38,negated_conjecture,
( ~ class_OrderedGroup_Osemigroup__mult(t_a)
| ~ class_OrderedGroup_Olordered__ab__group__abs(t_a) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_34,c_0_35]),c_0_30])]) ).
cnf(c_0_39,plain,
( class_OrderedGroup_Osemigroup__mult(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
inference(spm,[status(thm)],[c_0_36,c_0_37]) ).
cnf(c_0_40,plain,
( class_OrderedGroup_Olordered__ab__group__abs(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
inference(fof_simplification,[status(thm)],[clsrel_Ring__and__Field_Oordered__field_47]) ).
cnf(c_0_41,negated_conjecture,
~ class_OrderedGroup_Olordered__ab__group__abs(t_a),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_38,c_0_39]),c_0_30])]) ).
cnf(c_0_42,plain,
( class_OrderedGroup_Olordered__ab__group__abs(X1)
| ~ class_Ring__and__Field_Oordered__field(X1) ),
c_0_40 ).
cnf(c_0_43,negated_conjecture,
$false,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_41,c_0_42]),c_0_30])]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.03/0.12 % Problem : ANA015-2 : TPTP v8.2.0. Released v3.2.0.
% 0.03/0.13 % Command : run_E %s %d THM
% 0.13/0.34 % Computer : n024.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 : Mon May 20 07:55:07 EDT 2024
% 0.13/0.34 % CPUTime :
% 0.19/0.46 Running first-order model finding
% 0.19/0.46 Running: /export/starexec/sandbox2/solver/bin/eprover --delete-bad-limit=2000000000 --definitional-cnf=24 -s --print-statistics -R --print-version --proof-object --satauto-schedule=8 --cpu-limit=300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.19/0.49 # Version: 3.1.0
% 0.19/0.49 # Preprocessing class: FSMSSMSSSSSNFFN.
% 0.19/0.49 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49 # Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 0.19/0.49 # Starting new_bool_3 with 300s (1) cores
% 0.19/0.49 # Starting new_bool_1 with 300s (1) cores
% 0.19/0.49 # Starting sh5l with 300s (1) cores
% 0.19/0.49 # G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with pid 12436 completed with status 0
% 0.19/0.49 # Result found by G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN
% 0.19/0.49 # Preprocessing class: FSMSSMSSSSSNFFN.
% 0.19/0.49 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49 # Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 0.19/0.49 # No SInE strategy applied
% 0.19/0.49 # Search class: FHUSF-FFSF31-MFFFFFNN
% 0.19/0.49 # Scheduled 6 strats onto 5 cores with 1500 seconds (1500 total)
% 0.19/0.49 # Starting SAT001_MinMin_p005000_rr_RG with 811s (1) cores
% 0.19/0.49 # Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 151s (1) cores
% 0.19/0.49 # Starting new_bool_3 with 136s (1) cores
% 0.19/0.49 # Starting new_bool_1 with 136s (1) cores
% 0.19/0.49 # Starting sh5l with 136s (1) cores
% 0.19/0.49 # G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with pid 12441 completed with status 0
% 0.19/0.49 # Result found by G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN
% 0.19/0.49 # Preprocessing class: FSMSSMSSSSSNFFN.
% 0.19/0.49 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.19/0.49 # Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 1500s (5) cores
% 0.19/0.49 # No SInE strategy applied
% 0.19/0.49 # Search class: FHUSF-FFSF31-MFFFFFNN
% 0.19/0.49 # Scheduled 6 strats onto 5 cores with 1500 seconds (1500 total)
% 0.19/0.49 # Starting SAT001_MinMin_p005000_rr_RG with 811s (1) cores
% 0.19/0.49 # Starting G-E--_208_C18_F1_SE_CS_SOS_SP_PS_S5PRR_RG_S04AN with 151s (1) cores
% 0.19/0.49 # Preprocessing time : 0.001 s
% 0.19/0.49 # Presaturation interreduction done
% 0.19/0.49
% 0.19/0.49 # Proof found!
% 0.19/0.49 # SZS status Unsatisfiable
% 0.19/0.49 # SZS output start CNFRefutation
% See solution above
% 0.19/0.49 # Parsed axioms : 12
% 0.19/0.49 # Removed by relevancy pruning/SinE : 0
% 0.19/0.49 # Initial clauses : 12
% 0.19/0.49 # Removed in clause preprocessing : 0
% 0.19/0.49 # Initial clauses in saturation : 12
% 0.19/0.49 # Processed clauses : 53
% 0.19/0.49 # ...of these trivial : 0
% 0.19/0.49 # ...subsumed : 4
% 0.19/0.49 # ...remaining for further processing : 49
% 0.19/0.49 # Other redundant clauses eliminated : 0
% 0.19/0.49 # Clauses deleted for lack of memory : 0
% 0.19/0.49 # Backward-subsumed : 4
% 0.19/0.49 # Backward-rewritten : 0
% 0.19/0.49 # Generated clauses : 354
% 0.19/0.49 # ...of the previous two non-redundant : 353
% 0.19/0.49 # ...aggressively subsumed : 0
% 0.19/0.49 # Contextual simplify-reflections : 0
% 0.19/0.49 # Paramodulations : 354
% 0.19/0.49 # Factorizations : 0
% 0.19/0.49 # NegExts : 0
% 0.19/0.49 # Equation resolutions : 0
% 0.19/0.49 # Disequality decompositions : 0
% 0.19/0.49 # Total rewrite steps : 4
% 0.19/0.49 # ...of those cached : 3
% 0.19/0.49 # Propositional unsat checks : 0
% 0.19/0.49 # Propositional check models : 0
% 0.19/0.49 # Propositional check unsatisfiable : 0
% 0.19/0.49 # Propositional clauses : 0
% 0.19/0.49 # Propositional clauses after purity: 0
% 0.19/0.49 # Propositional unsat core size : 0
% 0.19/0.49 # Propositional preprocessing time : 0.000
% 0.19/0.49 # Propositional encoding time : 0.000
% 0.19/0.49 # Propositional solver time : 0.000
% 0.19/0.49 # Success case prop preproc time : 0.000
% 0.19/0.49 # Success case prop encoding time : 0.000
% 0.19/0.49 # Success case prop solver time : 0.000
% 0.19/0.49 # Current number of processed clauses : 33
% 0.19/0.49 # Positive orientable unit clauses : 2
% 0.19/0.49 # Positive unorientable unit clauses: 0
% 0.19/0.49 # Negative unit clauses : 2
% 0.19/0.49 # Non-unit-clauses : 29
% 0.19/0.49 # Current number of unprocessed clauses: 324
% 0.19/0.49 # ...number of literals in the above : 1067
% 0.19/0.49 # Current number of archived formulas : 0
% 0.19/0.49 # Current number of archived clauses : 16
% 0.19/0.49 # Clause-clause subsumption calls (NU) : 275
% 0.19/0.49 # Rec. Clause-clause subsumption calls : 174
% 0.19/0.49 # Non-unit clause-clause subsumptions : 7
% 0.19/0.49 # Unit Clause-clause subsumption calls : 11
% 0.19/0.49 # Rewrite failures with RHS unbound : 0
% 0.19/0.49 # BW rewrite match attempts : 0
% 0.19/0.49 # BW rewrite match successes : 0
% 0.19/0.49 # Condensation attempts : 0
% 0.19/0.49 # Condensation successes : 0
% 0.19/0.49 # Termbank termtop insertions : 11462
% 0.19/0.49 # Search garbage collected termcells : 24
% 0.19/0.49
% 0.19/0.49 # -------------------------------------------------
% 0.19/0.49 # User time : 0.013 s
% 0.19/0.49 # System time : 0.001 s
% 0.19/0.49 # Total time : 0.014 s
% 0.19/0.49 # Maximum resident set size: 1652 pages
% 0.19/0.49
% 0.19/0.49 # -------------------------------------------------
% 0.19/0.49 # User time : 0.061 s
% 0.19/0.49 # System time : 0.003 s
% 0.19/0.49 # Total time : 0.064 s
% 0.19/0.49 # Maximum resident set size: 1700 pages
% 0.19/0.49 % E---3.1 exiting
%------------------------------------------------------------------------------