TSTP Solution File: SWC002-1 by E---3.1.00
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : E---3.1.00
% Problem : SWC002-1 : TPTP v8.2.0. Released v2.4.0.
% Transfm : none
% Format : tptp:raw
% Command : run_E %s %d THM
% Computer : n023.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 : Tue May 21 04:22:31 EDT 2024
% Result : Unsatisfiable 0.21s 0.52s
% Output : CNFRefutation 0.21s
% Verified :
% SZS Type : Refutation
% Derivation depth : 7
% Number of leaves : 13
% Syntax : Number of clauses : 53 ( 17 unt; 1 nHn; 53 RR)
% Number of literals : 176 ( 53 equ; 128 neg)
% Maximal clause size : 7 ( 3 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 7 ( 5 usr; 1 prp; 0-2 aty)
% Number of functors : 11 ( 11 usr; 8 con; 0-3 aty)
% Number of variables : 52 ( 0 sgn)
% Comments :
%------------------------------------------------------------------------------
cnf(co1_7,negated_conjecture,
( neq(sk2,nil)
| neq(sk2,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_7) ).
cnf(co1_20,negated_conjecture,
( memberP(sk2,sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_20) ).
cnf(co1_5,negated_conjecture,
sk2 = sk4,
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_5) ).
cnf(co1_26,negated_conjecture,
( app(app(sk7,cons(sk6,nil)),sk8) = sk4
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_26) ).
cnf(co1_27,negated_conjecture,
( app(sk7,sk8) = sk3
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_27) ).
cnf(co1_23,negated_conjecture,
( ssItem(sk6)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_23) ).
cnf(co1_25,negated_conjecture,
( ssList(sk8)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_25) ).
cnf(co1_24,negated_conjecture,
( ssList(sk7)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_24) ).
cnf(co1_19,negated_conjecture,
( ssItem(sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_19) ).
cnf(co1_22,negated_conjecture,
( ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| X1 != sk5(X3,X2,X1)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_22) ).
cnf(co1_28,negated_conjecture,
( sk6 = X1
| ~ ssItem(X1)
| ~ memberP(sk4,X1)
| ~ geq(X1,sk6)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_28) ).
cnf(co1_6,negated_conjecture,
sk1 = sk3,
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_6) ).
cnf(co1_21,negated_conjecture,
( geq(sk5(X3,X2,X1),X1)
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',co1_21) ).
cnf(c_0_13,negated_conjecture,
neq(sk2,nil),
inference(fof_simplification,[status(thm)],[co1_7]) ).
cnf(c_0_14,negated_conjecture,
( memberP(sk2,sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_20]) ).
cnf(c_0_15,negated_conjecture,
neq(sk2,nil),
c_0_13 ).
cnf(c_0_16,negated_conjecture,
sk2 = sk4,
co1_5 ).
cnf(c_0_17,negated_conjecture,
( app(app(sk7,cons(sk6,nil)),sk8) = sk4
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_26]) ).
cnf(c_0_18,negated_conjecture,
( app(sk7,sk8) = sk3
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_27]) ).
cnf(c_0_19,negated_conjecture,
( ssItem(sk6)
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_23]) ).
cnf(c_0_20,negated_conjecture,
( ssList(sk8)
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_25]) ).
cnf(c_0_21,negated_conjecture,
( ssList(sk7)
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_24]) ).
cnf(c_0_22,negated_conjecture,
( ssItem(sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_19]) ).
cnf(c_0_23,negated_conjecture,
( ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| X1 != sk5(X3,X2,X1)
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_22]) ).
cnf(c_0_24,negated_conjecture,
( sk6 = X1
| ~ ssItem(X1)
| ~ memberP(sk4,X1)
| ~ geq(X1,sk6)
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_28]) ).
cnf(c_0_25,negated_conjecture,
( memberP(sk2,sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
c_0_14 ).
cnf(c_0_26,negated_conjecture,
neq(sk4,nil),
inference(rw,[status(thm)],[c_0_15,c_0_16]) ).
cnf(c_0_27,negated_conjecture,
( app(app(sk7,cons(sk6,nil)),sk8) = sk4
| ~ neq(sk4,nil) ),
c_0_17 ).
cnf(c_0_28,negated_conjecture,
( app(sk7,sk8) = sk3
| ~ neq(sk4,nil) ),
c_0_18 ).
cnf(c_0_29,negated_conjecture,
sk1 = sk3,
co1_6 ).
cnf(c_0_30,negated_conjecture,
( ssItem(sk6)
| ~ neq(sk4,nil) ),
c_0_19 ).
cnf(c_0_31,negated_conjecture,
( ssList(sk8)
| ~ neq(sk4,nil) ),
c_0_20 ).
cnf(c_0_32,negated_conjecture,
( ssList(sk7)
| ~ neq(sk4,nil) ),
c_0_21 ).
cnf(c_0_33,negated_conjecture,
( ssItem(sk5(X3,X2,X1))
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
c_0_22 ).
cnf(c_0_34,negated_conjecture,
( ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| X1 != sk5(X3,X2,X1)
| ~ neq(sk4,nil) ),
c_0_23 ).
cnf(c_0_35,negated_conjecture,
( geq(sk5(X3,X2,X1),X1)
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
inference(fof_simplification,[status(thm)],[co1_21]) ).
cnf(c_0_36,negated_conjecture,
( sk6 = X1
| ~ ssItem(X1)
| ~ memberP(sk4,X1)
| ~ geq(X1,sk6)
| ~ neq(sk4,nil) ),
c_0_24 ).
cnf(c_0_37,negated_conjecture,
( memberP(sk4,sk5(X1,X2,X3))
| app(app(X2,cons(X3,nil)),X1) != sk4
| app(X2,X1) != sk1
| ~ ssItem(X3)
| ~ ssList(X1)
| ~ ssList(X2) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_25,c_0_16]),c_0_16]),c_0_26])]) ).
cnf(c_0_38,negated_conjecture,
app(app(sk7,cons(sk6,nil)),sk8) = sk4,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_27,c_0_26])]) ).
cnf(c_0_39,negated_conjecture,
app(sk7,sk8) = sk1,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_28,c_0_29]),c_0_26])]) ).
cnf(c_0_40,negated_conjecture,
ssItem(sk6),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_30,c_0_26])]) ).
cnf(c_0_41,negated_conjecture,
ssList(sk8),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_31,c_0_26])]) ).
cnf(c_0_42,negated_conjecture,
ssList(sk7),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_32,c_0_26])]) ).
cnf(c_0_43,negated_conjecture,
( ssItem(sk5(X1,X2,X3))
| app(app(X2,cons(X3,nil)),X1) != sk4
| app(X2,X1) != sk1
| ~ ssItem(X3)
| ~ ssList(X1)
| ~ ssList(X2) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_33,c_0_16]),c_0_26])]) ).
cnf(c_0_44,negated_conjecture,
( app(app(X1,cons(X2,nil)),X3) != sk4
| sk5(X3,X1,X2) != X2
| app(X1,X3) != sk1
| ~ ssItem(X2)
| ~ ssList(X3)
| ~ ssList(X1) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_34,c_0_16]),c_0_26])]) ).
cnf(c_0_45,negated_conjecture,
( geq(sk5(X3,X2,X1),X1)
| ~ ssItem(X1)
| ~ ssList(X2)
| ~ ssList(X3)
| app(app(X2,cons(X1,nil)),X3) != sk2
| app(X2,X3) != sk1
| ~ neq(sk4,nil) ),
c_0_35 ).
cnf(c_0_46,negated_conjecture,
( sk6 = X1
| ~ memberP(sk4,X1)
| ~ geq(X1,sk6)
| ~ ssItem(X1) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_36,c_0_26])]) ).
cnf(c_0_47,negated_conjecture,
memberP(sk4,sk5(sk8,sk7,sk6)),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_37,c_0_38]),c_0_39]),c_0_40]),c_0_41]),c_0_42])]) ).
cnf(c_0_48,negated_conjecture,
ssItem(sk5(sk8,sk7,sk6)),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_43,c_0_38]),c_0_39]),c_0_40]),c_0_41]),c_0_42])]) ).
cnf(c_0_49,negated_conjecture,
sk5(sk8,sk7,sk6) != sk6,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_44,c_0_38]),c_0_39]),c_0_40]),c_0_41]),c_0_42])]) ).
cnf(c_0_50,negated_conjecture,
( geq(sk5(X1,X2,X3),X3)
| app(app(X2,cons(X3,nil)),X1) != sk4
| app(X2,X1) != sk1
| ~ ssItem(X3)
| ~ ssList(X1)
| ~ ssList(X2) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_45,c_0_16]),c_0_26])]) ).
cnf(c_0_51,negated_conjecture,
~ geq(sk5(sk8,sk7,sk6),sk6),
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_46,c_0_47]),c_0_48])]),c_0_49]) ).
cnf(c_0_52,negated_conjecture,
$false,
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_50,c_0_38]),c_0_39]),c_0_40]),c_0_41]),c_0_42])]),c_0_51]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.06/0.12 % Problem : SWC002-1 : TPTP v8.2.0. Released v2.4.0.
% 0.06/0.13 % Command : run_E %s %d THM
% 0.13/0.34 % Computer : n023.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 : Sun May 19 03:35:08 EDT 2024
% 0.13/0.35 % CPUTime :
% 0.21/0.48 Running first-order theorem proving
% 0.21/0.48 Running: /export/starexec/sandbox2/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/sandbox2/benchmark/theBenchmark.p
% 0.21/0.52 # Version: 3.1.0
% 0.21/0.52 # Preprocessing class: FSLSSMSMSSSNFFN.
% 0.21/0.52 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.21/0.52 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 0.21/0.52 # Starting new_bool_3 with 300s (1) cores
% 0.21/0.52 # Starting new_bool_1 with 300s (1) cores
% 0.21/0.52 # Starting sh5l with 300s (1) cores
% 0.21/0.52 # C07_19_nc_SOS_SAT001_MinMin_p005000_rr with pid 1374 completed with status 0
% 0.21/0.52 # Result found by C07_19_nc_SOS_SAT001_MinMin_p005000_rr
% 0.21/0.52 # Preprocessing class: FSLSSMSMSSSNFFN.
% 0.21/0.52 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.21/0.52 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 0.21/0.52 # No SInE strategy applied
% 0.21/0.52 # Search class: FGHSM-FSLM31-MFFFFFNN
% 0.21/0.52 # Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.21/0.52 # Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d with 675s (1) cores
% 0.21/0.52 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 151s (1) cores
% 0.21/0.52 # Starting G-E--_207_B07_F1_AE_CS_SP_PI_PS_S0Y with 136s (1) cores
% 0.21/0.52 # Starting U----_116Y_C05_02_F1_SE_PI_CS_SP_PS_S5PRR_RG_S04AN with 136s (1) cores
% 0.21/0.52 # Starting G-E--_008_C45_F1_PI_SE_Q4_CS_SP_S4SI with 136s (1) cores
% 0.21/0.52 # U----_116Y_C05_02_F1_SE_PI_CS_SP_PS_S5PRR_RG_S04AN with pid 1383 completed with status 0
% 0.21/0.52 # Result found by U----_116Y_C05_02_F1_SE_PI_CS_SP_PS_S5PRR_RG_S04AN
% 0.21/0.52 # Preprocessing class: FSLSSMSMSSSNFFN.
% 0.21/0.52 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 0.21/0.52 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 0.21/0.52 # No SInE strategy applied
% 0.21/0.52 # Search class: FGHSM-FSLM31-MFFFFFNN
% 0.21/0.52 # Scheduled 7 strats onto 5 cores with 1500 seconds (1500 total)
% 0.21/0.52 # Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d with 675s (1) cores
% 0.21/0.52 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 151s (1) cores
% 0.21/0.52 # Starting G-E--_207_B07_F1_AE_CS_SP_PI_PS_S0Y with 136s (1) cores
% 0.21/0.52 # Starting U----_116Y_C05_02_F1_SE_PI_CS_SP_PS_S5PRR_RG_S04AN with 136s (1) cores
% 0.21/0.52 # Preprocessing time : 0.003 s
% 0.21/0.52 # Presaturation interreduction done
% 0.21/0.52
% 0.21/0.52 # Proof found!
% 0.21/0.52 # SZS status Unsatisfiable
% 0.21/0.52 # SZS output start CNFRefutation
% See solution above
% 0.21/0.52 # Parsed axioms : 213
% 0.21/0.52 # Removed by relevancy pruning/SinE : 0
% 0.21/0.52 # Initial clauses : 213
% 0.21/0.52 # Removed in clause preprocessing : 0
% 0.21/0.52 # Initial clauses in saturation : 213
% 0.21/0.52 # Processed clauses : 304
% 0.21/0.52 # ...of these trivial : 13
% 0.21/0.52 # ...subsumed : 6
% 0.21/0.52 # ...remaining for further processing : 285
% 0.21/0.52 # Other redundant clauses eliminated : 24
% 0.21/0.52 # Clauses deleted for lack of memory : 0
% 0.21/0.52 # Backward-subsumed : 0
% 0.21/0.52 # Backward-rewritten : 1
% 0.21/0.52 # Generated clauses : 34
% 0.21/0.52 # ...of the previous two non-redundant : 32
% 0.21/0.52 # ...aggressively subsumed : 0
% 0.21/0.52 # Contextual simplify-reflections : 2
% 0.21/0.52 # Paramodulations : 11
% 0.21/0.52 # Factorizations : 0
% 0.21/0.52 # NegExts : 0
% 0.21/0.52 # Equation resolutions : 24
% 0.21/0.52 # Disequality decompositions : 0
% 0.21/0.52 # Total rewrite steps : 83
% 0.21/0.52 # ...of those cached : 70
% 0.21/0.52 # Propositional unsat checks : 0
% 0.21/0.52 # Propositional check models : 0
% 0.21/0.52 # Propositional check unsatisfiable : 0
% 0.21/0.52 # Propositional clauses : 0
% 0.21/0.52 # Propositional clauses after purity: 0
% 0.21/0.52 # Propositional unsat core size : 0
% 0.21/0.52 # Propositional preprocessing time : 0.000
% 0.21/0.52 # Propositional encoding time : 0.000
% 0.21/0.52 # Propositional solver time : 0.000
% 0.21/0.52 # Success case prop preproc time : 0.000
% 0.21/0.52 # Success case prop encoding time : 0.000
% 0.21/0.52 # Success case prop solver time : 0.000
% 0.21/0.52 # Current number of processed clauses : 67
% 0.21/0.52 # Positive orientable unit clauses : 53
% 0.21/0.52 # Positive unorientable unit clauses: 0
% 0.21/0.52 # Negative unit clauses : 4
% 0.21/0.52 # Non-unit-clauses : 10
% 0.21/0.52 # Current number of unprocessed clauses: 135
% 0.21/0.52 # ...number of literals in the above : 500
% 0.21/0.52 # Current number of archived formulas : 0
% 0.21/0.52 # Current number of archived clauses : 195
% 0.21/0.52 # Clause-clause subsumption calls (NU) : 8034
% 0.21/0.52 # Rec. Clause-clause subsumption calls : 655
% 0.21/0.52 # Non-unit clause-clause subsumptions : 8
% 0.21/0.52 # Unit Clause-clause subsumption calls : 23
% 0.21/0.52 # Rewrite failures with RHS unbound : 0
% 0.21/0.52 # BW rewrite match attempts : 1
% 0.21/0.52 # BW rewrite match successes : 1
% 0.21/0.52 # Condensation attempts : 0
% 0.21/0.52 # Condensation successes : 0
% 0.21/0.52 # Termbank termtop insertions : 9384
% 0.21/0.52 # Search garbage collected termcells : 597
% 0.21/0.52
% 0.21/0.52 # -------------------------------------------------
% 0.21/0.52 # User time : 0.019 s
% 0.21/0.52 # System time : 0.008 s
% 0.21/0.52 # Total time : 0.027 s
% 0.21/0.52 # Maximum resident set size: 2164 pages
% 0.21/0.52
% 0.21/0.52 # -------------------------------------------------
% 0.21/0.52 # User time : 0.102 s
% 0.21/0.52 # System time : 0.022 s
% 0.21/0.52 # Total time : 0.124 s
% 0.21/0.52 # Maximum resident set size: 1888 pages
% 0.21/0.52 % E---3.1 exiting
% 0.21/0.52 % E exiting
%------------------------------------------------------------------------------