%------------------------------------------------------------------------------
% File : Vampire---5.0.1
% Problem : GEO076-4 : TPTP v9.3.1. Released v1.0.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% Computer : n013.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:51:27 AM UTC 2026
% Result : Unsatisfiable 5.41s 1.66s
% Output : Refutation 5.41s
% Verified :
% SZS Type : Refutation
% Derivation depth : 23
% Number of leaves : 12
% Syntax : Number of formulae : 53 ( 9 unt; 3 def)
% Number of atoms : 243 ( 60 equ)
% Maximal formula atoms : 11 ( 4 avg)
% Number of connectives : 344 ( 154 ~; 187 |; 0 &)
% ( 3 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 15 ( 7 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 8 ( 6 usr; 4 prp; 0-2 aty)
% Number of functors : 4 ( 4 usr; 2 con; 0-2 aty)
% Number of variables : 76 ( 0 sgn 76 !; 0 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f1,axiom,
! [X0,X1] :
( on(X0,line_from_to(X0,X1))
| X0 = X1
| ~ point(X0)
| ~ point(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G1A) ).
fof(f2,axiom,
! [X0,X1] :
( on(X0,line_from_to(X1,X0))
| X1 = X0
| ~ point(X1)
| ~ point(X0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G1B) ).
fof(f3,plain,
! [X0,X1] :
( on(X0,line_from_to(X1,X0))
| X0 = X1
| ~ point(X1)
| ~ point(X0) ),
inference(reorient_equations,[],[f2]) ).
fof(f4,axiom,
! [X0,X1] :
( line(line_from_to(X0,X1))
| X0 = X1
| ~ point(X0)
| ~ point(X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G1C) ).
fof(f5,axiom,
! [X2,X3,X0,X1] :
( ~ on(X2,X3)
| X0 = X2
| ~ on(X2,X1)
| X1 = X3
| ~ on(X0,X3)
| ~ on(X0,X1)
| ~ point(X0)
| ~ point(X2)
| ~ line(X1)
| ~ line(X3) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G1D) ).
fof(f11,axiom,
! [X0] :
( ~ on(point_not_on_line(X0),X0)
| ~ line(X0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G3A) ).
fof(f12,axiom,
! [X0] :
( point(point_not_on_line(X0))
| ~ line(X0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G3B) ).
fof(f13,axiom,
line(at_least_one_line),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',axiom_G4A) ).
fof(f36,axiom,
point(a_point),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',there_is_a_point) ).
fof(f37,negated_conjecture,
! [X0] :
( on(a_point,X0)
| ~ line(X0) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',prove_point_is_not_on_every_line) ).
fof(f38,plain,
! [X2,X0,X1] :
( ~ line(X0)
| a_point = X1
| ~ on(a_point,X2)
| X0 = X2
| ~ on(X1,X0)
| ~ on(X1,X2)
| ~ point(X1)
| ~ point(a_point)
| ~ line(X2)
| ~ line(X0) ),
inference(resolution,[],[f37,f5]) ).
fof(f40,plain,
! [X2,X0,X1] :
( ~ line(X0)
| a_point = X1
| ~ on(a_point,X2)
| X0 = X2
| ~ on(X1,X0)
| ~ on(X1,X2)
| ~ point(X1)
| ~ point(a_point)
| ~ line(X2) ),
inference(duplicate_literal_removal,[],[f38]) ).
fof(f42,plain,
! [X2,X0,X1] :
( ~ line(X0)
| a_point = X1
| X0 = X2
| ~ on(X1,X0)
| ~ on(X1,X2)
| ~ point(X1)
| ~ point(a_point)
| ~ line(X2) ),
inference(forward_subsumption_resolution,[],[f40,f37]) ).
fof(f44,definition,
( spl0_1
<=> point(a_point) ),
introduced(definition,[new_symbols(definition,[spl0_1])],[avatar_definition]) ).
fof(f45,plain,
( ~ point(a_point)
| spl0_1 ),
inference(avatar_component_clause,[],[f44]) ).
fof(f51,definition,
( spl0_3
<=> ! [X2,X0,X1] :
( ~ line(X0)
| ~ line(X2)
| ~ point(X1)
| ~ on(X1,X2)
| X0 = X2
| a_point = X1
| ~ on(X1,X0) ) ),
introduced(definition,[new_symbols(definition,[spl0_3])],[avatar_definition]) ).
fof(f52,plain,
( ! [X2,X0,X1] :
( ~ on(X1,X2)
| ~ line(X2)
| ~ point(X1)
| ~ line(X0)
| X0 = X2
| a_point = X1
| ~ on(X1,X0) )
| ~ spl0_3 ),
inference(avatar_component_clause,[],[f51]) ).
fof(f53,plain,
( ~ spl0_1
| spl0_3 ),
inference(avatar_split_clause,[],[f42,f51,f44]) ).
fof(f54,plain,
( $false
| spl0_1 ),
inference(forward_subsumption_resolution,[],[f45,f36]) ).
fof(f55,plain,
spl0_1,
inference(avatar_contradiction_clause,[],[f54]) ).
fof(f63,plain,
( ! [X2,X0,X1] :
( ~ line(line_from_to(X0,X1))
| ~ point(X0)
| ~ line(X2)
| line_from_to(X0,X1) = X2
| a_point = X0
| ~ on(X0,X2)
| X0 = X1
| ~ point(X0)
| ~ point(X1) )
| ~ spl0_3 ),
inference(resolution,[],[f52,f1]) ).
fof(f76,plain,
( ! [X2,X0,X1] :
( ~ line(line_from_to(X0,X1))
| ~ point(X0)
| ~ line(X2)
| line_from_to(X0,X1) = X2
| a_point = X0
| ~ on(X0,X2)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(duplicate_literal_removal,[],[f63]) ).
fof(f84,plain,
( ! [X2,X0,X1] :
( line_from_to(X0,X1) = X2
| ~ line(X2)
| ~ point(X0)
| a_point = X0
| ~ on(X0,X2)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f76,f4]) ).
fof(f355,plain,
( ! [X2,X0,X1] :
( on(X1,X0)
| X1 = X2
| ~ point(X2)
| ~ point(X1)
| ~ line(X0)
| ~ point(X2)
| a_point = X2
| ~ on(X2,X0)
| X1 = X2
| ~ point(X1) )
| ~ spl0_3 ),
inference(superposition,[],[f3,f84]) ).
fof(f358,plain,
( ! [X2,X0,X1] :
( ~ on(X2,X0)
| X1 = X2
| ~ point(X2)
| ~ point(X1)
| ~ line(X0)
| a_point = X2
| on(X1,X0) )
| ~ spl0_3 ),
inference(duplicate_literal_removal,[],[f355]) ).
fof(f616,plain,
( ! [X2,X0,X1] :
( X0 = X1
| ~ point(X1)
| ~ point(X0)
| ~ line(line_from_to(X1,X2))
| a_point = X1
| on(X0,line_from_to(X1,X2))
| X1 = X2
| ~ point(X1)
| ~ point(X2) )
| ~ spl0_3 ),
inference(resolution,[],[f358,f1]) ).
fof(f633,plain,
( ! [X2,X0,X1] :
( X0 = X1
| ~ point(X1)
| ~ point(X0)
| ~ line(line_from_to(X1,X2))
| a_point = X1
| on(X0,line_from_to(X1,X2))
| X1 = X2
| ~ point(X2) )
| ~ spl0_3 ),
inference(duplicate_literal_removal,[],[f616]) ).
fof(f644,plain,
( ! [X2,X0,X1] :
( on(X0,line_from_to(X1,X2))
| ~ point(X1)
| ~ point(X0)
| a_point = X1
| X0 = X1
| X1 = X2
| ~ point(X2) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f633,f4]) ).
fof(f1267,definition,
( spl0_11
<=> ! [X2] :
( ~ point(X2)
| a_point = X2 ) ),
introduced(definition,[new_symbols(definition,[spl0_11])],[avatar_definition]) ).
fof(f1268,plain,
( ! [X2] :
( a_point = X2
| ~ point(X2) )
| ~ spl0_11 ),
inference(avatar_component_clause,[],[f1267]) ).
fof(f1330,plain,
( ! [X0,X1] :
( ~ point(X0)
| ~ point(point_not_on_line(line_from_to(X0,X1)))
| a_point = X0
| point_not_on_line(line_from_to(X0,X1)) = X0
| X0 = X1
| ~ point(X1)
| ~ line(line_from_to(X0,X1)) )
| ~ spl0_3 ),
inference(resolution,[],[f644,f11]) ).
fof(f1361,plain,
( ! [X0,X1] :
( ~ point(X0)
| a_point = X0
| point_not_on_line(line_from_to(X0,X1)) = X0
| X0 = X1
| ~ point(X1)
| ~ line(line_from_to(X0,X1)) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f1330,f12]) ).
fof(f1369,plain,
( ! [X0,X1] :
( point_not_on_line(line_from_to(X0,X1)) = X0
| a_point = X0
| ~ point(X0)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f1361,f4]) ).
fof(f1386,plain,
( ! [X0,X1] :
( ~ on(X0,line_from_to(X0,X1))
| ~ line(line_from_to(X0,X1))
| a_point = X0
| ~ point(X0)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(superposition,[],[f11,f1369]) ).
fof(f1396,plain,
( ! [X0,X1] :
( ~ line(line_from_to(X0,X1))
| a_point = X0
| ~ point(X0)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f1386,f1]) ).
fof(f1403,plain,
( ! [X0,X1] :
( a_point = X0
| ~ point(X0)
| X0 = X1
| ~ point(X1) )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f1396,f4]) ).
fof(f1414,plain,
( ! [X0] :
( X0 != X0
| ~ point(X0)
| a_point = X0
| ~ point(a_point) )
| ~ spl0_3 ),
inference(equality_factoring,[],[f1403]) ).
fof(f1416,plain,
( ! [X0] :
( ~ point(X0)
| a_point = X0
| ~ point(a_point) )
| ~ spl0_3 ),
inference(trivial_inequality_removal,[],[f1414]) ).
fof(f1418,plain,
( ! [X0] :
( ~ point(X0)
| a_point = X0 )
| ~ spl0_3 ),
inference(forward_subsumption_resolution,[],[f1416,f36]) ).
fof(f1420,plain,
( spl0_11
| ~ spl0_3 ),
inference(avatar_split_clause,[],[f1418,f51,f1267]) ).
fof(f1423,plain,
( ! [X0,X1] :
( on(X0,X1)
| ~ line(X1)
| ~ point(X0) )
| ~ spl0_11 ),
inference(superposition,[],[f37,f1268]) ).
fof(f1463,plain,
( ! [X0] :
( ~ line(X0)
| ~ point(point_not_on_line(X0))
| ~ line(X0) )
| ~ spl0_11 ),
inference(resolution,[],[f1423,f11]) ).
fof(f1471,plain,
( ! [X0] :
( ~ line(X0)
| ~ point(point_not_on_line(X0)) )
| ~ spl0_11 ),
inference(duplicate_literal_removal,[],[f1463]) ).
fof(f1477,plain,
( ! [X0] : ~ line(X0)
| ~ spl0_11 ),
inference(forward_subsumption_resolution,[],[f1471,f12]) ).
fof(f1478,plain,
( $false
| ~ spl0_11 ),
inference(resolution,[],[f1477,f13]) ).
fof(f1479,plain,
~ spl0_11,
inference(avatar_contradiction_clause,[],[f1478]) ).
cnf(s2,plain,
( ~ spl0_1
| spl0_3 ),
inference(sat_conversion,[],[f53]) ).
cnf(s3,plain,
spl0_1,
inference(sat_conversion,[],[f55]) ).
cnf(s12,plain,
( ~ spl0_3
| spl0_11 ),
inference(sat_conversion,[],[f1420]) ).
cnf(s15,plain,
~ spl0_11,
inference(sat_conversion,[],[f1479]) ).
cnf(s16,plain,
~ spl0_3,
inference(rat,[],[s12,s15]) ).
cnf(s17,plain,
$false,
inference(rat,[],[s2,s16,s3]) ).
fof(f1480,plain,
$false,
inference(avatar_sat_refutation,[],[s17]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : GEO076-4 : TPTP v9.3.1. Released v1.0.0.
% 0.00/0.06 % Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% 0.12/0.38 % Computer : n013.cluster.edu
% 0.12/0.38 % Model : x86_64 x86_64
% 0.12/0.38 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.38 % Memory : 8046.5625MB
% 0.12/0.38 % OS : Linux 6.8.0-71-generic
% 0.12/0.38 % CPULimit : 300
% 0.12/0.38 % WCLimit : 300
% 0.12/0.38 % DateTime : Sun Sep 27 06:51:22 UTC 2026
% 0.12/0.38 % CPUTime :
% 0.12/0.38 Running run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% 0.12/0.41 Running first-order theorem proving
% 0.12/0.41 Running: /export/starexec/sandbox2/solver/bin/vampire --input_syntax tptp --output_axiom_names on --mode casc -m 16384 --cores 7 -t 300 /export/starexec/sandbox2/benchmark/theBenchmark.p
% 3.76/1.57 % (4067662)Input is clausal, will run a generic CNF schedule.
% 3.76/1.57 % (4067669)lrs+1002_1_ncem=casc2026/models/loop8.pt:sil=128000:tgt=ground:npcc=on:sp=reverse_frequency:spb=intro:random_seed=1501469212:i=137899:s2at=10:gtgl=3:kws=precedence:add=on:bd=preordered:gtg=position_2999 on theBenchmark for (2999ds/137899Mi)
% 3.76/1.57 % (4067673)dis-21_1_sil=8000:lcm=predicate:random_seed=1652604355:st=5:avsq=on:i=117:avsqr=1,16:sd=3:aac=none:ep=RS:fsr=off:ss=included_2999 on theBenchmark for (2999ds/117Mi)
% 3.76/1.57 % (4067668)lrs+10_1_ncem=casc2026/models/loop8.pt:sil=128000:npcc=on:urr=on:br=off:random_seed=3854196839:i=132376:av=off_2999 on theBenchmark for (2999ds/132376Mi)
% 3.76/1.57 % (4067670)lrs+10_1_sil=8000:sp=occurrence:random_seed=625134199:i=107:sd=3:ss=axioms:sgt=8_2999 on theBenchmark for (2999ds/107Mi)
% 3.76/1.57 % (4067667)lrs+10_1_ncem=casc2026/models/loop8.pt:sil=128000:tgt=full:npcc=on:drc=off:sp=weighted_frequency:spb=goal:fd=preordered:foolp=on:random_seed=359762236:i=140167_2999 on theBenchmark for (2999ds/140167Mi)
% 3.76/1.57 % (4067672)dis-1011_1_sil=16000:fde=unused:s2agt=70:random_seed=1595747955:s2a=on:i=180:gtg=position_2999 on theBenchmark for (2999ds/180Mi)
% 3.76/1.57 % (4067671)dis-1002_1_to=lpo:sil=16000:fd=off:random_seed=1093141088:st=1.5:i=114:aac=none:ins=7:ss=axioms:fsd=on_2999 on theBenchmark for (2999ds/114Mi)
% 3.76/1.57 % (4067671)Refutation not found, incomplete strategy
% 3.76/1.57 % (4067671)------------------------------
% 3.76/1.57 % (4067671)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.76/1.57 % (4067670)Refutation not found, incomplete strategy
% 3.76/1.57 % (4067670)------------------------------
% 3.76/1.57 % (4067670)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.76/1.57 % (4067670)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.76/1.57 % (4067671)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.76/1.57 % (4067671)CaDiCaL version: 2.1.3
% 3.76/1.57 % (4067670)CaDiCaL version: 2.1.3
% 3.76/1.57 % (4067670)Termination reason: Refutation not found, incomplete strategy
% 3.76/1.57 % (4067670)Time elapsed: 0.001 s
% 3.76/1.57 % (4067671)Termination reason: Refutation not found, incomplete strategy
% 3.76/1.57 % (4067671)Time elapsed: 0.0000 s
% 3.76/1.57 % (4067670)Peak memory usage: 86 MB
% 3.76/1.57 % (4067671)Peak memory usage: 86 MB
% 3.76/1.57 % (4067673)Instruction limit reached!
% 3.76/1.57 % (4067673)------------------------------
% 3.76/1.57 % (4067673)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.76/1.57 % (4067673)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.76/1.57 % (4067673)CaDiCaL version: 2.1.3
% 3.76/1.57 % (4067673)Termination reason: Instruction limit
% 3.76/1.57 % (4067673)Termination phase: Saturation
% 3.76/1.57 % (4067673)Time elapsed: 0.059 s
% 3.76/1.57 % (4067673)Peak memory usage: 88 MB
% 3.76/1.57 % (4067673)Instructions burned: 119 (million)
% 3.76/1.57 % (4067672)Instruction limit reached!
% 3.76/1.57 % (4067672)------------------------------
% 3.76/1.57 % (4067672)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.76/1.57 % (4067672)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.76/1.57 % (4067672)CaDiCaL version: 2.1.3
% 3.76/1.57 % (4067672)Termination reason: Instruction limit
% 3.76/1.57 % (4067672)Termination phase: Saturation
% 3.76/1.57 % (4067672)Time elapsed: 0.091 s
% 3.76/1.57 % (4067672)Peak memory usage: 88 MB
% 3.76/1.57 % (4067672)Instructions burned: 182 (million)
% 3.76/1.57 % (4067681)dis+1010_3_sil=8000:plsq=on:drc=off:fde=none:plsqc=1:bsd=on:plsqr=7,2:sos=on:spb=goal_then_units:random_seed=2860620118:i=143:sd=2:aac=none:ss=axioms:sgt=16_2997 on theBenchmark for (2997ds/143Mi)
% 3.76/1.57 % (4067671)------------------------------
% 3.76/1.57 % (4067671)------------------------------
% 3.76/1.57 % (4067670)------------------------------
% 3.76/1.57 % (4067670)------------------------------
% 3.76/1.57 % (4067682)ott-1010_1_to=lpo:sil=16000:sos=on:spb=units:urr=on:bce=on:br=off:random_seed=3161213539:st=3:avsq=on:s2a=on:i=189:s2at=1.2:avsqr=1,16:sd=2:bd=all:nm=64:ss=axioms:sgt=30_2997 on theBenchmark for (2997ds/189Mi)
% 3.76/1.57 % (4067682)Refutation not found, incomplete strategy
% 3.76/1.57 % (4067682)------------------------------
% 3.76/1.57 % (4067682)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.76/1.57 % (4067682)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 5.41/1.66 % (4067682)CaDiCaL version: 2.1.3
% 5.41/1.66 % (4067682)Termination reason: Refutation not found, incomplete strategy
% 5.41/1.66 % (4067682)Time elapsed: 0.003 s
% 5.41/1.66 % (4067682)Peak memory usage: 88 MB
% 5.41/1.66 % (4067682)Instructions burned: 4 (million)
% 5.41/1.66 % (4067681)First to succeed.
% 5.41/1.66 % (4067681)Solution written to "/export/starexec/sandbox2/tmp/vampire-proof-4067662"
% 5.41/1.66 % (4067669)Also succeeded, but the first one will report.
% 5.41/1.66 % (4067686)lrs+10_64_to=lpo:sil=8000:random_seed=2314476791:i=126:bd=preordered_2995 on theBenchmark for (2995ds/126Mi)
% 5.41/1.66 % (4067685)lrs-1002_1_to=lpo:sil=8000:fde=none:sos=on:random_seed=3320363514:st=4:i=219:sd=3:ss=axioms_2995 on theBenchmark for (2995ds/219Mi)
% 5.41/1.66 % (4067686)Also succeeded, but the first one will report.
% 5.41/1.66 % (4067682)------------------------------
% 5.41/1.66 % (4067682)------------------------------
% 5.41/1.66 % (4067681)Refutation found. Thanks to Tanya!
% 5.41/1.66 % SZS status Unsatisfiable for theBenchmark
% 5.41/1.66 % SZS output start Proof for theBenchmark
% See solution above
% 5.41/1.66 % (4067681)------------------------------
% 5.41/1.66 % (4067681)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 5.41/1.66 % (4067681)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 5.41/1.66 % (4067681)CaDiCaL version: 2.1.3
% 5.41/1.66 % (4067681)Termination reason: Refutation
% 5.41/1.66 % (4067681)Time elapsed: 0.057 s
% 5.41/1.66 % (4067681)Peak memory usage: 90 MB
% 5.41/1.66 % (4067681)Instructions burned: 95 (million)
% 5.41/1.66 % (4067681)------------------------------
% 5.41/1.66 % (4067681)------------------------------
% 5.41/1.66 % (4067662)Success in time 0.709 s
% 5.41/1.66 % Vampire exiting
%------------------------------------------------------------------------------