laatste kleine aanpassingen
[sec1415.git] / semantics.tex
index 3f04670..9d704c1 100644 (file)
@@ -15,15 +15,16 @@ gerepresenteerd als: $s=[e_0, e_1, \dots, e_n]$ waarbij $e_i\in\mathbb{Z}$
 Het transitiesysteem zal twee verschillende transities kennen, namelijk:\\ 
 $\langle S, s_i, s_o, s\rangle\Rightarrow\langle S', s_i', s_o', s'\rangle$ en\\ 
 $\langle S, s_i, s_o, s\rangle\Rightarrow\langle s_i', s_o', s'\rangle$\\ 
-Waarbij de laatste transitie duidt op een transitie waar een volgende transitie
-aanwezig is en genomen kan worden. De tweede duidt op een transitie waarbij er
-geen volgede beschikbaar is en het programma dus termineerd.
-op een niet terminerende transitie.\\ 
+Waarbij bij de eerste transitie de executie van S niet na een stap klaar is en waarbij
+de tweede transitie duidt op een terminerende transitie.\\ 
 
 \subsection{Semantiekbeschrijving}
 
-Om de semantiekregels te kunnen beschrijven maken we gebruik van hulpfuncties. Hieronder staat het type van de functies en een korte beschrijving.
-De implementatie van deze functies staat in de appendix. De functies worden op de volgende manier aangegeven: \textit{naam functie} (\textit{naam in appendix}, r. \textit{regelnummer})\\
+Om de semantiekregels te kunnen beschrijven maken we gebruik van hulpfuncties. 
+Hieronder staat het type van de functies en een korte beschrijving.
+De implementatie is gedaan in de vorm van een functioneel programma in de taal \textit{Clean}. 
+De implementatie van de functies staat in de appendix. 
+Elke functie wordt op de volgende manier aangegeven: \textit{naam functie} (\textit{naam in appendix}, r. \textit{regelnummer in appendix})\\
 
 delete functie (d, r. 5):\\
 Om het bovenste element van een stack weg te kunnen gooien gebruiken we de volgende 
@@ -98,9 +99,9 @@ de stack als de tweede bovenste waarde groter is dan de bovenste waarde. Anders
 wordt een 0 bovenop de stack gestopt.\\
 
 roll functie (roll, r. 54):\\
-Om de stack elementen te verschuiven gebruiken we de volgende functie:\\
+Om de elementen op de stack te verschuiven gebruiken we de volgende functie:\\
 $$\mathcal{ROLL} : Stack \rightarrow Stack$$\\
-Deze functie haalt de bovenste twee elementen van de stack 'rolt' de rest van de stack tot een diepte die gelijk is aan de waarde van het tweede bovenste element. Een rol tot diepte \textit{n} verschuift de elementen 1 tot en met \textit{n} allemaal 1 plaats naar boven. Vervolgens wordt het eerste element van de stack op plaats \textit{n} neergelegd. Het aantal keren dat de stack gerold wordt is gelijk aan de waarde van het bovenste element. Als deze waarde negatief is word de stack in tegenovergestelde richting gerold. Dit houdt in dat bij elke rol het element op plaats \textit{n} bovenop de stack word gelegt, en de rest van de elementen (dat boven het element op plaats \textit{n} lagen) 1 plaats naar beneden wordt verschoven.\\
+Deze functie haalt de bovenste twee elementen van de stack 'rolt' de rest van de stack tot een diepte die gelijk is aan de waarde van het tweede bovenste element. Een rol tot diepte \textit{n} verschuift de elementen 1 tot en met \textit{n} allemaal 1 plaats naar boven. Vervolgens wordt het eerste element van de stack op plaats \textit{n} neergelegd. Het aantal keren dat de stack gerold word is gelijk aan de waarde van het bovenste element. Als deze waarde negatief is word de stack in tegenovergestelde richting gerold. Dit houdt in dat bij elke rol het element op plaats \textit{n} bovenop de stack word gelegd, en de rest van de elementen (dat boven het element op plaats \textit{n} lagen) 1 plaats naar beneden wordt verschoven.\\
 
 out number (output stack) functie (outnum, r. 70):\\
 Deze functie past de output stack aan als er een integer naartoe geschreven wordt:\\
@@ -112,7 +113,11 @@ Deze functie past de stack aan als er een integer naartoe geschreven wordt:\\
 $$\mathcal{INN_S} : Stack \rightarrow Stack$$\\
 Deze functie haalt het bovenste element van de input stack en stopt dit element bovenop de output stack.\\
 
-Met behulp van deze gedefinieerde functies kunnen we nu de volgende semantiekregels opstellen:\\
+Met behulp van deze gedefinieerde functies kunnen we nu de semantiekregels opstellen.
+De meeste regels spreken redelijk voor zich: als een commando wordt uitgevoerd, zorgt dit voor een verandering in de bijbehorende stack. Deze verandering komt tot stand door het toepassen van de bijbehorende hulpfunctie op deze stack. 
+
+Voor de semantiekregels voor de compositie halen we, in tegenstelling tot de normale gang van zaken bij sos, steeds een commando van het einde van de lijst af. 
+Hiervoor is gekozen zodat de afleidingsrijen makkelijk te controleren zijn door bij de implementatie in \textit{Clean} de functies een voor een op een stack toe te passen.\\
 
 \begin{alignat*}{2}
 {[comp^1_{sos}]}\qquad &