%------------------------------------------------------------------------------
% File : Vampire-SAT---5.0.1
% Problem : CSR027+1 : TPTP v9.3.1. Released v3.4.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 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 : Tue Sep 29 09:44:23 AM UTC 2026
% Result : Theorem 0.07s 0.26s
% Output : Refutation 0.27s
% Verified :
% SZS Type : Refutation
% Derivation depth : 13
% Number of leaves : 13
% Syntax : Number of formulae : 71 ( 18 unt; 5 def)
% Number of atoms : 148 ( 0 equ)
% Maximal formula atoms : 3 ( 2 avg)
% Number of connectives : 138 ( 61 ~; 59 |; 6 &)
% ( 5 <=>; 7 =>; 0 <=; 0 <~>)
% Maximal formula depth : 8 ( 3 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 12 ( 11 usr; 6 prp; 0-3 aty)
% Number of functors : 10 ( 10 usr; 8 con; 0-4 aty)
% Number of variables : 49 ( 0 sgn 47 !; 2 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f1,axiom,
! [X0,X1,X2,X3] :
( ( isa(X0,X1)
& relationallexists(X2,X1,X3) )
=> isa(f_relationallexistsfn(X0,X2,X1,X3),X3) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just1) ).
fof(f9,axiom,
genlmt(c_tptp_spindlecollectormt,c_tptp_member2610_mt),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just9) ).
fof(f12,axiom,
! [X0] :
( ( mtvisible(c_tptp_member2610_mt)
& isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) )
=> tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just12) ).
fof(f13,axiom,
( mtvisible(c_tptp_member2610_mt)
=> relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just13) ).
fof(f14,axiom,
isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just14) ).
fof(f34,axiom,
! [X0] :
( isa(X0,c_tptpcol_16_31868)
=> tptpcol_16_31868(X0) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just34) ).
fof(f63,axiom,
! [X0,X1] :
( ( mtvisible(X0)
& genlmt(X0,X1) )
=> mtvisible(X1) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',just63) ).
fof(f80,conjecture,
? [X0] :
( mtvisible(c_tptp_spindlecollectormt)
=> ( tptp_8_875(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0)
& tptpcol_16_31868(X0) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',query27) ).
fof(f81,negated_conjecture,
~ ? [X0] :
( mtvisible(c_tptp_spindlecollectormt)
=> ( tptp_8_875(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0)
& tptpcol_16_31868(X0) ) ),
inference(negated_conjecture,[status(cth)],[f80]) ).
fof(f114,plain,
! [X0,X1,X2,X3] :
( isa(f_relationallexistsfn(X0,X2,X1,X3),X3)
| ~ isa(X0,X1)
| ~ relationallexists(X2,X1,X3) ),
inference(ennf_transformation,[],[f1]) ).
fof(f115,plain,
! [X0,X1,X2,X3] :
( isa(f_relationallexistsfn(X0,X2,X1,X3),X3)
| ~ isa(X0,X1)
| ~ relationallexists(X2,X1,X3) ),
inference(flattening,[],[f114]) ).
fof(f116,plain,
! [X0] :
( tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| ~ mtvisible(c_tptp_member2610_mt)
| ~ isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ),
inference(ennf_transformation,[],[f12]) ).
fof(f117,plain,
! [X0] :
( tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| ~ mtvisible(c_tptp_member2610_mt)
| ~ isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ),
inference(flattening,[],[f116]) ).
fof(f118,plain,
( relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)
| ~ mtvisible(c_tptp_member2610_mt) ),
inference(ennf_transformation,[],[f13]) ).
fof(f135,plain,
! [X0] :
( tptpcol_16_31868(X0)
| ~ isa(X0,c_tptpcol_16_31868) ),
inference(ennf_transformation,[],[f34]) ).
fof(f146,plain,
! [X0,X1] :
( mtvisible(X1)
| ~ mtvisible(X0)
| ~ genlmt(X0,X1) ),
inference(ennf_transformation,[],[f63]) ).
fof(f147,plain,
! [X0,X1] :
( mtvisible(X1)
| ~ mtvisible(X0)
| ~ genlmt(X0,X1) ),
inference(flattening,[],[f146]) ).
fof(f156,plain,
! [X0] :
( ( ~ tptp_8_875(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0)
| ~ tptpcol_16_31868(X0) )
& mtvisible(c_tptp_spindlecollectormt) ),
inference(ennf_transformation,[],[f81]) ).
fof(f157,plain,
! [X2,X3,X0,X1] :
( isa(f_relationallexistsfn(X0,X2,X1,X3),X3)
| ~ isa(X0,X1)
| ~ relationallexists(X2,X1,X3) ),
inference(cnf_transformation,[],[f115]) ).
fof(f164,plain,
genlmt(c_tptp_spindlecollectormt,c_tptp_member2610_mt),
inference(cnf_transformation,[],[f9]) ).
fof(f167,plain,
! [X0] :
( tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| ~ mtvisible(c_tptp_member2610_mt)
| ~ isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ),
inference(cnf_transformation,[],[f117]) ).
fof(f168,plain,
( relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)
| ~ mtvisible(c_tptp_member2610_mt) ),
inference(cnf_transformation,[],[f118]) ).
fof(f169,plain,
isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)),
inference(cnf_transformation,[],[f14]) ).
fof(f183,plain,
! [X0] :
( tptpcol_16_31868(X0)
| ~ isa(X0,c_tptpcol_16_31868) ),
inference(cnf_transformation,[],[f135]) ).
fof(f195,plain,
! [X0,X1] :
( mtvisible(X1)
| ~ mtvisible(X0)
| ~ genlmt(X0,X1) ),
inference(cnf_transformation,[],[f147]) ).
fof(f204,plain,
mtvisible(c_tptp_spindlecollectormt),
inference(cnf_transformation,[],[f156]) ).
fof(f205,plain,
! [X0] :
( ~ tptp_8_875(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0)
| ~ tptpcol_16_31868(X0) ),
inference(cnf_transformation,[],[f156]) ).
fof(f206,plain,
! [X2,X3,X0,X1] :
( isa(X0,X1)
| ~ isa(f_relationallexistsfn(X0,X2,X1,X3),X3)
| relationallexists(X2,X1,X3) ),
inference(consistent_polarity_flipping,[],[f157]) ).
fof(f213,plain,
~ genlmt(c_tptp_spindlecollectormt,c_tptp_member2610_mt),
inference(consistent_polarity_flipping,[],[f164]) ).
fof(f216,plain,
! [X0] :
( ~ tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| mtvisible(c_tptp_member2610_mt)
| isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ),
inference(consistent_polarity_flipping,[],[f167]) ).
fof(f217,plain,
( ~ relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)
| mtvisible(c_tptp_member2610_mt) ),
inference(consistent_polarity_flipping,[],[f168]) ).
fof(f218,plain,
~ isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)),
inference(consistent_polarity_flipping,[],[f169]) ).
fof(f231,plain,
! [X0] :
( tptpcol_16_31868(X0)
| isa(X0,c_tptpcol_16_31868) ),
inference(consistent_polarity_flipping,[],[f183]) ).
fof(f243,plain,
! [X0,X1] :
( mtvisible(X0)
| ~ mtvisible(X1)
| genlmt(X0,X1) ),
inference(consistent_polarity_flipping,[],[f195]) ).
fof(f252,plain,
! [X0] :
( tptp_8_875(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0)
| ~ tptpcol_16_31868(X0) ),
inference(consistent_polarity_flipping,[],[f205]) ).
fof(f253,plain,
~ mtvisible(c_tptp_spindlecollectormt),
inference(consistent_polarity_flipping,[],[f204]) ).
fof(f255,definition,
( spl0_1
<=> mtvisible(c_tptp_member2610_mt) ),
introduced(definition,[new_symbols(definition,[spl0_1])],[avatar_definition]) ).
fof(f259,definition,
( spl0_2
<=> relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868) ),
introduced(definition,[new_symbols(definition,[spl0_2])],[avatar_definition]) ).
fof(f261,plain,
( ~ relationallexists(c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)
| spl0_2 ),
inference(avatar_component_clause,[],[f259]) ).
fof(f262,plain,
( spl0_1
| ~ spl0_2 ),
inference(avatar_split_clause,[],[f217,f259,f255]) ).
fof(f264,definition,
( spl0_3
<=> ! [X0] :
( ~ tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ) ),
introduced(definition,[new_symbols(definition,[spl0_3])],[avatar_definition]) ).
fof(f265,plain,
( ! [X0] :
( ~ tptp_8_875(X0,f_relationallexistsfn(X0,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| isa(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) )
| ~ spl0_3 ),
inference(avatar_component_clause,[],[f264]) ).
fof(f266,plain,
( spl0_1
| spl0_3 ),
inference(avatar_split_clause,[],[f216,f264,f255]) ).
fof(f271,plain,
! [X0] :
( genlmt(c_tptp_spindlecollectormt,X0)
| ~ mtvisible(X0) ),
inference(resolution,[],[f243,f253]) ).
fof(f273,plain,
~ mtvisible(c_tptp_member2610_mt),
inference(resolution,[],[f271,f213]) ).
fof(f345,plain,
! [X0,X1] :
( relationallexists(X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),X1)
| ~ isa(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,X0,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),X1),X1) ),
inference(resolution,[],[f206,f218]) ).
fof(f386,plain,
( isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent))
| ~ tptpcol_16_31868(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| ~ spl0_3 ),
inference(resolution,[],[f265,f252]) ).
fof(f389,definition,
( spl0_4
<=> tptpcol_16_31868(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868)) ),
introduced(definition,[new_symbols(definition,[spl0_4])],[avatar_definition]) ).
fof(f391,plain,
( ~ tptpcol_16_31868(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868))
| spl0_4 ),
inference(avatar_component_clause,[],[f389]) ).
fof(f393,definition,
( spl0_5
<=> isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent)) ),
introduced(definition,[new_symbols(definition,[spl0_5])],[avatar_definition]) ).
fof(f395,plain,
( isa(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent))
| ~ spl0_5 ),
inference(avatar_component_clause,[],[f393]) ).
fof(f396,plain,
( ~ spl0_4
| spl0_5
| ~ spl0_3 ),
inference(avatar_split_clause,[],[f386,f264,f393,f389]) ).
fof(f397,plain,
( isa(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868),c_tptpcol_16_31868)
| spl0_4 ),
inference(resolution,[],[f391,f231]) ).
fof(f463,plain,
( ~ isa(f_relationallexistsfn(c_tptpnsubcollectionofwithrelationfromtypefnunitvectorintervaldirectionoftranslation_throughoutmovement_translationevent_786,c_tptp_8_875,f_subcollectionofwithrelationfromtypefn(c_unitvectorinterval,c_directionoftranslation_throughout,c_movement_translationevent),c_tptpcol_16_31868),c_tptpcol_16_31868)
| spl0_2 ),
inference(resolution,[],[f345,f261]) ).
fof(f464,plain,
( $false
| spl0_2
| spl0_4 ),
inference(resolution,[],[f463,f397]) ).
fof(f466,plain,
( spl0_2
| spl0_4 ),
inference(avatar_contradiction_clause,[],[f464]) ).
fof(f467,plain,
( $false
| ~ spl0_5 ),
inference(resolution,[],[f395,f218]) ).
fof(f468,plain,
~ spl0_5,
inference(avatar_contradiction_clause,[],[f467]) ).
fof(f469,plain,
~ spl0_1,
inference(avatar_split_clause,[],[f273,f255]) ).
cnf(s1,plain,
( spl0_1
| ~ spl0_2 ),
inference(sat_conversion,[],[f262]) ).
cnf(s2,plain,
( spl0_1
| spl0_3 ),
inference(sat_conversion,[],[f266]) ).
cnf(s3,plain,
( ~ spl0_3
| ~ spl0_4
| spl0_5 ),
inference(sat_conversion,[],[f396]) ).
cnf(s4,plain,
( spl0_2
| spl0_4 ),
inference(sat_conversion,[],[f466]) ).
cnf(s5,plain,
~ spl0_5,
inference(sat_conversion,[],[f468]) ).
cnf(s6,plain,
~ spl0_1,
inference(sat_conversion,[],[f469]) ).
cnf(s7,plain,
( ~ spl0_3
| ~ spl0_4 ),
inference(rat,[],[s3,s5]) ).
cnf(s8,plain,
spl0_3,
inference(rat,[],[s2,s6]) ).
cnf(s9,plain,
~ spl0_4,
inference(rat,[],[s7,s8]) ).
cnf(s10,plain,
spl0_2,
inference(rat,[],[s4,s9]) ).
cnf(s11,plain,
$false,
inference(rat,[],[s1,s10,s6]) ).
fof(f470,plain,
$false,
inference(avatar_sat_refutation,[],[s11]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : CSR027+1 : TPTP v9.3.1. Released v3.4.0.
% 0.00/0.05 % Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.07/0.18 % Computer : n017.cluster.edu
% 0.07/0.18 % Model : x86_64 x86_64
% 0.07/0.18 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.07/0.18 % Memory : 8046.5625MB
% 0.07/0.18 % OS : Linux 6.8.0-71-generic
% 0.07/0.18 % CPULimit : 300
% 0.07/0.18 % WCLimit : 300
% 0.07/0.18 % DateTime : Mon Sep 28 22:02:51 UTC 2026
% 0.07/0.18 % CPUTime :
% 0.07/0.18 Running run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.07/0.21 Running first-order model finding
% 0.07/0.21 Running: /export/starexec/sandbox/solver/bin/vampire-ho --input_syntax tptp --output_axiom_names on --mode casc --intent sat -m 16384 --cores 7 -t 300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.07/0.26 % (4089531)Will run a generic schedule for satisfiability detection.
% 0.07/0.26 % (4089553)ott-3_16_to=lpo:sil=16000:sp=arity:fd=off:rp=on:random_seed=4287037338:i=159:bs=unit_only:nicw=on:fsr=off:amm=off_2999 on theBenchmark for (2999ds/159Mi)
% 0.07/0.26 % (4089553) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-4089531-4089553"...
% 0.07/0.26 % (4089548)% WARNING: option uhcvi not known.
% 0.07/0.26 % (4089553)...printing done.
% 0.07/0.26 % (4089553)Refutation found. Thanks to Tanya!
% 0.07/0.26 % SZS status Theorem for theBenchmark
% 0.07/0.26 % SZS output start Proof for theBenchmark
% See solution above
% 0.27/0.26 % (4089553)------------------------------
% 0.27/0.26 % (4089553)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.27/0.26 % (4089553)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.27/0.26 % (4089553)CaDiCaL version: 2.1.3
% 0.27/0.26 % (4089553)Termination reason: Refutation
% 0.27/0.26 % (4089553)Time elapsed: 0.003 s
% 0.27/0.26 % (4089553)Peak memory usage: 12 MB
% 0.27/0.26 % (4089553)Instructions burned: 7 (million)
% 0.27/0.26 % (4089531)Success in time 0.042 s
% 0.27/0.26 % Vampire exiting
%------------------------------------------------------------------------------