%------------------------------------------------------------------------------
% File : Prover9---2026-6A
% Problem : GRA008+2 : TPTP v9.3.1. Bugfixed v3.2.0.
% Transfm : none
% Format : tptp:raw
% Command : prover9 -casc 300 -f /export/starexec/sandbox2/benchmark/theBenchmark.p
% Computer : n007.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 : Sun Sep 27 07:19:22 AM UTC 2026
% Result : Theorem 0.80s 0.53s
% Output : CNFRefutation 0.80s
% Verified :
% SZS Type : Refutation
% Derivation depth : 19
% Number of leaves : 9
% Syntax : Number of formulae : 85 ( 22 unt; 0 def)
% Number of atoms : 261 ( 66 equ)
% Maximal formula atoms : 12 ( 3 avg)
% Number of connectives : 305 ( 129 ~; 119 |; 40 &)
% ( 4 <=>; 13 =>; 0 <=; 0 <~>)
% Maximal formula depth : 14 ( 4 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of predicates : 11 ( 9 usr; 2 prp; 0-3 aty)
% Number of functors : 9 ( 9 usr; 5 con; 0-5 aty)
% Number of variables : 159 ( 18 sgn 67 !; 12 ?)
% Comments :
%------------------------------------------------------------------------------
fof(no_loops,axiom,
! [E] :
( edge(E)
=> head_of(E) != tail_of(E) ),
file('theBenchmark.p',no_loops) ).
fof(sequential_defn,axiom,
! [E1,E2] :
( sequential(E1,E2)
<=> ( head_of(E1) = tail_of(E2)
& E1 != E2
& edge(E2)
& edge(E1) ) ),
file('theBenchmark.p',sequential_defn) ).
fof(precedes_defn,axiom,
! [P,V1,V2] :
( path(V1,V2,P)
=> ! [E1,E2] :
( ( ( ? [E3] :
( precedes(E3,E2,P)
& sequential(E1,E3) )
| sequential(E1,E2) )
& on_path(E2,P)
& on_path(E1,P) )
=> precedes(E1,E2,P) ) ),
file('theBenchmark.p',precedes_defn) ).
fof(precedes_properties,axiom,
! [P,V1,V2] :
( path(V1,V2,P)
=> ! [E1,E2] :
( precedes(E1,E2,P)
=> ( ~ ( sequential(E1,E2)
<=> ? [E3] :
( precedes(E3,E2,P)
& sequential(E1,E3) ) )
& on_path(E2,P)
& on_path(E1,P) ) ) ),
file('theBenchmark.p',precedes_properties) ).
fof(shortest_path_defn,axiom,
! [V1,V2,SP] :
( shortest_path(V1,V2,SP)
<=> ( ! [P] :
( path(V1,V2,P)
=> less_or_equal(length_of(SP),length_of(P)) )
& V1 != V2
& path(V1,V2,SP) ) ),
file('theBenchmark.p',shortest_path_defn) ).
fof(shortest_path_properties,axiom,
! [V1,V2,E1,E2,P] :
( ( precedes(E1,E2,P)
& shortest_path(V1,V2,P) )
=> ( ~ precedes(E2,E1,P)
& ~ ? [E3] :
( head_of(E3) = head_of(E2)
& tail_of(E3) = tail_of(E1) ) ) ),
file('theBenchmark.p',shortest_path_properties) ).
fof(triangle_defn,axiom,
! [E1,E2,E3] :
( triangle(E1,E2,E3)
<=> ( sequential(E3,E1)
& sequential(E2,E3)
& sequential(E1,E2)
& edge(E3)
& edge(E2)
& edge(E1) ) ),
file('theBenchmark.p',triangle_defn) ).
fof(back_edge,axiom,
( complete
=> ! [V1,V2,E1,E2,P] :
( ( precedes(E1,E2,P)
& shortest_path(V1,V2,P) )
=> ? [E3] :
( head_of(E3) = tail_of(E1)
& tail_of(E3) = head_of(E2)
& edge(E3) ) ) ),
file('theBenchmark.p',back_edge) ).
fof(sequential_is_triangle,conjecture,
( complete
=> ! [V1,V2,E1,E2,P] :
( ( sequential(E1,E2)
& precedes(E1,E2,P)
& shortest_path(V1,V2,P) )
=> ? [E3] : triangle(E1,E2,E3) ) ),
file('theBenchmark.p',sequential_is_triangle) ).
fof(sequential_is_triangle_neg,negated_conjecture,
~ ( complete
=> ! [V1,V2,E1,E2,P] :
( ( sequential(E1,E2)
& precedes(E1,E2,P)
& shortest_path(V1,V2,P) )
=> ? [E3] : triangle(E1,E2,E3) ) ),
inference(assume_negation,[status(cth)],[sequential_is_triangle]) ).
fof(nnf_18,plain,
( ! [V1,V2,E1,E2,P] :
( ? [E3] :
( tail_of(E1) = head_of(E3)
& tail_of(E3) = head_of(E2)
& edge(E3) )
| ~ precedes(E1,E2,P)
| ~ shortest_path(V1,V2,P) )
| ~ complete ),
inference(fof_nnf,[status(thm)],[back_edge]) ).
fof(sk_back_edge_sk,plain,
( ! [V1,V2,E1,E2,P] :
( ( tail_of(E1) = head_of(sK0(V1,V2,E1,E2,P))
& tail_of(sK0(V1,V2,E1,E2,P)) = head_of(E2)
& edge(sK0(V1,V2,E1,E2,P)) )
| ~ precedes(E1,E2,P)
| ~ shortest_path(V1,V2,P) )
| ~ complete ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK0]),skolemize(E3,sK0(V1,V2,E1,E2,P))],[nnf_18]) ).
fof(sk_back_edge,plain,
( ! [VAR_0,VAR_1,VAR_2,VAR_3,VAR_4] :
( tail_of(VAR_3) = head_of(sK0(VAR_0,VAR_1,VAR_3,VAR_4,VAR_2))
| ~ precedes(VAR_3,VAR_4,VAR_2)
| ~ shortest_path(VAR_0,VAR_1,VAR_2)
| ~ complete )
& ! [VAR_0,VAR_1,VAR_2,VAR_3,VAR_4] :
( tail_of(sK0(VAR_0,VAR_1,VAR_3,VAR_4,VAR_2)) = head_of(VAR_4)
| ~ precedes(VAR_3,VAR_4,VAR_2)
| ~ shortest_path(VAR_0,VAR_1,VAR_2)
| ~ complete )
& ! [VAR_0,VAR_1,VAR_2,VAR_3,VAR_4] :
( edge(sK0(VAR_0,VAR_1,VAR_3,VAR_4,VAR_2))
| ~ precedes(VAR_3,VAR_4,VAR_2)
| ~ shortest_path(VAR_0,VAR_1,VAR_2)
| ~ complete ) ),
inference(cnf_transformation,[status(thm)],[sk_back_edge_sk]) ).
cnf(c_25,plain,
( tail_of(D) = head_of(sK0(A,B,D,E,C))
| ~ precedes(D,E,C)
| ~ shortest_path(A,B,C)
| ~ complete ),
inference(split_conjunct,[status(thm)],[sk_back_edge]) ).
fof(nnf_19,plain,
( ? [V1,V2,E1,E2,P] :
( ! [E3] : ~ triangle(E1,E2,E3)
& sequential(E1,E2)
& precedes(E1,E2,P)
& shortest_path(V1,V2,P) )
& complete ),
inference(fof_nnf,[status(thm)],[sequential_is_triangle_neg]) ).
fof(sk_sequential_is_triangle_neg,plain,
( ! [E3] : ~ triangle(sK4,sK5,E3)
& sequential(sK4,sK5)
& precedes(sK4,sK5,sK3)
& shortest_path(sK1,sK2,sK3)
& complete ),
inference(skolemize,[status(esa),new_symbols(skolem,[sK1,sK2,sK3,sK4,sK5]),skolemize(V1,sK1),skolemize(V2,sK2),skolemize(E1,sK4),skolemize(E2,sK5),skolemize(P,sK3)],[nnf_19]) ).
cnf(c_26,negated_conjecture,
shortest_path(sK1,sK2,sK3),
inference(split_conjunct,[status(thm)],[sk_sequential_is_triangle_neg]) ).
cnf(c_27,plain,
( tail_of(sK0(A,B,D,E,C)) = head_of(E)
| ~ precedes(D,E,C)
| ~ shortest_path(A,B,C)
| ~ complete ),
inference(split_conjunct,[status(thm)],[sk_back_edge]) ).
cnf(c_28,plain,
( edge(sK0(A,B,D,E,C))
| ~ precedes(D,E,C)
| ~ shortest_path(A,B,C)
| ~ complete ),
inference(split_conjunct,[status(thm)],[sk_back_edge]) ).
cnf(c_29,plain,
( ~ precedes(E,D,C)
| ~ precedes(D,E,C)
| ~ shortest_path(A,B,C) ),
inference(clausify,[status(thm)],[shortest_path_properties]) ).
cnf(c_35,plain,
( path(A,B,C)
| ~ shortest_path(A,B,C) ),
inference(clausify,[status(thm)],[shortest_path_defn]) ).
cnf(c_36,negated_conjecture,
path(sK1,sK2,sK3),
inference(resolve,[status(thm)],[c_35,c_26]) ).
cnf(c_54,negated_conjecture,
( ~ precedes(B,A,sK3)
| ~ precedes(A,B,sK3) ),
inference(resolve,[status(thm)],[c_29,c_26]) ).
cnf(c_55,negated_conjecture,
( edge(sK0(sK1,sK2,A,B,sK3))
| ~ precedes(A,B,sK3)
| ~ complete ),
inference(resolve,[status(thm)],[c_28,c_26]) ).
cnf(c_56,negated_conjecture,
( tail_of(sK0(sK1,sK2,A,B,sK3)) = head_of(B)
| ~ precedes(A,B,sK3)
| ~ complete ),
inference(resolve,[status(thm)],[c_27,c_26]) ).
cnf(c_57,negated_conjecture,
( tail_of(A) = head_of(sK0(sK1,sK2,A,B,sK3))
| ~ precedes(A,B,sK3)
| ~ complete ),
inference(resolve,[status(thm)],[c_25,c_26]) ).
cnf(c_58,negated_conjecture,
( head_of(sK0(sK1,sK2,A,B,sK3)) = tail_of(A)
| ~ precedes(A,B,sK3)
| ~ complete ),
inference(copy,[status(thm)],[c_57]) ).
cnf(c_59,plain,
( tail_of(A) != head_of(A)
| ~ edge(A) ),
inference(clausify,[status(thm)],[no_loops]) ).
cnf(c_80,plain,
( edge(A)
| ~ sequential(A,B) ),
inference(clausify,[status(thm)],[sequential_defn]) ).
cnf(c_81,plain,
( edge(B)
| ~ sequential(A,B) ),
inference(clausify,[status(thm)],[sequential_defn]) ).
cnf(c_82,plain,
( B != A
| ~ sequential(A,B) ),
inference(clausify,[status(thm)],[sequential_defn]) ).
cnf(c_84,plain,
( tail_of(B) != head_of(A)
| B = A
| ~ edge(B)
| ~ edge(A)
| sequential(A,B) ),
inference(clausify,[status(thm)],[sequential_defn]) ).
cnf(c_86,plain,
( ~ precedes(F,E,C)
| ~ sequential(D,F)
| ~ on_path(E,C)
| ~ on_path(D,C)
| precedes(D,E,C)
| ~ path(A,B,C) ),
inference(clausify,[status(thm)],[precedes_defn]) ).
cnf(c_88,plain,
( on_path(E,C)
| ~ precedes(D,E,C)
| ~ path(A,B,C) ),
inference(clausify,[status(thm)],[precedes_properties]) ).
cnf(c_98,plain,
( ~ sequential(C,A)
| ~ sequential(B,C)
| ~ sequential(A,B)
| ~ edge(C)
| ~ edge(B)
| ~ edge(A)
| triangle(A,B,C) ),
inference(clausify,[status(thm)],[triangle_defn]) ).
cnf(c_107,negated_conjecture,
complete,
inference(split_conjunct,[status(thm)],[sk_sequential_is_triangle_neg]) ).
cnf(c_108,negated_conjecture,
precedes(sK4,sK5,sK3),
inference(split_conjunct,[status(thm)],[sk_sequential_is_triangle_neg]) ).
cnf(c_109,negated_conjecture,
sequential(sK4,sK5),
inference(split_conjunct,[status(thm)],[sk_sequential_is_triangle_neg]) ).
cnf(c_110,negated_conjecture,
~ triangle(sK4,sK5,A),
inference(split_conjunct,[status(thm)],[sk_sequential_is_triangle_neg]) ).
cnf(c_121,plain,
~ precedes(A,A,sK3),
inference(factor,[status(thm)],[c_54]) ).
cnf(c_139,negated_conjecture,
( head_of(sK0(sK1,sK2,A,B,sK3)) = tail_of(A)
| ~ precedes(A,B,sK3) ),
inference(resolve,[status(thm)],[c_107,c_58]) ).
cnf(c_140,negated_conjecture,
( tail_of(sK0(sK1,sK2,A,B,sK3)) = head_of(B)
| ~ precedes(A,B,sK3) ),
inference(resolve,[status(thm)],[c_107,c_56]) ).
cnf(c_141,negated_conjecture,
( edge(sK0(sK1,sK2,A,B,sK3))
| ~ precedes(A,B,sK3) ),
inference(resolve,[status(thm)],[c_107,c_55]) ).
cnf(c_176,plain,
( on_path(sK5,sK3)
| ~ path(A,B,sK3) ),
inference(resolve,[status(thm)],[c_108,c_88]) ).
cnf(c_178,plain,
( ~ sequential(C,sK4)
| ~ on_path(sK5,sK3)
| ~ on_path(C,sK3)
| precedes(C,sK5,sK3)
| ~ path(A,B,sK3) ),
inference(resolve,[status(thm)],[c_108,c_86]) ).
cnf(c_1294,plain,
( ~ sequential(sK5,sK4)
| ~ on_path(sK5,sK3)
| precedes(sK5,sK5,sK3)
| ~ path(A,B,sK3) ),
inference(factor,[status(thm)],[c_178]) ).
cnf(c_183,plain,
( ~ sequential(sK5,sK4)
| ~ on_path(sK5,sK3)
| ~ path(A,B,sK3) ),
inference(resolve,[status(thm)],[c_121,c_1294]) ).
cnf(c_1295,negated_conjecture,
( ~ sequential(A,sK4)
| ~ sequential(sK5,A)
| ~ edge(A)
| ~ edge(sK5)
| ~ edge(sK4)
| triangle(sK4,sK5,A) ),
inference(resolve,[status(thm)],[c_109,c_98]) ).
cnf(c_186,negated_conjecture,
( ~ sequential(A,sK4)
| ~ sequential(sK5,A)
| ~ edge(A)
| ~ edge(sK5)
| ~ edge(sK4) ),
inference(resolve,[status(thm)],[c_110,c_1295]) ).
cnf(c_188,plain,
sK5 != sK4,
inference(resolve,[status(thm)],[c_109,c_82]) ).
cnf(c_189,plain,
edge(sK5),
inference(resolve,[status(thm)],[c_109,c_81]) ).
cnf(c_190,plain,
edge(sK4),
inference(resolve,[status(thm)],[c_109,c_80]) ).
cnf(c_1296,negated_conjecture,
( ~ sequential(A,sK4)
| ~ sequential(sK5,A)
| ~ edge(A)
| ~ edge(sK5) ),
inference(resolve,[status(thm)],[c_190,c_186]) ).
cnf(c_191,negated_conjecture,
( ~ sequential(A,sK4)
| ~ sequential(sK5,A)
| ~ edge(A) ),
inference(resolve,[status(thm)],[c_189,c_1296]) ).
cnf(c_192,plain,
head_of(sK0(sK1,sK2,sK4,sK5,sK3)) = tail_of(sK4),
inference(resolve,[status(thm)],[c_139,c_108]) ).
cnf(c_193,plain,
tail_of(sK0(sK1,sK2,sK4,sK5,sK3)) = head_of(sK5),
inference(resolve,[status(thm)],[c_140,c_108]) ).
cnf(c_194,plain,
edge(sK0(sK1,sK2,sK4,sK5,sK3)),
inference(resolve,[status(thm)],[c_141,c_108]) ).
cnf(c_1297,plain,
( tail_of(A) != head_of(sK5)
| A = sK5
| ~ edge(A)
| sequential(sK5,A) ),
inference(resolve,[status(thm)],[c_189,c_84]) ).
cnf(c_236,plain,
( tail_of(A) != head_of(sK5)
| sK5 = A
| ~ edge(A)
| sequential(sK5,A) ),
inference(copy,[status(thm)],[c_1297]) ).
cnf(c_242,plain,
( tail_of(sK4) != head_of(A)
| sK4 = A
| ~ edge(A)
| sequential(A,sK4) ),
inference(resolve,[status(thm)],[c_190,c_84]) ).
cnf(c_247,plain,
tail_of(sK4) != head_of(sK4),
inference(resolve,[status(thm)],[c_190,c_59]) ).
cnf(c_255,plain,
( ~ sequential(sK5,sK4)
| ~ on_path(sK5,sK3) ),
inference(resolve,[status(thm)],[c_183,c_36]) ).
cnf(c_256,plain,
on_path(sK5,sK3),
inference(resolve,[status(thm)],[c_176,c_36]) ).
cnf(c_257,plain,
~ sequential(sK5,sK4),
inference(resolve,[status(thm)],[c_256,c_255]) ).
cnf(c_1298,plain,
( tail_of(sK4) != head_of(sK5)
| sK4 = sK5
| ~ edge(sK4)
| ~ edge(sK5) ),
inference(resolve,[status(thm)],[c_84,c_257]) ).
cnf(c_1299,plain,
( tail_of(sK4) != head_of(sK5)
| sK4 = sK5
| ~ edge(sK4) ),
inference(resolve,[status(thm)],[c_1298,c_189]) ).
cnf(c_1300,plain,
( tail_of(sK4) != head_of(sK5)
| sK4 = sK5 ),
inference(resolve,[status(thm)],[c_1299,c_190]) ).
cnf(c_1301,plain,
sK4 != sK5,
inference(copy,[status(thm)],[c_188]) ).
cnf(c_263,plain,
tail_of(sK4) != head_of(sK5),
inference(resolve,[status(thm)],[c_1300,c_1301]) ).
cnf(c_1302,plain,
( tail_of(sK0(sK1,sK2,sK4,sK5,sK3)) != head_of(sK5)
| sK5 = sK0(sK1,sK2,sK4,sK5,sK3)
| sequential(sK5,sK0(sK1,sK2,sK4,sK5,sK3)) ),
inference(resolve,[status(thm)],[c_236,c_194]) ).
cnf(c_1303,plain,
( tail_of(sK0(sK1,sK2,sK4,sK5,sK3)) != head_of(sK5)
| sK0(sK1,sK2,sK4,sK5,sK3) = sK5
| sequential(sK5,sK0(sK1,sK2,sK4,sK5,sK3)) ),
inference(copy,[status(thm)],[c_1302]) ).
cnf(c_571,plain,
( sK0(sK1,sK2,sK4,sK5,sK3) = sK5
| sequential(sK5,sK0(sK1,sK2,sK4,sK5,sK3)) ),
inference(resolve,[status(thm)],[c_193,c_1303]) ).
cnf(c_1304,plain,
( tail_of(sK4) != head_of(sK0(sK1,sK2,sK4,sK5,sK3))
| sK4 = sK0(sK1,sK2,sK4,sK5,sK3)
| sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4) ),
inference(resolve,[status(thm)],[c_242,c_194]) ).
cnf(c_1305,plain,
( tail_of(sK4) != head_of(sK0(sK1,sK2,sK4,sK5,sK3))
| sK0(sK1,sK2,sK4,sK5,sK3) = sK4
| sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4) ),
inference(copy,[status(thm)],[c_1304]) ).
cnf(c_1306,plain,
( head_of(sK0(sK1,sK2,sK4,sK5,sK3)) != tail_of(sK4)
| sK0(sK1,sK2,sK4,sK5,sK3) = sK4
| sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4) ),
inference(copy,[status(thm)],[c_1305]) ).
cnf(c_577,plain,
( sK0(sK1,sK2,sK4,sK5,sK3) = sK4
| sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4) ),
inference(resolve,[status(thm)],[c_192,c_1306]) ).
cnf(c_1307,plain,
( ~ sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4)
| ~ edge(sK0(sK1,sK2,sK4,sK5,sK3))
| sK0(sK1,sK2,sK4,sK5,sK3) = sK5 ),
inference(resolve,[status(thm)],[c_571,c_191]) ).
cnf(c_1250,plain,
( ~ sequential(sK0(sK1,sK2,sK4,sK5,sK3),sK4)
| sK0(sK1,sK2,sK4,sK5,sK3) = sK5 ),
inference(resolve,[status(thm)],[c_194,c_1307]) ).
cnf(c_1261,plain,
( sK0(sK1,sK2,sK4,sK5,sK3) = sK4
| sK0(sK1,sK2,sK4,sK5,sK3) = sK5 ),
inference(resolve,[status(thm)],[c_1250,c_577]) ).
cnf(c_1308,plain,
( head_of(sK5) = tail_of(sK4)
| sK0(sK1,sK2,sK4,sK5,sK3) = sK4 ),
inference(paramod,[status(thm)],[c_1261,c_192]) ).
cnf(c_1309,plain,
( tail_of(sK4) = head_of(sK5)
| sK0(sK1,sK2,sK4,sK5,sK3) = sK4 ),
inference(copy,[status(thm)],[c_1308]) ).
cnf(c_1262,plain,
sK0(sK1,sK2,sK4,sK5,sK3) = sK4,
inference(resolve,[status(thm)],[c_263,c_1309]) ).
cnf(c_1310,plain,
head_of(sK4) = tail_of(sK4),
inference(paramod,[status(thm)],[c_1262,c_192]) ).
cnf(c_1311,plain,
tail_of(sK4) = head_of(sK4),
inference(copy,[status(thm)],[c_1310]) ).
cnf(c_1293,plain,
$false,
inference(resolve,[status(thm)],[c_247,c_1311]) ).
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.00/0.03 % Problem : GRA008+2 : TPTP v9.3.1. Bugfixed v3.2.0.
% 0.00/0.04 % Command : prover9 -casc 300 -f /export/starexec/sandbox2/benchmark/theBenchmark.p
% 0.10/0.35 % Computer : n007.cluster.edu
% 0.10/0.35 % Model : x86_64 x86_64
% 0.10/0.35 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.10/0.35 % Memory : 8046.5625MB
% 0.10/0.35 % OS : Linux 6.8.0-71-generic
% 0.10/0.35 % CPULimit : 300
% 0.10/0.35 % WCLimit : 300
% 0.10/0.35 % DateTime : Fri Sep 25 13:45:38 UTC 2026
% 0.10/0.35 % CPUTime :
% 0.10/0.35 % Prover9 (64) version 2026-6A, July 2026, CASC-J13.
% 0.10/0.35 % Process 1138120 was started by sandbox2 on n007,
% 0.10/0.35 % Fri Sep 25 13:45:38 2026
% 0.10/0.35 % The command was "/export/starexec/sandbox2/solver/bin/prover9 -casc 300 -f /export/starexec/sandbox2/benchmark/theBenchmark.p".
% 0.14/0.36
% 0.14/0.36 % From the command line: assign(max_seconds, 300).
% 0.80/0.53
% 0.80/0.53 % SZS status Theorem for theBenchmark
% 0.80/0.53
% 0.80/0.53 % Proof 1 at 0.14 (+ 0.01) seconds.
% 0.80/0.53 % Length of proof is 61.
% 0.80/0.53 % Level of proof is 9.
% 0.80/0.53 % Maximum clause weight is 30.000.
% 0.80/0.53 % Given clauses 310.
% 0.80/0.53
% 0.80/0.53 % SZS output start CNFRefutation for theBenchmark
% See solution above
%------------------------------------------------------------------------------