TSTP Solution File: SET646+3 by CSE_E---1.5
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : CSE_E---1.5
% Problem : SET646+3 : TPTP v8.1.2. Released v2.2.0.
% Transfm : none
% Format : tptp:raw
% Command : java -jar /export/starexec/sandbox/solver/bin/mcs_scs.jar %d %s
% Computer : n012.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 : Thu Aug 31 14:35:02 EDT 2023
% Result : Theorem 0.19s 0.61s
% Output : CNFRefutation 0.19s
% Verified :
% SZS Type : Refutation
% Derivation depth : 9
% Number of leaves : 38
% Syntax : Number of formulae : 78 ( 11 unt; 29 typ; 0 def)
% Number of atoms : 246 ( 15 equ)
% Maximal formula atoms : 31 ( 5 avg)
% Number of connectives : 320 ( 123 ~; 126 |; 26 &)
% ( 9 <=>; 36 =>; 0 <=; 0 <~>)
% Maximal formula depth : 15 ( 6 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of types : 2 ( 0 usr)
% Number of type conns : 38 ( 24 >; 14 *; 0 +; 0 <<)
% Number of predicates : 7 ( 5 usr; 1 prp; 0-2 aty)
% Number of functors : 24 ( 24 usr; 5 con; 0-2 aty)
% Number of variables : 103 ( 3 sgn; 56 !; 0 ?; 0 :)
% Comments :
%------------------------------------------------------------------------------
tff(decl_22,type,
set_type: $i ).
tff(decl_23,type,
ilf_type: ( $i * $i ) > $o ).
tff(decl_24,type,
singleton: $i > $i ).
tff(decl_25,type,
subset: ( $i * $i ) > $o ).
tff(decl_26,type,
member: ( $i * $i ) > $o ).
tff(decl_27,type,
ordered_pair: ( $i * $i ) > $i ).
tff(decl_28,type,
cross_product: ( $i * $i ) > $i ).
tff(decl_29,type,
subset_type: $i > $i ).
tff(decl_30,type,
relation_type: ( $i * $i ) > $i ).
tff(decl_31,type,
unordered_pair: ( $i * $i ) > $i ).
tff(decl_32,type,
power_set: $i > $i ).
tff(decl_33,type,
member_type: $i > $i ).
tff(decl_34,type,
empty: $i > $o ).
tff(decl_35,type,
relation_like: $i > $o ).
tff(decl_36,type,
esk1_2: ( $i * $i ) > $i ).
tff(decl_37,type,
esk2_2: ( $i * $i ) > $i ).
tff(decl_38,type,
esk3_1: $i > $i ).
tff(decl_39,type,
esk4_2: ( $i * $i ) > $i ).
tff(decl_40,type,
esk5_2: ( $i * $i ) > $i ).
tff(decl_41,type,
esk6_2: ( $i * $i ) > $i ).
tff(decl_42,type,
esk7_1: $i > $i ).
tff(decl_43,type,
esk8_1: $i > $i ).
tff(decl_44,type,
esk9_2: ( $i * $i ) > $i ).
tff(decl_45,type,
esk10_2: ( $i * $i ) > $i ).
tff(decl_46,type,
esk11_1: $i > $i ).
tff(decl_47,type,
esk12_0: $i ).
tff(decl_48,type,
esk13_0: $i ).
tff(decl_49,type,
esk14_0: $i ).
tff(decl_50,type,
esk15_0: $i ).
fof(p5,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ! [X3] :
( ilf_type(X3,set_type)
=> ( X3 = singleton(X2)
<=> ! [X4] :
( ilf_type(X4,set_type)
=> ( member(X4,X3)
<=> X4 = X2 ) ) ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p5) ).
fof(p25,axiom,
! [X1] : ilf_type(X1,set_type),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p25) ).
fof(p17,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ( member(X1,power_set(X2))
<=> ! [X3] :
( ilf_type(X3,set_type)
=> ( member(X3,X1)
=> member(X3,X2) ) ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p17) ).
fof(p2,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ! [X3] :
( ilf_type(X3,set_type)
=> ! [X4] :
( ilf_type(X4,set_type)
=> ( member(ordered_pair(X1,X2),cross_product(X3,X4))
<=> ( member(X1,X3)
& member(X2,X4) ) ) ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p2) ).
fof(prove_relset_1_8,conjecture,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ! [X3] :
( ilf_type(X3,set_type)
=> ! [X4] :
( ilf_type(X4,set_type)
=> ( ( member(X3,X1)
& member(X4,X2) )
=> ilf_type(singleton(ordered_pair(X3,X4)),relation_type(X1,X2)) ) ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',prove_relset_1_8) ).
fof(p21,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ( empty(X1)
<=> ! [X2] :
( ilf_type(X2,set_type)
=> ~ member(X2,X1) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p21) ).
fof(p19,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ( ~ empty(X2)
& ilf_type(X2,set_type) )
=> ( ilf_type(X1,member_type(X2))
<=> member(X1,X2) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p19) ).
fof(p12,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ( ilf_type(X2,subset_type(X1))
<=> ilf_type(X2,member_type(power_set(X1))) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p12) ).
fof(p3,axiom,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ( ! [X3] :
( ilf_type(X3,subset_type(cross_product(X1,X2)))
=> ilf_type(X3,relation_type(X1,X2)) )
& ! [X4] :
( ilf_type(X4,relation_type(X1,X2))
=> ilf_type(X4,subset_type(cross_product(X1,X2))) ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',p3) ).
fof(c_0_9,plain,
! [X19,X20,X21,X22] :
( ( ~ member(X22,X21)
| X22 = X20
| ~ ilf_type(X22,set_type)
| X21 != singleton(X20)
| ~ ilf_type(X21,set_type)
| ~ ilf_type(X20,set_type)
| ~ ilf_type(X19,set_type) )
& ( X22 != X20
| member(X22,X21)
| ~ ilf_type(X22,set_type)
| X21 != singleton(X20)
| ~ ilf_type(X21,set_type)
| ~ ilf_type(X20,set_type)
| ~ ilf_type(X19,set_type) )
& ( ilf_type(esk2_2(X20,X21),set_type)
| X21 = singleton(X20)
| ~ ilf_type(X21,set_type)
| ~ ilf_type(X20,set_type)
| ~ ilf_type(X19,set_type) )
& ( ~ member(esk2_2(X20,X21),X21)
| esk2_2(X20,X21) != X20
| X21 = singleton(X20)
| ~ ilf_type(X21,set_type)
| ~ ilf_type(X20,set_type)
| ~ ilf_type(X19,set_type) )
& ( member(esk2_2(X20,X21),X21)
| esk2_2(X20,X21) = X20
| X21 = singleton(X20)
| ~ ilf_type(X21,set_type)
| ~ ilf_type(X20,set_type)
| ~ ilf_type(X19,set_type) ) ),
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)],[p5])])])])])]) ).
fof(c_0_10,plain,
! [X74] : ilf_type(X74,set_type),
inference(variable_rename,[status(thm)],[p25]) ).
fof(c_0_11,plain,
! [X51,X52,X53] :
( ( ~ member(X51,power_set(X52))
| ~ ilf_type(X53,set_type)
| ~ member(X53,X51)
| member(X53,X52)
| ~ ilf_type(X52,set_type)
| ~ ilf_type(X51,set_type) )
& ( ilf_type(esk6_2(X51,X52),set_type)
| member(X51,power_set(X52))
| ~ ilf_type(X52,set_type)
| ~ ilf_type(X51,set_type) )
& ( member(esk6_2(X51,X52),X51)
| member(X51,power_set(X52))
| ~ ilf_type(X52,set_type)
| ~ ilf_type(X51,set_type) )
& ( ~ member(esk6_2(X51,X52),X52)
| member(X51,power_set(X52))
| ~ ilf_type(X52,set_type)
| ~ ilf_type(X51,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[p17])])])])]) ).
fof(c_0_12,plain,
! [X8,X9,X10,X11] :
( ( member(X8,X10)
| ~ member(ordered_pair(X8,X9),cross_product(X10,X11))
| ~ ilf_type(X11,set_type)
| ~ ilf_type(X10,set_type)
| ~ ilf_type(X9,set_type)
| ~ ilf_type(X8,set_type) )
& ( member(X9,X11)
| ~ member(ordered_pair(X8,X9),cross_product(X10,X11))
| ~ ilf_type(X11,set_type)
| ~ ilf_type(X10,set_type)
| ~ ilf_type(X9,set_type)
| ~ ilf_type(X8,set_type) )
& ( ~ member(X8,X10)
| ~ member(X9,X11)
| member(ordered_pair(X8,X9),cross_product(X10,X11))
| ~ ilf_type(X11,set_type)
| ~ ilf_type(X10,set_type)
| ~ ilf_type(X9,set_type)
| ~ ilf_type(X8,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[p2])])])]) ).
fof(c_0_13,negated_conjecture,
~ ! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ilf_type(X2,set_type)
=> ! [X3] :
( ilf_type(X3,set_type)
=> ! [X4] :
( ilf_type(X4,set_type)
=> ( ( member(X3,X1)
& member(X4,X2) )
=> ilf_type(singleton(ordered_pair(X3,X4)),relation_type(X1,X2)) ) ) ) ) ),
inference(assume_negation,[status(cth)],[prove_relset_1_8]) ).
fof(c_0_14,plain,
! [X1] :
( ilf_type(X1,set_type)
=> ( empty(X1)
<=> ! [X2] :
( ilf_type(X2,set_type)
=> ~ member(X2,X1) ) ) ),
inference(fof_simplification,[status(thm)],[p21]) ).
cnf(c_0_15,plain,
( X1 = X3
| ~ member(X1,X2)
| ~ ilf_type(X1,set_type)
| X2 != singleton(X3)
| ~ ilf_type(X2,set_type)
| ~ ilf_type(X3,set_type)
| ~ ilf_type(X4,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_9]) ).
cnf(c_0_16,plain,
ilf_type(X1,set_type),
inference(split_conjunct,[status(thm)],[c_0_10]) ).
cnf(c_0_17,plain,
( member(esk6_2(X1,X2),X1)
| member(X1,power_set(X2))
| ~ ilf_type(X2,set_type)
| ~ ilf_type(X1,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_11]) ).
cnf(c_0_18,plain,
( member(ordered_pair(X1,X3),cross_product(X2,X4))
| ~ member(X1,X2)
| ~ member(X3,X4)
| ~ ilf_type(X4,set_type)
| ~ ilf_type(X2,set_type)
| ~ ilf_type(X3,set_type)
| ~ ilf_type(X1,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_12]) ).
fof(c_0_19,negated_conjecture,
( ilf_type(esk12_0,set_type)
& ilf_type(esk13_0,set_type)
& ilf_type(esk14_0,set_type)
& ilf_type(esk15_0,set_type)
& member(esk14_0,esk12_0)
& member(esk15_0,esk13_0)
& ~ ilf_type(singleton(ordered_pair(esk14_0,esk15_0)),relation_type(esk12_0,esk13_0)) ),
inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_13])])]) ).
fof(c_0_20,plain,
! [X1] :
( ilf_type(X1,set_type)
=> ! [X2] :
( ( ~ empty(X2)
& ilf_type(X2,set_type) )
=> ( ilf_type(X1,member_type(X2))
<=> member(X1,X2) ) ) ),
inference(fof_simplification,[status(thm)],[p19]) ).
fof(c_0_21,plain,
! [X60,X61] :
( ( ~ empty(X60)
| ~ ilf_type(X61,set_type)
| ~ member(X61,X60)
| ~ ilf_type(X60,set_type) )
& ( ilf_type(esk8_1(X60),set_type)
| empty(X60)
| ~ ilf_type(X60,set_type) )
& ( member(esk8_1(X60),X60)
| empty(X60)
| ~ ilf_type(X60,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_14])])])])]) ).
cnf(c_0_22,plain,
( member(X1,power_set(X2))
| ~ member(esk6_2(X1,X2),X2)
| ~ ilf_type(X2,set_type)
| ~ ilf_type(X1,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_11]) ).
cnf(c_0_23,plain,
( X1 = X2
| ~ member(X1,singleton(X2)) ),
inference(er,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_15,c_0_16]),c_0_16]),c_0_16]),c_0_16])])]) ).
cnf(c_0_24,plain,
( member(esk6_2(X1,X2),X1)
| member(X1,power_set(X2)) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_17,c_0_16]),c_0_16])]) ).
cnf(c_0_25,plain,
( member(ordered_pair(X1,X2),cross_product(X3,X4))
| ~ member(X2,X4)
| ~ member(X1,X3) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_18,c_0_16]),c_0_16]),c_0_16]),c_0_16])]) ).
cnf(c_0_26,negated_conjecture,
member(esk15_0,esk13_0),
inference(split_conjunct,[status(thm)],[c_0_19]) ).
fof(c_0_27,plain,
! [X56,X57] :
( ( ~ ilf_type(X56,member_type(X57))
| member(X56,X57)
| empty(X57)
| ~ ilf_type(X57,set_type)
| ~ ilf_type(X56,set_type) )
& ( ~ member(X56,X57)
| ilf_type(X56,member_type(X57))
| empty(X57)
| ~ ilf_type(X57,set_type)
| ~ ilf_type(X56,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_20])])])]) ).
cnf(c_0_28,plain,
( ~ empty(X1)
| ~ ilf_type(X2,set_type)
| ~ member(X2,X1)
| ~ ilf_type(X1,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_21]) ).
cnf(c_0_29,plain,
( member(X1,power_set(X2))
| ~ member(esk6_2(X1,X2),X2) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_22,c_0_16]),c_0_16])]) ).
cnf(c_0_30,plain,
( esk6_2(singleton(X1),X2) = X1
| member(singleton(X1),power_set(X2)) ),
inference(spm,[status(thm)],[c_0_23,c_0_24]) ).
cnf(c_0_31,negated_conjecture,
( member(ordered_pair(X1,esk15_0),cross_product(X2,esk13_0))
| ~ member(X1,X2) ),
inference(spm,[status(thm)],[c_0_25,c_0_26]) ).
cnf(c_0_32,negated_conjecture,
member(esk14_0,esk12_0),
inference(split_conjunct,[status(thm)],[c_0_19]) ).
fof(c_0_33,plain,
! [X38,X39] :
( ( ~ ilf_type(X39,subset_type(X38))
| ilf_type(X39,member_type(power_set(X38)))
| ~ ilf_type(X39,set_type)
| ~ ilf_type(X38,set_type) )
& ( ~ ilf_type(X39,member_type(power_set(X38)))
| ilf_type(X39,subset_type(X38))
| ~ ilf_type(X39,set_type)
| ~ ilf_type(X38,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[p12])])])]) ).
cnf(c_0_34,plain,
( ilf_type(X1,member_type(X2))
| empty(X2)
| ~ member(X1,X2)
| ~ ilf_type(X2,set_type)
| ~ ilf_type(X1,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_27]) ).
cnf(c_0_35,plain,
( ~ empty(X1)
| ~ member(X2,X1) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_28,c_0_16]),c_0_16])]) ).
cnf(c_0_36,plain,
( member(singleton(X1),power_set(X2))
| ~ member(X1,X2) ),
inference(spm,[status(thm)],[c_0_29,c_0_30]) ).
cnf(c_0_37,negated_conjecture,
member(ordered_pair(esk14_0,esk15_0),cross_product(esk12_0,esk13_0)),
inference(spm,[status(thm)],[c_0_31,c_0_32]) ).
fof(c_0_38,plain,
! [X12,X13,X14,X15] :
( ( ~ ilf_type(X14,subset_type(cross_product(X12,X13)))
| ilf_type(X14,relation_type(X12,X13))
| ~ ilf_type(X13,set_type)
| ~ ilf_type(X12,set_type) )
& ( ~ ilf_type(X15,relation_type(X12,X13))
| ilf_type(X15,subset_type(cross_product(X12,X13)))
| ~ ilf_type(X13,set_type)
| ~ ilf_type(X12,set_type) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[p3])])])]) ).
cnf(c_0_39,plain,
( ilf_type(X1,subset_type(X2))
| ~ ilf_type(X1,member_type(power_set(X2)))
| ~ ilf_type(X1,set_type)
| ~ ilf_type(X2,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_33]) ).
cnf(c_0_40,plain,
( ilf_type(X1,member_type(X2))
| ~ member(X1,X2) ),
inference(csr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_34,c_0_16]),c_0_16])]),c_0_35]) ).
cnf(c_0_41,negated_conjecture,
member(singleton(ordered_pair(esk14_0,esk15_0)),power_set(cross_product(esk12_0,esk13_0))),
inference(spm,[status(thm)],[c_0_36,c_0_37]) ).
cnf(c_0_42,plain,
( ilf_type(X1,relation_type(X2,X3))
| ~ ilf_type(X1,subset_type(cross_product(X2,X3)))
| ~ ilf_type(X3,set_type)
| ~ ilf_type(X2,set_type) ),
inference(split_conjunct,[status(thm)],[c_0_38]) ).
cnf(c_0_43,plain,
( ilf_type(X1,subset_type(X2))
| ~ ilf_type(X1,member_type(power_set(X2))) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_39,c_0_16]),c_0_16])]) ).
cnf(c_0_44,negated_conjecture,
ilf_type(singleton(ordered_pair(esk14_0,esk15_0)),member_type(power_set(cross_product(esk12_0,esk13_0)))),
inference(spm,[status(thm)],[c_0_40,c_0_41]) ).
cnf(c_0_45,plain,
( ilf_type(X1,relation_type(X2,X3))
| ~ ilf_type(X1,subset_type(cross_product(X2,X3))) ),
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_42,c_0_16]),c_0_16])]) ).
cnf(c_0_46,negated_conjecture,
ilf_type(singleton(ordered_pair(esk14_0,esk15_0)),subset_type(cross_product(esk12_0,esk13_0))),
inference(spm,[status(thm)],[c_0_43,c_0_44]) ).
cnf(c_0_47,negated_conjecture,
~ ilf_type(singleton(ordered_pair(esk14_0,esk15_0)),relation_type(esk12_0,esk13_0)),
inference(split_conjunct,[status(thm)],[c_0_19]) ).
cnf(c_0_48,negated_conjecture,
$false,
inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_45,c_0_46]),c_0_47]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12 % Problem : SET646+3 : TPTP v8.1.2. Released v2.2.0.
% 0.00/0.13 % Command : java -jar /export/starexec/sandbox/solver/bin/mcs_scs.jar %d %s
% 0.13/0.34 % Computer : n012.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 : Sat Aug 26 14:18:55 EDT 2023
% 0.13/0.34 % CPUTime :
% 0.19/0.56 start to proof: theBenchmark
% 0.19/0.61 % Version : CSE_E---1.5
% 0.19/0.61 % Problem : theBenchmark.p
% 0.19/0.61 % Proof found
% 0.19/0.61 % SZS status Theorem for theBenchmark.p
% 0.19/0.61 % SZS output start Proof
% See solution above
% 0.19/0.61 % Total time : 0.036000 s
% 0.19/0.61 % SZS output end Proof
% 0.19/0.61 % Total time : 0.039000 s
%------------------------------------------------------------------------------