%------------------------------------------------------------------------------
% File : Vampire-SAT---5.0.1
% Problem : KRS071+1 : TPTP v9.3.1. Released v3.1.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% Computer : n010.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 11:42:12 AM UTC 2026
% Result : Unsatisfiable 0.09s 0.43s
% Output : Refutation 0.09s
% Verified :
% SZS Type : Refutation
% Derivation depth : 16
% Number of leaves : 8
% Syntax : Number of formulae : 64 ( 11 unt; 4 def)
% Number of atoms : 312 ( 69 equ)
% Maximal formula atoms : 26 ( 4 avg)
% Number of connectives : 387 ( 139 ~; 147 |; 88 &)
% ( 9 <=>; 4 =>; 0 <=; 0 <~>)
% Maximal formula depth : 13 ( 5 avg)
% Maximal term depth : 2 ( 1 avg)
% Number of predicates : 13 ( 11 usr; 4 prp; 0-2 aty)
% Number of functors : 7 ( 7 usr; 1 con; 0-1 aty)
% Number of variables : 116 ( 0 sgn 83 !; 33 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f17,axiom,
! [X0] :
( cUnsatisfiable(X0)
<=> ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X1] :
( rr(X0,X1)
& cp2(X1) )
& ? [X1] :
( rr(X0,X1)
& cp3(X1) )
& ! [X2,X3,X4] :
( ( rr(X0,X2)
& rr(X0,X3)
& rr(X0,X4) )
=> ( X2 = X3
| X2 = X4
| X3 = X4 ) ) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_2) ).
fof(f18,axiom,
! [X0] :
( cp1(X0)
=> ~ ( cp4(X0)
| cp2(X0)
| cp3(X0)
| cp5(X0) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_3) ).
fof(f19,axiom,
! [X0] :
( cp2(X0)
=> ~ ( cp4(X0)
| cp3(X0)
| cp5(X0) ) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_4) ).
fof(f23,axiom,
cUnsatisfiable(i2003_11_14_17_18_39380),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',axiom_8) ).
fof(f24,plain,
! [X0] :
( cUnsatisfiable(X0)
<=> ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( ( rr(X0,X4)
& rr(X0,X5)
& rr(X0,X6) )
=> ( X4 = X5
| X4 = X6
| X5 = X6 ) ) ) ),
inference(rectify,[],[f17]) ).
fof(f53,plain,
! [X0] :
( cUnsatisfiable(X0)
<=> ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( X4 = X5
| X4 = X6
| X5 = X6
| ~ rr(X0,X4)
| ~ rr(X0,X5)
| ~ rr(X0,X6) ) ) ),
inference(ennf_transformation,[],[f24]) ).
fof(f54,plain,
! [X0] :
( cUnsatisfiable(X0)
<=> ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( X4 = X5
| X4 = X6
| X5 = X6
| ~ rr(X0,X4)
| ~ rr(X0,X5)
| ~ rr(X0,X6) ) ) ),
inference(flattening,[],[f53]) ).
fof(f55,plain,
! [X0] :
( ( ~ cp4(X0)
& ~ cp2(X0)
& ~ cp3(X0)
& ~ cp5(X0) )
| ~ cp1(X0) ),
inference(ennf_transformation,[],[f18]) ).
fof(f56,plain,
! [X0] :
( ( ~ cp4(X0)
& ~ cp3(X0)
& ~ cp5(X0) )
| ~ cp2(X0) ),
inference(ennf_transformation,[],[f19]) ).
fof(f59,definition,
! [X0] :
( sP0(X0)
<=> ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( X4 = X5
| X4 = X6
| X5 = X6
| ~ rr(X0,X4)
| ~ rr(X0,X5)
| ~ rr(X0,X6) ) ) ),
introduced(definition,[new_symbols(definition,[sP0])],[predicate_definition_introduction]) ).
fof(f60,plain,
! [X0] :
( cUnsatisfiable(X0)
<=> sP0(X0) ),
inference(definition_folding,[],[f54,f59]) ).
fof(f62,plain,
! [X0] :
( ( sP0(X0)
| ! [X1] :
( ~ rr(X0,X1)
| ~ cp1(X1) )
| ! [X2] :
( ~ rr(X0,X2)
| ~ cp2(X2) )
| ! [X3] :
( ~ rr(X0,X3)
| ~ cp3(X3) )
| ? [X4,X5,X6] :
( X4 != X5
& X4 != X6
& X5 != X6
& rr(X0,X4)
& rr(X0,X5)
& rr(X0,X6) ) )
& ( ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( X4 = X5
| X4 = X6
| X5 = X6
| ~ rr(X0,X4)
| ~ rr(X0,X5)
| ~ rr(X0,X6) ) )
| ~ sP0(X0) ) ),
inference(nnf_transformation,[],[f59]) ).
fof(f63,plain,
! [X0] :
( ( sP0(X0)
| ! [X1] :
( ~ rr(X0,X1)
| ~ cp1(X1) )
| ! [X2] :
( ~ rr(X0,X2)
| ~ cp2(X2) )
| ! [X3] :
( ~ rr(X0,X3)
| ~ cp3(X3) )
| ? [X4,X5,X6] :
( X4 != X5
& X4 != X6
& X5 != X6
& rr(X0,X4)
& rr(X0,X5)
& rr(X0,X6) ) )
& ( ( ? [X1] :
( rr(X0,X1)
& cp1(X1) )
& ? [X2] :
( rr(X0,X2)
& cp2(X2) )
& ? [X3] :
( rr(X0,X3)
& cp3(X3) )
& ! [X4,X5,X6] :
( X4 = X5
| X4 = X6
| X5 = X6
| ~ rr(X0,X4)
| ~ rr(X0,X5)
| ~ rr(X0,X6) ) )
| ~ sP0(X0) ) ),
inference(flattening,[],[f62]) ).
fof(f64,plain,
! [X0] :
( ( sP0(X0)
| ! [X1] :
( ~ rr(X0,X1)
| ~ cp1(X1) )
| ! [X2] :
( ~ rr(X0,X2)
| ~ cp2(X2) )
| ! [X3] :
( ~ rr(X0,X3)
| ~ cp3(X3) )
| ? [X4,X5,X6] :
( X4 != X5
& X4 != X6
& X5 != X6
& rr(X0,X4)
& rr(X0,X5)
& rr(X0,X6) ) )
& ( ( ? [X7] :
( rr(X0,X7)
& cp1(X7) )
& ? [X8] :
( rr(X0,X8)
& cp2(X8) )
& ? [X9] :
( rr(X0,X9)
& cp3(X9) )
& ! [X10,X11,X12] :
( X10 = X11
| X10 = X12
| X11 = X12
| ~ rr(X0,X10)
| ~ rr(X0,X11)
| ~ rr(X0,X12) ) )
| ~ sP0(X0) ) ),
inference(rectify,[],[f63]) ).
fof(f65,plain,
! [X0] :
( ( sP0(X0)
| ! [X1] :
( ~ rr(X0,X1)
| ~ cp1(X1) )
| ! [X2] :
( ~ rr(X0,X2)
| ~ cp2(X2) )
| ! [X3] :
( ~ rr(X0,X3)
| ~ cp3(X3) )
| ( sK1(X0) != sK2(X0)
& sK1(X0) != sK3(X0)
& sK2(X0) != sK3(X0)
& rr(X0,sK1(X0))
& rr(X0,sK2(X0))
& rr(X0,sK3(X0)) ) )
& ( ( rr(X0,sK4(X0))
& cp1(sK4(X0))
& rr(X0,sK5(X0))
& cp2(sK5(X0))
& rr(X0,sK6(X0))
& cp3(sK6(X0))
& ! [X10,X11,X12] :
( X10 = X11
| X10 = X12
| X11 = X12
| ~ rr(X0,X10)
| ~ rr(X0,X11)
| ~ rr(X0,X12) ) )
| ~ sP0(X0) ) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK1,sK2,sK3,sK4,sK5,sK6]),skolemize(X4,sK1(X0)),skolemize(X5,sK2(X0)),skolemize(X6,sK3(X0)),skolemize(X7,sK4(X0)),skolemize(X8,sK5(X0)),skolemize(X9,sK6(X0))],[f64]) ).
fof(f66,plain,
! [X0] :
( ( cUnsatisfiable(X0)
| ~ sP0(X0) )
& ( sP0(X0)
| ~ cUnsatisfiable(X0) ) ),
inference(nnf_transformation,[],[f60]) ).
fof(f86,plain,
! [X10,X0,X11,X12] :
( ~ rr(X0,X12)
| X10 = X12
| X11 = X12
| ~ rr(X0,X10)
| ~ rr(X0,X11)
| X10 = X11
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f87,plain,
! [X0] :
( cp3(sK6(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f88,plain,
! [X0] :
( rr(X0,sK6(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f89,plain,
! [X0] :
( cp2(sK5(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f90,plain,
! [X0] :
( rr(X0,sK5(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f91,plain,
! [X0] :
( cp1(sK4(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f92,plain,
! [X0] :
( rr(X0,sK4(X0))
| ~ sP0(X0) ),
inference(cnf_transformation,[],[f65]) ).
fof(f99,plain,
! [X0] :
( ~ cUnsatisfiable(X0)
| sP0(X0) ),
inference(cnf_transformation,[],[f66]) ).
fof(f102,plain,
! [X0] :
( ~ cp3(X0)
| ~ cp1(X0) ),
inference(cnf_transformation,[],[f55]) ).
fof(f103,plain,
! [X0] :
( ~ cp2(X0)
| ~ cp1(X0) ),
inference(cnf_transformation,[],[f55]) ).
fof(f106,plain,
! [X0] :
( ~ cp3(X0)
| ~ cp2(X0) ),
inference(cnf_transformation,[],[f56]) ).
fof(f113,plain,
cUnsatisfiable(i2003_11_14_17_18_39380),
inference(cnf_transformation,[],[f23]) ).
fof(f129,plain,
sP0(i2003_11_14_17_18_39380),
inference(resolution,[],[f99,f113]) ).
fof(f131,plain,
! [X0] :
( ~ cp2(sK6(X0))
| ~ sP0(X0) ),
inference(resolution,[],[f87,f106]) ).
fof(f132,plain,
! [X0] :
( ~ cp1(sK6(X0))
| ~ sP0(X0) ),
inference(resolution,[],[f87,f102]) ).
fof(f133,plain,
! [X0] :
( ~ cp1(sK5(X0))
| ~ sP0(X0) ),
inference(resolution,[],[f89,f103]) ).
fof(f139,plain,
! [X2,X0,X1] :
( sK4(X1) = X0
| sK4(X1) = X2
| ~ rr(X1,X0)
| ~ rr(X1,X2)
| X0 = X2
| ~ sP0(X1)
| ~ sP0(X1) ),
inference(resolution,[],[f86,f92]) ).
fof(f140,plain,
! [X2,X0,X1] :
( ~ rr(X1,X2)
| sK4(X1) = X2
| ~ rr(X1,X0)
| sK4(X1) = X0
| X0 = X2
| ~ sP0(X1) ),
inference(duplicate_literal_removal,[],[f139]) ).
fof(f156,plain,
! [X0,X1] :
( sK4(X0) = sK5(X0)
| ~ rr(X0,X1)
| sK4(X0) = X1
| sK5(X0) = X1
| ~ sP0(X0)
| ~ sP0(X0) ),
inference(resolution,[],[f140,f90]) ).
fof(f159,plain,
! [X0,X1] :
( ~ rr(X0,X1)
| sK4(X0) = sK5(X0)
| sK4(X0) = X1
| sK5(X0) = X1
| ~ sP0(X0) ),
inference(duplicate_literal_removal,[],[f156]) ).
fof(f161,plain,
! [X0] :
( sK4(X0) = sK5(X0)
| sK4(X0) = sK6(X0)
| sK5(X0) = sK6(X0)
| ~ sP0(X0)
| ~ sP0(X0) ),
inference(resolution,[],[f159,f88]) ).
fof(f166,plain,
! [X0] :
( ~ sP0(X0)
| sK4(X0) = sK6(X0)
| sK5(X0) = sK6(X0)
| sK4(X0) = sK5(X0) ),
inference(duplicate_literal_removal,[],[f161]) ).
fof(f167,plain,
( sK4(i2003_11_14_17_18_39380) = sK6(i2003_11_14_17_18_39380)
| sK6(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380)
| sK4(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380) ),
inference(resolution,[],[f166,f129]) ).
fof(f169,definition,
( spl7_1
<=> sK4(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380) ),
introduced(definition,[new_symbols(definition,[spl7_1])],[avatar_definition]) ).
fof(f171,plain,
( sK4(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380)
| ~ spl7_1 ),
inference(avatar_component_clause,[],[f169]) ).
fof(f173,definition,
( spl7_2
<=> sK6(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380) ),
introduced(definition,[new_symbols(definition,[spl7_2])],[avatar_definition]) ).
fof(f175,plain,
( sK6(i2003_11_14_17_18_39380) = sK5(i2003_11_14_17_18_39380)
| ~ spl7_2 ),
inference(avatar_component_clause,[],[f173]) ).
fof(f177,definition,
( spl7_3
<=> sK4(i2003_11_14_17_18_39380) = sK6(i2003_11_14_17_18_39380) ),
introduced(definition,[new_symbols(definition,[spl7_3])],[avatar_definition]) ).
fof(f179,plain,
( sK4(i2003_11_14_17_18_39380) = sK6(i2003_11_14_17_18_39380)
| ~ spl7_3 ),
inference(avatar_component_clause,[],[f177]) ).
fof(f180,plain,
( spl7_1
| spl7_2
| spl7_3 ),
inference(avatar_split_clause,[],[f167,f177,f173,f169]) ).
fof(f183,plain,
( ~ cp2(sK5(i2003_11_14_17_18_39380))
| ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_2 ),
inference(superposition,[],[f131,f175]) ).
fof(f187,plain,
( ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_2 ),
inference(forward_subsumption_resolution,[],[f183,f89]) ).
fof(f188,plain,
( $false
| ~ spl7_2 ),
inference(forward_subsumption_resolution,[],[f187,f129]) ).
fof(f189,plain,
~ spl7_2,
inference(avatar_contradiction_clause,[],[f188]) ).
fof(f204,plain,
( ~ cp1(sK4(i2003_11_14_17_18_39380))
| ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_3 ),
inference(superposition,[],[f132,f179]) ).
fof(f210,plain,
( ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_3 ),
inference(forward_subsumption_resolution,[],[f204,f91]) ).
fof(f212,plain,
( $false
| ~ spl7_3 ),
inference(forward_subsumption_resolution,[],[f210,f129]) ).
fof(f213,plain,
~ spl7_3,
inference(avatar_contradiction_clause,[],[f212]) ).
fof(f221,plain,
( ~ cp1(sK4(i2003_11_14_17_18_39380))
| ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_1 ),
inference(superposition,[],[f133,f171]) ).
fof(f225,plain,
( ~ sP0(i2003_11_14_17_18_39380)
| ~ spl7_1 ),
inference(forward_subsumption_resolution,[],[f221,f91]) ).
fof(f226,plain,
( $false
| ~ spl7_1 ),
inference(forward_subsumption_resolution,[],[f225,f129]) ).
fof(f227,plain,
~ spl7_1,
inference(avatar_contradiction_clause,[],[f226]) ).
cnf(s1,plain,
( spl7_1
| spl7_2
| spl7_3 ),
inference(sat_conversion,[],[f180]) ).
cnf(s2,plain,
~ spl7_2,
inference(sat_conversion,[],[f189]) ).
cnf(s4,plain,
~ spl7_3,
inference(sat_conversion,[],[f213]) ).
cnf(s5,plain,
~ spl7_1,
inference(sat_conversion,[],[f227]) ).
cnf(s6,plain,
$false,
inference(rat,[],[s1,s4,s2,s5]) ).
fof(f228,plain,
$false,
inference(avatar_sat_refutation,[],[s6]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.02 % Problem : KRS071+1 : TPTP v9.3.1. Released v3.1.0.
% 0.00/0.05 % Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.09/0.36 % Computer : n010.cluster.edu
% 0.09/0.36 % Model : x86_64 x86_64
% 0.09/0.36 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.09/0.36 % Memory : 8046.5625MB
% 0.09/0.36 % OS : Linux 6.8.0-71-generic
% 0.09/0.36 % CPULimit : 300
% 0.09/0.36 % WCLimit : 300
% 0.09/0.36 % DateTime : Sun Sep 27 13:19:46 UTC 2026
% 0.09/0.36 % CPUTime :
% 0.09/0.36 Running run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 SAT
% 0.09/0.38 Running first-order model finding
% 0.09/0.38 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.09/0.43 % (966331)Will run a generic schedule for satisfiability detection.
% 0.09/0.43 % (966338)dis+10_161_sil=256000:plsq=on:plsqr=61199697,1048576:gs=on:alpa=true:sac=on:slsq=on:cn=on:random_seed=2667533069:i=88024:add=on:rawr=on_2999 on theBenchmark for (2999ds/88024Mi)
% 0.09/0.43 % (966337)% WARNING: option uhcvi not known.
% 0.09/0.43 % (966336)fmb+10_1_sas=cadical:bce=on:rp=on:random_seed=2115527220_2999 on theBenchmark for (2999ds/0Mi)
% 0.09/0.43 % (966337)dis+11_61:31_drc=ordering:lsd=5:bsr=unit_only:rp=on:newcnf=on:random_seed=4056390:i=135531:add=off:rawr=on_2999 on theBenchmark for (2999ds/135531Mi)
% 0.09/0.43 % (966339)dis+10_1_sil=32000:sp=arity:random_seed=3345309842:i=103:fgj=on_2999 on theBenchmark for (2999ds/103Mi)
% 0.09/0.43 % (966342)ott-3_16_to=lpo:sil=16000:sp=arity:fd=off:rp=on:random_seed=1745233664:i=159:bs=unit_only:nicw=on:fsr=off:amm=off_2999 on theBenchmark for (2999ds/159Mi)
% 0.09/0.43 % (966340)ott+31_1_sil=16000:lcm=predicate:bce=on:newcnf=on:random_seed=170549396:i=116_2999 on theBenchmark for (2999ds/116Mi)
% 0.09/0.43 % (966341)ott+1_1_to=lpo:sil=16000:sp=reverse_arity:erd=off:random_seed=2411138766:i=131_2999 on theBenchmark for (2999ds/131Mi)
% 0.09/0.43 % TRYING [1]
% 0.09/0.43 % TRYING [2]
% 0.09/0.43 % TRYING [3]
% 0.09/0.43 % TRYING [4]
% 0.09/0.43 % TRYING [5]
% 0.09/0.43 % (966337) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966337"...
% 0.09/0.43 % (966339) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966339"...
% 0.09/0.43 % TRYING [6]
% 0.09/0.43 % (966340) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966340"...
% 0.09/0.43 % TRYING [7]
% 0.09/0.43 % (966341) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966341"...
% 0.09/0.43 % (966339)...printing done.
% 0.09/0.43 % (966340)...printing done.
% 0.09/0.43 % (966337)...printing done.
% 0.09/0.43 % TRYING [8]
% 0.09/0.43 % (966338) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966338"...
% 0.09/0.43 % (966342) found proof, printing to "/export/starexec/sandbox/tmp/vampire-proof-966331-966342"...
% 0.09/0.43 % (966339)Refutation found. Thanks to Tanya!
% 0.09/0.43 % SZS status Unsatisfiable for theBenchmark
% 0.09/0.43 % SZS output start Proof for theBenchmark
% See solution above
% 0.09/0.43 % (966339)------------------------------
% 0.09/0.43 % (966339)Version: Vampire 5.0.1 (Release build, commit 5ef7c2677 on 2026-07-16 16:54:09 +0200)
% 0.09/0.43 % (966339)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 0.09/0.43 % (966339)CaDiCaL version: 2.1.3
% 0.09/0.43 % (966339)Termination reason: Refutation
% 0.09/0.43 % (966339)Time elapsed: 0.005 s
% 0.09/0.43 % (966339)Peak memory usage: 12 MB
% 0.09/0.43 % (966339)Instructions burned: 6 (million)
% 0.09/0.43 % (966331)Success in time 0.039 s
% 0.09/0.43 % Vampire exiting
%------------------------------------------------------------------------------