<?xml version="1.0"?>
<!DOCTYPE nta PUBLIC "-//Uppaal Team//DTD Flat System 1.0//EN" "http://www.docs.uu.se/docs/rtmv/uppaal/xml/flat-1_0.dtd">
<nta><declaration>const ctime 75;


int[0,1] active;
clock x, time;

chan   eject, ok;
urgent chan blck, red, remove, go;</declaration><template><name x="32" y="16">TaskMAIN</name><parameter x="216" y="16"/><declaration/><location id="id0" x="128" y="96"><name x="118" y="66">S0</name></location><init ref="id0"/><transition><source ref="id0"/><target ref="id0"/><label kind="synchronisation" x="32" y="88">red?</label><nail x="80" y="80"/><nail x="80" y="112"/></transition><transition><source ref="id0"/><target ref="id0"/><label kind="synchronisation" x="192" y="72">blck?</label><label kind="assignment" x="192" y="96">x:=0, 
active:=true</label><nail x="176" y="80"/><nail x="176" y="112"/></transition></template><template><name x="32" y="16">TaskPUSH</name><parameter x="216" y="16"/><declaration/><location id="id2" x="248" y="96"><name x="240" y="112">passive</name></location><location id="id1" x="72" y="104"><name x="40" y="120">wait</name><label kind="invariant" x="40" y="136">x&lt;=ctime</label></location><init ref="id2"/><transition><source ref="id1"/><target ref="id2"/><label kind="guard" x="56" y="44">x==ctime</label><label kind="synchronisation" x="136" y="44">eject!</label><label kind="assignment" x="200" y="44">active:=false</label><nail x="96" y="68"/><nail x="224" y="68"/></transition><transition><source ref="id2"/><target ref="id1"/><label kind="guard" x="104" y="140">active==true</label><label kind="synchronisation" x="208" y="140">go?</label><nail x="224" y="132"/><nail x="96" y="132"/></transition></template><template><name x="32" y="16">Piston</name><parameter x="192" y="16"/><declaration>clock y;</declaration><location id="id4" x="96" y="208"><name x="104" y="216">s2</name><label kind="invariant" x="104" y="232">y&lt;=1</label></location><location id="id3" x="96" y="64"><name x="104" y="72">s1</name></location><init ref="id3"/><transition><source ref="id3"/><target ref="id4"/><label kind="synchronisation" x="104" y="108">eject?</label><label kind="assignment" x="104" y="168">y:=0</label></transition><transition><source ref="id4"/><target ref="id3"/><label kind="guard" x="152" y="216">y==1</label><nail x="160" y="208"/><nail x="160" y="64"/></transition><transition><source ref="id4"/><target ref="id3"/><label kind="synchronisation" x="16" y="216">remove!</label><nail x="32" y="208"/><nail x="32" y="64"/></transition></template><template><name x="32" y="16">Dumb</name><parameter x="176" y="16"/><declaration/><location id="id5" x="64" y="64"><name x="32" y="56">S0</name></location><init ref="id5"/><transition><source ref="id5"/><target ref="id5"/><label kind="synchronisation" x="120" y="56">go!</label><nail x="112" y="48"/><nail x="112" y="80"/></transition></template><template><name x="32" y="16">BlackBox</name><parameter x="200" y="16"></parameter><declaration>clock pos;</declaration><location id="id8" x="304" y="80"><name x="312" y="88">on2</name><label kind="invariant" x="312" y="104">pos&lt;=81</label></location><location id="id10" x="560" y="80"><name x="568" y="88">end</name></location><location id="id7" x="48" y="80"><name x="56" y="88">on1</name><label kind="invariant" x="56" y="104">pos&lt;=9</label></location><location id="id11" x="176" y="80"><name x="184" y="88">sensor</name><label kind="invariant" x="184" y="104">pos&lt;=18</label></location><location id="id12" x="432" y="208"><name x="440" y="216">off</name></location><location id="id9" x="432" y="80"><name x="440" y="88">piston</name><label kind="invariant" x="440" y="104">pos&lt;=90</label></location><location id="id6" x="48" y="208"><name x="56" y="216">start</name></location><init ref="id6"/><transition><source ref="id11"/><target ref="id8"/><label kind="guard" x="216" y="56">pos==18</label></transition><transition><source ref="id8"/><target ref="id9"/><label kind="guard" x="344" y="56">pos==81</label></transition><transition><source ref="id9"/><target ref="id12"/><label kind="synchronisation" x="440" y="144">remove?</label></transition><transition><source ref="id9"/><target ref="id10"/><label kind="guard" x="448" y="56">pos==90</label></transition><transition><source ref="id6"/><target ref="id7"/><label kind="synchronisation" x="24" y="128">ok?</label><label kind="assignment" x="56" y="168">pos:=0</label></transition><transition><source ref="id7"/><target ref="id11"/><label kind="guard" x="96" y="56">pos==9</label></transition><transition><source ref="id11"/><target ref="id8"/><label kind="synchronisation" x="232" y="136">blck!</label><nail x="176" y="128"/><nail x="304" y="128"/></transition></template><template><name x="32" y="16">RedBox</name><parameter x="184" y="16"></parameter><declaration>clock pos;</declaration><location id="id15" x="304" y="112"><name x="312" y="120">on2</name><label kind="invariant" x="312" y="136">pos&lt;=81</label></location><location id="id17" x="560" y="112"><name x="568" y="120">end</name></location><location id="id14" x="48" y="112"><name x="56" y="120">on1</name><label kind="invariant" x="56" y="136">pos&lt;=9</label></location><location id="id18" x="176" y="112"><name x="160" y="120">sensor</name><label kind="invariant" x="152" y="136">pos&lt;=18</label></location><location id="id19" x="432" y="240"><name x="440" y="248">off</name></location><location id="id16" x="432" y="112"><name x="440" y="120">piston</name><label kind="invariant" x="440" y="136">pos&lt;=90</label></location><location id="id13" x="48" y="240"><name x="56" y="248">start</name></location><init ref="id13"/><transition><source ref="id18"/><target ref="id15"/><label kind="guard" x="200" y="88">pos==18</label></transition><transition><source ref="id15"/><target ref="id16"/><label kind="guard" x="344" y="88">pos==81</label></transition><transition><source ref="id16"/><target ref="id19"/><label kind="synchronisation" x="440" y="176">remove?</label></transition><transition><source ref="id16"/><target ref="id17"/><label kind="guard" x="448" y="88">pos==90</label></transition><transition><source ref="id13"/><target ref="id14"/><label kind="synchronisation" x="24" y="168">ok?</label><label kind="assignment" x="56" y="200">pos:=0</label></transition><transition><source ref="id14"/><target ref="id18"/><label kind="guard" x="96" y="88">pos==9</label></transition><transition><source ref="id18"/><target ref="id15"/><label kind="synchronisation" x="232" y="48">red!</label><nail x="176" y="72"/><nail x="304" y="72"/></transition></template><template><name x="5" y="5">Guard</name><parameter x="10" y="25"/><declaration>clock z;</declaration><location id="id20" x="128" y="96"><name x="118" y="66">S0</name></location><init ref="id20"/><transition><source ref="id20"/><target ref="id20"/><label kind="guard" x="80" y="104">z&gt;=10</label><label kind="synchronisation" x="120" y="160">ok!</label><label kind="assignment" x="152" y="104">z:=0</label><nail x="96" y="160"/><nail x="160" y="160"/></transition></template><instantiation>B1:=BlackBox();
B2:=BlackBox();
R1:=RedBox();
R2:=RedBox();</instantiation><system>system 
     TaskMAIN, TaskPUSH, 
     Piston,
     B1, B2, 
     R1, R2,  Dumb, Guard;</system></nta>
