% Creator: Finomaton 1.0
% Creation-Date: Tue Mar 04 22:25:30 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.s125(btex \strut A etex);
s125.c = (45.6, -82.2);
drawboxed(s125);
draw fullcircle scaled 0.85(ypart s125.n - ypart s125.s) shifted s125.c;

circleit.s128(btex \strut B etex);
s128.c = (95.1, -82.2);
drawboxed(s128);

circleit.s130(btex \strut C etex);
s130.c = (144.6, -82.2);
drawboxed(s130);
draw fullcircle scaled 0.85(ypart s130.n - ypart s130.s) shifted s130.c;


% Next, draw the lines
p133 = directionpoint dir 290 of bpath s125..controls (12.0, -93.0) and (12.0, -70.8)..directionpoint dir 259 of bpath s125;
drawarrow p133;
label.lft(btex a etex, point 0.5 of p133);

p138 = (s125.c)..controls .5[(s125.c),(70.2, -54.6)] and .5[(70.2, -54.6),(s128.c)]..(s128.c) cutbefore bpath s125 cutafter bpath s128;
drawarrow p138;
label.top(btex b etex, point 0.5 of p138);

p142 = (s128.c)..controls .5[(s128.c),(119.4, -58.2)] and .5[(119.4, -58.2),(s130.c)]..(s130.c) cutbefore bpath s128 cutafter bpath s130;
drawarrow p142;
label.top(btex a etex, point 0.5 of p142);

p146 = (s130.c)..controls .5[(s130.c),(120.0, -105.6)] and .5[(120.0, -105.6),(s128.c)]..(s128.c) cutbefore bpath s130 cutafter bpath s128;
drawarrow p146;
label.bot(btex a, b etex, point 0.5 of p146);

drawarrow (37.8, -62.4)..controls .5[(37.8, -62.4),(40.2, -66.0)] and .5[(40.2, -66.0),(s125.c)]..(s125.c) cutafter bpath s125;


% Finally, create labels

endfig;
end
