%------------------------------------------------------------------------------
% File : Vampire---5.0.1
% Problem : SET807+4 : TPTP v9.3.1. Released v3.2.0.
% Transfm : none
% Format : tptp:raw
% Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% Computer : n011.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 12:41:58 PM UTC 2026
% Result : Theorem 2.01s 1.15s
% Output : Refutation 2.54s
% Verified :
% SZS Type : Refutation
% Derivation depth : 14
% Number of leaves : 8
% Syntax : Number of formulae : 69 ( 12 unt; 3 def)
% Number of atoms : 208 ( 0 equ)
% Maximal formula atoms : 9 ( 3 avg)
% Number of connectives : 212 ( 73 ~; 66 |; 54 &)
% ( 8 <=>; 11 =>; 0 <=; 0 <~>)
% Maximal formula depth : 13 ( 5 avg)
% Maximal term depth : 4 ( 1 avg)
% Number of predicates : 8 ( 7 usr; 3 prp; 0-3 aty)
% Number of functors : 8 ( 8 usr; 2 con; 0-2 aty)
% Number of variables : 120 ( 0 sgn 99 !; 21 ?)
% Comments :
%------------------------------------------------------------------------------
fof(f1,axiom,
! [X0,X1] :
( subset(X0,X1)
<=> ! [X2] :
( member(X2,X0)
=> member(X2,X1) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',subset) ).
fof(f3,axiom,
! [X0,X1] :
( member(X0,power_set(X1))
<=> subset(X0,X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',power_set) ).
fof(f16,axiom,
! [X0,X1] :
( pre_order(X0,X1)
<=> ( ! [X2] :
( member(X2,X1)
=> apply(X0,X2,X2) )
& ! [X2,X3,X4] :
( ( member(X2,X1)
& member(X3,X1)
& member(X4,X1) )
=> ( ( apply(X0,X2,X3)
& apply(X0,X3,X4) )
=> apply(X0,X2,X4) ) ) ) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',pre_order) ).
fof(f17,axiom,
! [X0,X1] :
( apply(subset_predicate,X0,X1)
<=> subset(X0,X1) ),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',rel_subset) ).
fof(f18,conjecture,
! [X0] : pre_order(subset_predicate,power_set(X0)),
file('/export/starexec/sandbox2/benchmark/theBenchmark.p',thIV18a) ).
fof(f19,negated_conjecture,
~ ! [X0] : pre_order(subset_predicate,power_set(X0)),
inference(negated_conjecture,[status(cth)],[f18]) ).
fof(f21,plain,
! [X0,X1] :
( pre_order(X0,X1)
<=> ( ! [X2] :
( member(X2,X1)
=> apply(X0,X2,X2) )
& ! [X3,X4,X5] :
( ( member(X3,X1)
& member(X4,X1)
& member(X5,X1) )
=> ( ( apply(X0,X3,X4)
& apply(X0,X4,X5) )
=> apply(X0,X3,X5) ) ) ) ),
inference(rectify,[],[f16]) ).
fof(f23,plain,
! [X0,X1] :
( ( ! [X2] :
( member(X2,X1)
=> apply(X0,X2,X2) )
& ! [X3,X4,X5] :
( ( member(X3,X1)
& member(X4,X1)
& member(X5,X1) )
=> ( ( apply(X0,X3,X4)
& apply(X0,X4,X5) )
=> apply(X0,X3,X5) ) ) )
=> pre_order(X0,X1) ),
inference(unused_predicate_definition_removal,[],[f21]) ).
fof(f24,plain,
? [X0] : ~ pre_order(subset_predicate,power_set(X0)),
inference(ennf_transformation,[],[f19]) ).
fof(f25,plain,
! [X0,X1] :
( subset(X0,X1)
<=> ! [X2] :
( member(X2,X1)
| ~ member(X2,X0) ) ),
inference(ennf_transformation,[],[f1]) ).
fof(f26,plain,
! [X0,X1] :
( pre_order(X0,X1)
| ? [X2] :
( ~ apply(X0,X2,X2)
& member(X2,X1) )
| ? [X3,X4,X5] :
( ~ apply(X0,X3,X5)
& apply(X0,X3,X4)
& apply(X0,X4,X5)
& member(X3,X1)
& member(X4,X1)
& member(X5,X1) ) ),
inference(ennf_transformation,[],[f23]) ).
fof(f27,plain,
! [X0,X1] :
( pre_order(X0,X1)
| ? [X2] :
( ~ apply(X0,X2,X2)
& member(X2,X1) )
| ? [X3,X4,X5] :
( ~ apply(X0,X3,X5)
& apply(X0,X3,X4)
& apply(X0,X4,X5)
& member(X3,X1)
& member(X4,X1)
& member(X5,X1) ) ),
inference(flattening,[],[f26]) ).
fof(f28,definition,
! [X0,X1] :
( ? [X3,X4,X5] :
( ~ apply(X0,X3,X5)
& apply(X0,X3,X4)
& apply(X0,X4,X5)
& member(X3,X1)
& member(X4,X1)
& member(X5,X1) )
| ~ sP0(X0,X1) ),
introduced(definition,[new_symbols(definition,[sP0])],[predicate_definition_introduction]) ).
fof(f29,plain,
! [X0,X1] :
( pre_order(X0,X1)
| ? [X2] :
( ~ apply(X0,X2,X2)
& member(X2,X1) )
| sP0(X0,X1) ),
inference(definition_folding,[],[f27,f28]) ).
fof(f30,plain,
! [X0,X1] :
( ( apply(subset_predicate,X0,X1)
| ~ subset(X0,X1) )
& ( subset(X0,X1)
| ~ apply(subset_predicate,X0,X1) ) ),
inference(nnf_transformation,[],[f17]) ).
fof(f31,plain,
~ pre_order(subset_predicate,power_set(sK1)),
inference(skolemize,[status(esa),new_symbols(skolem,[sK1]),skolemize(X0,sK1)],[f24]) ).
fof(f32,plain,
! [X0,X1] :
( ( member(X0,power_set(X1))
| ~ subset(X0,X1) )
& ( subset(X0,X1)
| ~ member(X0,power_set(X1)) ) ),
inference(nnf_transformation,[],[f3]) ).
fof(f33,plain,
! [X0,X1] :
( ( subset(X0,X1)
| ? [X2] :
( ~ member(X2,X1)
& member(X2,X0) ) )
& ( ! [X2] :
( member(X2,X1)
| ~ member(X2,X0) )
| ~ subset(X0,X1) ) ),
inference(nnf_transformation,[],[f25]) ).
fof(f34,plain,
! [X0,X1] :
( ( subset(X0,X1)
| ? [X2] :
( ~ member(X2,X1)
& member(X2,X0) ) )
& ( ! [X3] :
( member(X3,X1)
| ~ member(X3,X0) )
| ~ subset(X0,X1) ) ),
inference(rectify,[],[f33]) ).
fof(f35,plain,
! [X0,X1] :
( ( subset(X0,X1)
| ( ~ member(sK2(X0,X1),X1)
& member(sK2(X0,X1),X0) ) )
& ( ! [X3] :
( member(X3,X1)
| ~ member(X3,X0) )
| ~ subset(X0,X1) ) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK2]),skolemize(X2,sK2(X0,X1))],[f34]) ).
fof(f36,plain,
! [X0,X1] :
( ? [X3,X4,X5] :
( ~ apply(X0,X3,X5)
& apply(X0,X3,X4)
& apply(X0,X4,X5)
& member(X3,X1)
& member(X4,X1)
& member(X5,X1) )
| ~ sP0(X0,X1) ),
inference(nnf_transformation,[],[f28]) ).
fof(f37,plain,
! [X0,X1] :
( ? [X2,X3,X4] :
( ~ apply(X0,X2,X4)
& apply(X0,X2,X3)
& apply(X0,X3,X4)
& member(X2,X1)
& member(X3,X1)
& member(X4,X1) )
| ~ sP0(X0,X1) ),
inference(rectify,[],[f36]) ).
fof(f38,plain,
! [X0,X1] :
( ( ~ apply(X0,sK3(X0,X1),sK5(X0,X1))
& apply(X0,sK3(X0,X1),sK4(X0,X1))
& apply(X0,sK4(X0,X1),sK5(X0,X1))
& member(sK3(X0,X1),X1)
& member(sK4(X0,X1),X1)
& member(sK5(X0,X1),X1) )
| ~ sP0(X0,X1) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK3,sK4,sK5]),skolemize(X2,sK3(X0,X1)),skolemize(X3,sK4(X0,X1)),skolemize(X4,sK5(X0,X1))],[f37]) ).
fof(f39,plain,
! [X0,X1] :
( pre_order(X0,X1)
| ( ~ apply(X0,sK6(X0,X1),sK6(X0,X1))
& member(sK6(X0,X1),X1) )
| sP0(X0,X1) ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK6]),skolemize(X2,sK6(X0,X1))],[f29]) ).
fof(f45,plain,
! [X0,X1] :
( subset(X0,X1)
| ~ apply(subset_predicate,X0,X1) ),
inference(cnf_transformation,[],[f30]) ).
fof(f46,plain,
! [X0,X1] :
( ~ subset(X0,X1)
| apply(subset_predicate,X0,X1) ),
inference(cnf_transformation,[],[f30]) ).
fof(f47,plain,
~ pre_order(subset_predicate,power_set(sK1)),
inference(cnf_transformation,[],[f31]) ).
fof(f48,plain,
! [X0,X1] :
( subset(X0,X1)
| ~ member(X0,power_set(X1)) ),
inference(cnf_transformation,[],[f32]) ).
fof(f49,plain,
! [X0,X1] :
( ~ subset(X0,X1)
| member(X0,power_set(X1)) ),
inference(cnf_transformation,[],[f32]) ).
fof(f50,plain,
! [X3,X0,X1] :
( ~ subset(X0,X1)
| ~ member(X3,X0)
| member(X3,X1) ),
inference(cnf_transformation,[],[f35]) ).
fof(f51,plain,
! [X0,X1] :
( subset(X0,X1)
| member(sK2(X0,X1),X0) ),
inference(cnf_transformation,[],[f35]) ).
fof(f52,plain,
! [X0,X1] :
( subset(X0,X1)
| ~ member(sK2(X0,X1),X1) ),
inference(cnf_transformation,[],[f35]) ).
fof(f56,plain,
! [X0,X1] :
( ~ sP0(X0,X1)
| apply(X0,sK4(X0,X1),sK5(X0,X1)) ),
inference(cnf_transformation,[],[f38]) ).
fof(f57,plain,
! [X0,X1] :
( ~ sP0(X0,X1)
| apply(X0,sK3(X0,X1),sK4(X0,X1)) ),
inference(cnf_transformation,[],[f38]) ).
fof(f58,plain,
! [X0,X1] :
( ~ sP0(X0,X1)
| ~ apply(X0,sK3(X0,X1),sK5(X0,X1)) ),
inference(cnf_transformation,[],[f38]) ).
fof(f60,plain,
! [X0,X1] :
( pre_order(X0,X1)
| ~ apply(X0,sK6(X0,X1),sK6(X0,X1))
| sP0(X0,X1) ),
inference(cnf_transformation,[],[f39]) ).
fof(f78,plain,
! [X0,X1] :
( apply(subset_predicate,X0,X1)
| ~ member(X0,power_set(X1)) ),
inference(resolution,[],[f48,f46]) ).
fof(f81,plain,
! [X0,X1] :
( member(sK2(X0,X1),X0)
| member(X0,power_set(X1)) ),
inference(resolution,[],[f51,f49]) ).
fof(f82,plain,
! [X0,X1] :
( apply(subset_predicate,X0,X1)
| member(sK2(X0,X1),X0) ),
inference(resolution,[],[f51,f46]) ).
fof(f83,plain,
! [X0,X1] :
( ~ member(sK2(X0,X1),X1)
| member(X0,power_set(X1)) ),
inference(resolution,[],[f52,f49]) ).
fof(f84,plain,
! [X0,X1] :
( apply(subset_predicate,X0,X1)
| ~ member(sK2(X0,X1),X1) ),
inference(resolution,[],[f52,f46]) ).
fof(f88,plain,
! [X2,X0,X1] :
( ~ apply(subset_predicate,X1,X2)
| member(X0,X2)
| ~ member(X0,X1) ),
inference(resolution,[],[f50,f45]) ).
fof(f94,plain,
! [X0] :
( member(X0,power_set(X0))
| member(X0,power_set(X0)) ),
inference(resolution,[],[f83,f81]) ).
fof(f95,plain,
! [X0] : member(X0,power_set(X0)),
inference(duplicate_literal_removal,[],[f94]) ).
fof(f98,definition,
( spl8_1
<=> sP0(subset_predicate,power_set(sK1)) ),
introduced(definition,[new_symbols(definition,[spl8_1])],[avatar_definition]) ).
fof(f99,plain,
( sP0(subset_predicate,power_set(sK1))
| ~ spl8_1 ),
inference(avatar_component_clause,[],[f98]) ).
fof(f112,plain,
( ~ apply(subset_predicate,sK6(subset_predicate,power_set(sK1)),sK6(subset_predicate,power_set(sK1)))
| sP0(subset_predicate,power_set(sK1)) ),
inference(resolution,[],[f60,f47]) ).
fof(f114,definition,
( spl8_3
<=> apply(subset_predicate,sK6(subset_predicate,power_set(sK1)),sK6(subset_predicate,power_set(sK1))) ),
introduced(definition,[new_symbols(definition,[spl8_3])],[avatar_definition]) ).
fof(f115,plain,
( ~ apply(subset_predicate,sK6(subset_predicate,power_set(sK1)),sK6(subset_predicate,power_set(sK1)))
| spl8_3 ),
inference(avatar_component_clause,[],[f114]) ).
fof(f116,plain,
( spl8_1
| ~ spl8_3 ),
inference(avatar_split_clause,[],[f112,f114,f98]) ).
fof(f119,plain,
( ~ member(sK6(subset_predicate,power_set(sK1)),power_set(sK6(subset_predicate,power_set(sK1))))
| spl8_3 ),
inference(resolution,[],[f115,f78]) ).
fof(f121,plain,
( $false
| spl8_3 ),
inference(resolution,[],[f119,f95]) ).
fof(f122,plain,
spl8_3,
inference(avatar_contradiction_clause,[],[f121]) ).
fof(f123,plain,
( ~ apply(subset_predicate,sK3(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f99,f58]) ).
fof(f124,plain,
( apply(subset_predicate,sK3(subset_predicate,power_set(sK1)),sK4(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f99,f57]) ).
fof(f125,plain,
( apply(subset_predicate,sK4(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f99,f56]) ).
fof(f129,plain,
( ~ member(sK2(sK3(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1))),sK5(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f123,f84]) ).
fof(f130,plain,
( member(sK2(sK3(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1))),sK3(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f123,f82]) ).
fof(f133,plain,
( ! [X0] :
( member(X0,sK4(subset_predicate,power_set(sK1)))
| ~ member(X0,sK3(subset_predicate,power_set(sK1))) )
| ~ spl8_1 ),
inference(resolution,[],[f124,f88]) ).
fof(f136,plain,
( ! [X0] :
( member(X0,sK5(subset_predicate,power_set(sK1)))
| ~ member(X0,sK4(subset_predicate,power_set(sK1))) )
| ~ spl8_1 ),
inference(resolution,[],[f125,f88]) ).
fof(f145,plain,
( ~ member(sK2(sK3(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1))),sK4(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f129,f136]) ).
fof(f151,plain,
( ~ member(sK2(sK3(subset_predicate,power_set(sK1)),sK5(subset_predicate,power_set(sK1))),sK3(subset_predicate,power_set(sK1)))
| ~ spl8_1 ),
inference(resolution,[],[f145,f133]) ).
fof(f154,plain,
( $false
| ~ spl8_1 ),
inference(resolution,[],[f151,f130]) ).
fof(f157,plain,
~ spl8_1,
inference(avatar_contradiction_clause,[],[f154]) ).
cnf(s2,plain,
( spl8_1
| ~ spl8_3 ),
inference(sat_conversion,[],[f116]) ).
cnf(s3,plain,
spl8_3,
inference(sat_conversion,[],[f122]) ).
cnf(s4,plain,
~ spl8_1,
inference(sat_conversion,[],[f157]) ).
cnf(s5,plain,
$false,
inference(rat,[],[s2,s3,s4]) ).
fof(f158,plain,
$false,
inference(avatar_sat_refutation,[],[s5]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : SET807+4 : TPTP v9.3.1. Released v3.2.0.
% 0.00/0.05 % Command : run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% 0.13/0.40 % Computer : n011.cluster.edu
% 0.13/0.40 % Model : x86_64 x86_64
% 0.13/0.40 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.13/0.40 % Memory : 8046.5625MB
% 0.13/0.40 % OS : Linux 6.8.0-71-generic
% 0.13/0.40 % CPULimit : 300
% 0.13/0.40 % WCLimit : 300
% 0.13/0.40 % DateTime : Mon Sep 28 02:51:51 UTC 2026
% 0.13/0.40 % CPUTime :
% 0.13/0.40 Running run_vampire /export/starexec/sandbox2/benchmark/theBenchmark.p 300 THM
% 0.13/0.43 Running first-order theorem proving
% 0.13/0.43 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
% 2.01/1.15 % (2973189)Detected formulas, will run a generic FOF schedule.
% 2.01/1.15 % (2973200)dis-21_1_sil=8000:lcm=predicate:random_seed=249571733:st=5:avsq=on:i=129:avsqr=1,16:sd=3:aac=none:ep=RS:fsr=off:ss=included_2999 on theBenchmark for (2999ds/129Mi)
% 2.01/1.15 % (2973200)First to succeed.
% 2.01/1.15 % (2973200)Solution written to "/export/starexec/sandbox2/tmp/vampire-proof-2973189"
% 2.01/1.15 % (2973194)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=3935867447:i=141193_2999 on theBenchmark for (2999ds/141193Mi)
% 2.01/1.15 % (2973195)lrs+11_1_ncem=casc2026/models/loop8.pt:sil=128000:npcc=on:lma=off:spb=units:urr=ec_only:bce=on:s2agt=64:updr=off:random_seed=1869863787:i=134677:sd=20:aac=none:nm=16:ss=included:sgt=10_2999 on theBenchmark for (2999ds/134677Mi)
% 2.01/1.15 % (2973197)lrs+1010_1_to=lpo:sil=32000:sos=on:spb=goal_then_units:bce=on:random_seed=69517020:i=109:sd=1:ins=1:gsp=on:ss=axioms_2999 on theBenchmark for (2999ds/109Mi)
% 2.01/1.15 % (2973196)lrs+1010_1_anc=all:sfv=off:to=kbo:ncem=casc2026/models/loop7.pt:sil=128000:npcc=on:prc=on:sos=all:bsr=unit_only:sac=on:random_seed=2972524683:i=141695:sd=1:nm=32:gsp=on:ss=included_2999 on theBenchmark for (2999ds/141695Mi)
% 2.01/1.15 % (2973198)dis-1010_2:3_sil=16000:sp=reverse_frequency:random_seed=3673830541:i=119:av=off:ss=axioms_2999 on theBenchmark for (2999ds/119Mi)
% 2.01/1.15 % (2973197)Refutation not found, incomplete strategy
% 2.01/1.15 % (2973197)------------------------------
% 2.01/1.15 % (2973197)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 2.01/1.15 % (2973197)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 2.01/1.15 % (2973197)CaDiCaL version: 2.1.3
% 2.01/1.15 % (2973197)Termination reason: Refutation not found, incomplete strategy
% 2.01/1.15 % (2973197)Time elapsed: 0.002 s
% 2.01/1.15 % (2973197)Peak memory usage: 88 MB
% 2.01/1.15 % (2973197)Instructions burned: 1 (million)
% 2.01/1.15 % (2973198)Also succeeded, but the first one will report.
% 2.01/1.15 % (2973199)dis-1011_1_sil=16000:fde=unused:s2agt=70:random_seed=4087667343:s2a=on:i=139:gtg=position_2999 on theBenchmark for (2999ds/139Mi)
% 2.01/1.15 % (2973199)Instruction limit reached!
% 2.01/1.15 % (2973199)------------------------------
% 2.01/1.15 % (2973199)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 2.01/1.15 % (2973199)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 2.01/1.15 % (2973199)CaDiCaL version: 2.1.3
% 2.01/1.15 % (2973199)Termination reason: Instruction limit
% 2.01/1.15 % (2973199)Termination phase: Saturation
% 2.01/1.15 % (2973199)Time elapsed: 0.092 s
% 2.01/1.15 % (2973199)Peak memory usage: 89 MB
% 2.01/1.15 % (2973199)Instructions burned: 139 (million)
% 2.01/1.15 % (2973200)Refutation found. Thanks to Tanya!
% 2.01/1.15 % SZS status Theorem for theBenchmark
% 2.01/1.15 % SZS output start Proof for theBenchmark
% See solution above
% 2.54/1.34 % (2973200)------------------------------
% 2.54/1.34 % (2973200)Version: Vampire 5.0.1 (Release build, commit ea8961452 on 2026-07-16 15:14:34 +0200)
% 2.54/1.34 % (2973200)Linked with Z3 4.14.0.0 3c47fd96cf5645d0c42b2c819d9e9a84380aa721 z3-4.8.4-9178-g3c47fd96c
% 2.54/1.34 % (2973200)CaDiCaL version: 2.1.3
% 2.54/1.34 % (2973200)Termination reason: Refutation
% 2.54/1.34 % (2973200)Time elapsed: 0.003 s
% 2.54/1.34 % (2973200)Peak memory usage: 89 MB
% 2.54/1.34 % (2973200)Instructions burned: 5 (million)
% 2.54/1.34 % (2973200)------------------------------
% 2.54/1.34 % (2973200)------------------------------
% 2.54/1.34 % (2973189)Success in time 0.275 s
% 2.54/1.34 % Vampire exiting
%------------------------------------------------------------------------------