%------------------------------------------------------------------------------
% File : iProver---3.9.4
% Problem : NUM584+1 : TPTP v9.3.1. Released v4.0.0.
% Transfm : none
% Format : tptp:raw
% Command : run_iprover 300 /export/starexec/sandbox2/benchmark/theBenchmark.p THM
% Computer : n017.cluster.edu
% Model : x86_64 x86_64
% CPU : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory : 8046.5625MB
% OS : Linux 6.8.0-71-generic
% CPULimit : 300s
% WCLimit : 300s
% DateTime : Fri Sep 25 02:26:07 PM UTC 2026
% Result : Theorem 6.52s 2.79s
% Output : CNFRefutation 6.52s
% Verified :
% SZS Type : Refutation
% Derivation depth : 15
% Number of leaves : 13
% Syntax : Number of formulae : 58 ( 31 unt; 4 def)
% Number of atoms : 239 ( 45 equ)
% Maximal formula atoms : 18 ( 4 avg)
% Number of connectives : 262 ( 102 ~; 100 |; 49 &)
% ( 8 <=>; 3 =>; 0 <=; 0 <~>)
% Maximal formula depth : 13 ( 4 avg)
% Maximal term depth : 5 ( 1 avg)
% Number of types : 1 ( 0 usr)
% Number of type conns : 0 ( 0 >; 0 *; 0 +; 0 <<)
% Number of predicates : 11 ( 9 usr; 5 prp; 0-2 aty)
% Number of functors : 17 ( 17 usr; 8 con; 0-3 aty)
% Number of variables : 70 ( 0 sgn 64 !; 6 ?; 7 :)
% Comments :
%------------------------------------------------------------------------------
fof(f10,axiom,
! [X0] :
( aSet0(X0)
=> ! [X1] :
( aSubsetOf0(X1,X0)
<=> ( ! [X2] :
( aElementOf0(X2,X1)
=> aElementOf0(X2,X0) )
& aSet0(X1) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',mDefSub) ).
fof(f23,axiom,
( isCountable0(szNzAzT0)
& aSet0(szNzAzT0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',mNATSet) ).
fof(f57,axiom,
! [X0,X1] :
( ( aElementOf0(X1,szNzAzT0)
& aSet0(X0) )
=> ! [X2] :
( X2 = slbdtsldtrb0(X0,X1)
<=> ( ! [X3] :
( aElementOf0(X3,X2)
<=> ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& aSet0(X2) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',mDefSel) ).
fof(f74,axiom,
aElementOf0(xK,szNzAzT0),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__3418) ).
fof(f75,axiom,
( isCountable0(xS)
& aSubsetOf0(xS,szNzAzT0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__3435) ).
fof(f76,axiom,
( aSubsetOf0(sdtlcdtrc0(xc,szDzozmdt0(xc)),xT)
& szDzozmdt0(xc) = slbdtsldtrb0(xS,xK)
& aFunction0(xc) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__3453) ).
fof(f87,axiom,
sbrdtbr0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi)))) = xK,
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__4007) ).
fof(f88,axiom,
aSubsetOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),xS),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__4024) ).
fof(f89,conjecture,
aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),slbdtsldtrb0(xS,xK)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',m__) ).
fof(f90,negated_conjecture,
~ aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),slbdtsldtrb0(xS,xK)),
inference(negated_conjecture,[status(cth)],[f89]) ).
fof(f98,plain,
~ aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),slbdtsldtrb0(xS,xK)),
inference(flattening,[],[f90]) ).
fof(f105,plain,
! [X0] :
( ~ aSet0(X0)
| ! [X1] :
( aSubsetOf0(X1,X0)
<=> ( ! [X2] :
( ~ aElementOf0(X2,X1)
| aElementOf0(X2,X0) )
& aSet0(X1) ) ) ),
inference(ennf_transformation,[],[f10]) ).
fof(f173,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( X2 = slbdtsldtrb0(X0,X1)
<=> ( ! [X3] :
( aElementOf0(X3,X2)
<=> ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& aSet0(X2) ) ) ),
inference(ennf_transformation,[],[f57]) ).
fof(f174,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( X2 = slbdtsldtrb0(X0,X1)
<=> ( ! [X3] :
( aElementOf0(X3,X2)
<=> ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& aSet0(X2) ) ) ),
inference(flattening,[],[f173]) ).
fof(f217,plain,
! [X0] :
( ~ aSet0(X0)
| ! [X1] :
( ( ~ aSubsetOf0(X1,X0)
| ( ! [X2] :
( ~ aElementOf0(X2,X1)
| aElementOf0(X2,X0) )
& aSet0(X1) ) )
& ( ? [X2] :
( aElementOf0(X2,X1)
& ~ aElementOf0(X2,X0) )
| ~ aSet0(X1)
| aSubsetOf0(X1,X0) ) ) ),
inference(nnf_transformation,[],[f105]) ).
fof(f218,plain,
! [X0] :
( ~ aSet0(X0)
| ! [X1] :
( ( ~ aSubsetOf0(X1,X0)
| ( ! [X2] :
( ~ aElementOf0(X2,X1)
| aElementOf0(X2,X0) )
& aSet0(X1) ) )
& ( ? [X2] :
( aElementOf0(X2,X1)
& ~ aElementOf0(X2,X0) )
| ~ aSet0(X1)
| aSubsetOf0(X1,X0) ) ) ),
inference(flattening,[],[f217]) ).
fof(f219,plain,
! [X0] :
( ~ aSet0(X0)
| ! [X1] :
( ( ~ aSubsetOf0(X1,X0)
| ( ! [X3] :
( ~ aElementOf0(X3,X1)
| aElementOf0(X3,X0) )
& aSet0(X1) ) )
& ( ? [X2] :
( aElementOf0(X2,X1)
& ~ aElementOf0(X2,X0) )
| ~ aSet0(X1)
| aSubsetOf0(X1,X0) ) ) ),
inference(rectify,[],[f218]) ).
fof(f220,plain,
! [X0] :
( ~ aSet0(X0)
| ! [X1] :
( ( ~ aSubsetOf0(X1,X0)
| ( ! [X3] :
( ~ aElementOf0(X3,X1)
| aElementOf0(X3,X0) )
& aSet0(X1) ) )
& ( ( aElementOf0(sK5(X0,X1),X1)
& ~ aElementOf0(sK5(X0,X1),X0) )
| ~ aSet0(X1)
| aSubsetOf0(X1,X0) ) ) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK5]),skolemize(X2,sK5(X0,X1))],[f219]) ).
fof(f254,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( ( slbdtsldtrb0(X0,X1) != X2
| ( ! [X3] :
( ( ~ aElementOf0(X3,X2)
| ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& ( sbrdtbr0(X3) != X1
| ~ aSubsetOf0(X3,X0)
| aElementOf0(X3,X2) ) )
& aSet0(X2) ) )
& ( ? [X3] :
( ( aElementOf0(X3,X2)
| ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& ( ~ aElementOf0(X3,X2)
| sbrdtbr0(X3) != X1
| ~ aSubsetOf0(X3,X0) ) )
| ~ aSet0(X2)
| X2 = slbdtsldtrb0(X0,X1) ) ) ),
inference(nnf_transformation,[],[f174]) ).
fof(f255,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( ( slbdtsldtrb0(X0,X1) != X2
| ( ! [X3] :
( ( ~ aElementOf0(X3,X2)
| ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& ( sbrdtbr0(X3) != X1
| ~ aSubsetOf0(X3,X0)
| aElementOf0(X3,X2) ) )
& aSet0(X2) ) )
& ( ? [X3] :
( ( aElementOf0(X3,X2)
| ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& ( ~ aElementOf0(X3,X2)
| sbrdtbr0(X3) != X1
| ~ aSubsetOf0(X3,X0) ) )
| ~ aSet0(X2)
| X2 = slbdtsldtrb0(X0,X1) ) ) ),
inference(flattening,[],[f254]) ).
fof(f256,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( ( slbdtsldtrb0(X0,X1) != X2
| ( ! [X4] :
( ( ~ aElementOf0(X4,X2)
| ( sbrdtbr0(X4) = X1
& aSubsetOf0(X4,X0) ) )
& ( sbrdtbr0(X4) != X1
| ~ aSubsetOf0(X4,X0)
| aElementOf0(X4,X2) ) )
& aSet0(X2) ) )
& ( ? [X3] :
( ( aElementOf0(X3,X2)
| ( sbrdtbr0(X3) = X1
& aSubsetOf0(X3,X0) ) )
& ( ~ aElementOf0(X3,X2)
| sbrdtbr0(X3) != X1
| ~ aSubsetOf0(X3,X0) ) )
| ~ aSet0(X2)
| X2 = slbdtsldtrb0(X0,X1) ) ) ),
inference(rectify,[],[f255]) ).
fof(f257,plain,
! [X0,X1] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| ! [X2] :
( ( slbdtsldtrb0(X0,X1) != X2
| ( ! [X4] :
( ( ~ aElementOf0(X4,X2)
| ( sbrdtbr0(X4) = X1
& aSubsetOf0(X4,X0) ) )
& ( sbrdtbr0(X4) != X1
| ~ aSubsetOf0(X4,X0)
| aElementOf0(X4,X2) ) )
& aSet0(X2) ) )
& ( ( ( aElementOf0(sK14(X0,X1,X2),X2)
| ( sbrdtbr0(sK14(X0,X1,X2)) = X1
& aSubsetOf0(sK14(X0,X1,X2),X0) ) )
& ( ~ aElementOf0(sK14(X0,X1,X2),X2)
| sbrdtbr0(sK14(X0,X1,X2)) != X1
| ~ aSubsetOf0(sK14(X0,X1,X2),X0) ) )
| ~ aSet0(X2)
| X2 = slbdtsldtrb0(X0,X1) ) ) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK14]),skolemize(X3,sK14(X0,X1,X2))],[f256]) ).
fof(f281,plain,
! [X0,X1] :
( ~ aSet0(X0)
| ~ aSubsetOf0(X1,X0)
| aSet0(X1) ),
inference(cnf_transformation,[],[f220]) ).
fof(f319,plain,
aSet0(szNzAzT0),
inference(cnf_transformation,[],[f23]) ).
fof(f375,plain,
! [X2,X0,X1,X4] :
( ~ aElementOf0(X1,szNzAzT0)
| ~ aSet0(X0)
| slbdtsldtrb0(X0,X1) != X2
| sbrdtbr0(X4) != X1
| ~ aSubsetOf0(X4,X0)
| aElementOf0(X4,X2) ),
inference(cnf_transformation,[],[f257]) ).
fof(f418,plain,
aElementOf0(xK,szNzAzT0),
inference(cnf_transformation,[],[f74]) ).
fof(f420,plain,
aSubsetOf0(xS,szNzAzT0),
inference(cnf_transformation,[],[f75]) ).
fof(f422,plain,
szDzozmdt0(xc) = slbdtsldtrb0(xS,xK),
inference(cnf_transformation,[],[f76]) ).
fof(f443,plain,
xK = sbrdtbr0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi)))),
inference(cnf_transformation,[],[f87]) ).
fof(f444,plain,
aSubsetOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),xS),
inference(cnf_transformation,[],[f88]) ).
fof(f445,plain,
~ aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),slbdtsldtrb0(xS,xK)),
inference(cnf_transformation,[],[f98]) ).
fof(f464,plain,
! [X2,X0,X4] :
( ~ aElementOf0(sbrdtbr0(X4),szNzAzT0)
| ~ aSet0(X0)
| slbdtsldtrb0(X0,sbrdtbr0(X4)) != X2
| ~ aSubsetOf0(X4,X0)
| aElementOf0(X4,X2) ),
inference(equality_resolution,[],[f375]) ).
fof(f465,plain,
! [X0,X4] :
( ~ aElementOf0(sbrdtbr0(X4),szNzAzT0)
| ~ aSet0(X0)
| ~ aSubsetOf0(X4,X0)
| aElementOf0(X4,slbdtsldtrb0(X0,sbrdtbr0(X4))) ),
inference(equality_resolution,[],[f464]) ).
tcf(c_58,plain,
! [X0: $i,X1: $i] :
( aSet0(X0)
| ~ aSet0(X1)
| ~ aSubsetOf0(X0,X1) ),
inference(cnf_transformation,[],[f281]) ).
tcf(c_94,plain,
aSet0(szNzAzT0),
inference(cnf_transformation,[],[f319]) ).
tcf(c_153,plain,
! [X0: $i,X1: $i] :
( aElementOf0(X0,slbdtsldtrb0(X1,sbrdtbr0(X0)))
| ~ aSet0(X1)
| ~ aSubsetOf0(X0,X1)
| ~ aElementOf0(sbrdtbr0(X0),szNzAzT0) ),
inference(cnf_transformation,[],[f465]) ).
tcf(c_194,plain,
aElementOf0(xK,szNzAzT0),
inference(cnf_transformation,[],[f418]) ).
tcf(c_195,plain,
aSubsetOf0(xS,szNzAzT0),
inference(cnf_transformation,[],[f420]) ).
tcf(c_198,plain,
slbdtsldtrb0(xS,xK) = szDzozmdt0(xc),
inference(cnf_transformation,[],[f422]) ).
tcf(c_219,plain,
sbrdtbr0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi)))) = xK,
inference(cnf_transformation,[],[f443]) ).
tcf(c_220,plain,
aSubsetOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),xS),
inference(cnf_transformation,[],[f444]) ).
tcf(c_221,negated_conjecture,
~ aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),slbdtsldtrb0(xS,xK)),
inference(cnf_transformation,[],[f445]) ).
tcf(c_1703,plain,
~ aElementOf0(sdtpldt0(xQ,szmzizndt0(sdtlpdtrp0(xN,xi))),szDzozmdt0(xc)),
inference(light_normalisation,[status(thm)],[c_221,c_198]) ).
tcf(c_14722,definition,
iPr_def_10 = sdtlpdtrp0(xN,xi),
introduced(definition,[new_symbols(definition,[iPr_def_10])],[]) ).
tcf(c_14723,definition,
iPr_def_11 = szmzizndt0(iPr_def_10),
introduced(definition,[new_symbols(definition,[iPr_def_11])],[]) ).
tcf(c_14724,definition,
iPr_def_12 = sdtpldt0(xQ,iPr_def_11),
introduced(definition,[new_symbols(definition,[iPr_def_12])],[]) ).
tcf(c_14725,definition,
iPr_def_13 = szDzozmdt0(xc),
introduced(definition,[new_symbols(definition,[iPr_def_13])],[]) ).
tcf(c_14726,plain,
~ aElementOf0(iPr_def_12,iPr_def_13),
inference(demodulation,[status(thm)],[c_1703,c_14725,c_14722,c_14723,c_14724]) ).
tcf(c_17476,plain,
slbdtsldtrb0(xS,xK) = iPr_def_13,
inference(light_normalisation,[status(thm)],[c_198,c_14725]) ).
tcf(c_17537,plain,
sbrdtbr0(iPr_def_12) = xK,
inference(light_normalisation,[status(thm)],[c_219,c_14722,c_14723,c_14724]) ).
tcf(c_17541,plain,
aSubsetOf0(iPr_def_12,xS),
inference(light_normalisation,[status(thm)],[c_220,c_14722,c_14723,c_14724]) ).
tcf(c_17598,plain,
( aSet0(xS)
| ~ aSet0(szNzAzT0) ),
inference(superposition,[status(thm)],[c_195,c_58]) ).
tcf(c_17603,plain,
aSet0(xS),
inference(forward_subsumption_resolution,[status(thm)],[c_17598,c_94]) ).
tcf(c_21627,plain,
! [X0: $i] :
( aElementOf0(iPr_def_12,slbdtsldtrb0(X0,xK))
| ~ aSet0(X0)
| ~ aSubsetOf0(iPr_def_12,X0)
| ~ aElementOf0(sbrdtbr0(iPr_def_12),szNzAzT0) ),
inference(superposition,[status(thm)],[c_17537,c_153]) ).
tcf(c_21642,plain,
! [X0: $i] :
( aElementOf0(iPr_def_12,slbdtsldtrb0(X0,xK))
| ~ aSet0(X0)
| ~ aElementOf0(xK,szNzAzT0)
| ~ aSubsetOf0(iPr_def_12,X0) ),
inference(light_normalisation,[status(thm)],[c_21627,c_17537]) ).
tcf(c_21643,plain,
! [X0: $i] :
( aElementOf0(iPr_def_12,slbdtsldtrb0(X0,xK))
| ~ aSet0(X0)
| ~ aSubsetOf0(iPr_def_12,X0) ),
inference(forward_subsumption_resolution,[status(thm)],[c_21642,c_194]) ).
tcf(c_36916,plain,
( aElementOf0(iPr_def_12,iPr_def_13)
| ~ aSet0(xS)
| ~ aSubsetOf0(iPr_def_12,xS) ),
inference(superposition,[status(thm)],[c_17476,c_21643]) ).
tcf(c_36923,plain,
$false,
inference(forward_subsumption_resolution,[status(thm)],[c_36916,c_14726,c_17603,c_17541]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02 % Problem : NUM584+1 : TPTP v9.3.1. Released v4.0.0.
% 0.00/0.04 % Command : run_iprover 300 /export/starexec/sandbox2/benchmark/theBenchmark.p THM
% 0.08/0.34 % Computer : n017.cluster.edu
% 0.08/0.34 % Model : x86_64 x86_64
% 0.08/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.08/0.34 % Memory : 8046.5625MB
% 0.08/0.34 % OS : Linux 6.8.0-71-generic
% 0.08/0.34 % CPULimit : 300
% 0.08/0.34 % WCLimit : 300
% 0.08/0.34 % DateTime : Thu Sep 24 04:41:00 UTC 2026
% 0.08/0.34 % CPUTime :
% 0.08/0.35 Running run_iprover 300 /export/starexec/sandbox2/benchmark/theBenchmark.p THM
% 0.13/0.38 Running first-order theorem proving
% 0.13/0.38 Running: /export/starexec/sandbox2/solver/bin/iproveropt-multi-core.sh -d -n -l tptp -s fof_schedule -t 300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.13/0.39
% 0.13/0.39 % ======== iProver multi-core TPTP/SMT =========
% 0.13/0.39
% 0.13/0.39 % Detected problem language: tptp
% 0.13/0.40 % Proving...
% 6.52/2.79 % SZS status Started for theBenchmark.p
% 6.52/2.79 % SZS status Theorem for theBenchmark.p
% 6.52/2.79
% 6.52/2.79 %---------------- iProver v3.9.4 (pre CASC 2026/SMT-COMP 2026) ----------------%
% 6.52/2.79
% 6.52/2.79 % ------ iProver source info
% 6.52/2.79
% 6.52/2.79 % git: date: 2026-07-19 20:42:38 +0200
% 6.52/2.79 % git: sha1: 804e7d636a263075307957e923b7a22a4035de61
% 6.52/2.79 % git: non_committed_changes: false
% 6.52/2.79
% 6.52/2.79 % ------ Parsing...
% 6.52/2.79 % ------ Clausification by vclausify_rel & Parsing by iProver...%
% 6.52/2.79
% 6.52/2.79 % ------ Preprocessing... sup_sim: 1 sf_s rm: 1 0s sf_e pe_s pe:1:0s pe:2:0s pe_e sup_sim: 0 sf_s rm: 2 0s sf_e pe_s pe_e %
% 6.52/2.79
% 6.52/2.79 % ------ Preprocessing... gs_s sp: 0 0s gs_e snvd_s sp: 0 0s snvd_e %
% 6.52/2.79
% 6.52/2.79 % ------ Preprocessing... sf_s rm: 1 0s sf_e sf_s rm: 0 0s sf_e
% 6.52/2.79 % ------ Proving...
% 6.52/2.79 % ------ Problem Properties
% 6.52/2.79
% 6.52/2.79 %
% 6.52/2.79 % clauses 173
% 6.52/2.79 % conjectures 0
% 6.52/2.79 % EPR 40
% 6.52/2.79 % Horn 134
% 6.52/2.79 % unary 32
% 6.52/2.79 % binary 21
% 6.52/2.79 % lits 597
% 6.52/2.79 % lits eq 97
% 6.52/2.79 % fd_pure 0
% 6.52/2.79 % fd_pseudo 0
% 6.52/2.79 % fd_cond 10
% 6.52/2.79 % fd_pseudo_cond 25
% 6.52/2.79 % AC symbols 0
% 6.52/2.79
% 6.52/2.79 % ------ Schedule dynamic 5 is on
% 6.52/2.79
% 6.52/2.79 % ------ no conjectures: strip conj schedule
% 6.52/2.79
% 6.52/2.79 % ------ Input Options "--resolution_flag false --inst_lit_sel_side none" stripped conjectures Time Limit: 10.
% 6.52/2.79
% 6.52/2.79
% 6.52/2.79 % ------
% 6.52/2.79 % Current options:
% 6.52/2.79 % ------
% 6.52/2.79
% 6.52/2.79
% 6.52/2.79 %
% 6.52/2.79
% 6.52/2.79 % ------ Proving...
% 6.52/2.79 %
% 6.52/2.79
% 6.52/2.79 % SZS status Theorem for theBenchmark.p
% 6.52/2.79
% 6.52/2.79 % SZS output start CNFRefutation for theBenchmark.p
% See solution above
% 6.52/2.80
% 6.52/2.80
%------------------------------------------------------------------------------