TSTP Solution File: GEO270+1 by E---3.1
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : E---3.1
% Problem : GEO270+1 : TPTP v8.1.2. Released v4.1.0.
% Transfm : none
% Format : tptp:raw
% Command : run_E %s %d THM
% Computer : n031.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 17:32:28 EDT 2023
% Result : Theorem 2.12s 0.70s
% Output : CNFRefutation 2.12s
% Verified :
% SZS Type : Refutation
% Derivation depth : 7
% Number of leaves : 6
% Syntax : Number of formulae : 32 ( 9 unt; 0 def)
% Number of atoms : 136 ( 85 equ)
% Maximal formula atoms : 8 ( 4 avg)
% Number of connectives : 176 ( 72 ~; 71 |; 23 &)
% ( 0 <=>; 10 =>; 0 <=; 0 <~>)
% Maximal formula depth : 15 ( 6 avg)
% Maximal term depth : 5 ( 1 avg)
% Number of predicates : 3 ( 1 usr; 1 prp; 0-2 aty)
% Number of functors : 8 ( 8 usr; 4 con; 0-6 aty)
% Number of variables : 80 ( 0 sgn; 43 !; 4 ?)
% Comments :
%------------------------------------------------------------------------------
fof('qe(208)',conjecture,
? [X1] :
( vf(vd1049,X1) = vf(X1,vd1047)
& vf(vd1047,vd1049) = vf(vd1049,X1)
& rpoint(X1) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','qe(208)') ).
fof('qu(cond(axiom(166), 0), imp(cond(axiom(166), 0)))',axiom,
! [X15,X16] :
( ( ? [X17] :
( X16 = X17
& rpoint(X17) )
& ? [X18] :
( X15 = X18
& rpoint(X18) ) )
=> vf(X15,X16) = vf(X16,X15) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','qu(cond(axiom(166), 0), imp(cond(axiom(166), 0)))') ).
fof('and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))',axiom,
( vd1049 = vd1050
& vd1047 != vd1049
& rpoint(vd1050)
& vd1047 = vd1048
& rpoint(vd1048) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))') ).
fof('ass(cond(proof(209), 0), 3)',axiom,
! [X2,X3,X4,X5] :
( ( X4 = X5
& X2 != X4
& rpoint(X5)
& X2 = X3
& rpoint(X3) )
=> ! [X6] :
( X6 = vskolem1061(X2,X3,X4,X5)
=> ! [X7] :
( X7 = vskolem1063(X6,X2,X3,X4,X5)
=> vf(X2,X4) = vf(X2,vskolem1064(X7,X6,X2,X3,X4,X5)) ) ) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','ass(cond(proof(209), 0), 3)') ).
fof('ass(cond(proof(209), 0), 1)',axiom,
! [X2,X3,X4,X5] :
( ( X4 = X5
& X2 != X4
& rpoint(X5)
& X2 = X3
& rpoint(X3) )
=> ! [X6] :
( X6 = vskolem1061(X2,X3,X4,X5)
=> ! [X7] :
( X7 = vskolem1063(X6,X2,X3,X4,X5)
=> vf(X2,X4) = vf(X4,vskolem1064(X7,X6,X2,X3,X4,X5)) ) ) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','ass(cond(proof(209), 0), 1)') ).
fof('ass(cond(proof(209), 0), 6)',axiom,
! [X2,X3,X4,X5] :
( ( X4 = X5
& X2 != X4
& rpoint(X5)
& X2 = X3
& rpoint(X3) )
=> ! [X6] :
( X6 = vskolem1061(X2,X3,X4,X5)
=> ! [X7] :
( X7 = vskolem1063(X6,X2,X3,X4,X5)
=> rpoint(vskolem1064(X7,X6,X2,X3,X4,X5)) ) ) ),
file('/export/starexec/sandbox/tmp/tmp.ASoBiXHmWM/E---3.1_25750.p','ass(cond(proof(209), 0), 6)') ).
fof(c_0_6,negated_conjecture,
~ ? [X1] :
( vf(vd1049,X1) = vf(X1,vd1047)
& vf(vd1047,vd1049) = vf(vd1049,X1)
& rpoint(X1) ),
inference(assume_negation,[status(cth)],['qe(208)']) ).
fof(c_0_7,plain,
! [X810,X811,X812,X813] :
( X811 != X812
| ~ rpoint(X812)
| X810 != X813
| ~ rpoint(X813)
| vf(X810,X811) = vf(X811,X810) ),
inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],['qu(cond(axiom(166), 0), imp(cond(axiom(166), 0)))'])])]) ).
fof(c_0_8,negated_conjecture,
! [X735] :
( vf(vd1049,X735) != vf(X735,vd1047)
| vf(vd1047,vd1049) != vf(vd1049,X735)
| ~ rpoint(X735) ),
inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_6])]) ).
cnf(c_0_9,plain,
( vf(X3,X1) = vf(X1,X3)
| X1 != X2
| ~ rpoint(X2)
| X3 != X4
| ~ rpoint(X4) ),
inference(split_conjunct,[status(thm)],[c_0_7]) ).
cnf(c_0_10,plain,
rpoint(vd1048),
inference(split_conjunct,[status(thm)],['and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))']) ).
cnf(c_0_11,plain,
vd1047 = vd1048,
inference(split_conjunct,[status(thm)],['and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))']) ).
fof(c_0_12,plain,
! [X754,X755,X756,X757,X758,X759] :
( X756 != X757
| X754 = X756
| ~ rpoint(X757)
| X754 != X755
| ~ rpoint(X755)
| X758 != vskolem1061(X754,X755,X756,X757)
| X759 != vskolem1063(X758,X754,X755,X756,X757)
| vf(X754,X756) = vf(X754,vskolem1064(X759,X758,X754,X755,X756,X757)) ),
inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],['ass(cond(proof(209), 0), 3)'])])]) ).
cnf(c_0_13,negated_conjecture,
( vf(vd1049,X1) != vf(X1,vd1047)
| vf(vd1047,vd1049) != vf(vd1049,X1)
| ~ rpoint(X1) ),
inference(split_conjunct,[status(thm)],[c_0_8]) ).
cnf(c_0_14,plain,
( vf(X1,X2) = vf(X2,X1)
| ~ rpoint(X2)
| ~ rpoint(X1) ),
inference(er,[status(thm)],[inference(er,[status(thm)],[c_0_9])]) ).
cnf(c_0_15,plain,
rpoint(vd1047),
inference(rw,[status(thm)],[c_0_10,c_0_11]) ).
cnf(c_0_16,plain,
( X3 = X1
| vf(X3,X1) = vf(X3,vskolem1064(X6,X5,X3,X4,X1,X2))
| X1 != X2
| ~ rpoint(X2)
| X3 != X4
| ~ rpoint(X4)
| X5 != vskolem1061(X3,X4,X1,X2)
| X6 != vskolem1063(X5,X3,X4,X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_12]) ).
fof(c_0_17,plain,
! [X742,X743,X744,X745,X746,X747] :
( X744 != X745
| X742 = X744
| ~ rpoint(X745)
| X742 != X743
| ~ rpoint(X743)
| X746 != vskolem1061(X742,X743,X744,X745)
| X747 != vskolem1063(X746,X742,X743,X744,X745)
| vf(X742,X744) = vf(X744,vskolem1064(X747,X746,X742,X743,X744,X745)) ),
inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],['ass(cond(proof(209), 0), 1)'])])]) ).
cnf(c_0_18,negated_conjecture,
( vf(vd1047,vd1049) != vf(vd1049,X1)
| vf(vd1047,X1) != vf(vd1049,X1)
| ~ rpoint(X1) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_13,c_0_14]),c_0_15])]) ).
cnf(c_0_19,plain,
( vf(X1,vskolem1064(vskolem1063(vskolem1061(X1,X1,X2,X2),X1,X1,X2,X2),vskolem1061(X1,X1,X2,X2),X1,X1,X2,X2)) = vf(X1,X2)
| X2 = X1
| ~ rpoint(X1)
| ~ rpoint(X2) ),
inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[c_0_16])])])]) ).
cnf(c_0_20,plain,
( X3 = X1
| vf(X3,X1) = vf(X1,vskolem1064(X6,X5,X3,X4,X1,X2))
| X1 != X2
| ~ rpoint(X2)
| X3 != X4
| ~ rpoint(X4)
| X5 != vskolem1061(X3,X4,X1,X2)
| X6 != vskolem1063(X5,X3,X4,X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_17]) ).
cnf(c_0_21,plain,
rpoint(vd1050),
inference(split_conjunct,[status(thm)],['and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))']) ).
cnf(c_0_22,plain,
vd1049 = vd1050,
inference(split_conjunct,[status(thm)],['and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))']) ).
fof(c_0_23,plain,
! [X772,X773,X774,X775,X776,X777] :
( X774 != X775
| X772 = X774
| ~ rpoint(X775)
| X772 != X773
| ~ rpoint(X773)
| X776 != vskolem1061(X772,X773,X774,X775)
| X777 != vskolem1063(X776,X772,X773,X774,X775)
| rpoint(vskolem1064(X777,X776,X772,X773,X774,X775)) ),
inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],['ass(cond(proof(209), 0), 6)'])])]) ).
cnf(c_0_24,negated_conjecture,
( X1 = vd1047
| vf(vd1049,vskolem1064(vskolem1063(vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1),vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1)) != vf(vd1047,vd1049)
| vf(vd1049,vskolem1064(vskolem1063(vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1),vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1)) != vf(vd1047,X1)
| ~ rpoint(vskolem1064(vskolem1063(vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1),vskolem1061(vd1047,vd1047,X1,X1),vd1047,vd1047,X1,X1))
| ~ rpoint(X1) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_18,c_0_19]),c_0_15])]) ).
cnf(c_0_25,plain,
( vf(X1,vskolem1064(vskolem1063(vskolem1061(X2,X2,X1,X1),X2,X2,X1,X1),vskolem1061(X2,X2,X1,X1),X2,X2,X1,X1)) = vf(X2,X1)
| X1 = X2
| ~ rpoint(X2)
| ~ rpoint(X1) ),
inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[c_0_20])])])]) ).
cnf(c_0_26,plain,
rpoint(vd1049),
inference(rw,[status(thm)],[c_0_21,c_0_22]) ).
cnf(c_0_27,plain,
vd1047 != vd1049,
inference(split_conjunct,[status(thm)],['and(pred(conjunct2(207), 4), and(holds(conjunct2(207), 1051, 0), and(pred(conjunct2(207), 1), and(pred(conjunct1(207), 2), pred(conjunct1(207), 1)))))']) ).
cnf(c_0_28,plain,
( X3 = X1
| rpoint(vskolem1064(X6,X5,X3,X4,X1,X2))
| X1 != X2
| ~ rpoint(X2)
| X3 != X4
| ~ rpoint(X4)
| X5 != vskolem1061(X3,X4,X1,X2)
| X6 != vskolem1063(X5,X3,X4,X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_23]) ).
cnf(c_0_29,negated_conjecture,
~ rpoint(vskolem1064(vskolem1063(vskolem1061(vd1047,vd1047,vd1049,vd1049),vd1047,vd1047,vd1049,vd1049),vskolem1061(vd1047,vd1047,vd1049,vd1049),vd1047,vd1047,vd1049,vd1049)),
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_24,c_0_25]),c_0_26]),c_0_15])]),c_0_27]) ).
cnf(c_0_30,plain,
( X1 = X2
| rpoint(vskolem1064(vskolem1063(vskolem1061(X2,X2,X1,X1),X2,X2,X1,X1),vskolem1061(X2,X2,X1,X1),X2,X2,X1,X1))
| ~ rpoint(X2)
| ~ rpoint(X1) ),
inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[inference(er,[status(thm)],[c_0_28])])])]) ).
cnf(c_0_31,negated_conjecture,
$false,
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_29,c_0_30]),c_0_15]),c_0_26])]),c_0_27]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.11 % Problem : GEO270+1 : TPTP v8.1.2. Released v4.1.0.
% 0.11/0.12 % Command : run_E %s %d THM
% 0.12/0.32 % Computer : n031.cluster.edu
% 0.12/0.32 % Model : x86_64 x86_64
% 0.12/0.32 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.32 % Memory : 8042.1875MB
% 0.12/0.32 % OS : Linux 3.10.0-693.el7.x86_64
% 0.12/0.32 % CPULimit : 2400
% 0.12/0.32 % WCLimit : 300
% 0.12/0.32 % DateTime : Tue Oct 3 07:04:29 EDT 2023
% 0.12/0.32 % 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.ASoBiXHmWM/E---3.1_25750.p
% 2.12/0.70 # Version: 3.1pre001
% 2.12/0.70 # Preprocessing class: FSLSSMSMSSSNFFN.
% 2.12/0.70 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 2.12/0.70 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 2.12/0.70 # Starting new_bool_3 with 300s (1) cores
% 2.12/0.70 # Starting new_bool_1 with 300s (1) cores
% 2.12/0.70 # Starting sh5l with 300s (1) cores
% 2.12/0.70 # C07_19_nc_SOS_SAT001_MinMin_p005000_rr with pid 25828 completed with status 0
% 2.12/0.70 # Result found by C07_19_nc_SOS_SAT001_MinMin_p005000_rr
% 2.12/0.70 # Preprocessing class: FSLSSMSMSSSNFFN.
% 2.12/0.70 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 2.12/0.70 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 2.12/0.70 # No SInE strategy applied
% 2.12/0.70 # Search class: FGHSF-FSLM33-SFFFFFNN
% 2.12/0.70 # Scheduled 10 strats onto 5 cores with 1500 seconds (1500 total)
% 2.12/0.70 # Starting G-E--_107_C41_F1_PI_AE_Q4_CS_SP_PS_S2U with 271s (1) cores
% 2.12/0.70 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 151s (1) cores
% 2.12/0.70 # Starting H----_102_C18_F1_PI_AE_CS_SP_PS_S0Y with 136s (1) cores
% 2.12/0.70 # Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d with 136s (1) cores
% 2.12/0.70 # Starting G-E--_110_C45_F1_PI_AE_Q4_CS_SP_PS_S4S with 136s (1) cores
% 2.12/0.70 # G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d with pid 25836 completed with status 0
% 2.12/0.70 # Result found by G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d
% 2.12/0.70 # Preprocessing class: FSLSSMSMSSSNFFN.
% 2.12/0.70 # Scheduled 4 strats onto 8 cores with 300 seconds (2400 total)
% 2.12/0.70 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 1500s (5) cores
% 2.12/0.70 # No SInE strategy applied
% 2.12/0.70 # Search class: FGHSF-FSLM33-SFFFFFNN
% 2.12/0.70 # Scheduled 10 strats onto 5 cores with 1500 seconds (1500 total)
% 2.12/0.70 # Starting G-E--_107_C41_F1_PI_AE_Q4_CS_SP_PS_S2U with 271s (1) cores
% 2.12/0.70 # Starting C07_19_nc_SOS_SAT001_MinMin_p005000_rr with 151s (1) cores
% 2.12/0.70 # Starting H----_102_C18_F1_PI_AE_CS_SP_PS_S0Y with 136s (1) cores
% 2.12/0.70 # Starting G-E--_208_C18_F1_SE_CS_SP_PS_S5PRR_S4d with 136s (1) cores
% 2.12/0.70 # Preprocessing time : 0.017 s
% 2.12/0.70 # Presaturation interreduction done
% 2.12/0.70
% 2.12/0.70 # Proof found!
% 2.12/0.70 # SZS status Theorem
% 2.12/0.70 # SZS output start CNFRefutation
% See solution above
% 2.12/0.70 # Parsed axioms : 116
% 2.12/0.70 # Removed by relevancy pruning/SinE : 0
% 2.12/0.70 # Initial clauses : 270
% 2.12/0.70 # Removed in clause preprocessing : 2
% 2.12/0.70 # Initial clauses in saturation : 268
% 2.12/0.70 # Processed clauses : 949
% 2.12/0.70 # ...of these trivial : 0
% 2.12/0.70 # ...subsumed : 142
% 2.12/0.70 # ...remaining for further processing : 807
% 2.12/0.70 # Other redundant clauses eliminated : 1151
% 2.12/0.70 # Clauses deleted for lack of memory : 0
% 2.12/0.70 # Backward-subsumed : 2
% 2.12/0.70 # Backward-rewritten : 0
% 2.12/0.70 # Generated clauses : 1036
% 2.12/0.70 # ...of the previous two non-redundant : 994
% 2.12/0.70 # ...aggressively subsumed : 0
% 2.12/0.70 # Contextual simplify-reflections : 25
% 2.12/0.70 # Paramodulations : 771
% 2.12/0.70 # Factorizations : 8
% 2.12/0.70 # NegExts : 0
% 2.12/0.70 # Equation resolutions : 1152
% 2.12/0.70 # Total rewrite steps : 59
% 2.12/0.70 # Propositional unsat checks : 0
% 2.12/0.70 # Propositional check models : 0
% 2.12/0.70 # Propositional check unsatisfiable : 0
% 2.12/0.70 # Propositional clauses : 0
% 2.12/0.70 # Propositional clauses after purity: 0
% 2.12/0.70 # Propositional unsat core size : 0
% 2.12/0.70 # Propositional preprocessing time : 0.000
% 2.12/0.70 # Propositional encoding time : 0.000
% 2.12/0.70 # Propositional solver time : 0.000
% 2.12/0.70 # Success case prop preproc time : 0.000
% 2.12/0.70 # Success case prop encoding time : 0.000
% 2.12/0.70 # Success case prop solver time : 0.000
% 2.12/0.70 # Current number of processed clauses : 285
% 2.12/0.70 # Positive orientable unit clauses : 7
% 2.12/0.70 # Positive unorientable unit clauses: 0
% 2.12/0.70 # Negative unit clauses : 7
% 2.12/0.70 # Non-unit-clauses : 271
% 2.12/0.70 # Current number of unprocessed clauses: 578
% 2.12/0.70 # ...number of literals in the above : 5495
% 2.12/0.70 # Current number of archived formulas : 0
% 2.12/0.70 # Current number of archived clauses : 268
% 2.12/0.70 # Clause-clause subsumption calls (NU) : 381240
% 2.12/0.70 # Rec. Clause-clause subsumption calls : 10625
% 2.12/0.70 # Non-unit clause-clause subsumptions : 163
% 2.12/0.70 # Unit Clause-clause subsumption calls : 64
% 2.12/0.70 # Rewrite failures with RHS unbound : 0
% 2.12/0.70 # BW rewrite match attempts : 0
% 2.12/0.70 # BW rewrite match successes : 0
% 2.12/0.70 # Condensation attempts : 0
% 2.12/0.70 # Condensation successes : 0
% 2.12/0.70 # Termbank termtop insertions : 78159
% 2.12/0.70
% 2.12/0.70 # -------------------------------------------------
% 2.12/0.70 # User time : 0.245 s
% 2.12/0.70 # System time : 0.006 s
% 2.12/0.70 # Total time : 0.251 s
% 2.12/0.70 # Maximum resident set size: 4312 pages
% 2.12/0.70
% 2.12/0.70 # -------------------------------------------------
% 2.12/0.70 # User time : 1.103 s
% 2.12/0.70 # System time : 0.041 s
% 2.12/0.70 # Total time : 1.144 s
% 2.12/0.70 # Maximum resident set size: 2548 pages
% 2.12/0.70 % E---3.1 exiting
% 2.12/0.70 % E---3.1 exiting
%------------------------------------------------------------------------------