TSTP Solution File: ITP015_4 by E-SAT---3.1.00
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : E-SAT---3.1.00
% Problem : ITP015_4 : TPTP v8.2.0. Bugfixed v7.5.0.
% Transfm : none
% Format : tptp:raw
% Command : run_E %s %d THM
% Computer : n026.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 22:18:53 EDT 2024
% Result : Theorem 45.85s 16.43s
% Output : CNFRefutation 45.85s
% Verified :
% SZS Type : Refutation
% Derivation depth : 5
% Number of leaves : 25
% Syntax : Number of formulae : 39 ( 19 unt; 20 typ; 0 def)
% Number of atoms : 19 ( 18 equ)
% Maximal formula atoms : 1 ( 1 avg)
% Number of connectives : 3 ( 3 ~; 0 |; 0 &)
% ( 0 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 3 ( 2 avg)
% Maximal term depth : 8 ( 2 avg)
% Number of types : 5 ( 5 usr)
% Number of type conns : 12 ( 10 >; 2 *; 0 +; 0 <<)
% Number of predicates : 2 ( 0 usr; 1 prp; 0-2 aty)
% Number of functors : 15 ( 15 usr; 5 con; 0-2 aty)
% Number of variables : 19 ( 0 sgn 19 !; 0 ?; 19 :)
% Comments :
%------------------------------------------------------------------------------
tff(decl_sort1,type,
d: $tType ).
tff(decl_sort2,type,
u: $tType ).
tff(decl_sort3,type,
du: $tType ).
tff(decl_sort4,type,
mono_2Etyop_2Enum_2Enum: $tType ).
tff(decl_sort5,type,
mono_2Etyop_2Einteger_2Eint: $tType ).
tff(decl_22,type,
tyop_2Emin_2Ebool: d ).
tff(decl_24,type,
s: ( d * u ) > du ).
tff(decl_207,type,
tyop_2Enum_2Enum: d ).
tff(decl_228,type,
mono_2Ec_2Enum_2E0_2E0: mono_2Etyop_2Enum_2Enum ).
tff(decl_249,type,
i_mono_2Etyop_2Enum_2Enum: mono_2Etyop_2Enum_2Enum > u ).
tff(decl_2785,type,
tyop_2Efcp_2Ecart: ( d * d ) > d ).
tff(decl_5198,type,
tyop_2Einteger_2Eint: d ).
tff(decl_5339,type,
mono_2Ec_2Einteger_2Eint__of__num_2E1: mono_2Etyop_2Enum_2Enum > mono_2Etyop_2Einteger_2Eint ).
tff(decl_5382,type,
i_mono_2Etyop_2Einteger_2Eint: mono_2Etyop_2Einteger_2Eint > u ).
tff(decl_5404,type,
j_mono_2Etyop_2Einteger_2Eint: du > mono_2Etyop_2Einteger_2Eint ).
tff(decl_5841,type,
c_2Ewords_2En2w_2E1: du > u ).
tff(decl_5886,type,
c_2Ewords_2Eword__2comp_2E1: du > u ).
tff(decl_8330,type,
c_2Einteger__word_2Ei2w_2E1: du > u ).
tff(decl_8348,type,
c_2Einteger__word_2Ew2i_2E1: du > u ).
tff(decl_8404,type,
esk1_0: d ).
tff(ij_2Emono_2Etyop_2Einteger_2Eint,axiom,
! [X33672: u] : ( s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,X33672)))) = s(tyop_2Einteger_2Eint,X33672) ),
file('/export/starexec/sandbox/benchmark/Axioms/ITP001/ITP085_4.ax',ij_2Emono_2Etyop_2Einteger_2Eint) ).
tff(thm_2Einteger__word_2Eword__0__w2i,axiom,
! [X1: d] : ( j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0))))))) = mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',thm_2Einteger__word_2Eword__0__w2i) ).
tff(thm_2Einteger__word_2Ei2w__0,conjecture,
! [X1: d] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',thm_2Einteger__word_2Ei2w__0) ).
tff(thm_2Einteger__word_2Ei2w__w2i,axiom,
! [X1: d,X25780: u] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),X25780))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),X25780) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',thm_2Einteger__word_2Ei2w__w2i) ).
tff(thm_2Ewords_2EWORD__NEG__0,axiom,
! [X1: d] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2Eword__2comp_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))) ),
file('/export/starexec/sandbox/benchmark/Axioms/ITP001/ITP090_4.ax',thm_2Ewords_2EWORD__NEG__0) ).
tff(c_0_5,plain,
! [X47678: u] : ( s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,X47678)))) = s(tyop_2Einteger_2Eint,X47678) ),
inference(variable_rename,[status(thm)],[ij_2Emono_2Etyop_2Einteger_2Eint]) ).
tff(c_0_6,plain,
! [X47245: d] : ( j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X47245),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0))))))) = mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0) ),
inference(variable_rename,[status(thm)],[thm_2Einteger__word_2Eword__0__w2i]) ).
tff(c_0_7,negated_conjecture,
~ ! [X1: d] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))) ),
inference(assume_negation,[status(cth)],[thm_2Einteger__word_2Ei2w__0]) ).
tff(c_0_8,plain,
! [X45230: d,X45231: u] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X45230),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X45230),X45231))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X45230),X45231) ),
inference(variable_rename,[status(thm)],[thm_2Einteger__word_2Ei2w__w2i]) ).
tff(c_0_9,plain,
! [X46720: d] : ( s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X46720),c_2Ewords_2Eword__2comp_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X46720),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X46720),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))) ),
inference(variable_rename,[status(thm)],[thm_2Ewords_2EWORD__NEG__0]) ).
tcf(c_0_10,plain,
! [X3: u] : s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,X3)))) = s(tyop_2Einteger_2Eint,X3),
inference(split_conjunct,[status(thm)],[c_0_5]) ).
tcf(c_0_11,plain,
! [X1: d] : j_mono_2Etyop_2Einteger_2Eint(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0))))))) = mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0),
inference(split_conjunct,[status(thm)],[c_0_6]) ).
tff(c_0_12,negated_conjecture,
s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,esk1_0),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))))) != s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,esk1_0),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))),
inference(fof_nnf,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_7])])])]) ).
tcf(c_0_13,plain,
! [X1: d,X3: u] : s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),X3))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),X3),
inference(split_conjunct,[status(thm)],[c_0_8]) ).
tcf(c_0_14,plain,
! [X1: d] : s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2Eword__2comp_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))),
inference(split_conjunct,[status(thm)],[c_0_9]) ).
tcf(c_0_15,plain,
! [X1: d] : s(tyop_2Einteger_2Eint,c_2Einteger__word_2Ew2i_2E1(s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))))) = s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))),
inference(spm,[status(thm)],[c_0_10,c_0_11]) ).
tcf(c_0_16,negated_conjecture,
s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,esk1_0),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))))) != s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,esk1_0),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))),
inference(split_conjunct,[status(thm)],[c_0_12]) ).
tcf(c_0_17,plain,
! [X1: d] : s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Einteger__word_2Ei2w_2E1(s(tyop_2Einteger_2Eint,i_mono_2Etyop_2Einteger_2Eint(mono_2Ec_2Einteger_2Eint__of__num_2E1(mono_2Ec_2Enum_2E0_2E0))))) = s(tyop_2Efcp_2Ecart(tyop_2Emin_2Ebool,X1),c_2Ewords_2En2w_2E1(s(tyop_2Enum_2Enum,i_mono_2Etyop_2Enum_2Enum(mono_2Ec_2Enum_2E0_2E0)))),
inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_13,c_0_14]),c_0_15]) ).
cnf(c_0_18,negated_conjecture,
$false,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[c_0_16,c_0_17])]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.04/0.12 % Problem : ITP015_4 : TPTP v8.2.0. Bugfixed v7.5.0.
% 0.04/0.13 % Command : run_E %s %d THM
% 0.12/0.34 % Computer : n026.cluster.edu
% 0.12/0.34 % Model : x86_64 x86_64
% 0.12/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.34 % Memory : 8042.1875MB
% 0.12/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.12/0.34 % CPULimit : 300
% 0.12/0.34 % WCLimit : 300
% 0.12/0.34 % DateTime : Sat May 18 16:54:24 EDT 2024
% 0.12/0.34 % CPUTime :
% 0.19/0.46 Running first-order model finding
% 0.19/0.46 Running: /export/starexec/sandbox/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/sandbox/benchmark/theBenchmark.p
% 45.85/16.43 # Version: 3.1.0
% 45.85/16.43 # Preprocessing class: FMLLSMLLSSSNFFN.
% 45.85/16.43 # Scheduled 4 strats onto 8 cores with 291 seconds (2328 total)
% 45.85/16.43 # Starting new_bool_3 with 873s (3) cores
% 45.85/16.43 # Starting new_bool_1 with 873s (3) cores
% 45.85/16.43 # Starting sh5l with 291s (1) cores
% 45.85/16.43 # Starting G-E--_301_C18_F1_URBAN_S5PRR_RG_S0Y with 291s (1) cores
% 45.85/16.43 # new_bool_3 with pid 31556 completed with status 0
% 45.85/16.43 # Result found by new_bool_3
% 45.85/16.43 # Preprocessing class: FMLLSMLLSSSNFFN.
% 45.85/16.43 # Scheduled 4 strats onto 8 cores with 291 seconds (2328 total)
% 45.85/16.43 # Starting new_bool_3 with 873s (3) cores
% 45.85/16.43 # SinE strategy is GSinE(CountFormulas,hypos,1.5,,3,20000,1.0)
% 45.85/16.43 # Search class: FGHSM-SMLM33-DFFFFFNN
% 45.85/16.43 # Scheduled 6 strats onto 3 cores with 871 seconds (871 total)
% 45.85/16.43 # Starting SAT001_MinMin_p005000_rr with 471s (1) cores
% 45.85/16.43 # Starting new_bool_3 with 88s (1) cores
% 45.85/16.43 # Starting SAT001_CA_MinMin_p005000_rr with 79s (1) cores
% 45.85/16.43 # SAT001_CA_MinMin_p005000_rr with pid 31562 completed with status 0
% 45.85/16.43 # Result found by SAT001_CA_MinMin_p005000_rr
% 45.85/16.43 # Preprocessing class: FMLLSMLLSSSNFFN.
% 45.85/16.43 # Scheduled 4 strats onto 8 cores with 291 seconds (2328 total)
% 45.85/16.43 # Starting new_bool_3 with 873s (3) cores
% 45.85/16.43 # SinE strategy is GSinE(CountFormulas,hypos,1.5,,3,20000,1.0)
% 45.85/16.43 # Search class: FGHSM-SMLM33-DFFFFFNN
% 45.85/16.43 # Scheduled 6 strats onto 3 cores with 871 seconds (871 total)
% 45.85/16.43 # Starting SAT001_MinMin_p005000_rr with 471s (1) cores
% 45.85/16.43 # Starting new_bool_3 with 88s (1) cores
% 45.85/16.43 # Starting SAT001_CA_MinMin_p005000_rr with 79s (1) cores
% 45.85/16.43 # Preprocessing time : 0.259 s
% 45.85/16.43 # Presaturation interreduction done
% 45.85/16.43
% 45.85/16.43 # Proof found!
% 45.85/16.43 # SZS status Theorem
% 45.85/16.43 # SZS output start CNFRefutation
% See solution above
% 45.85/16.43 # Parsed axioms : 53921
% 45.85/16.43 # Removed by relevancy pruning/SinE : 51525
% 45.85/16.43 # Initial clauses : 5116
% 45.85/16.43 # Removed in clause preprocessing : 917
% 45.85/16.43 # Initial clauses in saturation : 4199
% 45.85/16.43 # Processed clauses : 5184
% 45.85/16.43 # ...of these trivial : 794
% 45.85/16.43 # ...subsumed : 1247
% 45.85/16.43 # ...remaining for further processing : 3143
% 45.85/16.43 # Other redundant clauses eliminated : 274
% 45.85/16.43 # Clauses deleted for lack of memory : 0
% 45.85/16.43 # Backward-subsumed : 14
% 45.85/16.43 # Backward-rewritten : 108
% 45.85/16.43 # Generated clauses : 1648
% 45.85/16.43 # ...of the previous two non-redundant : 1190
% 45.85/16.43 # ...aggressively subsumed : 0
% 45.85/16.43 # Contextual simplify-reflections : 13
% 45.85/16.43 # Paramodulations : 1379
% 45.85/16.43 # Factorizations : 2
% 45.85/16.43 # NegExts : 0
% 45.85/16.43 # Equation resolutions : 286
% 45.85/16.43 # Disequality decompositions : 0
% 45.85/16.43 # Total rewrite steps : 9193
% 45.85/16.43 # ...of those cached : 7986
% 45.85/16.43 # Propositional unsat checks : 0
% 45.85/16.43 # Propositional check models : 0
% 45.85/16.43 # Propositional check unsatisfiable : 0
% 45.85/16.43 # Propositional clauses : 0
% 45.85/16.43 # Propositional clauses after purity: 0
% 45.85/16.43 # Propositional unsat core size : 0
% 45.85/16.43 # Propositional preprocessing time : 0.000
% 45.85/16.43 # Propositional encoding time : 0.000
% 45.85/16.43 # Propositional solver time : 0.000
% 45.85/16.43 # Success case prop preproc time : 0.000
% 45.85/16.43 # Success case prop encoding time : 0.000
% 45.85/16.43 # Success case prop solver time : 0.000
% 45.85/16.43 # Current number of processed clauses : 333
% 45.85/16.43 # Positive orientable unit clauses : 142
% 45.85/16.43 # Positive unorientable unit clauses: 2
% 45.85/16.43 # Negative unit clauses : 59
% 45.85/16.43 # Non-unit-clauses : 130
% 45.85/16.43 # Current number of unprocessed clauses: 2649
% 45.85/16.43 # ...number of literals in the above : 9146
% 45.85/16.43 # Current number of archived formulas : 0
% 45.85/16.43 # Current number of archived clauses : 2598
% 45.85/16.43 # Clause-clause subsumption calls (NU) : 3305334
% 45.85/16.43 # Rec. Clause-clause subsumption calls : 290146
% 45.85/16.43 # Non-unit clause-clause subsumptions : 793
% 45.85/16.43 # Unit Clause-clause subsumption calls : 15110
% 45.85/16.43 # Rewrite failures with RHS unbound : 14
% 45.85/16.43 # BW rewrite match attempts : 5769
% 45.85/16.43 # BW rewrite match successes : 255
% 45.85/16.43 # Condensation attempts : 7046
% 45.85/16.43 # Condensation successes : 55
% 45.85/16.43 # Termbank termtop insertions : 1823274
% 45.85/16.43 # Search garbage collected termcells : 456487
% 45.85/16.43
% 45.85/16.43 # -------------------------------------------------
% 45.85/16.43 # User time : 5.625 s
% 45.85/16.43 # System time : 0.247 s
% 45.85/16.43 # Total time : 5.873 s
% 45.85/16.43 # Maximum resident set size: 107540 pages
% 45.85/16.43
% 45.85/16.43 # -------------------------------------------------
% 45.85/16.43 # User time : 21.408 s
% 45.85/16.43 # System time : 0.551 s
% 45.85/16.43 # Total time : 21.959 s
% 45.85/16.43 # Maximum resident set size: 91284 pages
% 45.85/16.43 % E---3.1 exiting
%------------------------------------------------------------------------------