<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nta PUBLIC "-//Uppaal Team//DTD Flat System 1.1//EN" "http://www.it.uu.se/research/group/darts/uppaal/flat-1_1.dtd">
<nta><declaration>// Place global declarations here.

// kanalen tussen klant en flappentapper
chan pas,      
     verzoek, // verzoek om 10 euro van klant aan automaat
     geld;

// kanalen tussen flappentapper en bank
chan vraag_toestemming, // verzoek om 10 euro te mogen uitbetalen
     akkoord, 
     niet_akkoord;</declaration><template><name x="5" y="5">Klant</name><declaration>
int geld_op_zak=0;  // geld dat de klant op zak heeft</declaration><location id="id0" x="-96" y="56"/><location id="id1" x="32" y="-16"/><location id="id2" x="72" y="-152"/><location id="id3" x="-88" y="-168"><name x="-240" y="-200">IS_BIJ_FLAPPENTAPPER</name></location><location id="id4" x="-184" y="-88"><name x="-232" y="-120">KLAAR</name></location><init ref="id4"/><transition><source ref="id0"/><target ref="id4"/><label kind="synchronisation" x="-176" y="-24">pas?</label></transition><transition><source ref="id1"/><target ref="id0"/><label kind="synchronisation" x="-56" y="-8">geld?</label><label kind="assignment" x="-48" y="32">geld_op_zak=geld_op_zak+10</label></transition><transition><source ref="id2"/><target ref="id1"/><label kind="synchronisation" x="56" y="-104">verzoek!</label></transition><transition><source ref="id3"/><target ref="id2"/><label kind="synchronisation" x="-40" y="-192">pas!</label></transition><transition><source ref="id4"/><target ref="id3"/></transition></template><template><name>Flappentapper</name><declaration>
int in_kas = 200; // geldbedrag dat flappentapper in kas heeft</declaration><location id="id5" x="-184" y="64"><name x="-240" y="80">BIJNA_KLAAR</name></location><location id="id6" x="-8" y="24"/><location id="id7" x="264" y="24"/><location id="id8" x="264" y="-96"/><location id="id9" x="120" y="136"><name x="120" y="152">KLAAR_OM_UIT_TE_BETALEN</name></location><location id="id10" x="-72" y="136"/><location id="id11" x="48" y="-96"/><location id="id12" x="-184" y="-96"><name x="-194" y="-126">KLAAR</name></location><init ref="id12"/><transition><source ref="id10"/><target ref="id5"/></transition><transition><source ref="id6"/><target ref="id5"/></transition><transition><source ref="id5"/><target ref="id12"/><label kind="synchronisation" x="-244" y="-31">pas!</label></transition><transition><source ref="id7"/><target ref="id6"/><label kind="synchronisation" x="64" y="0">niet_akkoord?</label></transition><transition><source ref="id9"/><target ref="id10"/><label kind="synchronisation" x="16" y="112">geld!</label><label kind="assignment" x="-40" y="136">in_kas := in_kas -10</label></transition><transition><source ref="id7"/><target ref="id9"/><label kind="synchronisation" x="192" y="88">akkoord?</label></transition><transition><source ref="id8"/><target ref="id7"/><label kind="synchronisation" x="120" y="-48">vraag_toestemming!</label></transition><transition><source ref="id11"/><target ref="id8"/><label kind="synchronisation" x="112" y="-120">verzoek?</label></transition><transition><source ref="id12"/><target ref="id11"/><label kind="synchronisation" x="-80" y="-120">pas?</label></transition></template><template><name>Bank</name><declaration>
int saldo=80; // geld dat er op de rekening vd klant staat </declaration><location id="id13" x="-144" y="64"/><location id="id14" x="-216" y="200"/><location id="id15" x="56" y="200"/><location id="id16" x="-224" y="-64"><name x="-234" y="-94">KLAAR</name></location><location id="id17" x="64" y="-64"/><location id="id18" x="0" y="64"/><init ref="id16"/><transition><source ref="id13"/><target ref="id16"/></transition><transition><source ref="id14"/><target ref="id16"/><label kind="assignment" x="-368" y="56">saldo := saldo - 10</label></transition><transition><source ref="id18"/><target ref="id13"/><label kind="synchronisation" x="-112" y="40">niet_akkoord!</label></transition><transition><source ref="id15"/><target ref="id14"/><label kind="synchronisation" x="-112" y="176">akkoord!</label></transition><transition><source ref="id17"/><target ref="id15"/><label kind="guard" x="72" y="96">saldo &gt;= 10</label></transition><transition><source ref="id17"/><target ref="id18"/><label kind="guard" x="-48" y="-16">saldo &lt; 10</label></transition><transition><source ref="id16"/><target ref="id17"/><label kind="synchronisation" x="-144" y="-88">vraag_toestemming?</label></transition></template><system>

// Ons systeem bestaan uit een Klant, een Flappentapper, en
// een Bank.

// Er is alleen communicatie tussen Klant en Flappentapper
// en tussen Flappentapper en Bank.

system Klant, Bank, Flappentapper;

</system></nta>
