% Creator: Finomaton 1.0
% Creation-Date: Sun Mar 09 21:21:28 CET 2008

input boxes
% Breadth of arrowheads (MetaPost default is 45)
ahangle := 30;
% Length of arrowheads (MetaPost default is 4bp)
ahlength := 4;
beginfig(1);
% for temporary paths (might be unused)
path p[];

% First, define and draw all the states
circleit.s46(btex \strut J etex);
s46.c = (78.5, -123.5);
drawboxed(s46);

circleit.s48(btex \strut E etex);
s48.c = (217.0, -31.0);
drawboxed(s48);
draw fullcircle scaled 0.85(ypart s48.n - ypart s48.s) shifted s48.c;

circleit.s50(btex \strut B etex);
s50.c = (78.5, -31.0);
drawboxed(s50);
draw fullcircle scaled 0.85(ypart s50.n - ypart s50.s) shifted s50.c;

circleit.s52(btex \strut G etex);
s52.c = (217.0, -123.5);
drawboxed(s52);

circleit.s62(btex \strut A etex);
s62.c = (35.5, -77.25);
drawboxed(s62);
draw fullcircle scaled 0.85(ypart s62.n - ypart s62.s) shifted s62.c;

circleit.s64(btex \strut F etex);
s64.c = (266.0, -77.25);
drawboxed(s64);

circleit.s71(btex \strut C etex);
s71.c = (124.666666667, -31.0);
drawboxed(s71);
draw fullcircle scaled 0.85(ypart s71.n - ypart s71.s) shifted s71.c;

circleit.s73(btex \strut D etex);
s73.c = (170.833333333, -31.0);
drawboxed(s73);
draw fullcircle scaled 0.85(ypart s73.n - ypart s73.s) shifted s73.c;

circleit.s75(btex \strut I etex);
s75.c = (124.666666667, -123.5);
drawboxed(s75);

circleit.s77(btex \strut H etex);
s77.c = (170.833333333, -123.5);
drawboxed(s77);


% Next, draw the lines
drawarrow (21.0, -56.5)..controls .5[(21.0, -56.5),(25.0, -62.5)] and .5[(25.0, -62.5),(s62.c)]..(s62.c) cutafter bpath s62;

p96 = (s62.c)..controls .5[(s62.c),(27.5, -23.0)] and .5[(27.5, -23.0),(s50.c)]..(s50.c) cutbefore bpath s62 cutafter bpath s50;
drawarrow p96;
label.ulft(btex f etex, point 0.5 of p96);

p100 = (s50.c)..controls .5[(s50.c),(101.0, -24.5721239032)] and .5[(101.0, -24.5721239032),(s71.c)]..(s71.c) cutbefore bpath s50 cutafter bpath s71;
drawarrow p100;
label.top(btex i etex, point 0.5 of p100);

p104 = (s71.c)..controls .5[(s71.c),(152.5, -24.5721239032)] and .5[(152.5, -24.5721239032),(s73.c)]..(s73.c) cutbefore bpath s71 cutafter bpath s73;
drawarrow p104;
label.top(btex l etex, point 0.5 of p104);

p108 = (s73.c)..controls .5[(s73.c),(196.0, -24.5721239032)] and .5[(196.0, -24.5721239032),(s48.c)]..(s48.c) cutbefore bpath s73 cutafter bpath s48;
drawarrow p108;
label.top(btex i etex, point 0.5 of p108);

p112 = (s48.c)..controls .5[(s48.c),(269.5, -24.0)] and .5[(269.5, -24.0),(s64.c)]..(s64.c) cutbefore bpath s48 cutafter bpath s64;
drawarrow p112;
label.urt(btex p etex, point 0.5 of p112);

p116 = (s64.c)..controls .5[(s64.c),(267.5, -127.5)] and .5[(267.5, -127.5),(s52.c)]..(s52.c) cutbefore bpath s64 cutafter bpath s52;
drawarrow p116;
label.lrt(btex f etex, point 0.5 of p116);

p120 = (s52.c)..controls .5[(s52.c),(194.0, -128.039904998)] and .5[(194.0, -128.039904998),(s77.c)]..(s77.c) cutbefore bpath s52 cutafter bpath s77;
drawarrow p120;
label.bot(btex i etex, point 0.5 of p120);

p124 = (s77.c)..controls .5[(s77.c),(149.0, -128.039904998)] and .5[(149.0, -128.039904998),(s75.c)]..(s75.c) cutbefore bpath s77 cutafter bpath s75;
drawarrow p124;
label.bot(btex l etex, point 0.5 of p124);

p128 = (s75.c)..controls .5[(s75.c),(102.0, -128.039904998)] and .5[(102.0, -128.039904998),(s46.c)]..(s46.c) cutbefore bpath s75 cutafter bpath s46;
drawarrow p128;
label.bot(btex i etex, point 0.5 of p128);

p132 = (s46.c)..controls .5[(s46.c),(31.0, -127.0)] and .5[(31.0, -127.0),(s62.c)]..(s62.c) cutbefore bpath s46 cutafter bpath s62;
drawarrow p132;
label.llft(btex p etex, point 0.5 of p132);

p182 = (s50.c)..controls .5[(s50.c),(72.5, -50.5)] and .5[(72.5, -50.5),(s62.c)]..(s62.c) cutbefore bpath s50 cutafter bpath s62;
drawarrow p182;
label.lrt(btex $\Sigma\backslash\{$i$\}$ etex, point 0.17 of p182);

p186 = (s71.c)..controls .5[(s71.c),(112.0, -59.0)] and .5[(112.0, -59.0),(s62.c)]..(s62.c) cutbefore bpath s71 cutafter bpath s62;
drawarrow p186;
label.lrt(btex $\Sigma\backslash\{$l$\}$ etex, point 0.14 of p186);

p190 = (s73.c)..controls .5[(s73.c),(153.5, -68.0)] and .5[(153.5, -68.0),(s62.c)]..(s62.c) cutbefore bpath s73 cutafter bpath s62;
drawarrow p190;
label.lrt(btex $\Sigma\backslash\{$i$\}$ etex, point 0.12 of p190);

p194 = (s48.c)..controls .5[(s48.c),(197.5, -76.5)] and .5[(197.5, -76.5),(s62.c)]..(s62.c) cutbefore bpath s48 cutafter bpath s62;
drawarrow p194;
label.lrt(btex $\Sigma\backslash\{$p$\}$ etex, point 0.12 of p194);

p202 = (s52.c)..controls .5[(s52.c),(226.5, -104.5)] and .5[(226.5, -104.5),(s64.c)]..(s64.c) cutbefore bpath s52 cutafter bpath s64;
drawarrow p202;
label.ulft(btex $\Sigma\backslash\{$i$\}$ etex, point 0.11 of p202);

p206 = (s77.c)..controls .5[(s77.c),(192.0, -94.5)] and .5[(192.0, -94.5),(s64.c)]..(s64.c) cutbefore bpath s77 cutafter bpath s64;
drawarrow p206;
label.ulft(btex $\Sigma\backslash\{$l$\}$ etex, point 0.11 of p206);

p210 = (s75.c)..controls .5[(s75.c),(147.5, -92.0)] and .5[(147.5, -92.0),(s64.c)]..(s64.c) cutbefore bpath s75 cutafter bpath s64;
drawarrow p210;
label.ulft(btex $\Sigma\backslash\{$i$\}$ etex, point 0.11 of p210);

p214 = (s46.c)..controls .5[(s46.c),(104.0, -84.0)] and .5[(104.0, -84.0),(s64.c)]..(s64.c) cutbefore bpath s46 cutafter bpath s64;
drawarrow p214;
label.ulft(btex $\Sigma\backslash\{$p$\}$ etex, point 0.11 of p214);

p224 = directionpoint dir 314 of bpath s62..controls (14.0, -86.0) and (14.0, -70.0)..directionpoint dir 228 of bpath s62;
drawarrow p224;
label.lft(btex $\Sigma\backslash\{$f$\}$ etex, point 0.5 of p224);

p228 = directionpoint dir 130 of bpath s64..controls (287.5, -71.0) and (289.0, -83.5)..directionpoint dir 402 of bpath s64;
drawarrow p228;
label.rt(btex $\Sigma\backslash\{$f$\}$ etex, point 0.5 of p228);


% Finally, create labels

endfig;
end
