<?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>
// Vijf vriendinnen hebben ieder een roddel.  De vriendinnen bellen
// elkaar en bij ieder gesprek delen de twee gesprekspartners alle
// roddels die ze weten.  Hoeveel gesprekken zijn er minimaal nodig
// om alle roddels uit te wisselen?

// Voor de eenvoud noemen we de vriendinnen 1, 2, 3, 4 en 5.  We schrijven
// "vriendinnen" voor de verzameling  (het type) {1,2,3,4,5}.
typedef int[1,5] vriendinnen;

// In de matrix weet_roddel houden we bij wie welke roddel weet.
// Als weet_roddel[a][b] = 1 dan betekent dit dat vriendin a de roddel weet van
// vriendin b.  Als weet_roddel[a][b] = 0 dan weet a de roddel van b niet.

bool weet_roddel[vriendinnen][vriendinnen];

chan bel[vriendinnen][vriendinnen];

// De functie deel_roddels beschrijft wat er gebeurt met de toestandsmatrix wanneer vriendin a
// belt met vriendin b: alle roddels worden gedeeld

void deel_roddels (vriendinnen a, vriendinnen b){
  for (c : vriendinnen){
    weet_roddel[a][c] := weet_roddel[a][c] || weet_roddel[b][c];
    weet_roddel[b][c] := weet_roddel[a][c];
}
}</declaration><template><name x="5" y="5">Vriendin</name><parameter>vriendinnen w</parameter><declaration>// Place local declarations here.
</declaration><location id="id0" x="-64" y="-288"></location><location id="id1" x="-64" y="-128"></location><init ref="id0"/><transition><source ref="id0"/><target ref="id1"/><label kind="assignment" x="-56" y="-240">weet_roddel[w][w] := 1</label></transition><transition><source ref="id1"/><target ref="id1"/><label kind="select" x="-240" y="-160">v : vriendinnen</label><label kind="synchronisation" x="-240" y="-144">bel[w][v]!</label><label kind="assignment" x="-240" y="-128">deel_roddels(w,v)</label><nail x="-128" y="-192"/><nail x="-128" y="-64"/></transition><transition><source ref="id1"/><target ref="id1"/><label kind="select" x="8" y="-168">v: vriendinnen</label><label kind="synchronisation" x="8" y="-144">bel[v][w]?</label><label kind="assignment" x="8" y="-128">deel_roddels(v,w)</label><nail x="0" y="-192"/><nail x="0" y="-64"/></transition></template><system>
system Vriendin;</system></nta>
