%------------------------------------------------------------------------------
% File : CSE_E---1.7
% Problem : GRP642+1 : TPTP v9.2.1. Released v3.4.0.
% Transfm : none
% Format : tptp:raw
% Command : /export/starexec/sandbox2/solver/bin/lemma_parallel_prover %s --lemma-prover /export/starexec/sandbox2/solver/bin/cse --final-prover /export/starexec/sandbox2/solver/bin/eprover --proof-time %d --global-time-limit %d
% Computer : n017.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 5 04:26:40 PM UTC 2026
% Result : Theorem 1.28s 1.73s
% Output : CNFRefutation 1.28s
% Verified :
% SZS Type : Refutation
% Derivation depth : 10
% Number of leaves : 10
% Syntax : Number of formulae : 55 ( 19 unt; 0 def)
% Number of atoms : 251 ( 18 equ)
% Maximal formula atoms : 38 ( 4 avg)
% Number of connectives : 314 ( 118 ~; 116 |; 58 &)
% ( 2 <=>; 20 =>; 0 <=; 0 <~>)
% Maximal formula depth : 16 ( 5 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 15 ( 13 usr; 1 prp; 0-3 aty)
% Number of functors : 11 ( 11 usr; 3 con; 0-2 aty)
% Number of variables : 65 ( 2 sgn 39 !; 3 ?)
% Comments :
%------------------------------------------------------------------------------
fof(dt_m1_group_2,axiom,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( m1_group_2(X2,X1)
=> ( ~ v3_struct_0(X2)
& v3_group_1(X2)
& l1_group_1(X2) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_m1_group_2) ).
fof(t20_latsubgr,conjecture,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( ( v1_group_1(X2)
& m1_group_2(X2,X1) )
=> k1_funct_1(k1_latsubgr(X1),X2) != k1_xboole_0 ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t20_latsubgr) ).
fof(rc5_struct_0,axiom,
! [X1] :
( ( ~ v3_struct_0(X1)
& l1_struct_0(X1) )
=> ? [X2] :
( m1_subset_1(X2,k1_zfmisc_1(u1_struct_0(X1)))
& ~ v1_xboole_0(X2) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',rc5_struct_0) ).
fof(dt_l1_group_1,axiom,
! [X1] :
( l1_group_1(X1)
=> l1_struct_0(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_l1_group_1) ).
fof(t5_subset,axiom,
! [X1,X2,X3] :
~ ( r2_hidden(X1,X2)
& m1_subset_1(X2,k1_zfmisc_1(X3))
& v1_xboole_0(X3) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t5_subset) ).
fof(t2_subset,axiom,
! [X1,X2] :
( m1_subset_1(X1,X2)
=> ( v1_xboole_0(X2)
| r2_hidden(X1,X2) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',t2_subset) ).
fof(existence_m1_subset_1,axiom,
! [X1] :
? [X2] : m1_subset_1(X2,X1),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',existence_m1_subset_1) ).
fof(d1_latsubgr,axiom,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( ( v1_funct_1(X2)
& v1_funct_2(X2,k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
& m2_relset_1(X2,k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1))) )
=> ( X2 = k1_latsubgr(X1)
<=> ! [X3] :
( ( v1_group_1(X3)
& m1_group_2(X3,X1) )
=> k1_funct_1(X2,X3) = u1_struct_0(X3) ) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',d1_latsubgr) ).
fof(dt_k1_latsubgr,axiom,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ( v1_funct_1(k1_latsubgr(X1))
& v1_funct_2(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
& m2_relset_1(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1))) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',dt_k1_latsubgr) ).
fof(fc1_xboole_0,axiom,
v1_xboole_0(k1_xboole_0),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',fc1_xboole_0) ).
fof(c_0_10,plain,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( m1_group_2(X2,X1)
=> ( ~ v3_struct_0(X2)
& v3_group_1(X2)
& l1_group_1(X2) ) ) ),
inference(fof_simplification,[status(thm)],[dt_m1_group_2]) ).
fof(c_0_11,negated_conjecture,
~ ! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( ( v1_group_1(X2)
& m1_group_2(X2,X1) )
=> k1_funct_1(k1_latsubgr(X1),X2) != k1_xboole_0 ) ),
inference(fof_simplification,[status(thm)],[inference(assume_negation,[status(cth)],[t20_latsubgr])]) ).
fof(c_0_12,plain,
! [X118,X119] :
( ( ~ v3_struct_0(X119)
| ~ m1_group_2(X119,X118)
| v3_struct_0(X118)
| ~ v3_group_1(X118)
| ~ l1_group_1(X118) )
& ( v3_group_1(X119)
| ~ m1_group_2(X119,X118)
| v3_struct_0(X118)
| ~ v3_group_1(X118)
| ~ l1_group_1(X118) )
& ( l1_group_1(X119)
| ~ m1_group_2(X119,X118)
| v3_struct_0(X118)
| ~ v3_group_1(X118)
| ~ l1_group_1(X118) ) ),
inference(distribute,[status(thm)],[inference(shift_quantors,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_10])])])]) ).
fof(c_0_13,negated_conjecture,
( ~ v3_struct_0(esk1_0)
& v3_group_1(esk1_0)
& v4_group_1(esk1_0)
& l1_group_1(esk1_0)
& v1_group_1(esk2_0)
& m1_group_2(esk2_0,esk1_0)
& k1_funct_1(k1_latsubgr(esk1_0),esk2_0) = k1_xboole_0 ),
inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_11])])]) ).
fof(c_0_14,plain,
! [X1] :
( ( ~ v3_struct_0(X1)
& l1_struct_0(X1) )
=> ? [X2] :
( m1_subset_1(X2,k1_zfmisc_1(u1_struct_0(X1)))
& ~ v1_xboole_0(X2) ) ),
inference(fof_simplification,[status(thm)],[rc5_struct_0]) ).
fof(c_0_15,plain,
! [X117] :
( ~ l1_group_1(X117)
| l1_struct_0(X117) ),
inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[dt_l1_group_1])]) ).
cnf(c_0_16,plain,
( l1_group_1(X1)
| v3_struct_0(X2)
| ~ m1_group_2(X1,X2)
| ~ v3_group_1(X2)
| ~ l1_group_1(X2) ),
inference(split_conjunct,[status(thm)],[c_0_12]) ).
cnf(c_0_17,negated_conjecture,
m1_group_2(esk2_0,esk1_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_18,negated_conjecture,
l1_group_1(esk1_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_19,negated_conjecture,
v3_group_1(esk1_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_20,negated_conjecture,
~ v3_struct_0(esk1_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
fof(c_0_21,plain,
! [X158] :
( ( m1_subset_1(esk17_1(X158),k1_zfmisc_1(u1_struct_0(X158)))
| v3_struct_0(X158)
| ~ l1_struct_0(X158) )
& ( ~ v1_xboole_0(esk17_1(X158))
| v3_struct_0(X158)
| ~ l1_struct_0(X158) ) ),
inference(distribute,[status(thm)],[inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_14])])])]) ).
cnf(c_0_22,plain,
( l1_struct_0(X1)
| ~ l1_group_1(X1) ),
inference(split_conjunct,[status(thm)],[c_0_15]) ).
cnf(c_0_23,negated_conjecture,
l1_group_1(esk2_0),
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_16,c_0_17]),c_0_18]),c_0_19])]),c_0_20]) ).
cnf(c_0_24,plain,
( v3_struct_0(X2)
| ~ v3_struct_0(X1)
| ~ m1_group_2(X1,X2)
| ~ v3_group_1(X2)
| ~ l1_group_1(X2) ),
inference(split_conjunct,[status(thm)],[c_0_12]) ).
fof(c_0_25,plain,
! [X173,X174,X175] :
( ~ r2_hidden(X173,X174)
| ~ m1_subset_1(X174,k1_zfmisc_1(X175))
| ~ v1_xboole_0(X175) ),
inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[t5_subset])]) ).
cnf(c_0_26,plain,
( m1_subset_1(esk17_1(X1),k1_zfmisc_1(u1_struct_0(X1)))
| v3_struct_0(X1)
| ~ l1_struct_0(X1) ),
inference(split_conjunct,[status(thm)],[c_0_21]) ).
cnf(c_0_27,negated_conjecture,
l1_struct_0(esk2_0),
inference(spm,[status(thm)],[c_0_22,c_0_23]) ).
cnf(c_0_28,negated_conjecture,
~ v3_struct_0(esk2_0),
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_17]),c_0_18]),c_0_19])]),c_0_20]) ).
fof(c_0_29,plain,
! [X166,X167] :
( ~ m1_subset_1(X166,X167)
| v1_xboole_0(X167)
| r2_hidden(X166,X167) ),
inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[t2_subset])]) ).
fof(c_0_30,plain,
! [X131] : m1_subset_1(esk8_1(X131),X131),
inference(skolemize,[status(esa)],[inference(variable_rename,[status(thm)],[existence_m1_subset_1])]) ).
fof(c_0_31,plain,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ! [X2] :
( ( v1_funct_1(X2)
& v1_funct_2(X2,k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
& m2_relset_1(X2,k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1))) )
=> ( X2 = k1_latsubgr(X1)
<=> ! [X3] :
( ( v1_group_1(X3)
& m1_group_2(X3,X1) )
=> k1_funct_1(X2,X3) = u1_struct_0(X3) ) ) ) ),
inference(fof_simplification,[status(thm)],[d1_latsubgr]) ).
fof(c_0_32,plain,
! [X1] :
( ( ~ v3_struct_0(X1)
& v3_group_1(X1)
& v4_group_1(X1)
& l1_group_1(X1) )
=> ( v1_funct_1(k1_latsubgr(X1))
& v1_funct_2(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
& m2_relset_1(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1))) ) ),
inference(fof_simplification,[status(thm)],[dt_k1_latsubgr]) ).
cnf(c_0_33,plain,
( ~ r2_hidden(X1,X2)
| ~ m1_subset_1(X2,k1_zfmisc_1(X3))
| ~ v1_xboole_0(X3) ),
inference(split_conjunct,[status(thm)],[c_0_25]) ).
cnf(c_0_34,negated_conjecture,
m1_subset_1(esk17_1(esk2_0),k1_zfmisc_1(u1_struct_0(esk2_0))),
inference(sr,[status(thm)],[inference(spm,[status(thm)],[c_0_26,c_0_27]),c_0_28]) ).
cnf(c_0_35,plain,
( v1_xboole_0(X2)
| r2_hidden(X1,X2)
| ~ m1_subset_1(X1,X2) ),
inference(split_conjunct,[status(thm)],[c_0_29]) ).
cnf(c_0_36,plain,
m1_subset_1(esk8_1(X1),X1),
inference(split_conjunct,[status(thm)],[c_0_30]) ).
fof(c_0_37,plain,
! [X110,X111,X112] :
( ( X111 != k1_latsubgr(X110)
| ~ v1_group_1(X112)
| ~ m1_group_2(X112,X110)
| k1_funct_1(X111,X112) = u1_struct_0(X112)
| ~ v1_funct_1(X111)
| ~ v1_funct_2(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| ~ m2_relset_1(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| v3_struct_0(X110)
| ~ v3_group_1(X110)
| ~ v4_group_1(X110)
| ~ l1_group_1(X110) )
& ( v1_group_1(esk3_2(X110,X111))
| X111 = k1_latsubgr(X110)
| ~ v1_funct_1(X111)
| ~ v1_funct_2(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| ~ m2_relset_1(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| v3_struct_0(X110)
| ~ v3_group_1(X110)
| ~ v4_group_1(X110)
| ~ l1_group_1(X110) )
& ( m1_group_2(esk3_2(X110,X111),X110)
| X111 = k1_latsubgr(X110)
| ~ v1_funct_1(X111)
| ~ v1_funct_2(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| ~ m2_relset_1(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| v3_struct_0(X110)
| ~ v3_group_1(X110)
| ~ v4_group_1(X110)
| ~ l1_group_1(X110) )
& ( k1_funct_1(X111,esk3_2(X110,X111)) != u1_struct_0(esk3_2(X110,X111))
| X111 = k1_latsubgr(X110)
| ~ v1_funct_1(X111)
| ~ v1_funct_2(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| ~ m2_relset_1(X111,k1_group_3(X110),k1_zfmisc_1(u1_struct_0(X110)))
| v3_struct_0(X110)
| ~ v3_group_1(X110)
| ~ v4_group_1(X110)
| ~ l1_group_1(X110) ) ),
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_31])])])])]) ).
fof(c_0_38,plain,
! [X116] :
( ( v1_funct_1(k1_latsubgr(X116))
| v3_struct_0(X116)
| ~ v3_group_1(X116)
| ~ v4_group_1(X116)
| ~ l1_group_1(X116) )
& ( v1_funct_2(k1_latsubgr(X116),k1_group_3(X116),k1_zfmisc_1(u1_struct_0(X116)))
| v3_struct_0(X116)
| ~ v3_group_1(X116)
| ~ v4_group_1(X116)
| ~ l1_group_1(X116) )
& ( m2_relset_1(k1_latsubgr(X116),k1_group_3(X116),k1_zfmisc_1(u1_struct_0(X116)))
| v3_struct_0(X116)
| ~ v3_group_1(X116)
| ~ v4_group_1(X116)
| ~ l1_group_1(X116) ) ),
inference(distribute,[status(thm)],[inference(variable_rename,[status(thm)],[inference(fof_nnf,[status(thm)],[c_0_32])])]) ).
cnf(c_0_39,negated_conjecture,
( ~ v1_xboole_0(u1_struct_0(esk2_0))
| ~ r2_hidden(X1,esk17_1(esk2_0)) ),
inference(spm,[status(thm)],[c_0_33,c_0_34]) ).
cnf(c_0_40,plain,
( v1_xboole_0(X1)
| r2_hidden(esk8_1(X1),X1) ),
inference(spm,[status(thm)],[c_0_35,c_0_36]) ).
cnf(c_0_41,plain,
( k1_funct_1(X1,X3) = u1_struct_0(X3)
| v3_struct_0(X2)
| X1 != k1_latsubgr(X2)
| ~ v1_group_1(X3)
| ~ m1_group_2(X3,X2)
| ~ v1_funct_1(X1)
| ~ v1_funct_2(X1,k1_group_3(X2),k1_zfmisc_1(u1_struct_0(X2)))
| ~ m2_relset_1(X1,k1_group_3(X2),k1_zfmisc_1(u1_struct_0(X2)))
| ~ v3_group_1(X2)
| ~ v4_group_1(X2)
| ~ l1_group_1(X2) ),
inference(split_conjunct,[status(thm)],[c_0_37]) ).
cnf(c_0_42,plain,
( v1_funct_1(k1_latsubgr(X1))
| v3_struct_0(X1)
| ~ v3_group_1(X1)
| ~ v4_group_1(X1)
| ~ l1_group_1(X1) ),
inference(split_conjunct,[status(thm)],[c_0_38]) ).
cnf(c_0_43,plain,
( v1_funct_2(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
| v3_struct_0(X1)
| ~ v3_group_1(X1)
| ~ v4_group_1(X1)
| ~ l1_group_1(X1) ),
inference(split_conjunct,[status(thm)],[c_0_38]) ).
cnf(c_0_44,plain,
( m2_relset_1(k1_latsubgr(X1),k1_group_3(X1),k1_zfmisc_1(u1_struct_0(X1)))
| v3_struct_0(X1)
| ~ v3_group_1(X1)
| ~ v4_group_1(X1)
| ~ l1_group_1(X1) ),
inference(split_conjunct,[status(thm)],[c_0_38]) ).
cnf(c_0_45,plain,
( v3_struct_0(X1)
| ~ v1_xboole_0(esk17_1(X1))
| ~ l1_struct_0(X1) ),
inference(split_conjunct,[status(thm)],[c_0_21]) ).
cnf(c_0_46,negated_conjecture,
( v1_xboole_0(esk17_1(esk2_0))
| ~ v1_xboole_0(u1_struct_0(esk2_0)) ),
inference(spm,[status(thm)],[c_0_39,c_0_40]) ).
cnf(c_0_47,plain,
( k1_funct_1(k1_latsubgr(X1),X2) = u1_struct_0(X2)
| v3_struct_0(X1)
| ~ m1_group_2(X2,X1)
| ~ v1_group_1(X2)
| ~ l1_group_1(X1)
| ~ v4_group_1(X1)
| ~ v3_group_1(X1) ),
inference(csr,[status(thm)],[inference(csr,[status(thm)],[inference(csr,[status(thm)],[inference(er,[status(thm)],[c_0_41]),c_0_42]),c_0_43]),c_0_44]) ).
cnf(c_0_48,negated_conjecture,
k1_funct_1(k1_latsubgr(esk1_0),esk2_0) = k1_xboole_0,
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_49,negated_conjecture,
v1_group_1(esk2_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_50,negated_conjecture,
v4_group_1(esk1_0),
inference(split_conjunct,[status(thm)],[c_0_13]) ).
cnf(c_0_51,negated_conjecture,
~ v1_xboole_0(u1_struct_0(esk2_0)),
inference(sr,[status(thm)],[inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_45,c_0_46]),c_0_27])]),c_0_28]) ).
cnf(c_0_52,negated_conjecture,
u1_struct_0(esk2_0) = k1_xboole_0,
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(rw,[status(thm)],[inference(spm,[status(thm)],[c_0_47,c_0_17]),c_0_48]),c_0_49]),c_0_18]),c_0_50]),c_0_19])]),c_0_20]) ).
cnf(c_0_53,plain,
v1_xboole_0(k1_xboole_0),
inference(split_conjunct,[status(thm)],[fc1_xboole_0]) ).
cnf(c_0_54,negated_conjecture,
$false,
inference(cn,[status(thm)],[inference(rw,[status(thm)],[inference(rw,[status(thm)],[c_0_51,c_0_52]),c_0_53])]),
[proof] ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.12 % Problem : GRP642+1 : TPTP v9.2.1. Released v3.4.0.
% 0.00/0.12 % Command : /export/starexec/sandbox2/solver/bin/lemma_parallel_prover %s --lemma-prover /export/starexec/sandbox2/solver/bin/cse --final-prover /export/starexec/sandbox2/solver/bin/eprover --proof-time %d --global-time-limit %d
% 0.14/0.33 % Computer : n017.cluster.edu
% 0.14/0.33 % Model : x86_64 x86_64
% 0.14/0.33 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.33 % Memory : 8042.1875MB
% 0.14/0.33 % OS : Linux 3.10.0-693.el7.x86_64
% 0.14/0.33 % CPULimit : 300
% 0.14/0.33 % WCLimit : 300
% 0.14/0.33 % DateTime : Mon May 4 18:52:12 EDT 2026
% 0.14/0.33 % CPUTime :
% 0.14/0.34 % start to proof: theBenchmark
% 1.28/1.73 % Version : CSE_E---1.7
% 1.28/1.73 % Problem : theBenchmark.p
% 1.28/1.73 % SZS status Theorem for theBenchmark.p
% 1.28/1.73 % SZS output start CNFRefutation
% See solution above
% 1.28/1.73 % Total time : 1.369s
%------------------------------------------------------------------------------