%------------------------------------------------------------------------------
% File : Vampire---5.0.1
% Problem : SWC204-1 : TPTP v9.3.1. Released v2.4.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% Computer : n001.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 01:02:55 PM UTC 2026
% Result : Unsatisfiable 3.17s 1.36s
% Output : Refutation 3.97s
% Verified :
% SZS Type : Refutation
% Derivation depth : 14
% Number of leaves : 25
% Syntax : Number of formulae : 107 ( 19 unt; 10 def)
% Number of atoms : 270 ( 42 equ)
% Maximal formula atoms : 7 ( 2 avg)
% Number of connectives : 283 ( 120 ~; 153 |; 0 &)
% ( 10 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 10 ( 3 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 15 ( 13 usr; 11 prp; 0-2 aty)
% Number of functors : 9 ( 9 usr; 5 con; 0-2 aty)
% Number of variables : 15 ( 0 sgn 15 !; 0 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f8,axiom,
ssList(nil),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause8) ).
fof(f74,axiom,
! [X0] :
( ~ ssList(X0)
| app(nil,X0) = X0 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause74) ).
fof(f75,axiom,
! [X0] :
( ssList(tl(X0))
| ~ ssList(X0)
| nil = X0 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause75) ).
fof(f76,axiom,
! [X0] :
( ssItem(hd(X0))
| ~ ssList(X0)
| nil = X0 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause76) ).
fof(f85,axiom,
! [X0,X1] :
( ssList(app(X1,X0))
| ~ ssList(X1)
| ~ ssList(X0) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause85) ).
fof(f100,axiom,
! [X0,X1] :
( cons(X0,X1) != X1
| ~ ssItem(X0)
| ~ ssList(X1) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause99) ).
fof(f101,axiom,
! [X0,X1] :
( ~ ssList(X0)
| ~ ssList(X1)
| neq(X1,X0)
| X1 = X0 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause100) ).
fof(f102,plain,
! [X0,X1] :
( neq(X1,X0)
| ~ ssList(X1)
| ~ ssList(X0)
| X0 = X1 ),
inference(reorient_equations,[],[f101]) ).
fof(f107,axiom,
! [X0] :
( ~ ssList(X0)
| cons(hd(X0),tl(X0)) = X0
| nil = X0 ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',clause104) ).
fof(f202,negated_conjecture,
ssList(sk3),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_3) ).
fof(f203,negated_conjecture,
ssList(sk4),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_4) ).
fof(f204,negated_conjecture,
sk2 = sk4,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_5) ).
fof(f205,negated_conjecture,
sk1 = sk3,
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_6) ).
fof(f206,negated_conjecture,
( neq(sk2,nil)
| neq(sk2,nil) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_7) ).
fof(f210,negated_conjecture,
! [X0,X1] :
( ~ ssList(X0)
| sk4 = X0
| ~ ssList(X1)
| tl(sk4) != X1
| app(sk3,X1) != X0
| ~ neq(nil,sk4)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_11) ).
fof(f211,negated_conjecture,
( ~ neq(sk1,nil)
| ~ neq(sk4,nil) ),
file('/export/starexec/sandbox/benchmark/theBenchmark.p',co1_12) ).
fof(f214,plain,
( neq(sk4,nil)
| neq(sk4,nil) ),
inference(definition_unfolding,[],[f206,f204,f204]) ).
fof(f218,plain,
( ~ neq(sk3,nil)
| ~ neq(sk4,nil) ),
inference(definition_unfolding,[],[f211,f205]) ).
fof(f221,plain,
! [X0] :
( ~ ssList(X0)
| sk4 = X0
| ~ ssList(tl(sk4))
| app(sk3,tl(sk4)) != X0
| ~ neq(nil,sk4)
| ~ neq(sk4,nil) ),
inference(equality_resolution,[],[f210]) ).
fof(f222,plain,
( ~ ssList(app(sk3,tl(sk4)))
| sk4 = app(sk3,tl(sk4))
| ~ ssList(tl(sk4))
| ~ neq(nil,sk4)
| ~ neq(sk4,nil) ),
inference(equality_resolution,[],[f221]) ).
fof(f230,plain,
neq(sk4,nil),
inference(duplicate_literal_removal,[],[f214]) ).
fof(f232,definition,
( spl0_1
<=> neq(sk4,nil) ),
introduced(definition,[new_symbols(definition,[spl0_1])],[avatar_definition]) ).
fof(f233,plain,
( neq(sk4,nil)
| ~ spl0_1 ),
inference(avatar_component_clause,[],[f232]) ).
fof(f236,definition,
( spl0_2
<=> neq(sk3,nil) ),
introduced(definition,[new_symbols(definition,[spl0_2])],[avatar_definition]) ).
fof(f238,plain,
( ~ neq(sk3,nil)
| spl0_2 ),
inference(avatar_component_clause,[],[f236]) ).
fof(f239,plain,
( ~ spl0_1
| ~ spl0_2 ),
inference(avatar_split_clause,[],[f218,f236,f232]) ).
fof(f241,definition,
( spl0_3
<=> neq(nil,sk4) ),
introduced(definition,[new_symbols(definition,[spl0_3])],[avatar_definition]) ).
fof(f243,plain,
( ~ neq(nil,sk4)
| spl0_3 ),
inference(avatar_component_clause,[],[f241]) ).
fof(f245,definition,
( spl0_4
<=> ssList(tl(sk4)) ),
introduced(definition,[new_symbols(definition,[spl0_4])],[avatar_definition]) ).
fof(f246,plain,
( ssList(tl(sk4))
| ~ spl0_4 ),
inference(avatar_component_clause,[],[f245]) ).
fof(f247,plain,
( ~ ssList(tl(sk4))
| spl0_4 ),
inference(avatar_component_clause,[],[f245]) ).
fof(f249,definition,
( spl0_5
<=> sk4 = app(sk3,tl(sk4)) ),
introduced(definition,[new_symbols(definition,[spl0_5])],[avatar_definition]) ).
fof(f251,plain,
( sk4 = app(sk3,tl(sk4))
| ~ spl0_5 ),
inference(avatar_component_clause,[],[f249]) ).
fof(f253,definition,
( spl0_6
<=> ssList(app(sk3,tl(sk4))) ),
introduced(definition,[new_symbols(definition,[spl0_6])],[avatar_definition]) ).
fof(f255,plain,
( ~ ssList(app(sk3,tl(sk4)))
| spl0_6 ),
inference(avatar_component_clause,[],[f253]) ).
fof(f256,plain,
( ~ spl0_1
| ~ spl0_3
| ~ spl0_4
| spl0_5
| ~ spl0_6 ),
inference(avatar_split_clause,[],[f222,f253,f249,f245,f241,f232]) ).
fof(f259,plain,
spl0_1,
inference(avatar_split_clause,[],[f230,f232]) ).
fof(f280,plain,
( ~ ssList(sk3)
| ~ ssList(nil)
| nil = sk3
| spl0_2 ),
inference(resolution,[],[f102,f238]) ).
fof(f281,plain,
( ~ ssList(nil)
| ~ ssList(sk4)
| nil = sk4
| spl0_3 ),
inference(resolution,[],[f102,f243]) ).
fof(f286,plain,
( ~ ssList(sk4)
| nil = sk4
| spl0_3 ),
inference(forward_subsumption_resolution,[],[f281,f8]) ).
fof(f287,plain,
( ~ ssList(nil)
| nil = sk3
| spl0_2 ),
inference(forward_subsumption_resolution,[],[f280,f202]) ).
fof(f288,plain,
( nil = sk4
| spl0_3 ),
inference(forward_subsumption_resolution,[],[f286,f203]) ).
fof(f289,plain,
( nil = sk3
| spl0_2 ),
inference(forward_subsumption_resolution,[],[f287,f8]) ).
fof(f292,plain,
( ~ neq(nil,nil)
| spl0_3 ),
inference(superposition,[],[f243,f288]) ).
fof(f293,plain,
( neq(nil,nil)
| ~ spl0_1
| spl0_3 ),
inference(superposition,[],[f233,f288]) ).
fof(f295,plain,
( $false
| ~ spl0_1
| spl0_3 ),
inference(forward_subsumption_resolution,[],[f292,f293]) ).
fof(f296,plain,
( ~ spl0_1
| spl0_3 ),
inference(avatar_contradiction_clause,[],[f295]) ).
fof(f297,plain,
( ~ ssList(sk4)
| nil = sk4
| spl0_4 ),
inference(resolution,[],[f247,f75]) ).
fof(f298,plain,
( nil = sk4
| spl0_4 ),
inference(forward_subsumption_resolution,[],[f297,f203]) ).
fof(f306,plain,
( ~ neq(nil,nil)
| spl0_2 ),
inference(superposition,[],[f238,f289]) ).
fof(f313,plain,
( sk4 = cons(hd(sk4),tl(sk4))
| nil = sk4 ),
inference(resolution,[],[f107,f203]) ).
fof(f316,plain,
( neq(nil,nil)
| ~ spl0_1
| spl0_4 ),
inference(superposition,[],[f233,f298]) ).
fof(f323,plain,
( $false
| ~ spl0_1
| spl0_2
| spl0_4 ),
inference(forward_subsumption_resolution,[],[f316,f306]) ).
fof(f324,plain,
( ~ spl0_1
| spl0_2
| spl0_4 ),
inference(avatar_contradiction_clause,[],[f323]) ).
fof(f325,plain,
( ~ ssList(app(nil,tl(sk4)))
| spl0_2
| spl0_6 ),
inference(forward_demodulation,[],[f255,f289]) ).
fof(f327,definition,
( spl0_7
<=> nil = sk4 ),
introduced(definition,[new_symbols(definition,[spl0_7])],[avatar_definition]) ).
fof(f328,plain,
( nil != sk4
| spl0_7 ),
inference(avatar_component_clause,[],[f327]) ).
fof(f329,plain,
( nil = sk4
| ~ spl0_7 ),
inference(avatar_component_clause,[],[f327]) ).
fof(f331,definition,
( spl0_8
<=> sk4 = cons(hd(sk4),tl(sk4)) ),
introduced(definition,[new_symbols(definition,[spl0_8])],[avatar_definition]) ).
fof(f333,plain,
( sk4 = cons(hd(sk4),tl(sk4))
| ~ spl0_8 ),
inference(avatar_component_clause,[],[f331]) ).
fof(f334,plain,
( spl0_7
| spl0_8 ),
inference(avatar_split_clause,[],[f313,f331,f327]) ).
fof(f336,plain,
( tl(sk4) = app(nil,tl(sk4))
| ~ spl0_4 ),
inference(resolution,[],[f246,f74]) ).
fof(f352,plain,
( neq(nil,nil)
| ~ spl0_1
| ~ spl0_7 ),
inference(superposition,[],[f233,f329]) ).
fof(f359,plain,
( $false
| ~ spl0_1
| spl0_2
| ~ spl0_7 ),
inference(forward_subsumption_resolution,[],[f352,f306]) ).
fof(f360,plain,
( ~ spl0_1
| spl0_2
| ~ spl0_7 ),
inference(avatar_contradiction_clause,[],[f359]) ).
fof(f370,plain,
( ~ ssList(nil)
| ~ ssList(tl(sk4))
| spl0_2
| spl0_6 ),
inference(resolution,[],[f325,f85]) ).
fof(f371,plain,
( ~ ssList(tl(sk4))
| spl0_2
| spl0_6 ),
inference(forward_subsumption_resolution,[],[f370,f8]) ).
fof(f372,plain,
( $false
| spl0_2
| ~ spl0_4
| spl0_6 ),
inference(forward_subsumption_resolution,[],[f371,f246]) ).
fof(f373,plain,
( spl0_2
| ~ spl0_4
| spl0_6 ),
inference(avatar_contradiction_clause,[],[f372]) ).
fof(f381,plain,
( sk4 = app(nil,tl(sk4))
| spl0_2
| ~ spl0_5 ),
inference(forward_demodulation,[],[f251,f289]) ).
fof(f394,plain,
( sk4 != tl(sk4)
| ~ ssItem(hd(sk4))
| ~ ssList(tl(sk4))
| ~ spl0_8 ),
inference(superposition,[],[f100,f333]) ).
fof(f397,plain,
( sk4 != tl(sk4)
| ~ ssItem(hd(sk4))
| ~ spl0_4
| ~ spl0_8 ),
inference(forward_subsumption_resolution,[],[f394,f246]) ).
fof(f399,definition,
( spl0_13
<=> ssItem(hd(sk4)) ),
introduced(definition,[new_symbols(definition,[spl0_13])],[avatar_definition]) ).
fof(f401,plain,
( ~ ssItem(hd(sk4))
| spl0_13 ),
inference(avatar_component_clause,[],[f399]) ).
fof(f403,definition,
( spl0_14
<=> sk4 = tl(sk4) ),
introduced(definition,[new_symbols(definition,[spl0_14])],[avatar_definition]) ).
fof(f405,plain,
( sk4 != tl(sk4)
| spl0_14 ),
inference(avatar_component_clause,[],[f403]) ).
fof(f406,plain,
( ~ spl0_13
| ~ spl0_14
| ~ spl0_4
| ~ spl0_8 ),
inference(avatar_split_clause,[],[f397,f331,f245,f403,f399]) ).
fof(f408,plain,
( ~ ssList(sk4)
| nil = sk4
| spl0_13 ),
inference(resolution,[],[f401,f76]) ).
fof(f409,plain,
( nil = sk4
| spl0_13 ),
inference(forward_subsumption_resolution,[],[f408,f203]) ).
fof(f410,plain,
( $false
| spl0_7
| spl0_13 ),
inference(forward_subsumption_resolution,[],[f409,f328]) ).
fof(f411,plain,
( spl0_7
| spl0_13 ),
inference(avatar_contradiction_clause,[],[f410]) ).
fof(f477,plain,
( sk4 = tl(sk4)
| spl0_2
| ~ spl0_4
| ~ spl0_5 ),
inference(superposition,[],[f336,f381]) ).
fof(f487,plain,
( $false
| spl0_2
| ~ spl0_4
| ~ spl0_5
| spl0_14 ),
inference(forward_subsumption_resolution,[],[f477,f405]) ).
fof(f488,plain,
( spl0_2
| ~ spl0_4
| ~ spl0_5
| spl0_14 ),
inference(avatar_contradiction_clause,[],[f487]) ).
cnf(s1,plain,
( ~ spl0_1
| ~ spl0_2 ),
inference(sat_conversion,[],[f239]) ).
cnf(s2,plain,
( ~ spl0_1
| ~ spl0_3
| ~ spl0_4
| spl0_5
| ~ spl0_6 ),
inference(sat_conversion,[],[f256]) ).
cnf(s5,plain,
spl0_1,
inference(sat_conversion,[],[f259]) ).
cnf(s6,plain,
( ~ spl0_1
| spl0_3 ),
inference(sat_conversion,[],[f296]) ).
cnf(s8,plain,
( ~ spl0_1
| spl0_2
| spl0_4 ),
inference(sat_conversion,[],[f324]) ).
cnf(s9,plain,
( spl0_7
| spl0_8 ),
inference(sat_conversion,[],[f334]) ).
cnf(s12,plain,
( ~ spl0_1
| spl0_2
| ~ spl0_7 ),
inference(sat_conversion,[],[f360]) ).
cnf(s14,plain,
( spl0_2
| ~ spl0_4
| spl0_6 ),
inference(sat_conversion,[],[f373]) ).
cnf(s16,plain,
( ~ spl0_4
| ~ spl0_8
| ~ spl0_13
| ~ spl0_14 ),
inference(sat_conversion,[],[f406]) ).
cnf(s17,plain,
( spl0_7
| spl0_13 ),
inference(sat_conversion,[],[f411]) ).
cnf(s19,plain,
( spl0_2
| ~ spl0_4
| ~ spl0_5
| spl0_14 ),
inference(sat_conversion,[],[f488]) ).
cnf(s20,plain,
spl0_3,
inference(rat,[],[s6,s5]) ).
cnf(s21,plain,
( ~ spl0_4
| spl0_5
| ~ spl0_6 ),
inference(rat,[],[s2,s20,s5]) ).
cnf(s22,plain,
~ spl0_2,
inference(rat,[],[s1,s5]) ).
cnf(s23,plain,
~ spl0_7,
inference(rat,[],[s12,s5,s22]) ).
cnf(s24,plain,
spl0_4,
inference(rat,[],[s8,s5,s22]) ).
cnf(s25,plain,
spl0_13,
inference(rat,[],[s17,s23]) ).
cnf(s26,plain,
spl0_8,
inference(rat,[],[s9,s23]) ).
cnf(s27,plain,
spl0_6,
inference(rat,[],[s14,s22,s24]) ).
cnf(s28,plain,
spl0_5,
inference(rat,[],[s21,s27,s24]) ).
cnf(s29,plain,
~ spl0_14,
inference(rat,[],[s16,s24,s25,s26]) ).
cnf(s31,plain,
$false,
inference(rat,[],[s19,s24,s22,s29,s28]) ).
fof(f491,plain,
$false,
inference(avatar_sat_refutation,[],[s31]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : SWC204-1 : TPTP v9.3.1. Released v2.4.0.
% 0.00/0.05 % Command : run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.12/0.38 % Computer : n001.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 : Mon Sep 28 08:32:47 UTC 2026
% 0.12/0.38 % CPUTime :
% 0.12/0.38 Running run_vampire /export/starexec/sandbox/benchmark/theBenchmark.p 300 THM
% 0.16/0.42 Running first-order theorem proving
% 0.16/0.42 Running: /export/starexec/sandbox/solver/bin/vampire --input_syntax tptp --output_axiom_names on --mode casc -m 16384 --cores 7 -t 300 /export/starexec/sandbox/benchmark/theBenchmark.p
% 3.17/1.36 % (213376)Input is clausal, will run a generic CNF schedule.
% 3.17/1.36 % (213485)dis-21_1_sil=8000:lcm=predicate:random_seed=1443995850: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.17/1.36 % (213485)Instruction limit reached!
% 3.17/1.36 % (213485)------------------------------
% 3.17/1.36 % (213485)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.17/1.36 % (213485)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.17/1.36 % (213485)CaDiCaL version: 2.1.3
% 3.17/1.36 % (213485)Termination reason: Instruction limit
% 3.17/1.36 % (213485)Termination phase: Saturation
% 3.17/1.36 % (213485)Time elapsed: 0.031 s
% 3.17/1.36 % (213485)Peak memory usage: 89 MB
% 3.17/1.36 % (213485)Instructions burned: 118 (million)
% 3.17/1.36 % (213480)lrs+10_1_sil=8000:sp=occurrence:random_seed=1732889247:i=107:sd=3:ss=axioms:sgt=8_2999 on theBenchmark for (2999ds/107Mi)
% 3.17/1.36 % (213476)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=307289601:i=140167_2999 on theBenchmark for (2999ds/140167Mi)
% 3.17/1.36 % (213484)dis-1011_1_sil=16000:fde=unused:s2agt=70:random_seed=2108943860:s2a=on:i=180:gtg=position_2999 on theBenchmark for (2999ds/180Mi)
% 3.17/1.36 % (213479)lrs+1002_1_ncem=casc2026/models/loop8.pt:sil=128000:tgt=ground:npcc=on:sp=reverse_frequency:spb=intro:random_seed=1336736166:i=137899:s2at=10:gtgl=3:kws=precedence:add=on:bd=preordered:gtg=position_2999 on theBenchmark for (2999ds/137899Mi)
% 3.17/1.36 % (213478)lrs+10_1_ncem=casc2026/models/loop8.pt:sil=128000:npcc=on:urr=on:br=off:random_seed=720622083:i=132376:av=off_2999 on theBenchmark for (2999ds/132376Mi)
% 3.17/1.36 % (213482)dis-1002_1_to=lpo:sil=16000:fd=off:random_seed=2445703318:st=1.5:i=114:aac=none:ins=7:ss=axioms:fsd=on_2999 on theBenchmark for (2999ds/114Mi)
% 3.17/1.36 % (213480)First to succeed.
% 3.17/1.36 % (213482)Also succeeded, but the first one will report.
% 3.17/1.36 % (213480)Solution written to "/export/starexec/sandbox/tmp/vampire-proof-213376"
% 3.17/1.36 % (213484)Also succeeded, but the first one will report.
% 3.17/1.36 % (213490)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=2589942107:i=143:sd=2:aac=none:ss=axioms:sgt=16_2998 on theBenchmark for (2998ds/143Mi)
% 3.17/1.36 % (213490)Also succeeded, but the first one will report.
% 3.17/1.36 % (213480)Refutation found. Thanks to Tanya!
% 3.17/1.36 % SZS status Unsatisfiable for theBenchmark
% 3.17/1.36 % SZS output start Proof for theBenchmark
% See solution above
% 3.97/1.55 % (213480)------------------------------
% 3.97/1.55 % (213480)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 3.97/1.55 % (213480)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 3.97/1.55 % (213480)CaDiCaL version: 2.1.3
% 3.97/1.55 % (213480)Termination reason: Refutation
% 3.97/1.55 % (213480)Time elapsed: 0.009 s
% 3.97/1.55 % (213480)Peak memory usage: 89 MB
% 3.97/1.55 % (213480)Instructions burned: 11 (million)
% 3.97/1.55 % (213480)------------------------------
% 3.97/1.55 % (213480)------------------------------
% 3.97/1.55 % (213376)Success in time 0.487 s
% 3.97/1.55 % Vampire exiting
%------------------------------------------------------------------------------