Bläddra i källkod

moved thesis paper to overleaf + deleted useless examples + added timer to bouncing balls (shoudl be the simulated time NOT real time)

sampieters 1 år sedan
förälder
incheckning
c0364ae9f4
62 ändrade filer med 29 tillägg och 13286 borttagningar
  1. 11 11
      examples/BouncingBalls/PyDEVS/output.txt
  2. 2 7
      examples/BouncingBalls/PyDEVS/runner.py
  3. 5 2
      examples/BouncingBalls/PyDEVS/test_runner.py
  4. 11 11
      examples/BouncingBalls/Python/output.txt
  5. 0 32
      examples/SimpleElevatorBalls/PyDEVS/runner.py
  6. 0 562
      examples/SimpleElevatorBalls/PyDEVS/target.py
  7. 0 26
      examples/SimpleElevatorBalls/Python/runner.py
  8. 0 520
      examples/SimpleElevatorBalls/Python/target.py
  9. 0 390
      examples/SimpleElevatorBalls/sccd.xml
  10. 0 192
      examples/Train/Python/runner.py
  11. 0 473
      examples/Train/Python/target.py
  12. 0 6
      examples/Train/imgs/convert.sh
  13. BIN
      examples/Train/imgs/green.gif
  14. BIN
      examples/Train/imgs/green.png
  15. BIN
      examples/Train/imgs/lights.png
  16. 0 99
      examples/Train/imgs/lights.svg
  17. BIN
      examples/Train/imgs/rail.gif
  18. BIN
      examples/Train/imgs/rail.png
  19. 0 210
      examples/Train/imgs/rail.svg
  20. BIN
      examples/Train/imgs/red.gif
  21. BIN
      examples/Train/imgs/red.png
  22. BIN
      examples/Train/imgs/station.gif
  23. BIN
      examples/Train/imgs/station.png
  24. BIN
      examples/Train/imgs/train.gif
  25. BIN
      examples/Train/imgs/train.png
  26. 0 61
      examples/Train/imgs/train.svg
  27. BIN
      examples/Train/imgs/yellow.gif
  28. BIN
      examples/Train/imgs/yellow.png
  29. 0 282
      examples/Train/sccd.xml
  30. 0 13
      paper/00-Abstract.tex
  31. 0 8
      paper/00-Acknowledgements.tex
  32. 0 5
      paper/00-NedSamenvatting.tex
  33. 0 4
      paper/00-Preface.tex
  34. 0 33
      paper/01-Introduction.tex
  35. 0 660
      paper/02-Background.tex
  36. 0 67
      paper/03-Methodology.tex
  37. 0 6
      paper/04-Implementation.tex
  38. 0 6
      paper/05-Examples.tex
  39. 0 3
      paper/99-Conclusions.tex
  40. 0 5
      paper/AA-Testcode.tex
  41. 0 96
      paper/Makefile
  42. 0 38
      paper/MasterThesis.bbl
  43. 0 128
      paper/MasterThesis.fdb_latexmk
  44. BIN
      paper/MasterThesis.pdf
  45. BIN
      paper/MasterThesis.synctex.gz
  46. 0 70
      paper/MasterThesis.tex
  47. 0 2122
      paper/algorithm2e.sty
  48. 0 302
      paper/appendix.sty
  49. 0 897
      paper/comp.sty
  50. 0 683
      paper/fncychap.sty
  51. BIN
      paper/images/DEVSSimulationProcedure.png
  52. BIN
      paper/images/UA-LogoText.png
  53. BIN
      paper/images/UA-LogoTextC.png
  54. BIN
      paper/images/ansymo_logo.pdf
  55. BIN
      paper/images/ansymo_logo_medium.png
  56. BIN
      paper/images/lore.png
  57. 0 1517
      paper/lineno.sty
  58. 0 964
      paper/oz.sty
  59. 0 472
      paper/paralist.sty
  60. 0 747
      paper/picinpar.sty
  61. 0 27
      paper/references.bib
  62. 0 1529
      paper/titlesec.sty

+ 11 - 11
examples/BouncingBalls/PyDEVS/output.txt

@@ -1,11 +1,11 @@
-(event name: create_window; port: ui; parameters: [800, 600, 'BouncingBalls', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [0, 'WM_DELETE_WINDOW', 'window_close', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [0, '<Key>', 'key_press', 'private_2_field_ui'])
-(event name: create_canvas; port: ui; parameters: [0, 800, 550, {'background': '#eee'}, 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<Button-2>', 'right_click', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<Motion>', 'mouse_move', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<ButtonRelease>', 'mouse_release', 'private_2_field_ui'])
-(event name: create_button; port: ui; parameters: [0, 'create_new_field', 'private_4_button_ui'])
-(event name: bind_event; port: ui; parameters: [2, '<Button>', 'mouse_click', 'private_4_button_ui'])
-(event name: destroy_window; port: ui; parameters: [0])
-(event name: destroy_all; port: ui)
+0.242 (event name: create_window; port: ui; parameters: [800, 600, 'BouncingBalls', 'private_2_field_ui'])
+0.292 (event name: bind_event; port: ui; parameters: [0, 'WM_DELETE_WINDOW', 'window_close', 'private_2_field_ui'])
+0.292 (event name: bind_event; port: ui; parameters: [0, '<Key>', 'key_press', 'private_2_field_ui'])
+0.292 (event name: create_canvas; port: ui; parameters: [0, 800, 550, {'background': '#eee'}, 'private_2_field_ui'])
+0.306 (event name: bind_event; port: ui; parameters: [1, '<Button-2>', 'right_click', 'private_2_field_ui'])
+0.306 (event name: bind_event; port: ui; parameters: [1, '<Motion>', 'mouse_move', 'private_2_field_ui'])
+0.306 (event name: bind_event; port: ui; parameters: [1, '<ButtonRelease>', 'mouse_release', 'private_2_field_ui'])
+0.307 (event name: create_button; port: ui; parameters: [0, 'create_new_field', 'private_4_button_ui'])
+0.318 (event name: bind_event; port: ui; parameters: [2, '<Button>', 'mouse_click', 'private_4_button_ui'])
+2.452 (event name: destroy_window; port: ui; parameters: [0])
+2.505 (event name: destroy_all; port: ui)

+ 2 - 7
examples/BouncingBalls/PyDEVS/runner.py

@@ -20,18 +20,13 @@ if __name__ == '__main__':
 	tkroot = tk.Tk()
 	tkroot = tk.Tk()
 	tkroot.withdraw()
 	tkroot.withdraw()
 	sim = DEVSSimulator(model, refs)
 	sim = DEVSSimulator(model, refs)
-	sim.setRealTime(True)
-	#sim.setRealTimeInputFile("./examples/BouncingBalls/input_trace.txt")
-	sim.setVerbose("./examples/BouncingBalls/PyDEVS/trace.txt")
-	
+
+	sim.setVerbose()
 	sim.setRealTimePlatformTk(tkroot)
 	sim.setRealTimePlatformTk(tkroot)
 
 
 	ui = UI(tkroot, sim)
 	ui = UI(tkroot, sim)
 
 
 	listener = OutputListener(ui)
 	listener = OutputListener(ui)
 	sim.setListenPorts(model.out_ui, listener.add)
 	sim.setListenPorts(model.out_ui, listener.add)
-	#model.atomic1.addMyOwnOutputListener(OutputListener(ui))
-	#model.atomic2.addMyOwnOutputListener(OutputListener(ui))
-	#model.atomic3.addMyOwnOutputListener(OutputListener(ui))
 	sim.simulate()
 	sim.simulate()
 	tkroot.mainloop()
 	tkroot.mainloop()

+ 5 - 2
examples/BouncingBalls/PyDEVS/test_runner.py

@@ -2,7 +2,9 @@ import tkinter as tk
 import examples.BouncingBalls.PyDEVS.target as target
 import examples.BouncingBalls.PyDEVS.target as target
 from sccd.runtime.libs.ui_v2 import UI
 from sccd.runtime.libs.ui_v2 import UI
 from sccd.runtime.DEVS_loop import DEVSSimulator
 from sccd.runtime.DEVS_loop import DEVSSimulator
-from pypdevs.DEVS import AtomicDEVS, CoupledDEVS
+import time
+
+begin_time = time.time()
 
 
 class OutputListener:
 class OutputListener:
 	def __init__(self, model, log_file):
 	def __init__(self, model, log_file):
@@ -16,7 +18,8 @@ class OutputListener:
 	def add(self, events):
 	def add(self, events):
 		with open(self.log_file, 'a') as file:
 		with open(self.log_file, 'a') as file:
 			for event in events:
 			for event in events:
-				file.write(f'{event}\n')
+				elapsed_time = time.time() - begin_time
+				file.write(f'{elapsed_time:.3f} {event}\n')
 
 
 				# IMPORTANT: This is here because we add our own inputs but tkinter will not close properly because of this
 				# IMPORTANT: This is here because we add our own inputs but tkinter will not close properly because of this
 				#if event.name == "destroy_all":
 				#if event.name == "destroy_all":

+ 11 - 11
examples/BouncingBalls/Python/output.txt

@@ -1,11 +1,11 @@
-(event name: create_window; port: ui; parameters: [800, 600, 'BouncingBalls', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [0, 'WM_DELETE_WINDOW', 'window_close', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [0, '<Key>', 'key_press', 'private_2_field_ui'])
-(event name: create_canvas; port: ui; parameters: [0, 800, 550, {'background': '#eee'}, 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<Button-2>', 'right_click', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<Motion>', 'mouse_move', 'private_2_field_ui'])
-(event name: bind_event; port: ui; parameters: [1, '<ButtonRelease>', 'mouse_release', 'private_2_field_ui'])
-(event name: create_button; port: ui; parameters: [0, 'create_new_field', 'private_4_button_ui'])
-(event name: bind_event; port: ui; parameters: [2, '<Button>', 'mouse_click', 'private_4_button_ui'])
-(event name: destroy_window; port: ui; parameters: [0])
-(event name: destroy_all; port: ui)
+0.006 (event name: create_window; port: ui; parameters: [800, 600, 'BouncingBalls', 'private_2_field_ui'])
+0.027 (event name: bind_event; port: ui; parameters: [0, 'WM_DELETE_WINDOW', 'window_close', 'private_2_field_ui'])
+0.027 (event name: bind_event; port: ui; parameters: [0, '<Key>', 'key_press', 'private_2_field_ui'])
+0.027 (event name: create_canvas; port: ui; parameters: [0, 800, 550, {'background': '#eee'}, 'private_2_field_ui'])
+0.059 (event name: bind_event; port: ui; parameters: [1, '<Button-2>', 'right_click', 'private_2_field_ui'])
+0.059 (event name: bind_event; port: ui; parameters: [1, '<Motion>', 'mouse_move', 'private_2_field_ui'])
+0.059 (event name: bind_event; port: ui; parameters: [1, '<ButtonRelease>', 'mouse_release', 'private_2_field_ui'])
+0.059 (event name: create_button; port: ui; parameters: [0, 'create_new_field', 'private_4_button_ui'])
+0.064 (event name: bind_event; port: ui; parameters: [2, '<Button>', 'mouse_click', 'private_4_button_ui'])
+1.932 (event name: destroy_window; port: ui; parameters: [0])
+1.984 (event name: destroy_all; port: ui)

+ 0 - 32
examples/SimpleElevatorBalls/PyDEVS/runner.py

@@ -1,32 +0,0 @@
-import tkinter as tk
-import examples.SimpleElevatorBalls.PyDEVS.target as target
-from sccd.runtime.libs.ui_v2 import UI
-from sccd.runtime.DEVS_loop import DEVSSimulator
-
-class OutputListener:
-	def __init__(self, ui):
-		self.ui = ui
-
-	def add(self, event):
-		if event.port == "ui":
-			method = getattr(self.ui, event.name)
-			method(*event.parameters)
-
-if __name__ == '__main__':
-	model = target.Controller(name="controller")
-	refs = {"ui": model.ui, "elevator_ui": model.atomic1.elevator_ui, "ball_ui": model.atomic2.ball_ui}
-
-	tkroot = tk.Tk()
-	tkroot.withdraw()
-	sim = DEVSSimulator(model)
-	sim.setRealTime(True)
-	sim.setRealTimeInputFile(None)
-	sim.setRealTimePorts(refs)
-	sim.setVerbose(None)
-	sim.setRealTimePlatformTk(tkroot)
-
-	ui = UI(tkroot, sim)
-	model.atomic1.addMyOwnOutputListener(OutputListener(ui))
-	model.atomic2.addMyOwnOutputListener(OutputListener(ui))
-	sim.simulate()
-	tkroot.mainloop()

+ 0 - 562
examples/SimpleElevatorBalls/PyDEVS/target.py

@@ -1,562 +0,0 @@
-"""
-Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration) and Sam Pieters (DEVS)
-
-Model author: Sam Pieters
-Model name:   Elevator Balls
-
-"""
-
-from sccd.runtime.DEVS_statecharts_core import *
-from sccd.runtime.libs.ui import ui
-import random
-import time
-
-CANVAS_WIDTH = 800
-CANVAS_HEIGHT = 550
-
-# package "Elevator Balls"
-
-class MainAppInstance(RuntimeClassBase):
-    def __init__(self, atomdevs):
-        RuntimeClassBase.__init__(self, atomdevs)
-        self.associations = {}
-        self.associations["elevator"] = Association("Elevator", 0, -1)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.window_id = None
-        self.canvas_id = None
-        self.floor_dimensions = None
-        
-        # call user defined constructor
-        MainAppInstance.user_defined_constructor(self)
-        self.inports["field_ui"] = ('field_ui', atomdevs.next_instance)
-    
-    def user_defined_constructor(self):
-        pass
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /creating_window
-        self.states["/creating_window"] = State(1, "/creating_window", self)
-        self.states["/creating_window"].setEnter(self._creating_window_enter)
-        
-        # state /creating_canvas
-        self.states["/creating_canvas"] = State(2, "/creating_canvas", self)
-        self.states["/creating_canvas"].setEnter(self._creating_canvas_enter)
-        
-        # state /create_elevator
-        self.states["/create_elevator"] = State(3, "/create_elevator", self)
-        
-        # state /creating
-        self.states["/creating"] = State(4, "/creating", self)
-        
-        # state /waiting
-        self.states["/waiting"] = State(5, "/waiting", self)
-        
-        # add children
-        self.states[""].addChild(self.states["/creating_window"])
-        self.states[""].addChild(self.states["/creating_canvas"])
-        self.states[""].addChild(self.states["/create_elevator"])
-        self.states[""].addChild(self.states["/creating"])
-        self.states[""].addChild(self.states["/waiting"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/creating_window"]
-        
-        # transition /creating_window
-        _creating_window_0 = Transition(self, self.states["/creating_window"], [self.states["/creating_canvas"]])
-        _creating_window_0.setAction(self._creating_window_0_exec)
-        _creating_window_0.setTrigger(Event("window_created", None))
-        self.states["/creating_window"].addTransition(_creating_window_0)
-        
-        # transition /creating_canvas
-        _creating_canvas_0 = Transition(self, self.states["/creating_canvas"], [self.states["/create_elevator"]])
-        _creating_canvas_0.setAction(self._creating_canvas_0_exec)
-        _creating_canvas_0.setTrigger(Event("canvas_created", None))
-        self.states["/creating_canvas"].addTransition(_creating_canvas_0)
-        
-        # transition /create_elevator
-        _create_elevator_0 = Transition(self, self.states["/create_elevator"], [self.states["/creating"]])
-        _create_elevator_0.setAction(self._create_elevator_0_exec)
-        _create_elevator_0.setTrigger(None)
-        self.states["/create_elevator"].addTransition(_create_elevator_0)
-        
-        # transition /creating
-        _creating_0 = Transition(self, self.states["/creating"], [self.states["/waiting"]])
-        _creating_0.setAction(self._creating_0_exec)
-        _creating_0.setTrigger(Event("instance_created", None))
-        self.states["/creating"].addTransition(_creating_0)
-    
-    def _creating_window_enter(self):
-        self.big_step.outputEvent(Event("create_window", self.getOutPortName("ui"), [CANVAS_WIDTH, CANVAS_HEIGHT, "Bouncing Balls Elevator", self.inports['field_ui']]))
-    
-    def _creating_canvas_enter(self):
-        self.big_step.outputEvent(Event("create_canvas", self.getOutPortName("ui"), [self.window_id, CANVAS_WIDTH, CANVAS_HEIGHT - 200, {'background':'#fff'}, self.inports['field_ui']]))
-    
-    def _creating_window_0_exec(self, parameters):
-        window_id = parameters[0]
-        self.window_id = window_id
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [window_id, ui.EVENTS.WINDOW_CLOSE, 'window_close', self.inports['field_ui']]))
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [window_id, ui.EVENTS.KEY_PRESS, 'key_press', self.inports['field_ui']]))
-    
-    def _creating_canvas_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        self.canvas_id = canvas_id
-    
-    def _create_elevator_0_exec(self, parameters):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, "elevator", "Elevator", self.canvas_id]))
-    
-    def _creating_0_exec(self, parameters):
-        association_name = parameters[0]
-        self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, association_name, Event("set_association_name", None, [association_name, self.canvas_id, self.window_id])]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/creating_window"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class MainApp(ObjectManagerBase):
-    def __init__(self, name):
-        ObjectManagerBase.__init__(self, name)
-        self.input = self.addInPort("input")
-        self.outputs["elevator"] = self.addOutPort("elevator")
-        self.field_ui = self.addInPort("field_ui")
-        self.instances[self.next_instance] = MainAppInstance(self)
-        self.next_instance = self.next_instance + 1
-    
-    def constructObject(self, parameters):
-        new_instance = MainAppInstance(self)
-        return new_instance
-
-class ElevatorInstance(RuntimeClassBase):
-    def __init__(self, atomdevs, canvas_id):
-        RuntimeClassBase.__init__(self, atomdevs)
-        self.associations = {}
-        self.associations["balls"] = Association("Ball", 0, -1)
-        self.associations["parent"] = Association("MainApp", 1, 1)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.window_id = None
-        self.canvas_id = None
-        self.elevator_id = None
-        
-        # call user defined constructor
-        ElevatorInstance.user_defined_constructor(self, canvas_id)
-        self.inports["elevator_ui"] = ('elevator_ui', atomdevs.next_instance)
-    
-    def user_defined_constructor(self, canvas_id):
-        self.canvas_id = canvas_id;
-        self.dim = {'x': 80, 'y': 150};
-        self.vel = {'x': 0, 'y': -2};
-        self.pos = {'x': 400, 'y': 75};
-        self.smooth = 0.6; # value between 0 and 1
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /root
-        self.states["/root"] = State(1, "/root", self)
-        
-        # state /root/waiting
-        self.states["/root/waiting"] = State(2, "/root/waiting", self)
-        
-        # state /root/creating_elevator
-        self.states["/root/creating_elevator"] = State(3, "/root/creating_elevator", self)
-        self.states["/root/creating_elevator"].setEnter(self._root_creating_elevator_enter)
-        
-        # state /root/running
-        self.states["/root/running"] = State(4, "/root/running", self)
-        self.states["/root/running"].setEnter(self._root_running_enter)
-        self.states["/root/running"].setExit(self._root_running_exit)
-        
-        # add children
-        self.states[""].addChild(self.states["/root"])
-        self.states["/root"].addChild(self.states["/root/waiting"])
-        self.states["/root"].addChild(self.states["/root/creating_elevator"])
-        self.states["/root"].addChild(self.states["/root/running"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/root"]
-        self.states["/root"].default_state = self.states["/root/waiting"]
-        
-        # transition /root/waiting
-        _root_waiting_0 = Transition(self, self.states["/root/waiting"], [self.states["/root/creating_elevator"]])
-        _root_waiting_0.setAction(self._root_waiting_0_exec)
-        _root_waiting_0.setTrigger(Event("set_association_name", None))
-        self.states["/root/waiting"].addTransition(_root_waiting_0)
-        
-        # transition /root/creating_elevator
-        _root_creating_elevator_0 = Transition(self, self.states["/root/creating_elevator"], [self.states["/root/running"]])
-        _root_creating_elevator_0.setAction(self._root_creating_elevator_0_exec)
-        _root_creating_elevator_0.setTrigger(Event("rectangle_created", None))
-        self.states["/root/creating_elevator"].addTransition(_root_creating_elevator_0)
-        
-        # transition /root/running
-        _root_running_0 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_0.setAction(self._root_running_0_exec)
-        _root_running_0.setTrigger(Event("_0after"))
-        self.states["/root/running"].addTransition(_root_running_0)
-        _root_running_1 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_1.setAction(self._root_running_1_exec)
-        _root_running_1.setTrigger(Event("right_click", self.getInPortName("elevator_ui")))
-        self.states["/root/running"].addTransition(_root_running_1)
-        _root_running_2 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_2.setAction(self._root_running_2_exec)
-        _root_running_2.setTrigger(Event("instance_created", None))
-        self.states["/root/running"].addTransition(_root_running_2)
-    
-    def _root_creating_elevator_enter(self):
-        self.big_step.outputEvent(Event("create_rectangle", self.getOutPortName("ui"), [self.canvas_id, self.pos['x'], self.pos['y'], self.dim['x'], self.dim['y'], {'fill':'white', 'outline': 'black'}, self.inports['elevator_ui']]))
-    
-    def _root_running_enter(self):
-        self.addTimer(0, 0.03)
-    
-    def _root_running_exit(self):
-        self.removeTimer(0)
-    
-    def _root_waiting_0_exec(self, parameters):
-        association_name = parameters[0]
-        canvas_id = parameters[1]
-        window_id = parameters[2]
-        self.association_name = association_name
-        self.canvas_id = canvas_id
-        self.window_id = window_id
-    
-    def _root_creating_elevator_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        rect_id = parameters[1]
-        self.elevator_id = rect_id
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [canvas_id, ui.EVENTS.MOUSE_RIGHT_CLICK, 'right_click', self.inports['elevator_ui']]))
-    
-    def _root_running_0_exec(self, parameters):
-        # Invert velocity when colliding with canvas border:
-        if self.pos['y']-(self.dim['y']/2) <= 0 or self.pos['y']+(self.dim['y']/2) >= CANVAS_HEIGHT:
-            self.vel['y'] = -self.vel['y'];
-        self.big_step.outputEvent(Event("move_element", self.getOutPortName("ui"), [self.canvas_id, self.elevator_id, self.vel['x'], self.vel['y']]))
-        self.pos['x'] += self.vel['x']
-        self.pos['y'] += self.vel['y']
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'balls', Event("update_bounds", None, [self.pos, self.dim, self.vel])]))
-    
-    def _root_running_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.big_step.outputEventOM(Event("create_instance", None, [self, "balls", "Ball", self.canvas_id, x, y]))
-    
-    def _root_running_2_exec(self, parameters):
-        association_name = parameters[0]
-        self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, association_name, Event("set_association_name", None, [association_name])]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/root"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class Elevator(ObjectManagerBase):
-    def __init__(self, name):
-        ObjectManagerBase.__init__(self, name)
-        self.input = self.addInPort("input")
-        self.outputs["balls"] = self.addOutPort("balls")
-        self.outputs["parent"] = self.addOutPort("parent")
-        self.elevator_ui = self.addInPort("elevator_ui")
-    
-    def constructObject(self, parameters):
-        new_instance = ElevatorInstance(self, parameters[2])
-        return new_instance
-
-class BallInstance(RuntimeClassBase):
-    def __init__(self, atomdevs, canvas_id, x, y):
-        RuntimeClassBase.__init__(self, atomdevs)
-        self.associations = {}
-        self.associations["parent"] = Association("Elevator", 1, 1)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.canvas_id = None
-        self.pos = None
-        
-        # call user defined constructor
-        BallInstance.user_defined_constructor(self, canvas_id, x, y)
-        self.inports["ball_ui"] = ('ball_ui', atomdevs.next_instance)
-    
-    def user_defined_constructor(self, canvas_id, x, y):
-        self.canvas_id = canvas_id;
-        self.r = 5.0;
-        self.vel = {'x': random.uniform(-5.0, 5.0), 'y': random.uniform(-5.0, 5.0)};
-        self.pos = {'x': x, 'y': y};
-        self.smooth = 0.6; # value between 0 and 1
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /main_behaviour
-        self.states["/main_behaviour"] = State(1, "/main_behaviour", self)
-        
-        # state /main_behaviour/initializing
-        self.states["/main_behaviour/initializing"] = State(2, "/main_behaviour/initializing", self)
-        
-        # state /main_behaviour/creating_circle
-        self.states["/main_behaviour/creating_circle"] = State(3, "/main_behaviour/creating_circle", self)
-        self.states["/main_behaviour/creating_circle"].setEnter(self._main_behaviour_creating_circle_enter)
-        
-        # state /main_behaviour/bouncing
-        self.states["/main_behaviour/bouncing"] = State(4, "/main_behaviour/bouncing", self)
-        self.states["/main_behaviour/bouncing"].setEnter(self._main_behaviour_bouncing_enter)
-        self.states["/main_behaviour/bouncing"].setExit(self._main_behaviour_bouncing_exit)
-        
-        # state /main_behaviour/dragging
-        self.states["/main_behaviour/dragging"] = State(5, "/main_behaviour/dragging", self)
-        
-        # state /main_behaviour/selected
-        self.states["/main_behaviour/selected"] = State(6, "/main_behaviour/selected", self)
-        
-        # state /deleted
-        self.states["/deleted"] = State(7, "/deleted", self)
-        
-        # add children
-        self.states[""].addChild(self.states["/main_behaviour"])
-        self.states[""].addChild(self.states["/deleted"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/initializing"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/creating_circle"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/bouncing"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/dragging"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/selected"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/main_behaviour"]
-        self.states["/main_behaviour"].default_state = self.states["/main_behaviour/initializing"]
-        
-        # transition /main_behaviour/initializing
-        _main_behaviour_initializing_0 = Transition(self, self.states["/main_behaviour/initializing"], [self.states["/main_behaviour/creating_circle"]])
-        _main_behaviour_initializing_0.setAction(self._main_behaviour_initializing_0_exec)
-        _main_behaviour_initializing_0.setTrigger(Event("set_association_name", None))
-        self.states["/main_behaviour/initializing"].addTransition(_main_behaviour_initializing_0)
-        
-        # transition /main_behaviour/creating_circle
-        _main_behaviour_creating_circle_0 = Transition(self, self.states["/main_behaviour/creating_circle"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_creating_circle_0.setAction(self._main_behaviour_creating_circle_0_exec)
-        _main_behaviour_creating_circle_0.setTrigger(Event("circle_created", None))
-        self.states["/main_behaviour/creating_circle"].addTransition(_main_behaviour_creating_circle_0)
-        
-        # transition /main_behaviour/bouncing
-        _main_behaviour_bouncing_0 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_bouncing_0.setAction(self._main_behaviour_bouncing_0_exec)
-        _main_behaviour_bouncing_0.setTrigger(Event("_0after"))
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_0)
-        _main_behaviour_bouncing_1 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/selected"]])
-        _main_behaviour_bouncing_1.setAction(self._main_behaviour_bouncing_1_exec)
-        _main_behaviour_bouncing_1.setTrigger(Event("mouse_press", self.getInPortName("ball_ui")))
-        _main_behaviour_bouncing_1.setGuard(self._main_behaviour_bouncing_1_guard)
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_1)
-        _main_behaviour_bouncing_2 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_bouncing_2.setAction(self._main_behaviour_bouncing_2_exec)
-        _main_behaviour_bouncing_2.setTrigger(Event("update_bounds", None))
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_2)
-        
-        # transition /main_behaviour/dragging
-        _main_behaviour_dragging_0 = Transition(self, self.states["/main_behaviour/dragging"], [self.states["/main_behaviour/dragging"]])
-        _main_behaviour_dragging_0.setAction(self._main_behaviour_dragging_0_exec)
-        _main_behaviour_dragging_0.setTrigger(Event("mouse_move", self.getInPortName("ball_ui")))
-        self.states["/main_behaviour/dragging"].addTransition(_main_behaviour_dragging_0)
-        _main_behaviour_dragging_1 = Transition(self, self.states["/main_behaviour/dragging"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_dragging_1.setAction(self._main_behaviour_dragging_1_exec)
-        _main_behaviour_dragging_1.setTrigger(Event("mouse_release", self.getInPortName("ball_ui")))
-        self.states["/main_behaviour/dragging"].addTransition(_main_behaviour_dragging_1)
-        
-        # transition /main_behaviour/selected
-        _main_behaviour_selected_0 = Transition(self, self.states["/main_behaviour/selected"], [self.states["/main_behaviour/dragging"]])
-        _main_behaviour_selected_0.setAction(self._main_behaviour_selected_0_exec)
-        _main_behaviour_selected_0.setTrigger(Event("mouse_press", self.getInPortName("ball_ui")))
-        _main_behaviour_selected_0.setGuard(self._main_behaviour_selected_0_guard)
-        self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_0)
-        _main_behaviour_selected_1 = Transition(self, self.states["/main_behaviour/selected"], [self.states["/deleted"]])
-        _main_behaviour_selected_1.setAction(self._main_behaviour_selected_1_exec)
-        _main_behaviour_selected_1.setTrigger(Event("delete_self", None))
-        self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_1)
-    
-    def _main_behaviour_creating_circle_enter(self):
-        self.big_step.outputEvent(Event("create_circle", self.getOutPortName("ui"), [self.canvas_id, self.pos['x'], self.pos['y'], self.r, {'fill':'#000'}, self.inports['ball_ui']]))
-    
-    def _main_behaviour_bouncing_enter(self):
-        self.addTimer(0, 0.02)
-    
-    def _main_behaviour_bouncing_exit(self):
-        self.removeTimer(0)
-    
-    def _main_behaviour_initializing_0_exec(self, parameters):
-        association_name = parameters[0]
-        self.association_name = association_name
-    
-    def _main_behaviour_creating_circle_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        circle_id = parameters[1]
-        self.circle_id = circle_id
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_PRESS, 'mouse_press', self.inports['ball_ui']]))
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_MOVE, 'mouse_move', self.inports['ball_ui']]))
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_RELEASE, 'mouse_release', self.inports['ball_ui']]))
-    
-    def _main_behaviour_bouncing_0_exec(self, parameters):
-        # Invert velocity when colliding with canvas border:
-        if self.pos['x']-self.r <= self.rect_pos['x'] - (self.rect_dim['x'] / 2) or self.pos['x']+self.r >= self.rect_pos['x'] + (self.rect_dim['x'] / 2):
-            self.vel['x'] = -self.vel['x'] + self.rect_vel['x'];
-        if self.pos['y']-self.r <= self.rect_pos['y'] - (self.rect_dim['y'] / 2) or self.pos['y']+self.r >= self.rect_pos['y'] + (self.rect_dim['y'] / 2):
-            self.vel['y'] = -self.vel['y'] + self.rect_vel['y'];
-        self.big_step.outputEvent(Event("move_element", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, self.vel['x'], self.vel['y']]))
-        self.pos['x'] += self.vel['x']
-        self.pos['y'] += self.vel['y']
-    
-    def _main_behaviour_bouncing_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.big_step.outputEvent(Event("set_element_color", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, '#ff0']))
-    
-    def _main_behaviour_bouncing_1_guard(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        return button == ui.MOUSE_BUTTONS.LEFT
-    
-    def _main_behaviour_bouncing_2_exec(self, parameters):
-        pos = parameters[0]
-        dim = parameters[1]
-        vel = parameters[2]
-        self.rect_pos = pos
-        self.rect_dim = dim
-        self.rect_vel = vel
-    
-    def _main_behaviour_dragging_0_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        # Always keep ball within canvas:
-        x = min(max(0+self.r, x), CANVAS_WIDTH-self.r)
-        y = min(max(0+self.r, y), CANVAS_HEIGHT-self.r)
-        
-        dx = x - self.pos['x']
-        dy = y - self.pos['y']
-        
-        self.vel = {
-            'x': (1-self.smooth)*dx + self.smooth*self.vel['x'],
-            'y': (1-self.smooth)*dy + self.smooth*self.vel['y']
-        }
-        
-        self.pos = {'x': x, 'y': y}
-        self.big_step.outputEvent(Event("set_element_pos", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, x-self.r, y-self.r]))
-    
-    def _main_behaviour_dragging_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        self.big_step.outputEvent(Event("set_element_color", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, '#f00']))
-    
-    def _main_behaviour_selected_0_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.mouse_pos = {'x':x, 'y':y};
-    
-    def _main_behaviour_selected_0_guard(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        return button == ui.MOUSE_BUTTONS.LEFT
-    
-    def _main_behaviour_selected_1_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("delete_ball", None, [self.association_name])]))
-        self.big_step.outputEvent(Event("destroy_element", self.getOutPortName("ui"), [self.canvas_id, self.element_id]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/main_behaviour"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class Ball(ObjectManagerBase):
-    def __init__(self, name):
-        ObjectManagerBase.__init__(self, name)
-        self.input = self.addInPort("input")
-        self.outputs["parent"] = self.addOutPort("parent")
-        self.ball_ui = self.addInPort("ball_ui")
-    
-    def constructObject(self, parameters):
-        new_instance = BallInstance(self, parameters[2], parameters[3], parameters[4])
-        return new_instance
-
-class ObjectManagerState:
-    def __init__(self):
-        self.to_send = [("MainApp", "MainApp", Event("start_instance", None, ["MainApp[0]"], 0))]
-
-class ObjectManager(TheObjectManager):
-    def __init__(self, name):
-        TheObjectManager.__init__(self, name)
-        self.State = ObjectManagerState()
-        self.input = self.addInPort("input")
-        self.output["MainApp"] = self.addOutPort()
-        self.output["Elevator"] = self.addOutPort()
-        self.output["Ball"] = self.addOutPort()
-
-class Controller(CoupledDEVS):
-    def __init__(self, name):
-        CoupledDEVS.__init__(self, name)
-        self.ui = self.addInPort("ui")
-        self.addOutPort("ui")
-        self.objectmanager = self.addSubModel(ObjectManager("ObjectManager"))
-        self.atomic0 = self.addSubModel(MainApp("MainApp"))
-        self.atomic1 = self.addSubModel(Elevator("Elevator"))
-        self.atomic2 = self.addSubModel(Ball("Ball"))
-        self.connectPorts(self.atomic0.obj_manager_out, self.objectmanager.input)
-        self.connectPorts(self.objectmanager.output["MainApp"], self.atomic0.obj_manager_in)
-        self.connectPorts(self.atomic0.outputs["elevator"], self.atomic1.input)
-        self.connectPorts(self.atomic1.obj_manager_out, self.objectmanager.input)
-        self.connectPorts(self.objectmanager.output["Elevator"], self.atomic1.obj_manager_in)
-        self.connectPorts(self.atomic1.outputs["balls"], self.atomic2.input)
-        self.connectPorts(self.atomic1.outputs["parent"], self.atomic0.input)
-        self.connectPorts(self.atomic2.obj_manager_out, self.objectmanager.input)
-        self.connectPorts(self.objectmanager.output["Ball"], self.atomic2.obj_manager_in)
-        self.connectPorts(self.atomic2.outputs["parent"], self.atomic1.input)

+ 0 - 26
examples/SimpleElevatorBalls/Python/runner.py

@@ -1,26 +0,0 @@
-import tkinter as tk
-import target as target
-from sccd.runtime.libs.ui_v2 import UI
-from sccd.runtime.tkinter_eventloop import TkEventLoop
-
-class OutputListener:
-	def __init__(self, ui):
-		self.ui = ui
-
-	def add(self, event):
-		if event.port == "ui":
-			method = getattr(self.ui, event.name)
-			method(*event.parameters)
-
-if __name__ == '__main__':
-	tkroot = tk.Tk()
-	tkroot.withdraw()
-	controller = target.Controller(TkEventLoop(tkroot))
-	ui = UI(tkroot, controller)
-	controller.addMyOwnOutputListener(OutputListener(ui))
-
-	controller.setVerbose(None)
-	
-	controller.start()
-	tkroot.mainloop()
-	

+ 0 - 520
examples/SimpleElevatorBalls/Python/target.py

@@ -1,520 +0,0 @@
-"""
-Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
-
-Model author: Sam Pieters
-Model name:   Elevator Balls
-
-"""
-
-from sccd.runtime.statecharts_core import *
-from sccd.runtime.libs.ui import ui
-import random
-import time
-
-CANVAS_WIDTH = 800
-CANVAS_HEIGHT = 550
-
-# package "Elevator Balls"
-
-class MainApp(RuntimeClassBase):
-    def __init__(self, controller):
-        RuntimeClassBase.__init__(self, controller)
-        
-        self.inports["field_ui"] = controller.addInputPort("field_ui", self)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.window_id = None
-        self.canvas_id = None
-        self.floor_dimensions = None
-        
-        # call user defined constructor
-        MainApp.user_defined_constructor(self)
-    
-    def user_defined_constructor(self):
-        pass
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /creating_window
-        self.states["/creating_window"] = State(1, "/creating_window", self)
-        self.states["/creating_window"].setEnter(self._creating_window_enter)
-        
-        # state /creating_canvas
-        self.states["/creating_canvas"] = State(2, "/creating_canvas", self)
-        self.states["/creating_canvas"].setEnter(self._creating_canvas_enter)
-        
-        # state /create_elevator
-        self.states["/create_elevator"] = State(3, "/create_elevator", self)
-        
-        # state /creating
-        self.states["/creating"] = State(4, "/creating", self)
-        
-        # state /waiting
-        self.states["/waiting"] = State(5, "/waiting", self)
-        
-        # add children
-        self.states[""].addChild(self.states["/creating_window"])
-        self.states[""].addChild(self.states["/creating_canvas"])
-        self.states[""].addChild(self.states["/create_elevator"])
-        self.states[""].addChild(self.states["/creating"])
-        self.states[""].addChild(self.states["/waiting"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/creating_window"]
-        
-        # transition /creating_window
-        _creating_window_0 = Transition(self, self.states["/creating_window"], [self.states["/creating_canvas"]])
-        _creating_window_0.setAction(self._creating_window_0_exec)
-        _creating_window_0.setTrigger(Event("window_created", None))
-        self.states["/creating_window"].addTransition(_creating_window_0)
-        
-        # transition /creating_canvas
-        _creating_canvas_0 = Transition(self, self.states["/creating_canvas"], [self.states["/create_elevator"]])
-        _creating_canvas_0.setAction(self._creating_canvas_0_exec)
-        _creating_canvas_0.setTrigger(Event("canvas_created", None))
-        self.states["/creating_canvas"].addTransition(_creating_canvas_0)
-        
-        # transition /create_elevator
-        _create_elevator_0 = Transition(self, self.states["/create_elevator"], [self.states["/creating"]])
-        _create_elevator_0.setAction(self._create_elevator_0_exec)
-        _create_elevator_0.setTrigger(None)
-        self.states["/create_elevator"].addTransition(_create_elevator_0)
-        
-        # transition /creating
-        _creating_0 = Transition(self, self.states["/creating"], [self.states["/waiting"]])
-        _creating_0.setAction(self._creating_0_exec)
-        _creating_0.setTrigger(Event("instance_created", None))
-        self.states["/creating"].addTransition(_creating_0)
-    
-    def _creating_window_enter(self):
-        self.big_step.outputEvent(Event("create_window", self.getOutPortName("ui"), [CANVAS_WIDTH, CANVAS_HEIGHT, "Bouncing Balls Elevator", self.inports['field_ui']]))
-    
-    def _creating_canvas_enter(self):
-        self.big_step.outputEvent(Event("create_canvas", self.getOutPortName("ui"), [self.window_id, CANVAS_WIDTH, CANVAS_HEIGHT - 200, {'background':'#fff'}, self.inports['field_ui']]))
-    
-    def _creating_window_0_exec(self, parameters):
-        window_id = parameters[0]
-        self.window_id = window_id
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [window_id, ui.EVENTS.WINDOW_CLOSE, 'window_close', self.inports['field_ui']]))
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [window_id, ui.EVENTS.KEY_PRESS, 'key_press', self.inports['field_ui']]))
-    
-    def _creating_canvas_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        self.canvas_id = canvas_id
-    
-    def _create_elevator_0_exec(self, parameters):
-        self.big_step.outputEventOM(Event("create_instance", None, [self, "elevator", "Elevator", self.canvas_id]))
-    
-    def _creating_0_exec(self, parameters):
-        association_name = parameters[0]
-        self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, association_name, Event("set_association_name", None, [association_name, self.canvas_id, self.window_id])]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/creating_window"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class Elevator(RuntimeClassBase):
-    def __init__(self, controller, canvas_id):
-        RuntimeClassBase.__init__(self, controller)
-        
-        self.inports["elevator_ui"] = controller.addInputPort("elevator_ui", self)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.window_id = None
-        self.canvas_id = None
-        self.elevator_id = None
-        
-        # call user defined constructor
-        Elevator.user_defined_constructor(self, canvas_id)
-    
-    def user_defined_constructor(self, canvas_id):
-        self.canvas_id = canvas_id;
-        self.dim = {'x': 80, 'y': 150};
-        self.vel = {'x': 0, 'y': -2};
-        self.pos = {'x': 400, 'y': 75};
-        self.smooth = 0.6; # value between 0 and 1
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /root
-        self.states["/root"] = State(1, "/root", self)
-        
-        # state /root/waiting
-        self.states["/root/waiting"] = State(2, "/root/waiting", self)
-        
-        # state /root/creating_elevator
-        self.states["/root/creating_elevator"] = State(3, "/root/creating_elevator", self)
-        self.states["/root/creating_elevator"].setEnter(self._root_creating_elevator_enter)
-        
-        # state /root/running
-        self.states["/root/running"] = State(4, "/root/running", self)
-        self.states["/root/running"].setEnter(self._root_running_enter)
-        self.states["/root/running"].setExit(self._root_running_exit)
-        
-        # add children
-        self.states[""].addChild(self.states["/root"])
-        self.states["/root"].addChild(self.states["/root/waiting"])
-        self.states["/root"].addChild(self.states["/root/creating_elevator"])
-        self.states["/root"].addChild(self.states["/root/running"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/root"]
-        self.states["/root"].default_state = self.states["/root/waiting"]
-        
-        # transition /root/waiting
-        _root_waiting_0 = Transition(self, self.states["/root/waiting"], [self.states["/root/creating_elevator"]])
-        _root_waiting_0.setAction(self._root_waiting_0_exec)
-        _root_waiting_0.setTrigger(Event("set_association_name", None))
-        self.states["/root/waiting"].addTransition(_root_waiting_0)
-        
-        # transition /root/creating_elevator
-        _root_creating_elevator_0 = Transition(self, self.states["/root/creating_elevator"], [self.states["/root/running"]])
-        _root_creating_elevator_0.setAction(self._root_creating_elevator_0_exec)
-        _root_creating_elevator_0.setTrigger(Event("rectangle_created", None))
-        self.states["/root/creating_elevator"].addTransition(_root_creating_elevator_0)
-        
-        # transition /root/running
-        _root_running_0 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_0.setAction(self._root_running_0_exec)
-        _root_running_0.setTrigger(Event("_0after"))
-        self.states["/root/running"].addTransition(_root_running_0)
-        _root_running_1 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_1.setAction(self._root_running_1_exec)
-        _root_running_1.setTrigger(Event("right_click", self.getInPortName("elevator_ui")))
-        self.states["/root/running"].addTransition(_root_running_1)
-        _root_running_2 = Transition(self, self.states["/root/running"], [self.states["/root/running"]])
-        _root_running_2.setAction(self._root_running_2_exec)
-        _root_running_2.setTrigger(Event("instance_created", None))
-        self.states["/root/running"].addTransition(_root_running_2)
-    
-    def _root_creating_elevator_enter(self):
-        self.big_step.outputEvent(Event("create_rectangle", self.getOutPortName("ui"), [self.canvas_id, self.pos['x'], self.pos['y'], self.dim['x'], self.dim['y'], {'fill':'white', 'outline': 'black'}, self.inports['elevator_ui']]))
-    
-    def _root_running_enter(self):
-        self.addTimer(0, 0.03)
-    
-    def _root_running_exit(self):
-        self.removeTimer(0)
-    
-    def _root_waiting_0_exec(self, parameters):
-        association_name = parameters[0]
-        canvas_id = parameters[1]
-        window_id = parameters[2]
-        self.association_name = association_name
-        self.canvas_id = canvas_id
-        self.window_id = window_id
-    
-    def _root_creating_elevator_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        rect_id = parameters[1]
-        self.elevator_id = rect_id
-        self.big_step.outputEvent(Event("bind_event", self.getOutPortName("ui"), [canvas_id, ui.EVENTS.MOUSE_RIGHT_CLICK, 'right_click', self.inports['elevator_ui']]))
-    
-    def _root_running_0_exec(self, parameters):
-        # Invert velocity when colliding with canvas border:
-        if self.pos['y']-(self.dim['y']/2) <= 0 or self.pos['y']+(self.dim['y']/2) >= CANVAS_HEIGHT:
-            self.vel['y'] = -self.vel['y'];
-        self.big_step.outputEvent(Event("move_element", self.getOutPortName("ui"), [self.canvas_id, self.elevator_id, self.vel['x'], self.vel['y']]))
-        self.pos['x'] += self.vel['x']
-        self.pos['y'] += self.vel['y']
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'balls', Event("update_bounds", None, [self.pos, self.dim, self.vel])]))
-    
-    def _root_running_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.big_step.outputEventOM(Event("create_instance", None, [self, "balls", "Ball", self.canvas_id, x, y]))
-    
-    def _root_running_2_exec(self, parameters):
-        association_name = parameters[0]
-        self.big_step.outputEventOM(Event("start_instance", None, [self, association_name]))
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, association_name, Event("set_association_name", None, [association_name])]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/root"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class Ball(RuntimeClassBase):
-    def __init__(self, controller, canvas_id, x, y):
-        RuntimeClassBase.__init__(self, controller)
-        
-        self.inports["ball_ui"] = controller.addInputPort("ball_ui", self)
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceParent
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # user defined attributes
-        self.canvas_id = None
-        self.pos = None
-        
-        # call user defined constructor
-        Ball.user_defined_constructor(self, canvas_id, x, y)
-    
-    def user_defined_constructor(self, canvas_id, x, y):
-        self.canvas_id = canvas_id;
-        self.r = 5.0;
-        self.vel = {'x': random.uniform(-5.0, 5.0), 'y': random.uniform(-5.0, 5.0)};
-        self.pos = {'x': x, 'y': y};
-        self.smooth = 0.6; # value between 0 and 1
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /main_behaviour
-        self.states["/main_behaviour"] = State(1, "/main_behaviour", self)
-        
-        # state /main_behaviour/initializing
-        self.states["/main_behaviour/initializing"] = State(2, "/main_behaviour/initializing", self)
-        
-        # state /main_behaviour/creating_circle
-        self.states["/main_behaviour/creating_circle"] = State(3, "/main_behaviour/creating_circle", self)
-        self.states["/main_behaviour/creating_circle"].setEnter(self._main_behaviour_creating_circle_enter)
-        
-        # state /main_behaviour/bouncing
-        self.states["/main_behaviour/bouncing"] = State(4, "/main_behaviour/bouncing", self)
-        self.states["/main_behaviour/bouncing"].setEnter(self._main_behaviour_bouncing_enter)
-        self.states["/main_behaviour/bouncing"].setExit(self._main_behaviour_bouncing_exit)
-        
-        # state /main_behaviour/dragging
-        self.states["/main_behaviour/dragging"] = State(5, "/main_behaviour/dragging", self)
-        
-        # state /main_behaviour/selected
-        self.states["/main_behaviour/selected"] = State(6, "/main_behaviour/selected", self)
-        
-        # state /deleted
-        self.states["/deleted"] = State(7, "/deleted", self)
-        
-        # add children
-        self.states[""].addChild(self.states["/main_behaviour"])
-        self.states[""].addChild(self.states["/deleted"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/initializing"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/creating_circle"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/bouncing"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/dragging"])
-        self.states["/main_behaviour"].addChild(self.states["/main_behaviour/selected"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/main_behaviour"]
-        self.states["/main_behaviour"].default_state = self.states["/main_behaviour/initializing"]
-        
-        # transition /main_behaviour/initializing
-        _main_behaviour_initializing_0 = Transition(self, self.states["/main_behaviour/initializing"], [self.states["/main_behaviour/creating_circle"]])
-        _main_behaviour_initializing_0.setAction(self._main_behaviour_initializing_0_exec)
-        _main_behaviour_initializing_0.setTrigger(Event("set_association_name", None))
-        self.states["/main_behaviour/initializing"].addTransition(_main_behaviour_initializing_0)
-        
-        # transition /main_behaviour/creating_circle
-        _main_behaviour_creating_circle_0 = Transition(self, self.states["/main_behaviour/creating_circle"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_creating_circle_0.setAction(self._main_behaviour_creating_circle_0_exec)
-        _main_behaviour_creating_circle_0.setTrigger(Event("circle_created", None))
-        self.states["/main_behaviour/creating_circle"].addTransition(_main_behaviour_creating_circle_0)
-        
-        # transition /main_behaviour/bouncing
-        _main_behaviour_bouncing_0 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_bouncing_0.setAction(self._main_behaviour_bouncing_0_exec)
-        _main_behaviour_bouncing_0.setTrigger(Event("_0after"))
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_0)
-        _main_behaviour_bouncing_1 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/selected"]])
-        _main_behaviour_bouncing_1.setAction(self._main_behaviour_bouncing_1_exec)
-        _main_behaviour_bouncing_1.setTrigger(Event("mouse_press", self.getInPortName("ball_ui")))
-        _main_behaviour_bouncing_1.setGuard(self._main_behaviour_bouncing_1_guard)
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_1)
-        _main_behaviour_bouncing_2 = Transition(self, self.states["/main_behaviour/bouncing"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_bouncing_2.setAction(self._main_behaviour_bouncing_2_exec)
-        _main_behaviour_bouncing_2.setTrigger(Event("update_bounds", None))
-        self.states["/main_behaviour/bouncing"].addTransition(_main_behaviour_bouncing_2)
-        
-        # transition /main_behaviour/dragging
-        _main_behaviour_dragging_0 = Transition(self, self.states["/main_behaviour/dragging"], [self.states["/main_behaviour/dragging"]])
-        _main_behaviour_dragging_0.setAction(self._main_behaviour_dragging_0_exec)
-        _main_behaviour_dragging_0.setTrigger(Event("mouse_move", self.getInPortName("ball_ui")))
-        self.states["/main_behaviour/dragging"].addTransition(_main_behaviour_dragging_0)
-        _main_behaviour_dragging_1 = Transition(self, self.states["/main_behaviour/dragging"], [self.states["/main_behaviour/bouncing"]])
-        _main_behaviour_dragging_1.setAction(self._main_behaviour_dragging_1_exec)
-        _main_behaviour_dragging_1.setTrigger(Event("mouse_release", self.getInPortName("ball_ui")))
-        self.states["/main_behaviour/dragging"].addTransition(_main_behaviour_dragging_1)
-        
-        # transition /main_behaviour/selected
-        _main_behaviour_selected_0 = Transition(self, self.states["/main_behaviour/selected"], [self.states["/main_behaviour/dragging"]])
-        _main_behaviour_selected_0.setAction(self._main_behaviour_selected_0_exec)
-        _main_behaviour_selected_0.setTrigger(Event("mouse_press", self.getInPortName("ball_ui")))
-        _main_behaviour_selected_0.setGuard(self._main_behaviour_selected_0_guard)
-        self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_0)
-        _main_behaviour_selected_1 = Transition(self, self.states["/main_behaviour/selected"], [self.states["/deleted"]])
-        _main_behaviour_selected_1.setAction(self._main_behaviour_selected_1_exec)
-        _main_behaviour_selected_1.setTrigger(Event("delete_self", None))
-        self.states["/main_behaviour/selected"].addTransition(_main_behaviour_selected_1)
-    
-    def _main_behaviour_creating_circle_enter(self):
-        self.big_step.outputEvent(Event("create_circle", self.getOutPortName("ui"), [self.canvas_id, self.pos['x'], self.pos['y'], self.r, {'fill':'#000'}, self.inports['ball_ui']]))
-    
-    def _main_behaviour_bouncing_enter(self):
-        self.addTimer(0, 0.02)
-    
-    def _main_behaviour_bouncing_exit(self):
-        self.removeTimer(0)
-    
-    def _main_behaviour_initializing_0_exec(self, parameters):
-        association_name = parameters[0]
-        self.association_name = association_name
-    
-    def _main_behaviour_creating_circle_0_exec(self, parameters):
-        canvas_id = parameters[0]
-        circle_id = parameters[1]
-        self.circle_id = circle_id
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_PRESS, 'mouse_press', self.inports['ball_ui']]))
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_MOVE, 'mouse_move', self.inports['ball_ui']]))
-        self.big_step.outputEvent(Event("bind_canvas_event", self.getOutPortName("ui"), [self.canvas_id, circle_id, ui.EVENTS.MOUSE_RELEASE, 'mouse_release', self.inports['ball_ui']]))
-    
-    def _main_behaviour_bouncing_0_exec(self, parameters):
-        # Invert velocity when colliding with canvas border:
-        if self.pos['x']-self.r <= self.rect_pos['x'] - (self.rect_dim['x'] / 2) or self.pos['x']+self.r >= self.rect_pos['x'] + (self.rect_dim['x'] / 2):
-            self.vel['x'] = -self.vel['x'] + self.rect_vel['x'];
-        if self.pos['y']-self.r <= self.rect_pos['y'] - (self.rect_dim['y'] / 2) or self.pos['y']+self.r >= self.rect_pos['y'] + (self.rect_dim['y'] / 2):
-            self.vel['y'] = -self.vel['y'] + self.rect_vel['y'];
-        self.big_step.outputEvent(Event("move_element", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, self.vel['x'], self.vel['y']]))
-        self.pos['x'] += self.vel['x']
-        self.pos['y'] += self.vel['y']
-    
-    def _main_behaviour_bouncing_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.big_step.outputEvent(Event("set_element_color", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, '#ff0']))
-    
-    def _main_behaviour_bouncing_1_guard(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        return button == ui.MOUSE_BUTTONS.LEFT
-    
-    def _main_behaviour_bouncing_2_exec(self, parameters):
-        pos = parameters[0]
-        dim = parameters[1]
-        vel = parameters[2]
-        self.rect_pos = pos
-        self.rect_dim = dim
-        self.rect_vel = vel
-    
-    def _main_behaviour_dragging_0_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        # Always keep ball within canvas:
-        x = min(max(0+self.r, x), CANVAS_WIDTH-self.r)
-        y = min(max(0+self.r, y), CANVAS_HEIGHT-self.r)
-        
-        dx = x - self.pos['x']
-        dy = y - self.pos['y']
-        
-        self.vel = {
-            'x': (1-self.smooth)*dx + self.smooth*self.vel['x'],
-            'y': (1-self.smooth)*dy + self.smooth*self.vel['y']
-        }
-        
-        self.pos = {'x': x, 'y': y}
-        self.big_step.outputEvent(Event("set_element_pos", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, x-self.r, y-self.r]))
-    
-    def _main_behaviour_dragging_1_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        self.big_step.outputEvent(Event("set_element_color", self.getOutPortName("ui"), [self.canvas_id, self.circle_id, '#f00']))
-    
-    def _main_behaviour_selected_0_exec(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        self.mouse_pos = {'x':x, 'y':y};
-    
-    def _main_behaviour_selected_0_guard(self, parameters):
-        x = parameters[0]
-        y = parameters[1]
-        button = parameters[2]
-        return button == ui.MOUSE_BUTTONS.LEFT
-    
-    def _main_behaviour_selected_1_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("delete_ball", None, [self.association_name])]))
-        self.big_step.outputEvent(Event("destroy_element", self.getOutPortName("ui"), [self.canvas_id, self.element_id]))
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/main_behaviour"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class ObjectManager(ObjectManagerBase):
-    def __init__(self, controller):
-        ObjectManagerBase.__init__(self, controller)
-    
-    def instantiate(self, class_name, construct_params):
-        if class_name == "MainApp":
-            instance = MainApp(self.controller)
-            instance.associations = {}
-            instance.associations["elevator"] = Association("Elevator", 0, -1)
-        elif class_name == "Elevator":
-            instance = Elevator(self.controller, construct_params[0])
-            instance.associations = {}
-            instance.associations["balls"] = Association("Ball", 0, -1)
-            instance.associations["parent"] = Association("MainApp", 1, 1)
-        elif class_name == "Ball":
-            instance = Ball(self.controller, construct_params[0], construct_params[1], construct_params[2])
-            instance.associations = {}
-            instance.associations["parent"] = Association("Field", 1, 1)
-        else:
-            raise Exception("Cannot instantiate class " + class_name)
-        return instance
-
-class Controller(EventLoopControllerBase):
-    def __init__(self, event_loop_callbacks, finished_callback = None, behind_schedule_callback = None):
-        if finished_callback == None: finished_callback = None
-        if behind_schedule_callback == None: behind_schedule_callback = None
-        EventLoopControllerBase.__init__(self, ObjectManager(self), event_loop_callbacks, finished_callback, behind_schedule_callback)
-        self.addInputPort("ui")
-        self.addOutputPort("ui")
-        self.object_manager.createInstance("MainApp", [])

+ 0 - 390
examples/SimpleElevatorBalls/sccd.xml

@@ -1,390 +0,0 @@
-<?xml version="1.0" ?>
-<diagram author="Sam Pieters" name="Elevator Balls">
-    <top>
-        from sccd.runtime.libs.ui import ui
-        import random
-        import time
-
-        CANVAS_WIDTH = 800
-        CANVAS_HEIGHT = 550
-    </top>
-    <inport name="ui" />
-    <outport name="ui" />
-    <class name="MainApp" default="true">
-        <relationships>
-            <association name="elevator" class="Elevator" />
-        </relationships>
-        <attribute name="window_id" />
-        <attribute name="canvas_id" />
-        <attribute name="floor_dimensions" />
-        <atrribute name="floor_height" />
-        <inport name="field_ui"/>
-        <scxml initial="creating_window">
-            <state id="creating_window">
-                <onentry>
-                    <raise port="ui" event="create_window">
-                        <parameter expr="CANVAS_WIDTH"/><!-- width -->
-                        <parameter expr="CANVAS_HEIGHT"/><!-- height -->
-                        <parameter expr='"Bouncing Balls Elevator"'/><!-- title -->
-                        <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
-                    </raise>
-                </onentry>
-                <transition event="window_created" target="../creating_canvas">
-                    <parameter name="window_id" type="int" />
-                    <script>
-                        self.window_id = window_id
-                    </script>
-                    <raise port="ui" event="bind_event">
-                        <parameter expr="window_id"/><!-- widget_id -->
-                        <parameter expr="ui.EVENTS.WINDOW_CLOSE"/><!-- tk_event -->
-                        <parameter expr="'window_close'"/><!-- sccd_event_name -->
-                        <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
-                    </raise>
-                    <raise port="ui" event="bind_event">
-                        <parameter expr="window_id"/><!-- widget_id -->
-                        <parameter expr="ui.EVENTS.KEY_PRESS"/><!-- tk_event -->
-                        <parameter expr="'key_press'"/><!-- sccd_event_name -->
-                        <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
-                    </raise>
-                </transition>
-            </state>
-            <state id="creating_canvas">
-                <onentry>
-                    <raise port="ui" event="create_canvas">
-                        <parameter expr="self.window_id"/><!-- window_id -->
-                        <parameter expr="CANVAS_WIDTH"/><!-- width -->
-                        <parameter expr="CANVAS_HEIGHT - 200"/><!-- height -->
-                        <parameter expr="{'background':'#fff'}"/><!-- style -->
-                        <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
-                    </raise>
-                </onentry>
-                <transition event="canvas_created" target="../create_elevator">
-                    <parameter name="canvas_id" type="int"/>
-                    <script>
-                        self.canvas_id = canvas_id
-                    </script>
-                </transition>
-            </state>
-            <state id="create_elevator">
-                <transition target="../creating">
-                    <raise scope="cd" event="create_instance">
-                        <parameter expr='"elevator"' />
-                        <parameter expr='"Elevator"' />
-                        <parameter expr="self.canvas_id" />
-                    </raise>
-                </transition>
-            </state>
-            <state id="creating">
-                <transition event="instance_created" target="../waiting">
-                    <parameter name="association_name" type="string"/>
-                    <raise scope="cd" event="start_instance">
-                        <parameter expr="association_name" />
-                    </raise>
-                    <raise scope="narrow" event="set_association_name" target="association_name">
-                        <parameter expr="association_name" />
-                        <parameter expr="self.canvas_id" />
-                        <parameter expr="self.window_id" />
-                    </raise>
-                </transition>
-            </state>
-            <state id="waiting">
-            </state>
-        </scxml>
-    </class>
-
-    <class name="Elevator">
-        <attribute name="window_id" />
-        <attribute name="canvas_id" />
-        <attribute name="elevator_id" />
-        <atrribute name="pos" />
-        <inport name="elevator_ui"/>
-        <relationships>
-            <association name="balls" class="Ball" />
-            <association name="parent" class="MainApp" min="1" max="1" />
-        </relationships>
-        <constructor>
-            <parameter name="canvas_id" />
-            <body>
-                <![CDATA[
-                self.canvas_id = canvas_id;
-                self.dim = {'x': 80, 'y': 150};
-                self.vel = {'x': 0, 'y': -2};
-                self.pos = {'x': 400, 'y': 75};
-                self.smooth = 0.6; # value between 0 and 1
-                ]]>
-            </body>
-        </constructor>
-        <scxml initial="root">
-            <state id="root" initial="waiting">
-                <state id="waiting">
-                    <transition event="set_association_name" target="../creating_elevator">
-                        <parameter name="association_name" type="str" />
-                        <parameter name="canvas_id" type="int" />
-                        <parameter name="window_id" type="int" />
-                        <script>
-                            self.association_name = association_name
-                            self.canvas_id = canvas_id
-                            self.window_id = window_id
-                        </script>
-                    </transition>
-                </state>
-                <state id="creating_elevator">
-                    <onentry>
-                        <raise port="ui" event="create_rectangle">
-                            <parameter expr="self.canvas_id" />
-                            <parameter expr="self.pos['x']"/>
-                            <parameter expr="self.pos['y']"/>
-                            <parameter expr="self.dim['x']" />
-                            <parameter expr="self.dim['y']"/>
-                            <parameter expr="{'fill':'white', 'outline': 'black'}"/><!-- style -->
-                            <parameter expr="self.inports['elevator_ui']"/><!-- inport for response -->
-                        </raise>
-                    </onentry>
-                    <transition event="rectangle_created" target="../running">
-                        <parameter name="canvas_id" type="int" />
-                        <parameter name="rect_id" type="int" />
-                        <script>
-                            self.elevator_id = rect_id
-                        </script>
-                        <raise port="ui" event="bind_event">
-                            <parameter expr="canvas_id"/><!-- widget_id -->
-                            <parameter expr="ui.EVENTS.MOUSE_RIGHT_CLICK"/><!-- tk_event -->
-                            <parameter expr="'right_click'"/><!-- sccd_event_name -->
-                            <parameter expr="self.inports['elevator_ui']"/><!-- inport for response -->
-                        </raise>
-                    </transition>
-                </state>
-                <state id="running">
-                    <transition after="0.03" target=".">
-                        <script>
-                            <![CDATA[
-                            # Invert velocity when colliding with canvas border:
-                            if self.pos['y']-(self.dim['y']/2) <= 0 or self.pos['y']+(self.dim['y']/2) >= CANVAS_HEIGHT:
-                                self.vel['y'] = -self.vel['y'];
-                            ]]>
-                        </script>
-                        <raise port="ui" event="move_element">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="self.elevator_id"/>
-                            <parameter expr="self.vel['x']"/>
-                            <parameter expr="self.vel['y']"/>
-                        </raise>
-                        <script>
-                            self.pos['x'] += self.vel['x']
-                            self.pos['y'] += self.vel['y']
-                        </script>
-                        <raise scope="narrow" event="update_bounds" target="'balls'">
-                            <parameter expr="self.pos" />
-                            <parameter expr="self.dim" />
-                            <parameter expr="self.vel" />
-                        </raise>
-                    </transition>
-                    <transition port="elevator_ui" event="right_click" target=".">
-                        <parameter name="x" />
-                        <parameter name="y" />
-                        <parameter name="button" />
-                        <raise scope="cd" event="create_instance">
-                            <parameter expr='"balls"' />
-                            <parameter expr='"Ball"' />
-                            <parameter expr="self.canvas_id" />
-                            <parameter expr="x" />
-                            <parameter expr="y" />
-                        </raise>
-                    </transition>
-                    <transition event="instance_created" target=".">
-                        <parameter name="association_name" type="string"/>
-                        <raise scope="cd" event="start_instance">
-                            <parameter expr="association_name" />
-                        </raise>
-                        <raise scope="narrow" event="set_association_name" target="association_name">
-                            <parameter expr="association_name" />
-                        </raise>
-                    </transition>
-                </state>
-            </state>
-        </scxml>
-    </class>
-
-    <class name="Ball">
-        <attribute name="canvas_id" />
-        <atrribute name="circle_id" />
-        <attribute name="pos" />
-        <inport name="ball_ui" />
-        <relationships>
-            <association name="parent" class="Elevator" min="1" max="1" />
-        </relationships>
-        <constructor>
-            <parameter name="canvas_id" />
-            <parameter name="x" />
-            <parameter name="y" />
-            <body>
-                <![CDATA[
-                self.canvas_id = canvas_id;
-                self.r = 5.0;
-                self.vel = {'x': random.uniform(-5.0, 5.0), 'y': random.uniform(-5.0, 5.0)};
-                self.pos = {'x': x, 'y': y};
-                self.smooth = 0.6; # value between 0 and 1
-                ]]>
-            </body>
-        </constructor>
-        <destructor>
-        </destructor>
-        <scxml initial="main_behaviour">
-            <state id="main_behaviour" initial="initializing">
-                <state id="initializing">
-                    <transition event="set_association_name" target="../creating_circle">
-                        <parameter name="association_name" type="str" />
-                        <script>
-                            self.association_name = association_name
-                        </script>
-                    </transition>
-                </state>
-                <state id="creating_circle">
-                    <onentry>
-                        <raise port="ui" event="create_circle">
-                            canvas_id, x, y, r, style, res_port
-                            <parameter expr="self.canvas_id"/><!-- canvas_id -->
-                            <parameter expr="self.pos['x']"/><!-- x -->
-                            <parameter expr="self.pos['y']"/><!-- y -->
-                            <parameter expr="self.r"/><!-- r -->
-                            <parameter expr="{'fill':'#000'}"/><!-- style -->
-                            <parameter expr="self.inports['ball_ui']"/><!-- inport for response -->
-                        </raise>
-                    </onentry>
-                    <transition event="circle_created" target="../bouncing">
-                        <parameter name="canvas_id"/>
-                        <parameter name="circle_id"/>
-                        <script>
-                            self.circle_id = circle_id
-                        </script>
-                        <raise port="ui" event="bind_canvas_event">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="circle_id"/>
-                            <parameter expr="ui.EVENTS.MOUSE_PRESS"/>
-                            <parameter expr="'mouse_press'"/>
-                            <parameter expr="self.inports['ball_ui']"/>
-                        </raise>
-                        <raise port="ui" event="bind_canvas_event">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="circle_id"/>
-                            <parameter expr="ui.EVENTS.MOUSE_MOVE"/>
-                            <parameter expr="'mouse_move'"/>
-                            <parameter expr="self.inports['ball_ui']"/>
-                        </raise>
-                        <raise port="ui" event="bind_canvas_event">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="circle_id"/>
-                            <parameter expr="ui.EVENTS.MOUSE_RELEASE"/>
-                            <parameter expr="'mouse_release'"/>
-                            <parameter expr="self.inports['ball_ui']"/>
-                        </raise>
-                    </transition>
-                </state>
-                <state id="bouncing">
-                    <transition after="0.02" target=".">
-                        <script>
-                            <![CDATA[
-                            # Invert velocity when colliding with canvas border:
-                            if self.pos['x']-self.r <= self.rect_pos['x'] - (self.rect_dim['x'] / 2) or self.pos['x']+self.r >= self.rect_pos['x'] + (self.rect_dim['x'] / 2):
-                                self.vel['x'] = -self.vel['x'] + self.rect_vel['x'];
-                            if self.pos['y']-self.r <= self.rect_pos['y'] - (self.rect_dim['y'] / 2) or self.pos['y']+self.r >= self.rect_pos['y'] + (self.rect_dim['y'] / 2):
-                                self.vel['y'] = -self.vel['y'] + self.rect_vel['y'];
-                            ]]>
-                        </script>
-                        <raise port="ui" event="move_element">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="self.circle_id"/>
-                            <parameter expr="self.vel['x']"/>
-                            <parameter expr="self.vel['y']"/>
-                        </raise>
-                        <script>
-                            self.pos['x'] += self.vel['x']
-                            self.pos['y'] += self.vel['y']
-                        </script>
-                    </transition>
-                    <transition port="ball_ui" event="mouse_press" target="../selected" cond="button == ui.MOUSE_BUTTONS.LEFT">
-                        <parameter name="x" />
-                        <parameter name="y" />
-                        <parameter name="button" />
-                        <raise port="ui" event="set_element_color">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="self.circle_id"/>
-                            <parameter expr="'#ff0'"/>
-                        </raise>
-                    </transition>
-                    <transition event="update_bounds" target=".">
-                        <parameter name="pos" type="dict" />
-                        <parameter name="dim" type="dict" />
-                        <parameter name="vel" type="dict" />
-                        <script>
-                            self.rect_pos = pos
-                            self.rect_dim = dim
-                            self.rect_vel = vel
-                        </script>
-                    </transition>
-                </state>
-                <state id="dragging">
-                    <transition port="ball_ui" event="mouse_move" target=".">
-                        <parameter name="x" />
-                        <parameter name="y" />
-                        <parameter name="button" />
-                        <script>
-                            <![CDATA[
-                            # Always keep ball within canvas:
-                            x = min(max(0+self.r, x), CANVAS_WIDTH-self.r)
-                            y = min(max(0+self.r, y), CANVAS_HEIGHT-self.r)
-
-                            dx = x - self.pos['x']
-                            dy = y - self.pos['y']
-
-                            self.vel = {
-                                'x': (1-self.smooth)*dx + self.smooth*self.vel['x'],
-                                'y': (1-self.smooth)*dy + self.smooth*self.vel['y']
-                            }
-
-                            self.pos = {'x': x, 'y': y}
-                            ]]>
-                        </script>
-                        <raise port="ui" event="set_element_pos">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="self.circle_id"/>
-                            <parameter expr="x-self.r"/>
-                            <parameter expr="y-self.r"/>
-                        </raise>
-                    </transition>
-                    <transition port="ball_ui" event="mouse_release" target="../bouncing">
-                        <parameter name="x" />
-                        <parameter name="y" />
-                        <raise port="ui" event="set_element_color">
-                            <parameter expr="self.canvas_id"/>
-                            <parameter expr="self.circle_id"/>
-                            <parameter expr="'#f00'"/>
-                        </raise>
-                    </transition>
-                </state>
-                <state id='selected'>
-                    <transition port="ball_ui" event="mouse_press" target="../dragging" cond="button == ui.MOUSE_BUTTONS.LEFT">
-                        <parameter name="x" />
-                        <parameter name="y" />
-                        <parameter name="button" />
-                        <script>
-                            <![CDATA[
-                            self.mouse_pos = {'x':x, 'y':y};
-                            ]]>
-                        </script>
-                    </transition>
-                    <transition event="delete_self" target='../../deleted'>                    
-                        <raise event="delete_ball" scope="narrow" target="'parent'">
-                            <parameter expr='self.association_name' />
-                        </raise>
-                        <raise port="ui" event="destroy_element">
-                            <parameter expr="self.canvas_id" />
-                            <parameter expr="self.element_id" />
-                        </raise>
-                    </transition>
-                </state>
-            </state>
-            <state id='deleted' />
-        </scxml>
-    </class>
-</diagram>

+ 0 - 192
examples/Train/Python/runner.py

@@ -1,192 +0,0 @@
-from tkinter import *
-import random
-import math
-
-import target as target
-from sccd.runtime.libs.ui import ui
-from sccd.runtime.statecharts_core import Event
-from sccd.runtime.tkinter_eventloop import *
-
-width_railway = 20
-marked = {}
-kind_of_object = {}
-
-class SimulationGUI(Tk):
-    def __init__(self):
-        def update_scale(value):
-            if hasattr(self, "controller"):
-                self.controller.addInput(Event("accel", "tkinter_input", [float(value)]))
-
-        def press_continue():
-            self.controller.addInput(Event("continue", "tkinter_input", []))
-
-        def press_pause():
-            self.controller.addInput(Event("pause", "tkinter_input", []))
-
-        def press_open():
-            self.controller.addInput(Event("open", "tkinter_input", []))
-
-        def press_close():
-            self.controller.addInput(Event("close", "tkinter_input", []))
-
-        def press_awake():
-            self.controller.addInput(Event("awake", "tkinter_input", []))
-
-        Tk.__init__(self)
-        self.travelled_x = 0.0
-        self.travelled_x_int = 0
-        self.next_light = 0.0
-        self.frame = Frame(self)
-        self.frame.focus_set()
-        self.resizable(0, 0)
-        self.canvas = Canvas(self.frame, height=150, width=1000, bg="white")
-        self.img_train = PhotoImage(file="./examples/Train/imgs/train.gif")
-        self.img_red = PhotoImage(file="./examples/Train/imgs/red.gif")
-        self.img_yellow = PhotoImage(file="./examples/Train/imgs/yellow.gif")
-        self.img_green = PhotoImage(file="./examples/Train/imgs/green.gif")
-        self.img_station = PhotoImage(file="./examples/Train/imgs/station.gif")
-        self.img_railway = PhotoImage(file="./examples/Train/imgs/rail.gif")
-
-        self.label_error = Label(self.frame, text="")
-        self.slider_acceleration = Scale(self.frame, command=update_scale, orient=HORIZONTAL, resolution=0.01, from_=-1, to=1)
-        self.button_continue = Button(self.frame, text="continue", command=press_continue)
-        self.button_pause = Button(self.frame, text="pause", command=press_pause)
-        self.button_open = Button(self.frame, text="open", command=press_open)
-        self.button_close = Button(self.frame, text="close", command=press_close)
-        self.button_poll = Button(self.frame, text="poll", command=press_awake)
-
-        self.label_speed = Label(self.frame, text="")
-        self.label_doors = Label(self.frame, text="Doors are CLOSED")
-
-        self.items = []
-        self.rails = []
-        x = 0
-        while x <= 1000 + width_railway:
-            self.rails.append(self.canvas.create_image(x, 80, image=self.img_railway, anchor=NW))
-            x += width_railway
-
-        self.item_train = self.canvas.create_image(0, 75, image=self.img_train, anchor=NW)
-        self.label_speed.grid(row=0, column=0, columnspan=2)
-        self.label_doors.grid(row=1, column=0, columnspan=2)
-        self.canvas.grid(row=2, column=0, columnspan=2, sticky=W)
-        self.label_error.grid(row=3, column=0, columnspan=2)
-        self.slider_acceleration.grid(row=4, column=0, columnspan=2, sticky=W+E)
-        self.button_continue.grid(row=5, column=0, sticky=W+E)
-        self.button_pause.grid(row=5, column=1, sticky=W+E)
-        self.button_open.grid(row=6, column=0, sticky=W+E)
-        self.button_close.grid(row=6, column=1, sticky=W+E)
-        self.button_poll.grid(row=7, column=0, columnspan=2, sticky=W+E)
-        self.frame.grid()
-
-        self.remainder = 0.0
-        self.next_station = 1000
-        self.counter = 0
-        self.train = None
-        self.light_change_events = []
-        self.updateState()
-        self.after(20, self.throwEvents)
-        
-    def openDoors(self):
-        self.label_doors.config(text="Doors are OPEN")
-
-    def closeDoors(self):
-        self.label_doors.config(text="Doors are CLOSED")
-    
-    def trainIs(self, train):
-        self.train = train
-        
-    def throwEvents(self):
-        # check if we passed anything
-        if hasattr(self, "controller"):
-            for item in self.items:
-                coords = self.canvas.coords(item)
-                if coords[0] < 30 and item not in marked:
-                    # passed light or entered station
-                    t = kind_of_object[item]
-                    if t == "STATION":
-                        marked[item] = False
-                        self.controller.addInput(Event("enter", "tkinter_input", []))
-                    elif t == "RED":
-                        marked[item] = True
-                        self.controller.addInput(Event("red_light", "tkinter_input", []))
-                    elif t == "YELLOW":
-                        marked[item] = True
-                        self.controller.addInput(Event("yellow_light", "tkinter_input", []))
-                    elif t == "GREEN":
-                        marked[item] = True
-                        self.controller.addInput(Event("green_light", "tkinter_input", []))
-                elif coords[0] < -170 and not marked[item]:
-                    self.controller.addInput(Event("leave", "tkinter_input", []))
-                    marked[item] = True
-        self.after(20, self.throwEvents)
-        
-    def notify(self, msg, color):
-        self.label_error.config(text=msg, bg=color)
-        
-    def updateState(self):
-        def turn_green(item):
-            kind_of_object[item] = "GREEN"
-            self.canvas.itemconfigure(item, image=self.img_green)
-            
-        def turn_yellow(item):
-            self.canvas.itemconfigure(item, image=self.img_yellow)
-            kind_of_object[item] = "YELLOW"
-            self.light_change_events.append((self.counter + random.random() * 500 + 300, item, turn_green))
-        
-        if self.train is not None:
-            self.train.speed += self.train.acceleration / 2
-            self.label_speed.config(text="Speed: %.2f" % self.train.speed)
-            self.travelled_x += float(self.train.speed) / 20
-            delta_x = -int(self.travelled_x - self.travelled_x_int)
-            self.travelled_x_int = int(self.travelled_x)
-            # move rails
-            for item in self.rails:
-                self.canvas.move(item, delta_x, 0)
-
-            # move items and remove if necessary
-            for item in self.items:
-                self.canvas.move(item, delta_x, 0)
-                if self.canvas.coords(item) < -100:
-                    self.canvas.delete(item)
-                    self.items.remove(item)
-
-            # update rails
-            while 1:
-                coords = self.canvas.coords(self.rails[0])
-                if coords[0] < -width_railway:
-                    self.canvas.delete(self.rails[0])
-                    self.rails.pop(0)
-                    self.rails.append(self.canvas.create_image(self.canvas.coords(self.rails[-1])[0]+width_railway, 80, image=self.img_railway, anchor=NW))
-                    self.canvas.tag_lower(self.rails[-1])
-                else:
-                    break
-
-            # add in an element only if there is space
-            if self.next_station < self.travelled_x:
-                # generate a station
-                self.items.append(self.canvas.create_image(1000, 120, image=self.img_station, anchor=NW))
-                kind_of_object[self.items[-1]] = "STATION"
-                self.next_station += random.random() * 3000 + 2000
-
-            if self.next_light < self.travelled_x:
-                self.next_light += 500
-                self.items.append(self.canvas.create_image(1000, 40, image=self.img_red, anchor=NW))
-                kind_of_object[self.items[-1]] = "RED"
-                self.light_change_events.append((self.counter + random.random() * 500, self.items[-1], turn_yellow))
-
-            self.counter += 1
-            for light_change in self.light_change_events:
-                if light_change[0] <= self.counter:
-                    light_change[2](light_change[1])
-                    self.light_change_events.remove(light_change)
-            
-root = SimulationGUI()
-if __name__ == "__main__":
-    random.seed(1)
-    controller = target.Controller(root, TkEventLoop(root))
-    root.controller = controller
-    controller.start()
-    try:
-        root.mainloop()
-    finally:
-        controller.stop()

+ 0 - 473
examples/Train/Python/target.py

@@ -1,473 +0,0 @@
-"""
-Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
-
-"""
-
-from sccd.runtime.statecharts_core import *
-
-# package ""
-
-class Train(RuntimeClassBase):
-    def __init__(self, controller, root):
-        RuntimeClassBase.__init__(self, controller)
-        
-        
-        self.semantics.big_step_maximality = StatechartSemantics.TakeMany
-        self.semantics.internal_event_lifeline = StatechartSemantics.Queue
-        self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
-        self.semantics.priority = StatechartSemantics.SourceChild
-        self.semantics.concurrency = StatechartSemantics.Single
-        
-        # build Statechart structure
-        self.build_statechart_structure()
-        
-        # call user defined constructor
-        Train.user_defined_constructor(self, root)
-    
-    def user_defined_constructor(self, root):
-        self.root, self.acceleration, self.velocity = root, 0.0, 0.0
-        self.root.trainIs(self)
-    
-    def user_defined_destructor(self):
-        pass
-    
-    
-    # user defined method
-    def updateState(self):
-        self.root.updateState()
-    
-    
-    # user defined method
-    def openDoors(self):
-        self.root.openDoors()
-    
-    
-    # user defined method
-    def closeDoors(self):
-        self.root.closeDoors()
-    
-    
-    # user defined method
-    def notify(self, message, color):
-        self.root.notify(message, color)
-    
-    
-    # builds Statechart structure
-    def build_statechart_structure(self):
-        
-        # state <root>
-        self.states[""] = State(0, "", self)
-        
-        # state /normal_operation
-        self.states["/normal_operation"] = State(1, "/normal_operation", self)
-        
-        # state /normal_operation/for_history
-        self.states["/normal_operation/for_history"] = ParallelState(2, "/normal_operation/for_history", self)
-        
-        # state /normal_operation/for_history/train
-        self.states["/normal_operation/for_history/train"] = State(3, "/normal_operation/for_history/train", self)
-        
-        # state /normal_operation/for_history/train/train
-        self.states["/normal_operation/for_history/train/train"] = State(4, "/normal_operation/for_history/train/train", self)
-        
-        # state /normal_operation/for_history/train/train/stopped
-        self.states["/normal_operation/for_history/train/train/stopped"] = State(5, "/normal_operation/for_history/train/train/stopped", self)
-        self.states["/normal_operation/for_history/train/train/stopped"].setEnter(self._normal_operation_for_history_train_train_stopped_enter)
-        
-        # state /normal_operation/for_history/train/train/stopped/opened_doors
-        self.states["/normal_operation/for_history/train/train/stopped/opened_doors"] = State(6, "/normal_operation/for_history/train/train/stopped/opened_doors", self)
-        self.states["/normal_operation/for_history/train/train/stopped/opened_doors"].setEnter(self._normal_operation_for_history_train_train_stopped_opened_doors_enter)
-        self.states["/normal_operation/for_history/train/train/stopped/opened_doors"].setExit(self._normal_operation_for_history_train_train_stopped_opened_doors_exit)
-        
-        # state /normal_operation/for_history/train/train/stopped/in_station
-        self.states["/normal_operation/for_history/train/train/stopped/in_station"] = State(7, "/normal_operation/for_history/train/train/stopped/in_station", self)
-        
-        # state /normal_operation/for_history/train/train/stopped/allow_closing
-        self.states["/normal_operation/for_history/train/train/stopped/allow_closing"] = State(8, "/normal_operation/for_history/train/train/stopped/allow_closing", self)
-        self.states["/normal_operation/for_history/train/train/stopped/allow_closing"].setEnter(self._normal_operation_for_history_train_train_stopped_allow_closing_enter)
-        
-        # state /normal_operation/for_history/train/train/stopped/ready_to_leave
-        self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"] = State(9, "/normal_operation/for_history/train/train/stopped/ready_to_leave", self)
-        
-        # state /normal_operation/for_history/train/train/approaching_station
-        self.states["/normal_operation/for_history/train/train/approaching_station"] = State(10, "/normal_operation/for_history/train/train/approaching_station", self)
-        
-        # state /normal_operation/for_history/train/train/driving
-        self.states["/normal_operation/for_history/train/train/driving"] = State(11, "/normal_operation/for_history/train/train/driving", self)
-        
-        # state /normal_operation/for_history/train/train/max_speed
-        self.states["/normal_operation/for_history/train/train/max_speed"] = State(12, "/normal_operation/for_history/train/train/max_speed", self)
-        self.states["/normal_operation/for_history/train/train/max_speed"].setEnter(self._normal_operation_for_history_train_train_max_speed_enter)
-        self.states["/normal_operation/for_history/train/train/max_speed"].setExit(self._normal_operation_for_history_train_train_max_speed_exit)
-        
-        # state /normal_operation/for_history/GUI_update
-        self.states["/normal_operation/for_history/GUI_update"] = State(13, "/normal_operation/for_history/GUI_update", self)
-        
-        # state /normal_operation/for_history/GUI_update/S_
-        self.states["/normal_operation/for_history/GUI_update/S_"] = State(14, "/normal_operation/for_history/GUI_update/S_", self)
-        
-        # state /normal_operation/for_history/GUI_update/S_/updating
-        self.states["/normal_operation/for_history/GUI_update/S_/updating"] = State(15, "/normal_operation/for_history/GUI_update/S_/updating", self)
-        self.states["/normal_operation/for_history/GUI_update/S_/updating"].setEnter(self._normal_operation_for_history_GUI_update_S__updating_enter)
-        self.states["/normal_operation/for_history/GUI_update/S_/updating"].setExit(self._normal_operation_for_history_GUI_update_S__updating_exit)
-        
-        # state /normal_operation/for_history/polling
-        self.states["/normal_operation/for_history/polling"] = State(16, "/normal_operation/for_history/polling", self)
-        
-        # state /normal_operation/for_history/polling/S_
-        self.states["/normal_operation/for_history/polling/S_"] = State(17, "/normal_operation/for_history/polling/S_", self)
-        
-        # state /normal_operation/for_history/polling/S_/okay
-        self.states["/normal_operation/for_history/polling/S_/okay"] = State(18, "/normal_operation/for_history/polling/S_/okay", self)
-        self.states["/normal_operation/for_history/polling/S_/okay"].setEnter(self._normal_operation_for_history_polling_S__okay_enter)
-        self.states["/normal_operation/for_history/polling/S_/okay"].setExit(self._normal_operation_for_history_polling_S__okay_exit)
-        
-        # state /normal_operation/for_history/polling/S_/warn
-        self.states["/normal_operation/for_history/polling/S_/warn"] = State(19, "/normal_operation/for_history/polling/S_/warn", self)
-        self.states["/normal_operation/for_history/polling/S_/warn"].setEnter(self._normal_operation_for_history_polling_S__warn_enter)
-        self.states["/normal_operation/for_history/polling/S_/warn"].setExit(self._normal_operation_for_history_polling_S__warn_exit)
-        
-        # state /normal_operation/H
-        self.states["/normal_operation/H"] = DeepHistoryState(20, "/normal_operation/H", self)
-        
-        # state /emergency_stop
-        self.states["/emergency_stop"] = State(21, "/emergency_stop", self)
-        self.states["/emergency_stop"].setEnter(self._emergency_stop_enter)
-        self.states["/emergency_stop"].setExit(self._emergency_stop_exit)
-        
-        # state /finished
-        self.states["/finished"] = State(22, "/finished", self)
-        self.states["/finished"].setEnter(self._finished_enter)
-        
-        # state /paused
-        self.states["/paused"] = State(23, "/paused", self)
-        
-        # add children
-        self.states[""].addChild(self.states["/normal_operation"])
-        self.states[""].addChild(self.states["/emergency_stop"])
-        self.states[""].addChild(self.states["/finished"])
-        self.states[""].addChild(self.states["/paused"])
-        self.states["/normal_operation"].addChild(self.states["/normal_operation/for_history"])
-        self.states["/normal_operation"].addChild(self.states["/normal_operation/H"])
-        self.states["/normal_operation/for_history"].addChild(self.states["/normal_operation/for_history/train"])
-        self.states["/normal_operation/for_history"].addChild(self.states["/normal_operation/for_history/GUI_update"])
-        self.states["/normal_operation/for_history"].addChild(self.states["/normal_operation/for_history/polling"])
-        self.states["/normal_operation/for_history/train"].addChild(self.states["/normal_operation/for_history/train/train"])
-        self.states["/normal_operation/for_history/train/train"].addChild(self.states["/normal_operation/for_history/train/train/stopped"])
-        self.states["/normal_operation/for_history/train/train"].addChild(self.states["/normal_operation/for_history/train/train/approaching_station"])
-        self.states["/normal_operation/for_history/train/train"].addChild(self.states["/normal_operation/for_history/train/train/driving"])
-        self.states["/normal_operation/for_history/train/train"].addChild(self.states["/normal_operation/for_history/train/train/max_speed"])
-        self.states["/normal_operation/for_history/train/train/stopped"].addChild(self.states["/normal_operation/for_history/train/train/stopped/opened_doors"])
-        self.states["/normal_operation/for_history/train/train/stopped"].addChild(self.states["/normal_operation/for_history/train/train/stopped/in_station"])
-        self.states["/normal_operation/for_history/train/train/stopped"].addChild(self.states["/normal_operation/for_history/train/train/stopped/allow_closing"])
-        self.states["/normal_operation/for_history/train/train/stopped"].addChild(self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"])
-        self.states["/normal_operation/for_history/GUI_update"].addChild(self.states["/normal_operation/for_history/GUI_update/S_"])
-        self.states["/normal_operation/for_history/GUI_update/S_"].addChild(self.states["/normal_operation/for_history/GUI_update/S_/updating"])
-        self.states["/normal_operation/for_history/polling"].addChild(self.states["/normal_operation/for_history/polling/S_"])
-        self.states["/normal_operation/for_history/polling/S_"].addChild(self.states["/normal_operation/for_history/polling/S_/okay"])
-        self.states["/normal_operation/for_history/polling/S_"].addChild(self.states["/normal_operation/for_history/polling/S_/warn"])
-        self.states[""].fixTree()
-        self.states[""].default_state = self.states["/paused"]
-        self.states["/normal_operation"].default_state = self.states["/normal_operation/for_history"]
-        self.states["/normal_operation/for_history/train"].default_state = self.states["/normal_operation/for_history/train/train"]
-        self.states["/normal_operation/for_history/train/train"].default_state = self.states["/normal_operation/for_history/train/train/stopped"]
-        self.states["/normal_operation/for_history/train/train/stopped"].default_state = self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"]
-        self.states["/normal_operation/for_history/GUI_update"].default_state = self.states["/normal_operation/for_history/GUI_update/S_"]
-        self.states["/normal_operation/for_history/GUI_update/S_"].default_state = self.states["/normal_operation/for_history/GUI_update/S_/updating"]
-        self.states["/normal_operation/for_history/polling"].default_state = self.states["/normal_operation/for_history/polling/S_"]
-        self.states["/normal_operation/for_history/polling/S_"].default_state = self.states["/normal_operation/for_history/polling/S_/okay"]
-        
-        # transition /normal_operation/for_history/train/train/stopped/opened_doors
-        _normal_operation_for_history_train_train_stopped_opened_doors_0 = Transition(self, self.states["/normal_operation/for_history/train/train/stopped/opened_doors"], [self.states["/normal_operation/for_history/train/train/stopped/allow_closing"]])
-        _normal_operation_for_history_train_train_stopped_opened_doors_0.setTrigger(Event("_0after"))
-        self.states["/normal_operation/for_history/train/train/stopped/opened_doors"].addTransition(_normal_operation_for_history_train_train_stopped_opened_doors_0)
-        
-        # transition /normal_operation/for_history/train/train/stopped/in_station
-        _normal_operation_for_history_train_train_stopped_in_station_0 = Transition(self, self.states["/normal_operation/for_history/train/train/stopped/in_station"], [self.states["/normal_operation/for_history/train/train/stopped/opened_doors"]])
-        _normal_operation_for_history_train_train_stopped_in_station_0.setAction(self._normal_operation_for_history_train_train_stopped_in_station_0_exec)
-        _normal_operation_for_history_train_train_stopped_in_station_0.setTrigger(Event("open", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/stopped/in_station"].addTransition(_normal_operation_for_history_train_train_stopped_in_station_0)
-        
-        # transition /normal_operation/for_history/train/train/stopped/allow_closing
-        _normal_operation_for_history_train_train_stopped_allow_closing_0 = Transition(self, self.states["/normal_operation/for_history/train/train/stopped/allow_closing"], [self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"]])
-        _normal_operation_for_history_train_train_stopped_allow_closing_0.setAction(self._normal_operation_for_history_train_train_stopped_allow_closing_0_exec)
-        _normal_operation_for_history_train_train_stopped_allow_closing_0.setTrigger(Event("close", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/stopped/allow_closing"].addTransition(_normal_operation_for_history_train_train_stopped_allow_closing_0)
-        
-        # transition /normal_operation/for_history/train/train/stopped/ready_to_leave
-        _normal_operation_for_history_train_train_stopped_ready_to_leave_0 = Transition(self, self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"], [self.states["/normal_operation/for_history/train/train/driving"]])
-        _normal_operation_for_history_train_train_stopped_ready_to_leave_0.setAction(self._normal_operation_for_history_train_train_stopped_ready_to_leave_0_exec)
-        _normal_operation_for_history_train_train_stopped_ready_to_leave_0.setTrigger(Event("accel", self.getInPortName("tkinter_input")))
-        _normal_operation_for_history_train_train_stopped_ready_to_leave_0.setGuard(self._normal_operation_for_history_train_train_stopped_ready_to_leave_0_guard)
-        self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"].addTransition(_normal_operation_for_history_train_train_stopped_ready_to_leave_0)
-        
-        # transition /normal_operation/for_history/train/train/approaching_station
-        _normal_operation_for_history_train_train_approaching_station_0 = Transition(self, self.states["/normal_operation/for_history/train/train/approaching_station"], [self.states["/normal_operation/for_history/train/train/stopped/in_station"]])
-        _normal_operation_for_history_train_train_approaching_station_0.setTrigger(None)
-        _normal_operation_for_history_train_train_approaching_station_0.setGuard(self._normal_operation_for_history_train_train_approaching_station_0_guard)
-        self.states["/normal_operation/for_history/train/train/approaching_station"].addTransition(_normal_operation_for_history_train_train_approaching_station_0)
-        _normal_operation_for_history_train_train_approaching_station_1 = Transition(self, self.states["/normal_operation/for_history/train/train/approaching_station"], [self.states["/normal_operation/for_history/train/train/approaching_station"]])
-        _normal_operation_for_history_train_train_approaching_station_1.setAction(self._normal_operation_for_history_train_train_approaching_station_1_exec)
-        _normal_operation_for_history_train_train_approaching_station_1.setTrigger(Event("accel", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/approaching_station"].addTransition(_normal_operation_for_history_train_train_approaching_station_1)
-        _normal_operation_for_history_train_train_approaching_station_2 = Transition(self, self.states["/normal_operation/for_history/train/train/approaching_station"], [self.states["/normal_operation/for_history/train/train/approaching_station"]])
-        _normal_operation_for_history_train_train_approaching_station_2.setAction(self._normal_operation_for_history_train_train_approaching_station_2_exec)
-        _normal_operation_for_history_train_train_approaching_station_2.setTrigger(Event("leave", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/approaching_station"].addTransition(_normal_operation_for_history_train_train_approaching_station_2)
-        
-        # transition /normal_operation/for_history/train/train/driving
-        _normal_operation_for_history_train_train_driving_0 = Transition(self, self.states["/normal_operation/for_history/train/train/driving"], [self.states["/normal_operation/for_history/train/train/approaching_station"]])
-        _normal_operation_for_history_train_train_driving_0.setTrigger(Event("enter", self.getInPortName("tkinter_input")))
-        _normal_operation_for_history_train_train_driving_0.setGuard(self._normal_operation_for_history_train_train_driving_0_guard)
-        self.states["/normal_operation/for_history/train/train/driving"].addTransition(_normal_operation_for_history_train_train_driving_0)
-        _normal_operation_for_history_train_train_driving_1 = Transition(self, self.states["/normal_operation/for_history/train/train/driving"], [self.states["/normal_operation/for_history/train/train/max_speed"]])
-        _normal_operation_for_history_train_train_driving_1.setTrigger(None)
-        _normal_operation_for_history_train_train_driving_1.setGuard(self._normal_operation_for_history_train_train_driving_1_guard)
-        self.states["/normal_operation/for_history/train/train/driving"].addTransition(_normal_operation_for_history_train_train_driving_1)
-        _normal_operation_for_history_train_train_driving_2 = Transition(self, self.states["/normal_operation/for_history/train/train/driving"], [self.states["/normal_operation/for_history/train/train/driving"]])
-        _normal_operation_for_history_train_train_driving_2.setAction(self._normal_operation_for_history_train_train_driving_2_exec)
-        _normal_operation_for_history_train_train_driving_2.setTrigger(Event("accel", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/driving"].addTransition(_normal_operation_for_history_train_train_driving_2)
-        _normal_operation_for_history_train_train_driving_3 = Transition(self, self.states["/normal_operation/for_history/train/train/driving"], [self.states["/normal_operation/for_history/train/train/stopped/ready_to_leave"]])
-        _normal_operation_for_history_train_train_driving_3.setTrigger(None)
-        _normal_operation_for_history_train_train_driving_3.setGuard(self._normal_operation_for_history_train_train_driving_3_guard)
-        self.states["/normal_operation/for_history/train/train/driving"].addTransition(_normal_operation_for_history_train_train_driving_3)
-        _normal_operation_for_history_train_train_driving_4 = Transition(self, self.states["/normal_operation/for_history/train/train/driving"], [self.states["/normal_operation/for_history/train/train/approaching_station"]])
-        _normal_operation_for_history_train_train_driving_4.setAction(self._normal_operation_for_history_train_train_driving_4_exec)
-        _normal_operation_for_history_train_train_driving_4.setTrigger(Event("enter", None))
-        _normal_operation_for_history_train_train_driving_4.setGuard(self._normal_operation_for_history_train_train_driving_4_guard)
-        self.states["/normal_operation/for_history/train/train/driving"].addTransition(_normal_operation_for_history_train_train_driving_4)
-        
-        # transition /normal_operation/for_history/train/train/max_speed
-        _normal_operation_for_history_train_train_max_speed_0 = Transition(self, self.states["/normal_operation/for_history/train/train/max_speed"], [self.states["/normal_operation/for_history/train/train/driving"]])
-        _normal_operation_for_history_train_train_max_speed_0.setAction(self._normal_operation_for_history_train_train_max_speed_0_exec)
-        _normal_operation_for_history_train_train_max_speed_0.setTrigger(Event("accel", self.getInPortName("tkinter_input")))
-        _normal_operation_for_history_train_train_max_speed_0.setGuard(self._normal_operation_for_history_train_train_max_speed_0_guard)
-        self.states["/normal_operation/for_history/train/train/max_speed"].addTransition(_normal_operation_for_history_train_train_max_speed_0)
-        _normal_operation_for_history_train_train_max_speed_1 = Transition(self, self.states["/normal_operation/for_history/train/train/max_speed"], [self.states["/normal_operation/for_history/train/train/max_speed"]])
-        _normal_operation_for_history_train_train_max_speed_1.setAction(self._normal_operation_for_history_train_train_max_speed_1_exec)
-        _normal_operation_for_history_train_train_max_speed_1.setTrigger(Event("enter", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/train/train/max_speed"].addTransition(_normal_operation_for_history_train_train_max_speed_1)
-        
-        # transition /normal_operation/for_history/GUI_update/S_/updating
-        _normal_operation_for_history_GUI_update_S__updating_0 = Transition(self, self.states["/normal_operation/for_history/GUI_update/S_/updating"], [self.states["/normal_operation/for_history/GUI_update/S_/updating"]])
-        _normal_operation_for_history_GUI_update_S__updating_0.setAction(self._normal_operation_for_history_GUI_update_S__updating_0_exec)
-        _normal_operation_for_history_GUI_update_S__updating_0.setTrigger(Event("_1after"))
-        self.states["/normal_operation/for_history/GUI_update/S_/updating"].addTransition(_normal_operation_for_history_GUI_update_S__updating_0)
-        
-        # transition /normal_operation/for_history/polling/S_/okay
-        _normal_operation_for_history_polling_S__okay_0 = Transition(self, self.states["/normal_operation/for_history/polling/S_/okay"], [self.states["/normal_operation/for_history/polling/S_/warn"]])
-        _normal_operation_for_history_polling_S__okay_0.setAction(self._normal_operation_for_history_polling_S__okay_0_exec)
-        _normal_operation_for_history_polling_S__okay_0.setTrigger(Event("_2after"))
-        self.states["/normal_operation/for_history/polling/S_/okay"].addTransition(_normal_operation_for_history_polling_S__okay_0)
-        
-        # transition /normal_operation/for_history/polling/S_/warn
-        _normal_operation_for_history_polling_S__warn_0 = Transition(self, self.states["/normal_operation/for_history/polling/S_/warn"], [self.states["/normal_operation/for_history/polling/S_/okay"]])
-        _normal_operation_for_history_polling_S__warn_0.setAction(self._normal_operation_for_history_polling_S__warn_0_exec)
-        _normal_operation_for_history_polling_S__warn_0.setTrigger(Event("awake", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation/for_history/polling/S_/warn"].addTransition(_normal_operation_for_history_polling_S__warn_0)
-        _normal_operation_for_history_polling_S__warn_1 = Transition(self, self.states["/normal_operation/for_history/polling/S_/warn"], [self.states["/normal_operation/for_history/polling/S_/warn"]])
-        _normal_operation_for_history_polling_S__warn_1.setAction(self._normal_operation_for_history_polling_S__warn_1_exec)
-        _normal_operation_for_history_polling_S__warn_1.setTrigger(Event("_3after"))
-        self.states["/normal_operation/for_history/polling/S_/warn"].addTransition(_normal_operation_for_history_polling_S__warn_1)
-        
-        # transition /emergency_stop
-        _emergency_stop_0 = Transition(self, self.states["/emergency_stop"], [self.states["/finished"]])
-        _emergency_stop_0.setTrigger(None)
-        _emergency_stop_0.setGuard(self._emergency_stop_0_guard)
-        self.states["/emergency_stop"].addTransition(_emergency_stop_0)
-        _emergency_stop_1 = Transition(self, self.states["/emergency_stop"], [self.states["/emergency_stop"]])
-        _emergency_stop_1.setAction(self._emergency_stop_1_exec)
-        _emergency_stop_1.setTrigger(Event("_4after"))
-        self.states["/emergency_stop"].addTransition(_emergency_stop_1)
-        
-        # transition /paused
-        _paused_0 = Transition(self, self.states["/paused"], [self.states["/normal_operation/H"]])
-        _paused_0.setAction(self._paused_0_exec)
-        _paused_0.setTrigger(Event("continue", self.getInPortName("tkinter_input")))
-        self.states["/paused"].addTransition(_paused_0)
-        
-        # transition /normal_operation
-        _normal_operation_0 = Transition(self, self.states["/normal_operation"], [self.states["/emergency_stop"]])
-        _normal_operation_0.setAction(self._normal_operation_0_exec)
-        _normal_operation_0.setTrigger(Event("red_light", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation"].addTransition(_normal_operation_0)
-        _normal_operation_1 = Transition(self, self.states["/normal_operation"], [self.states["/emergency_stop"]])
-        _normal_operation_1.setAction(self._normal_operation_1_exec)
-        _normal_operation_1.setTrigger(Event("yellow_light", self.getInPortName("tkinter_input")))
-        _normal_operation_1.setGuard(self._normal_operation_1_guard)
-        self.states["/normal_operation"].addTransition(_normal_operation_1)
-        _normal_operation_2 = Transition(self, self.states["/normal_operation"], [self.states["/emergency_stop"]])
-        _normal_operation_2.setTrigger(Event("error", None))
-        self.states["/normal_operation"].addTransition(_normal_operation_2)
-        _normal_operation_3 = Transition(self, self.states["/normal_operation"], [self.states["/paused"]])
-        _normal_operation_3.setAction(self._normal_operation_3_exec)
-        _normal_operation_3.setTrigger(Event("pause", self.getInPortName("tkinter_input")))
-        self.states["/normal_operation"].addTransition(_normal_operation_3)
-    
-    def _normal_operation_for_history_train_train_stopped_enter(self):
-        self.speed = 0.0
-        self.acceleration = 0.0
-    
-    def _normal_operation_for_history_train_train_stopped_opened_doors_enter(self):
-        self.notify("Please wait before closing doors", "white")
-        self.addTimer(0, 5)
-    
-    def _normal_operation_for_history_train_train_stopped_opened_doors_exit(self):
-        self.removeTimer(0)
-    
-    def _normal_operation_for_history_train_train_stopped_allow_closing_enter(self):
-        self.notify("You can now close the doors!", "white")
-    
-    def _normal_operation_for_history_train_train_max_speed_enter(self):
-        self.speed = 120.0
-        self.acceleration = 0.0
-        print("MAX")
-    
-    def _normal_operation_for_history_train_train_max_speed_exit(self):
-        print("LEAVE MAX")
-    
-    def _normal_operation_for_history_GUI_update_S__updating_enter(self):
-        self.addTimer(1, 0.02)
-    
-    def _normal_operation_for_history_GUI_update_S__updating_exit(self):
-        self.removeTimer(1)
-    
-    def _normal_operation_for_history_polling_S__okay_enter(self):
-        self.addTimer(2, 20.0)
-    
-    def _normal_operation_for_history_polling_S__okay_exit(self):
-        self.removeTimer(2)
-    
-    def _normal_operation_for_history_polling_S__warn_enter(self):
-        self.addTimer(3, 10.0)
-    
-    def _normal_operation_for_history_polling_S__warn_exit(self):
-        self.removeTimer(3)
-    
-    def _emergency_stop_enter(self):
-        self.acceleration = -1
-        self.addTimer(4, 0.02)
-    
-    def _emergency_stop_exit(self):
-        self.removeTimer(4)
-    
-    def _finished_enter(self):
-        self.acceleration = 0.0
-        self.speed = 0.0
-    
-    def _normal_operation_0_exec(self, parameters):
-        self.notify("Passed red light", "red")
-    
-    def _normal_operation_1_exec(self, parameters):
-        self.notify("Passed yellow light while driving too fast", "red")
-    
-    def _normal_operation_1_guard(self, parameters):
-        return self.speed > 50
-    
-    def _normal_operation_3_exec(self, parameters):
-        self.notify("Paused", "white")
-    
-    def _normal_operation_for_history_train_train_stopped_in_station_0_exec(self, parameters):
-        self.openDoors()
-    
-    def _normal_operation_for_history_train_train_stopped_allow_closing_0_exec(self, parameters):
-        self.closeDoors()
-    
-    def _normal_operation_for_history_train_train_stopped_ready_to_leave_0_exec(self, parameters):
-        value = parameters[0]
-        self.acceleration = value
-    
-    def _normal_operation_for_history_train_train_stopped_ready_to_leave_0_guard(self, parameters):
-        value = parameters[0]
-        return value > 0
-    
-    def _normal_operation_for_history_train_train_approaching_station_0_guard(self, parameters):
-        return self.speed <= 0
-    
-    def _normal_operation_for_history_train_train_approaching_station_1_exec(self, parameters):
-        value = parameters[0]
-        self.acceleration = value
-    
-    def _normal_operation_for_history_train_train_approaching_station_2_exec(self, parameters):
-        self.notify("Left station without stopping", "red")
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("error", None, [])]))
-    
-    def _normal_operation_for_history_train_train_driving_0_guard(self, parameters):
-        return self.speed <= 50
-    
-    def _normal_operation_for_history_train_train_driving_1_guard(self, parameters):
-        return self.speed >= 100 and self.acceleration > 0
-    
-    def _normal_operation_for_history_train_train_driving_2_exec(self, parameters):
-        value = parameters[0]
-        self.acceleration = value
-    
-    def _normal_operation_for_history_train_train_driving_3_guard(self, parameters):
-        return self.speed <= 0 and self.acceleration < 0
-    
-    def _normal_operation_for_history_train_train_driving_4_exec(self, parameters):
-        self.notify("Entered station too fast", "red")
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("error", None, [])]))
-    
-    def _normal_operation_for_history_train_train_driving_4_guard(self, parameters):
-        return self.speed > 50
-    
-    def _normal_operation_for_history_train_train_max_speed_0_exec(self, parameters):
-        value = parameters[0]
-        self.acceleration = value
-    
-    def _normal_operation_for_history_train_train_max_speed_0_guard(self, parameters):
-        value = parameters[0]
-        return value < 0
-    
-    def _normal_operation_for_history_train_train_max_speed_1_exec(self, parameters):
-        self.notify("Entered station at maximum speed!", "red")
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("error", None, [])]))
-    
-    def _normal_operation_for_history_GUI_update_S__updating_0_exec(self, parameters):
-        self.updateState()
-    
-    def _normal_operation_for_history_polling_S__okay_0_exec(self, parameters):
-        self.notify("Please press button!", "yellow")
-    
-    def _normal_operation_for_history_polling_S__warn_0_exec(self, parameters):
-        self.notify("", "gray")
-    
-    def _normal_operation_for_history_polling_S__warn_1_exec(self, parameters):
-        self.notify("Did not press the button in time", "red")
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("error", None, [])]))
-    
-    def _emergency_stop_0_guard(self, parameters):
-        return self.speed <= 0
-    
-    def _emergency_stop_1_exec(self, parameters):
-        self.updateState()
-    
-    def _paused_0_exec(self, parameters):
-        self.notify("", "gray")
-    
-    def initializeStatechart(self):
-        # enter default state
-        self.default_targets = self.states["/paused"].getEffectiveTargetStates()
-        RuntimeClassBase.initializeStatechart(self)
-
-class ObjectManager(ObjectManagerBase):
-    def __init__(self, controller):
-        ObjectManagerBase.__init__(self, controller)
-    
-    def instantiate(self, class_name, construct_params):
-        if class_name == "Train":
-            instance = Train(self.controller, construct_params[0])
-            instance.associations = {}
-        else:
-            raise Exception("Cannot instantiate class " + class_name)
-        return instance
-
-class Controller(EventLoopControllerBase):
-    def __init__(self, root, event_loop_callbacks, finished_callback = None, behind_schedule_callback = None):
-        if finished_callback == None: finished_callback = None
-        if behind_schedule_callback == None: behind_schedule_callback = None
-        EventLoopControllerBase.__init__(self, ObjectManager(self), event_loop_callbacks, finished_callback, behind_schedule_callback)
-        self.addInputPort("tkinter_input")
-        self.object_manager.createInstance("Train", [root])

+ 0 - 6
examples/Train/imgs/convert.sh

@@ -1,6 +0,0 @@
-convert train.png -resize x30 train.gif
-convert rail.png -resize x40 rail.gif
-convert red.png -resize 20x red.gif
-convert yellow.png -resize 20x yellow.gif
-convert green.png -resize 20x green.gif
-convert station.png -resize 200x station.gif

BIN
examples/Train/imgs/green.gif


BIN
examples/Train/imgs/green.png


BIN
examples/Train/imgs/lights.png


+ 0 - 99
examples/Train/imgs/lights.svg

@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="72.680222"
-   height="126.21831"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="lights.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="7.9195959"
-     inkscape:cx="27.991111"
-     inkscape:cy="66.389805"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="2558"
-     inkscape:window-height="1422"
-     inkscape:window-x="0"
-     inkscape:window-y="16"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-87.40358,-139.71474)">
-    <path
-       sodipodi:type="arc"
-       style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path2985"
-       sodipodi:cx="123.74369"
-       sodipodi:cy="202.8239"
-       sodipodi:rx="33.840111"
-       sodipodi:ry="60.609154"
-       d="m 157.5838,202.8239 c 0,33.47351 -15.15073,60.60915 -33.84011,60.60915 -18.68938,0 -33.84011,-27.13564 -33.84011,-60.60915 0,-33.47351 15.15073,-60.60916 33.84011,-60.60916 18.68938,0 33.84011,27.13565 33.84011,60.60916 z" />
-    <path
-       sodipodi:type="arc"
-       style="color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path3755"
-       sodipodi:cx="264.65997"
-       sodipodi:cy="171.50917"
-       sodipodi:rx="16.162441"
-       sodipodi:ry="16.162441"
-       d="m 280.82241,171.50917 c 0,8.92627 -7.23617,16.16244 -16.16244,16.16244 -8.92627,0 -16.16244,-7.23617 -16.16244,-16.16244 0,-8.92627 7.23617,-16.16244 16.16244,-16.16244 8.92627,0 16.16244,7.23617 16.16244,16.16244 z"
-       transform="translate(-140.91628,-6.0609153)" />
-    <path
-       transform="translate(-140.91628,68.690366)"
-       sodipodi:type="arc"
-       style="color:#000000;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path3755-2"
-       sodipodi:cx="264.65997"
-       sodipodi:cy="171.50917"
-       sodipodi:rx="16.162441"
-       sodipodi:ry="16.162441"
-       d="m 280.82241,171.50917 c 0,8.92627 -7.23617,16.16244 -16.16244,16.16244 -8.92627,0 -16.16244,-7.23617 -16.16244,-16.16244 0,-8.92627 7.23617,-16.16244 16.16244,-16.16244 8.92627,0 16.16244,7.23617 16.16244,16.16244 z" />
-    <path
-       transform="translate(-140.91628,31.31466)"
-       sodipodi:type="arc"
-       style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       id="path3755-9"
-       sodipodi:cx="264.65997"
-       sodipodi:cy="171.50917"
-       sodipodi:rx="16.162441"
-       sodipodi:ry="16.162441"
-       d="m 280.82241,171.50917 c 0,8.92627 -7.23617,16.16244 -16.16244,16.16244 -8.92627,0 -16.16244,-7.23617 -16.16244,-16.16244 0,-8.92627 7.23617,-16.16244 16.16244,-16.16244 8.92627,0 16.16244,7.23617 16.16244,16.16244 z" />
-  </g>
-</svg>

BIN
examples/Train/imgs/rail.gif


BIN
examples/Train/imgs/rail.png


+ 0 - 210
examples/Train/imgs/rail.svg

@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="303.85715"
-   height="63.326157"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   inkscape:export-filename="/home/yentl/UA/teaching/MoSIS/2015-2016/Statecharts/solution/imgs/rail.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   sodipodi:docname="rail.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="5.6"
-     inkscape:cx="135.56736"
-     inkscape:cy="20.958559"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="2558"
-     inkscape:window-height="1422"
-     inkscape:window-x="0"
-     inkscape:window-y="16"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(207.90026,-35.432276)">
-    <path
-       style="color:#000000;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -357.14286,18.714287 302.857146,0"
-       id="path3775"
-       inkscape:connector-curvature="0"
-       transform="translate(149.7426,25.026392)" />
-    <path
-       style="color:#000000;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -207.40026,89.097821 302.85715,0"
-       id="path3775-6"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -351.02801,13.405884 0,57.326157"
-       id="path3814"
-       inkscape:connector-curvature="0"
-       transform="translate(149.7426,25.026392)" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -190.17374,38.432276 0,57.326157"
-       id="path3814-2"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -179.06206,38.432276 0,57.326157"
-       id="path3814-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -167.95039,38.432276 0,57.326157"
-       id="path3814-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -156.83869,38.432276 0,57.326157"
-       id="path3814-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -145.72704,38.432276 0,57.326157"
-       id="path3814-29"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -134.61535,38.432276 0,57.326157"
-       id="path3814-293"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -123.50368,38.432276 0,57.326157"
-       id="path3814-85"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -112.39199,38.432276 0,57.326157"
-       id="path3814-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -101.28031,38.432276 0,57.326157"
-       id="path3814-58"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -90.16864,38.432276 0,57.326157"
-       id="path3814-12"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -79.056955,38.432276 0,57.326157"
-       id="path3814-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -67.945277,38.432276 0,57.326157"
-       id="path3814-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -56.833598,38.432276 0,57.326157"
-       id="path3814-24"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -45.721926,38.432276 0,57.326157"
-       id="path3814-31"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -34.610249,38.432276 0,57.326157"
-       id="path3814-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -23.498561,38.432276 0,57.326157"
-       id="path3814-82"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -12.386893,38.432276 0,57.326157"
-       id="path3814-72"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m -1.275207,38.432276 0,57.326157"
-       id="path3814-09"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 9.8364729,38.432276 0,57.326157"
-       id="path3814-96"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 20.948149,38.432276 0,57.326157"
-       id="path3814-39"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 32.059824,38.432276 0,57.326157"
-       id="path3814-584"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 43.171505,38.432276 0,57.326157"
-       id="path3814-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 54.283177,38.432276 0,57.326157"
-       id="path3814-23"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 65.394863,38.432276 0,57.326157"
-       id="path3814-83"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 76.506538,38.432276 0,57.326157"
-       id="path3814-098"
-       inkscape:connector-curvature="0" />
-    <path
-       style="color:#000000;fill:none;stroke:#864612;stroke-width:6;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
-       d="m 87.618218,38.432276 0,57.326157"
-       id="path3814-91"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

BIN
examples/Train/imgs/red.gif


BIN
examples/Train/imgs/red.png


BIN
examples/Train/imgs/station.gif


BIN
examples/Train/imgs/station.png


BIN
examples/Train/imgs/train.gif


BIN
examples/Train/imgs/train.png


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 61
examples/Train/imgs/train.svg


BIN
examples/Train/imgs/yellow.gif


BIN
examples/Train/imgs/yellow.png


+ 0 - 282
examples/Train/sccd.xml

@@ -1,282 +0,0 @@
-<?xml version="1.0" ?>
-<diagram>
-    <inport name="tkinter_input" />
-    <class name="Train" default="true">
-        <relationships>
-        </relationships>
-        <constructor>
-            <parameter name="root" />
-            <body>
-                <![CDATA[
-                self.root, self.acceleration, self.velocity = root, 0.0, 0.0
-                self.root.trainIs(self)
-                ]]>
-            </body>
-        </constructor>
-        <method name="updateState">
-            <body>
-                <![CDATA[
-                self.root.updateState()
-                ]]>
-            </body>
-        </method>
-        <method name="openDoors">
-            <body>
-                <![CDATA[
-                self.root.openDoors()
-                ]]>
-            </body>
-        </method>
-        <method name="closeDoors">
-            <body>
-                <![CDATA[
-                self.root.closeDoors()
-                ]]>
-            </body>
-        </method>
-        <method name="notify">
-            <parameter name="message" />
-            <parameter name="color" />
-            <body>
-                <![CDATA[
-                self.root.notify(message, color)
-                ]]>
-            </body>
-        </method>
-        <scxml initial="paused" priority="source_child">
-            <state id="normal_operation" initial="for_history">
-                <parallel id="for_history">
-                    <state id="train" initial="train">
-                        <state id="train" initial="stopped">
-                            <state id="stopped" initial="ready_to_leave">
-                                <onentry>
-                                    <script>
-                                        <![CDATA[
-                                        self.speed = 0.0
-                                        self.acceleration = 0.0
-                                        ]]>
-                                    </script>
-                                </onentry>
-                                <state id="opened_doors">
-                                    <onentry>
-                                        <script>
-                                        <![CDATA[self.notify("Please wait before closing doors", "white")]]>
-                                        </script>
-                                    </onentry>
-                                    <transition after="5" target="./../allow_closing" />
-                                </state>
-                                <state id="in_station">
-                                    <transition event="open" port="tkinter_input" target="./../opened_doors">
-                                        <script>
-                                            <![CDATA[
-                                            self.openDoors()
-                                            ]]>
-                                        </script>
-                                    </transition>
-                                </state>
-                                <state id="allow_closing">
-                                    <onentry>
-                                        <script>
-                                            <![CDATA[
-                                            self.notify("You can now close the doors!", "white")
-                                            ]]>
-                                        </script>
-                                    </onentry>
-                                    <transition event="close" port="tkinter_input" target="./../ready_to_leave">
-                                        <script>
-                                            <![CDATA[
-                                            self.closeDoors()
-                                            ]]>
-                                        </script>
-                                    </transition>
-                                </state>
-                                <state id="ready_to_leave">
-                                    <transition event="accel" port="tkinter_input" cond="value &gt; 0" target="./../../driving">
-                                        <parameter name="value" />
-                                        <script>
-                                            <![CDATA[
-                                            self.acceleration = value
-                                            ]]>
-                                        </script>
-                                    </transition>
-                                </state>
-                            </state>
-                            <state id="approaching_station">
-                                <transition cond="self.speed &lt;= 0" target="./../stopped/in_station" />
-                                <transition event="accel" port="tkinter_input" target=".">
-                                    <parameter name="value" />
-                                    <script>
-                                        <![CDATA[
-                                        self.acceleration = value
-                                        ]]>
-                                    </script>
-                                </transition>
-                                <transition event="leave" port="tkinter_input" target=".">
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("Left station without stopping", "red")
-                                        ]]>
-                                    </script>
-                                    <raise event="error" scope="broad" />
-                                </transition>
-                            </state>
-                            <state id="driving">
-                                <transition event="enter" port="tkinter_input" cond="self.speed &lt;= 50" target="./../approaching_station" />
-                                <transition cond="self.speed &gt;= 100 and self.acceleration &gt; 0" target="./../max_speed" />
-                                <transition event="accel" port="tkinter_input" target="." >
-                                    <parameter name="value" />
-                                    <script>
-                                        <![CDATA[
-                                        self.acceleration = value
-                                        ]]>
-                                    </script>
-                                </transition>
-                                <transition cond="self.speed &lt;= 0 and self.acceleration &lt; 0" target="./../stopped/ready_to_leave" />
-                                <transition event="enter" cond="self.speed &gt; 50" target="./../approaching_station">
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("Entered station too fast", "red")
-                                        ]]>
-                                    </script>
-                                    <raise event="error" scope="broad" />
-                                </transition>
-                            </state>
-                            <state id="max_speed">
-                                <onentry>
-                                    <script>
-                                        <![CDATA[
-                                        self.speed = 120.0
-                                        self.acceleration = 0.0
-                                        print("MAX")
-                                        ]]>
-                                    </script>
-                                </onentry>
-                                <onexit>
-                                    <script>
-                                        <![CDATA[print("LEAVE MAX")]]>
-                                    </script>
-                                </onexit>
-                                <transition event="accel" port="tkinter_input" cond="value &lt; 0" target="./../driving" >
-                                    <parameter name="value" />
-                                    <script>
-                                        <![CDATA[
-                                        self.acceleration = value
-                                        ]]>
-                                    </script>
-                                </transition>
-                                <transition event="enter" port="tkinter_input" target="." >
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("Entered station at maximum speed!", "red")
-                                        ]]>
-                                    </script>
-                                    <raise event="error" scope="broad" />
-                                </transition>
-                            </state>
-                        </state>
-                    </state>
-                    <state id="GUI_update" initial="S_">
-                        <state id="S_" initial="updating">
-                            <state id="updating">
-                                <transition after="0.02" target="." >
-                                    <script>
-                                        <![CDATA[
-                                        self.updateState()
-                                        ]]>
-                                    </script>
-                                </transition>
-                            </state>
-                        </state>
-                    </state>
-                    <state id="polling" initial="S_">
-                        <state id="S_" initial="okay">
-                            <state id="okay">
-                                <transition after="20.0" target="./../warn">
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("Please press button!", "yellow")
-                                        ]]>
-                                    </script>
-                                </transition>
-                            </state>
-                            <state id="warn">
-                                <transition event="awake" port="tkinter_input" target="./../okay">
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("", "gray")
-                                        ]]>
-                                    </script>
-                                </transition>
-                                <transition after="10.0" target="." >
-                                    <script>
-                                        <![CDATA[
-                                        self.notify("Did not press the button in time", "red")
-                                        ]]>
-                                    </script>
-                                    <raise event="error" scope="broad" />
-                                </transition>
-                            </state>
-                        </state>
-                    </state>
-                </parallel>
-                <history id="H" type="deep" />
-                <transition event="red_light" port="tkinter_input" target="./../emergency_stop">
-                    <script>
-                        <![CDATA[
-                        self.notify("Passed red light", "red")
-                        ]]>
-                    </script>
-                </transition>
-                <transition event="yellow_light" port="tkinter_input" cond="self.speed &gt; 50" target="./../emergency_stop">
-                    <script>
-                        <![CDATA[
-                        self.notify("Passed yellow light while driving too fast", "red")
-                        ]]>
-                    </script>
-                </transition>
-                <transition event="error" target="./../emergency_stop" />
-                <transition event="pause" port="tkinter_input" target="./../paused">
-                    <script>
-                        <![CDATA[
-                        self.notify("Paused", "white")
-                        ]]>
-                    </script>
-                </transition>
-            </state>
-            <state id="emergency_stop" >
-                <onentry>
-                    <script>
-                        <![CDATA[
-                        self.acceleration = -1
-                        ]]>
-                    </script>
-                </onentry>
-                <transition cond="self.speed &lt;= 0" target="./../finished" />\
-                <transition after="0.02" target="." >
-                    <script>
-                        <![CDATA[
-                        self.updateState()
-                        ]]>
-                    </script>
-                </transition>
-            </state>
-            <state id="finished">
-                <onentry>
-                    <script>
-                        <![CDATA[
-                        self.acceleration = 0.0
-                        self.speed = 0.0
-                        ]]>
-                    </script>
-                </onentry>
-            </state>
-            <state id="paused">
-                <transition event="continue" port="tkinter_input" target="./../normal_operation/H" >
-                    <script>
-                        <![CDATA[self.notify("", "gray")]]>
-                    </script>
-                </transition>
-            </state>
-        </scxml>
-    </class>
-</diagram>

+ 0 - 13
paper/00-Abstract.tex

@@ -1,13 +0,0 @@
-\clearpage 
-\phantomsection 
-\addcontentsline{toc}{chapter}{Abstract}
-\chapter*{Abstract}
-This master's thesis explores the translation of Statecharts and class diagrams (SCCD) models into the PyDEVS (Python-based Discrete Event System Specification) framework, investigating its implications and applications. 
-SCCD, a language that combines the Statecharts language with Class Diagrams. It allows users to model complex, timed, autonomous, reactive, dynamic-structure systems. PyDEVS, on the other hand, provides a versatile platform 
-for discrete event simulation. The primary objective of this research is to bridge the gap between these two simulation paradigms, facilitating the integration of SCCD models into the PyDEVS ecosystem. This translation 
-enables the utilization of SCCD models within PyDEVS for simulation and analysis, thereby extending the reach of SCCD-based approaches to a broader audience of researchers and practitioners. The thesis first presents an 
-in-depth analysis of SCCD and PyDEVS, highlighting their respective features, strengths, and weaknesses. Subsequently, it proposes a systematic methodology for translating SCCD models into PyDEVS specifications, addressing 
-challenges such as semantic differences, modeling paradigms, and computational efficiency. To demonstrate the utility of this translation approach, the thesis showcases several case studies where SCCD models are successfully 
-translated into PyDEVS and simulated using the PyDEVS framework. Furthermore, the thesis discusses the practical implications and benefits of integrating SCCD into PyDEVS, such as enhanced scalability, interoperability with 
-existing simulation tools, and the ability to leverage PyDEVS's rich ecosystem of libraries and tools for simulation analysis. Overall, this research contributes to advancing the field of discrete event simulation by 
-facilitating the seamless integration of SCCD models into the PyDEVS framework, opening up new avenues for research and applications in diverse domains requiring concurrent system modeling and analysis.

+ 0 - 8
paper/00-Acknowledgements.tex

@@ -1,8 +0,0 @@
-\clearpage 
-\phantomsection 
-\addcontentsline{toc}{chapter}{Acknowledgements}
-\chapter*{Acknowledgements}
-I would like to express my deepest gratitude to Professor Hans Vangheluwe for his invaluable guidance, support, and for entrusting me with the project that laid the foundation for this thesis. His insightful perspectives and encouragement have been instrumental in 
-shaping my academic journey.
-
-I am also indebted to Joeri Excelmans and Randy Paredis for their consistent assistance and unwavering commitment throughout the duration of this project. Their expertise, encouragement, and willingness to lend a helping hand have been truly invaluable.

+ 0 - 5
paper/00-NedSamenvatting.tex

@@ -1,5 +0,0 @@
-\clearpage 
-\phantomsection 
-\addcontentsline{toc}{chapter}{Nederlandstalige Samenvatting}
-\chapter*{Nederlandstalige Samenvatting}
-Nederlandse samenvatting komt hier.

+ 0 - 4
paper/00-Preface.tex

@@ -1,4 +0,0 @@
-\chapter*{Preface}
-\addcontentsline{toc}{chapter}{Preface}
-
-The preface can give some extra information about how and why this thesis was written, and can include acknowledments.

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 33
paper/01-Introduction.tex


+ 0 - 660
paper/02-Background.tex

@@ -1,660 +0,0 @@
-\chapter{Background}
-\label{chapt:Background}
-
-\section{Statecharts and Class Diagrams (SCCD)}
-\subsection{The Statechart Formalism}
-Statecharts, originally introduced by D. Harel (\ref{TODO}), are finite state machines extended with hierarchy and 
-orthogonality (parallelism), allowing a complex system to be expressed in a more compact and elegant way.
-
-In order to understand the basics of statecharts, it is useful to first look at higraphs. Higraphs, while normally used 
-for formal mathematical specification, are also used as a basis for statecharts.
-
-Statecharts can be represented as visual objects. While this thesis does not use a visual notation for the statecharts, 
-it is usefull to understand the basics of statecharts. To understand the basics of statecharts, it is useful to first 
-look at higraphs. Higraphs, while normally used for formal mathematical specification, are also used as a basis for 
-statecharts. 
-
-\subsubsection{Higraph}
-A higraph combines notions from several topovisual formalisms.
-
-Topovisual formalisms are a class of graphical representations to model and visualize the topological structure of systems. 
-They primarily focus on depicting the spatial relationships and connectivity between various components or entities within 
-a system. The shapes of the visual objects is not that important in these formalisms.
-
-One of these topovisual formalisms is the formalism of graphs, and the second is the notion of Euler circles, which later 
-evolved into Venn diagrams.
-
-A graph, in its most basic form, is simply a set of points, or nodes, connected by edges or arcs. Its role is to represent 
-a (single) set of elements S and some binary relation R on them. The precise meaning of the relation R is part of the 
-application and has little to do with the mathematical properties of the graph itself. Certain restrictions on the relation 
-R yield special classes of graphs that are of particular interest, such as ones that are connected, directed, acyclic, 
-planar, or bipartite.
-
-A somewhat less widely used extension of graphs is the formalism of hypergraphs. A hypergraph is a graph in which the 
-relation being specified is not necessarily binary. Formally, an edge no longer connects a pair of nodes, but rather a 
-subset thereof.
-\\
-\\
-TODO: Euler circles or Venn diagram
-\\
-\\
-These previous formalisms can be used to create the Highgraph construct. Venn diagrams are used to account for set 
-inclusion and exclusion. Each set is called a blob and is denoted using a rectangle with rounded edges. The nesting of 
-curves denotes set inclusion.
-
-
-
-
-
-\subsubsection{Statecharts}
-Statecharts are a higraph-based extension of standard state-transition diagrams, where the blobs represent states and 
-arrows represent transitions. However, there are different kind of blobs and thus different kind of states. The 
-different kind of states can be seen in Figure \ref{TODO}. The first blob, Figure \ref{TODO}, is called a BASIC-blob 
-which is a state such that it has no sub-OR-blobs, sub-AND-blobs nor any sub-BASIC-blobs. OR-blobs are blobs that have 
-one or more sub-OR-blobs. AND-blobs, Figure \ref{TODO}, have orthogonal components. Orthogonal components of a blob are 
-normally drawn with a dashed line and denote concurrent operations. An example combining all these different kind of 
-blobs can be seen in Figure \ref{TODO}. These blobs only introduce hierarchy in statecharts, the order to specify system 
-dynamics in the diagrams are not yet specified. This is what transitions are used for. A transition is simply an arrow 
-which indicates the system can change its current state from the source state of the transition to the destination state 
-of the transition. Transitions are labeled as follows:
-\begin{equation}
-    e [c]/a
-\end{equation}
-This syntax denotes that the transition fires when event e occurs and condition c is true. The $/a$ usually means one of 
-two different things, depending on the variant of statechart. In some definitions, $/a$ denotes that upon firing the 
-transition, the a event is broadcast throughout the entire statechart, which may trigger more transitions. In the UML 
-definition, $/a$ usually denotes a series of actions (such as computer code) to execute, upon firing the transition. The 
-UML suggests the potential use of a function $GEN(e)$ , which can be one the many steps in a. This function is used to 
-broadcast the event e. Most statechart variants combine these two aspects.
-
-There are different kinds of transitions. First, there is the initial transition. It is the default transitions that 
-fires upon entering any type of blob or the root. They force the diagram to be deterministic by denoting which is the 
-current state upon entering an OR-blob. They are usually drawn as a small filled-in circle with the connected transition 
-pointing towards a blob and may only be labeled with an action (no trigger event $e$).
-
-
-
-
-
-
-
-\subsection{State Chart XML (SCXML)}
-State Chart XML (SCXML) is a general-purpose event-based state machine language that combines concepts from CCXML and Harel 
-State Tables. 
-
-\subsubsection{Core constructs}
-
-\paragraph{$<$scxml$>$}
-The top-level wrapper element, which carries version information. It can consist of the following attributes:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\subsection{Statecharts and Class Diagrams (SCCD)}
-In this section the SCCD (a Statecharts and Class Diagrams hybrid) formalism and its SCCDXML representation, an extension 
-of SCXML, is explained. SCCD facilitates the specification of complex timed, reactive, interactive discrete-event systems 
-(e.g., complex user interfaces).
-
-\subsubsection{The SCCD language}
-The SCCD languages extends the SCXML, explained in subsection (TODO), by adding new features to its concrete syntax.
-
-\paragraph{Top-level Elements}
-The top-level element is a diagram. It has an input/output interface to communicate with its environment, it can optionally 
-import library classes, and it holds a number of class definitions. One of these classes is the default, and is instantiated 
-when the application is launched.
-
-% TODO: Listing
-
-Listing (TODO) shows the top-level diagram of an application. It imports a library class that is used to draw the graphical 
-elements on the screen, one input port called "input" which receives events when the user interacts with the UI (for example, 
-pressing a key), and four classes, explained in the following subsections.
-
-\paragraph{Classes}
-Classes are the main addition of the SCCD language. They model both structure and behaviour—structure in the form of 
-attributes and relations with other classes, behaviour in the form of methods, which access and change the values of 
-attributes of the class, and an SCXML model, which constitutes the "modal" part of the system, modelling the control flow 
-of the class's behaviour. At runtime, a class can be instantiated, which creates an object. Objects are initialized according 
-to the class's constructor, and can be deleted, invoking the class's destructor. The relationships modelled between classes 
-are instantiated at runtime in the form of links. They serve as communication channels, over which objects can send and receive 
-events.
-
-% TODO: Listing
-
-Listing 2 shows the definition of the "Ball" class. It defines a number of relations (discussed in the next paragraph), a 
-constructor and destructor, a method that moves the ball to a new position, and an SCXML model that consists of four states. 
-It can optionally also define private input ports and output ports. In this case, the ball defines a private input port, that 
-allows the environment to send events that are only meant for a particular ball. For example, when the user left-clicks on a 
-ball to select it, that event should only be sent to that specific instance.
-
-\paragraph{Relationships}
-Classes can have relationships with other classes. There are two types of relationships: associations and inheritance.
-
-An association is defined between a source class and a target class, and has a name. It allows instances of the source class 
-to send events to instances of the target class by referencing the association name. An association has a multiplicity, 
-defined as a minimal cardinality $c_{min} \in \mathbb{N}$ and a maximal cardinality $c_{max} \in \mathbb{N}_{>0} \cup \{inf\}$. 
-They control how many instances of the target class have to be minimally associated to each instance of the source class, and 
-how many instances of the target class can be maximally associated to each instance of the source class, respectively. Each 
-time an association is created, it results in a link between the source and target object. This link gets a unique identifier, 
-allowing the source object to reference the target, for example to send events.
-
-An inheritance relation results in the source of the relation to inherit all attributes and methods from the target of the 
-relation. Specialisation of modal behaviour (i.e., (parts of) the SCXML model of the superclass) is currently not supported.
-
-% TODO: Listing
-
-Listing (TODO) shows the relationships of the "Window" class. It has an association to its parent, the main application. 
-Exactly one instance of that link has to exist between each "Window" instance and the main application. It is additionally 
-associated to a number of buttons and balls, and inherits from the library class "UIWidget", allowing it to be drawn on screen.
-
-\paragraph{Events}
-Events in SCCD are strings. They are accompanied by a number of parameter values: the sender is obliged to send the correct 
-number of values, and the receiver declares the parameters when catching the event. Each parameter has a name, that can be used 
-as a local variable in the action associated with the transition that catches the event.
-
-With the addition of a public input/output interface using ports, as well as classes and associations, comes the need for 
-scoping events. In traditional SCXML models, an event is sensed by the Statecharts model that generated it. SCCD adds the ability 
-to transmit events to class instances and to output ports. In particular, the raise tag was extended with a scope attribute, that 
-can take on the following values:
-\begin{itemize}
-    \item \textbf{local:} The event will only be visible for the sending instance.
-    \item \textbf{broad:} The event is broadcast to all instances.
-    \item \textbf{output:} The event is sent to an output port and is only valid in combination with the output attribute, which 
-    specifies the name of the output port.
-    \item \textbf{narrow:} The event is narrow-cast to specific instances only, and is only valid in combination with the target 
-    attribute, which specifies the instance to send the event to. For example, an instance of the "Window" class can narrow-cast 
-    an event by sending the event to a specific instance of the "Ball" class, identified by a unique link identifier.
-    \item \textbf{cd:} The event is processed by the object manager. See the next section for more details.
-\end{itemize}
-% TODO: Listing 
-Listing (TODO) presents a transition modelled on the "Button" class. It reacts to the user left-clicking the button (represented 
-by an event sent on the button input port). The button reacts by notifying its parent that it was clicked.
-
-\subsubsection{The Object Manager}
-At runtime, a central entity called the object manager is responsible for creating, deleting, and starting class instances, as 
-well as managing links (instances of associations) between class instances. It also checks whether no cardinalities are violated: 
-when the user creates an association, it checks that the maximal cardinality is not violated, and when the user deletes an 
-association, it check whether the minimal cardinality is not violated. As mentioned previously, instances can send events to the 
-object manager using the "cd" scope. The object manager can thus be seen as an ever-present, globally accessible object instance, 
-although it is implicitly defined in the runtime, instead of as a SCCD class.
-
-When the application is started, the object manager creates an instance of the default class and starts its associated Statecharts 
-model. From then on, instances can send several events to the object manager to control the set of currently executing objects. 
-The object manager accepts four events. We list them below, including the parameters that have to be sent as part of the event:
-\begin{itemize}
-    \item \textbf{create\_instance(association name, class name, args*):}
-    \item \textbf{delete\_instance(link\_ref):}
-    \item \textbf{start\_instance(link\_ref):}
-    \item \textbf{associate\_instance(source\_ref, association\_name, target\_ref):}
-\end{itemize}
-
-% TODO: Verder aanvullen
-
-\subsubsection{The SCCD compiler}
-The semantics of an SCCD model are loosely based on the agent model, where each instance of a class can be seen as an agent that 
-communicates with other agents through its input/output interface, and its autonomous behaviour controlled by its Statecharts 
-model. The compiler generates appropriate code that continuously executes the system by allowing each agent to execute a step, 
-which optionally generates output that can be sensed by the other agents.
-
-The compiler supports two programming languages, Javascript and Python, and options for the statecharts semantics. Supporting 
-multiple languages is a major advantage, as one can imagine developing an application in SCCD and generating code for multiple 
-languages from the same model. The generated code would exhibit identical behaviour for each implementation language, such as a 
-web-based application (implemented in HTML/Javascript) and a desktop application (implemented in, for example, Python).
-
-SCCD has one semantic definition. There are, however, many platforms on which the code generated from an SCCD model can be run. 
-The runtime platform provides essential functions used by the runtime kernel, such as the queueing of events and the scheduling 
-of (timed) events. Three runtime platforms are supported. A platform holds a list (or queue) of events, and they differ in the 
-way they handle events generated during execution. The kernel attempts to run the SCCD model in real-time, meaning that the delay 
-on timed transitions is intepreted as an amount of seconds. Raising of events and untimed transitions are executed as fast as 
-possible. Figure (TODO) presents an overview of the three platforms, and how they handle events.
-
-The most basic platform, available in most programming languages, is based on threads. Currently, the platform runs one thread, 
-which manipulates a global event queue, made thread-safe by locks. Input from the environment is handled by obtaining this lock, 
-which the kernel releases after every step of the execution algorithm. This allows external input to be interleaved with 
-internally raised events. Running an application on this platform can interfere with other scheduling mechanisms, such as a UI 
-module, however.
-
-To overcome this interference problem, the event loop platform reuses the event queue managed by an existing UI platform, such 
-as Tkinter. The UI platform provides functions for managing time-outs (for timed events), as well as pushing and popping items 
-from the queue. This results in a seamless integration of both Statecharts events and external UI events, such as user clicks: 
-the UI platform is now responsible for the correct interleaving.
-
-The game loop platform facilitates integration with game engines (such as the open-source Unity engine), where objects are 
-updated only at predefined points in time. In the "update" function, the kernel is responsible for checking the current time 
-(as some time has passed since the last call to the "up-date" function), and process all the events generated by objects. This 
-means that events generated in between two of these points are not processed immediately, but queued and their processing delayed 
-until the next processing time.
-
-\subsubsection{Semantics}
-The Statecharts language has been around for a long time. In that time, its basic structures have almost not changed. In its 
-original definition [(TODO)], Harel left many of the semantic choices undefined. Since then, many semantics have been defined, 
-such as the one used in Statemate [(TODO)]. More recently, Esmaeilsabzali et al. [(TODO)] have performed a study of big-step 
-modelling languages, such as Statecharts, and defined a set of semantic variation points, with which the different Statecharts 
-execution semantics can be classified. Central to their discussion is the notion of a "big step". The execution of a Statecharts 
-model is a sequence of big steps. A big step is a unit of interaction between a model and its environment. A big step takes input 
-from the environment (at the beginning of the big step), and produces output to the environment (after the big step has taken 
-place). Input cannot change during the big step. A big step consists of 0 or more small steps. A small step is an unordered set 
-of 1 or more transition executions, but in our case, a small step always consists of exactly one transition execution. Small steps 
-are grouped in so-called combo steps. A combo step is a maximal sequence of small steps, such that it only contains transitions 
-that are orthogonal to each other.
-
-The SCCD compiler allows to choose which semantics to use based on a number of semantic variation points. This gives modellers 
-more control to fine-tune the application to their needs. The semantic variation points are:
-\begin{itemize}
-    \item \textbf{Big Step Maximality} specifies when a big step ends: either after one combo step executed (Take One), or when 
-    no more combo steps can be executed (Take Many).
-    \item \textbf{Internal Event Lifeline} specifies when an internally raised event becomes available: either in the next small 
-    step (immediately), in the next combo step (which only makes sense in combination with the Take Many option), or the event is 
-    queued and treated as an external event (making it available in the next big step).
-    \item \textbf{Input Event Lifeline} specifies when an input event is available during a big step: either throughout the first 
-    small step, the first combo step, or throughout the whole big step.
-    \item \textbf{Priority} specifies what to do when two transitions are enabled at the same time, where the source state of one 
-    of the transitions is the ancestor of the source state of the other transition. Either the transition of the ancestor gets 
-    priority (Source-Parent), or the transition of the (indirect) child gets priority (Source-Child).
-\end{itemize}
-
-
-\section{DEVS Formalism}
-The Discrete Event System Specification (DEVS)
-formalism was first introduced by Zeigler (TODO) in 1976 to provide a rigourous common basis for discrete-event modelling and 
-simulation. For the class of formalisms denoted as discrete-event (TODO), system models are described at an abstraction 
-level where the time base is continuous (TODO), but during a bounded time-span, only a finite number of relevant events 
-occur. These events can cause the state of the system to change. In between events, the state of the system does not 
-change. This is unlike continuous models in which the state of the system may change continuously over time. As an 
-extension of Finite State Automata, the DEVS (Discrete Event Systems) formalism captures concepts from Discrete Event 
-simulation. As such it is a sound basis for meaningful model exchange in the Discrete Event realm. (TODO: citation)
-
-The DEVS formalism fits the general structure of deterministic, causal systems in classical systems theory. DEVS allows 
-for the description of system behaviour at two levels. At the lowest level, an atomic DEVS describes the autonomous 
-behaviour of a discrete-event system as a sequence of deterministic transitions between sequential states as well as 
-how it reacts to external input (events) and how it generates output (events). At the higher level, a coupled DEVS 
-describes a system as a network of coupled components. The components can be atomic DEVS models or coupled DEVS in their 
-own right. The connections denote how components influence each other. In particular, output events of one component 
-can become, via a network connection, input events of another component. It is shown in [Zei84a] how the DEVS formalism 
-is closed under coupling: for each coupled DEVS, a resultant atomic DEVS can be constructed. As such, any DEVS model, 
-be it atomic or coupled, can be replaced by an equivalent atomic DEVS. The construction procedure of a resultant atomic 
-DEVS is also the basis for the implementation of an abstract simulator or solver capable of simulating any DEVS model. 
-As a coupled DEVS may have coupled DEVS components, hierarchical modelling is supported. In the following, the different 
-aspects of the DEVS formalism are explained in more detail.
-
-\subsection{The atomic DEVS Formalism}
-The atomic DEVS formalism is a structure describing the different aspects of the discrete-event behaviour of a system:
-\begin{equation}
-    atomicDEVS \equiv \langle S, ta, \delta_{int}, X, \delta_{ext}, Y, \lambda \rangle
-\end{equation}
-The time base $T$ is continuous and is not mentioned explicitly
-\begin{equation}
-    T = \mathbb{R}
-\end{equation}
-The state set $S$ is the set of admissible sequential states: the DEVS dynamics consists of an ordered sequence of states
-from $S$. Typically, $S$ will be a structured set (a product set)
-\begin{equation}
-    S = \times_{i=1}^{n} S_i.
-\end{equation}
-This formalizes multiple (n) concurrent parts of a system. It is noted how a structured state set is often synthesized
-from the state sets of concurrent components in a coupled DEVS model. 
-
-The time the system remains in a sequential state before making a transition to the next sequential state is modelled by 
-the time advance function
-\begin{equation}
-    ta: S \rightarrow \mathbb{R}^+_{0, + \infty}.
-\end{equation}
-As time in the real world always advances, the image of $ta$ must be non-negative numbers. $ta = 0$ allows for the 
-representation of instantaneous transitions: no time elapses before transition to a new state. Obviously, this is an 
-abstraction of reality which may lead to simulation artifacts such as infinite instantaneous loops which do not correspond 
-to real physical behaviour. If the system is to stay in an end-state $s$ forever, this is modelled by means of $ta(s) = +\infty$.
-
-The internal transition function
-\begin{equation}
-    \delta_{int}: S \rightarrow S
-\end{equation}
-models the transition from one state to the next sequential state. $\delta_{int}$ describes the behaviour of a Finite State 
-Automaton; $ta$ adds the progression of time.
-
-It is possible to observe the system output. The output set $Y$ denotes the set of admissible outputs. Typically, $Y$ will be a 
-structured set (a product set)
-\begin{equation}
-    Y = \times_{i=1}^l Y_i.
-\end{equation}
-This formalizes multiple ($l$) output ports. Each port is identified by its unique index $i$. In a user-oriented modelling 
-language, the indices would be derived from unique port names. 
-
-The output function
-\begin{equation}
-    \lambda : S \rightarrow Y \cup \{ \phi \}
-\end{equation}
-maps the internal state onto the output set. Output events are only generated by a DEVS model at the time of an internal 
-transition. At that time, the state before the transition is used as input to $\lambda$. At all other times, the non-event 
-$\phi$ is output. To describe the total state of the system at each point in time, the sequential state $s \in S$ is not 
-sufficient. The elapsed time $e$ since the system made a transition to the current state $s$ needs also to be taken into 
-account to construct the total state set
-\begin{equation}
-    Q = \{ (s,e) | s \in S,, 0 \leq e \leq ta(s)\}
-\end{equation}
-The elapsed time $e$ takes on values ranging from 0 (transition just made) to $ta(s)$ (about to make transition to the next
-sequential state). Often, the time left $\sigma$ in a state is used:
-\begin{equation}
-    \sigma = ta(s) - e
-\end{equation}
-Up to now, only an autonomous system was described: the system receives no external inputs. Hence, the input set $X$ 
-denoting all admissible input values is defined. Typically, $X$ will be a structured set (a product set)
-\begin{equation}
-    X = \times_{i=1}^m X_i
-\end{equation}
-This formalizes multiple ($m$) input ports. Each port is identified by its unique index $i$. As with the output set, 
-port indices may denote names. 
-
-The set $\Omega$ contains all admissible input segments $\omega$
-\begin{equation}
-    \omega : T \rightarrow X \cup \{ \phi \}
-\end{equation}
-In discrete-event system models, an input segment generates an input event different from the non-event $\phi$ only at a finite 
-number of instants in a bounded time-interval. These external events, inputs $x$ from $X$, cause the system to interrupt its 
-autonomous behaviour and react in a way prescribed by the external transition function
-\begin{equation}
-    \delta_{ext}: Q \times X \rightarrow S
-\end{equation}
-The reaction of the system to an external event depends on the sequential state the system is in, the particular input and 
-the elapsed time. Thus, $\delta_{ext}$ allows for the description of a large class of behaviours typically found in 
-discrete-event models (including synchronization, preemption, suspension and re-activation). When an input event $x$ to an 
-atomic model is not listed in the $\delta_{ext}$ specification, the event is ignored.
-
-% TODO: Example of traffic light/ Starts with "In Figure 1" ...
-
-\subsection{The coupled DEVS Formalism} 
-The coupled DEVS formalism describes a discrete-event system in terms of a network of coupled components.
-\begin{equation}
-    coupledDEVS \equiv \langle X_{self}, Y_{self}, D, \{M_i\}, \{I_i\}, \{Z_{i,j}\}, select \rangle
-\end{equation}
-The component $self$ denotes the coupled model itself. $X_{self}$ is the (possibly structured) set of allowed external inputs 
-to the coupled model. $Y_{self}$ is the (possibly structured) set of allowed (external) outputs of the coupled model. $D$ is 
-a set of unique component references (names). The coupled model itself is referred to by means of $self$, a unique reference 
-not in $D$.
-
-The set of components is
-\begin{equation}
-    \{M_i | i \in D\}.
-\end{equation}
-Each of the components must be an atomic DEVS
-\begin{equation}
-    M_i = \langle S_i, ta_i, \delta_{int, i}, X_i, \delta_{ext, i}, Y_i, \lambda_i \rangle , \forall i \in D.
-\end{equation}
-The set of influences of a component, the components influenced by $i \in D \cup \{self\}$, is $I_i$. The set of all influences 
-describes the coupling network structure
-\begin{equation}
-    \{ I_i | i \in D \cup \{self\}\}.
-\end{equation}
-For modularity reasons, a component (including $self$) may not influence components outside its scope -the coupled model-, 
-rather only other components of the coupled model, or the coupled model $self$:
-\begin{equation}
-    \forall i \in D \cup \{self\}: I_i \subseteq D \cup \{self\}.
-\end{equation}
-This is further restricted by the requirement that none of the components (including $self$) may influence themselves directly 
-as this could cause an instantaneous dependency cycle (in case of a 0 time advance inside such a component) akin to an algebraic 
-loop in continuous models:
-\begin{equation}
-    \forall i \in D \cup \{self\}: i \not \in I_i.
-\end{equation}
-Note how one can always encode a self-loop ($i \in I_i$) in the internal transition function.
-
-To translate an output event of one component (such as a departure of a customer) to a corresponding input event (such as the 
-arrival of a customer) in influencees of that component, output-to-input translation functions $Z_{i,j}$ are defined:
-\begin{equation}
-    \{ Z_{i,j} | i \in D \cup \{self\}, j \in I_i\}, \\
-    Z_{self, j} : X_{self} \rightarrow X_j, \forall j \in D, \\
-    Z_{i, self} : Y_i \rightarrow Y_{self}, \forall i \in D, \\
-    Z_{i, j} : Y_i \rightarrow X_j, \forall i,j \in D.
-\end{equation}
-Together, $I_i$ and $Z_i,j$ completely specify the coupling (structure and behaviour).
-
-As a result of coupling of concurrent components, multiple state transitions may occur at the same simulation time. This is 
-an artifact of the discrete-event abstraction and may lead to behaviour not related to real-life phenomena. A logic-based 
-foundation to study the semantics of these artifacts was introduced by Radiya and Sargent (TODO). In sequential simulation 
-systems, such transition collisions are resolved by means of some form of selection of which of the components' transitions 
-should be handled first. This corresponds to the introduction of priorities in some simulation languages. The coupled DEVS 
-formalism explicitly represents a select function for tie-breaking between simultaneous events:
-\begin{equation}
-    select : 2^D \rightarrow D
-\end{equation}
-$select$ chooses a unique components from any non-empty subset E of D:
-\begin{equation}
-    select(E) \in E.
-\end{equation}
-The subset E corresponds to the set of all components having a state transition simultaneously.
-
-\subsection{Closure of DEVS under coupling}
-As mentioned before, it is possible to construct a resultant atomic DEVS model for each coupled DEVS. This closure under 
-coupling of atomic DEVS models makes any coupled DEVS equivalent to an atomic DEVS. By induction, any hierarchically coupled 
-DEVS can thus be flattened to an atomic DEVS. As a result, the requirement that each of the components of a coupled DEVS be 
-an atomic DEVS can be relaxed to be atomic or coupled as the latter can always be replaced by an equivalent atomic DEVS.
-
-The core of the closure procedure is the selection of the most imminent (i.e., soonest to occur) event from all the components' 
-scheduled events (TODO). In case of simultaneous events, the select function is used. In the sequel, the resultant construction 
-is described.
-
-From the coupled DEVS
-\begin{equation}
-    \langle X_{self}, Y_{self}, D, \{M_i\}, \{I_i\}, \{Z_{i,j}\}, select \rangle
-\end{equation}
-with all components $M_i$ atomic DEVS models
-\begin{equation}
-    M_i = \langle S_i, ta_i, \delta_{int, i}, X_i, \delta_{ext, i}, Y_i, \lambda_i \rangle, \forall i \in D
-\end{equation}
-the atomic DEVS
-\begin{equation}
-    \langle S, ta, \delta_{int}, X, \delta_{ext}, Y, \lambda \rangle
-\end{equation}
-is constructed.
-
-The resultant set of sequential states is the product of the total state sets of all the components
-\begin{equation}
-    S = \times_{i \in D} Q_i
-\end{equation}
-where
-\begin{equation}
-    Q_i = \{ (s_i, e_i) | s \in S_i, 0 \leq e_i \leq ta_i(s_i) \}, \forall i \in D.
-\end{equation}
-The time advance function $ta$
-\begin{equation}
-    ta : S \rightarrow \mathbb{R}^+_{0, + \infty}
-\end{equation}
-is constructed by selecting the most imminent event time, of all components. This means, finding the smallest time remaining 
-until internal transition, of all the components
-\begin{equation}
-    ta(s) = \min \{\sigma_i = ta_i(s_i) - e_i | i \in D \}.
-\end{equation}
-A number of imminent components may be scheduled for a simultaneous internal transition. These components are collected in a 
-set
-\begin{equation}
-    IMM(s) = \{i \in D | \sigma_i = ta(s)\}.
-\end{equation}
-From $IMM$, a set of elements of $D$, one component $i^*$ is chosen by means of the select tie-breaking function of the coupled 
-model
-\begin{equation}
-    select : 2^D \rightarrow D \\
-    IMM(s) \rightarrow i^*
-\end{equation}
-Output of the selected component is generated before it makes its internal transition. Note also how, as in a Moore machine, 
-input does not directly influence output. In DEVS models, only an internal transition produces output. An input can only 
-influence/generate output via an internal transition similar to the presence of memory in the form of integrating elements in 
-continuous models. Allowing an external transition to produce output could lead to infinite instantaneous loops. This is equivalent 
-to algebraic loops in continuous systems. The output of the component is translated into coupled model output by means of the 
-coupling information
-\begin{equation}
-    \lambda(s) = Z_{i^*, self} (\lambda_{i^*}(s_{i^*})), \text{if} self \in I_{i^*}.
-\end{equation}
-If the output of $i^*$ is not connected to the output of the coupled model, the non-event $\phi$ can be generated as output of 
-the coupled model. As $\phi$ literally stands for no event, the output can also be ignored without changing the meaning (but 
-increasing performance of simulator implementations).
-
-The internal transition function transforms the different parts of the total state as follows:
-\begin{equation}
-    \delta_{int}(s) = (..., (s'_j, e'_j),...), \text{where} \\
-    (s'_j, e'_j) = (\delta_{int, j} (s_j), 0), \text{for} j = i^*, \\
-                 = (\delta_{ext, j} (s_j, e_j + ta(s), Z_{i^*, j}))
-                 % TODO: Verder doen
-\end{equation}
-The selected imminent component $i^*$ makes an internal transition to sequential state $\delta_{int, i^*} (s_i^*)$. Its elpased 
-time is reset to 0. All the influencees of $i^*$ change their state due to an external transition prompted by an input which is 
-the output-to-input translated output of $i^*$, with an elapsed time adjusted for the time advance $ta(s)$. The influencees' 
-elapsed time is reset to 0. Note how $i^*$ is not allowed to be an influencee of $i^*$ in DEVS. The state of all other components 
-is not affected and their elapsed time is merely adjusted for the time advance $ta(s)$.
-
-The external transition function transforms the different parts of the total state as follows:
-\begin{equation}
-    \delta_{ext}(s,e,x) = (..., (s'_i, e'_i), ...)
-    % TODO
-\end{equation}
-An incoming external event is routed, with an adjustment for elapsed time, to each of the components connected to the coupled 
-model input (after the appropriate input-to-input translation). For all those components, the elapsed time is reset to 0. All 
-other components are not affected and only the elapsed time is adjusted.
-
-Some limitations of DEVS are that
-\begin{itemize}
-    \item a conflict due to simultaneous internal and external events is resolved by ignoring the internal event. It should be 
-    possible to explicitly specify behaviour in case of conflicts;
-    \item there is limited potential for parallel implementation;
-    \item the select function is an artificial legacy of the semantics of traditional sequential simulators based on an event 
-    list;
-    \item it is not possible to describe variable structure.
-\end{itemize}
-Some of these are compensated for in parallel DEVS (TODO).
-
-\subsection{Implementation of a DEVS Solver}
-The algorithm in Figure (TODO) is based on the closure under coupling construction and can be used as a specification of a 
-(possibly parallel) implementation of a DEVS solver or “abstract simulator” (TODO). In an atomic DEVS solver, the last event 
-time $t_L$ as well as the local state $s$ are kept. In a coordinator, only the last event time $t_L$ is kept. The 
-next-event-time $t_N$ is sent as output of either solver. It is possible to also keep $t_N$ in the solvers. This requires 
-consistent (recursive) initialization of the $t_N$s. If kept, the $t_N$ allows one to check whether the solvers are 
-appropriately synchronized. The operation of an abstract simulator involves handling four types of messages. The ($x, from, t$)
-message carries external input information. The ($y, from, t$) message carries external output information. The ($*, from, t$) 
-and ($done, from, t_N$) messages are used for scheduling (synchronizing) the abstract simulators. In these messages, $t$ is the 
-simulation time and $t_N$ is the next-event-time. The ($*, from, t$) message indicates an internal event * is due.When a 
-coordinator receives a ($*, from, t$) message, it selects an imminent component $i^*$ by means of the tie-breaking function 
-select specified for the coupled model and routes the message to $i^*$. Selection is necessary as there may be more than one 
-imminent component (with minimum next remaining time).
-
-When an atomic simulator receives a ($*, from, t$) message, it generates an output message ($y, from, t$) based on the old state 
-$s$. It then computes the new state by means of the internal transition function. Note how in DEVS, output messages are only 
-produced while executing internal events. When a simulator outputs a ($y, from, t$) message, it is sent to its parent coordinator. 
-The coordinator sends the output, after appropriate output-to-input translation, to each of the influencees of $i^*$ (if any). If 
-the coupled model itself is an influencee of $i^*$, the output, after appropriate output-to-output translation, is sent to the the 
-coupled model's parent coordinator.
-
-% TODO: Figure 3 
-
-When a coordinator receives an ($x, from, t$) message from its parent coordinator, it routes the message, after appropriate 
-input-to-input translation, to each of the affected components.
-
-When an atomic simulator receives an ($x, from, t$) message, it executes the external transition function of its associated atomic 
-model.
-
-After processing an ($x, from, t$) or ($y, from, t$) message, a simulator sends a ($done, from, t_N$) message to its parent 
-coordinator to prepare a new schedule. When a coordinator has received ($done, from, t_N$) messages from all its components, 
-it sets its next-event-time $t_N$ to the minimum $t_N$ of all its components and sends a ($done, from, t_N$) message to its parent 
-coordinator. This process is recursively applied until the top-level coordinator or root coordinator receives a ($done, from, t_N$) 
-message.
-
-
-As the simulation procedure is synchronous, it does not support asynchronously arriving (real-time) external input. Rather, the 
-environment or Experimental Frame should also be modelled as a DEVS component.
-
-To run a simulation experiment, the initial conditions $t_L$ and $s$ must first be set in all simulators of the hierarchy. If $t_N$ 
-s kept in the simulators, it must be recursively set too. Once the initial conditions are set, the main loop described in Figure 
-(TODO) is executed.
-
-
-\section{The pythonDEVS (pyDEVS) simulator}
-In this chapter we first present an implementation of the classical formalism. An early prototype of a DEVS Modeling and Simulation 
-Package is then introduced. The chapter then moves on to discuss a real-time execution framework. The motivation behind real-time 
-DEVS execution is discussed as well as the implications of 0-time semantics.
-
-\subsection{Design and implementation}
-This version of the DEVS Modeling and Simulation Package has been implemented using Python, an interpreted, very high-level, 
-object-oriented programming language. The package consists of two files, the first of which (DEVS.py) provides a class architecture 
-that allows hierarchical DEVS models to be easily defined. The simulation engine (SE) itself is implemented in the second file 
-(Simulator.py). Based on the DEVS simulator described in (TODO), it uses the same message- passing mechanism. A detailed description 
-of both the model architecture and the SE follows.
-
-\subsubsection{Model Architecture}
-The model architecture implemented in DEVS.py is a canvas from which hierarchical DEVS models can be easily described. It consists 
-of a number of classes arranged to capture the essence of hierarchical DEVS. A model is described in a dedicated file by deriving 
-coupled and/or atomic- DEVS descriptive classes from this architecture. These atomic models are then arranged hierarchically through 
-composition. Methods and attributes form the standard interface that allows an SE, such as the one described in the next sub-section, 
-to interact with the instantiated DEVS model. Our main concern with the architecture are twofold: remain as consistent as possible 
-with the original hierarchical DEVS definition, and maintain a flexible approach to DEVS so as to encourage model reusability 
-through parameterization.
-
-The class architecture is represented in Figure (TODO): BaseDEVS is the root class which provides basic functionalities common to both 
-atomic and coupled models.
-
-Two classes are inherited from BaseDEVS to deal with the specifics of atomic and coupled DEVS formalisms (Figure (TODO)). These three 
-classes are all abstract in that they cannot be directly instantiated. Rather, a model is described by deriving descriptive classes 
-from either the AtomicDEVS or the CoupledDEVS class. This provides them with a suitable constructor and overrides the default 
-interface methods. Note that the constructors at every level of the class hierarchy have an active role. Hence, a descriptive class' 
-constructor should always start by calling the parent class' constructor.
-
-The constructor of the AtomicDEVS class merely initializes the myID attribute and provides a default initial value for the DEVS' 
-total state, through the state and elapsed attributes. The remaining class definitions consist of default method declarations for 
-the interface functions $\delta_{ext}$ (extTransition), $\delta_{int}$ (intTransition), $ta$ (timeAdvance) and $\lambda$ (outputFnc). 
-These methods expect no parameter, and it is up to the modeler to be consistent with the corresponding functions' domain when overriding 
-the methods. Except for outputFnc (which uses the poke method as described below), all the methods shall return a value compatible with 
-the corresponding function range.
-
-Since default values are provided for both attributes and methods, the minimal atomic-DEVS descriptive class is empty:
-
-% TODO: code
-
-This atomic-DEVS is passive. It remains in its default state forever. A more interesting example is a generator, which sends a message 
-(the integer 1 in this case) through its unique output port at a constant time interval:
-
-% TOOD: code
-
-As mentioned above, the outputFnc returns no value; instead it relies on the poke method to send message (second parameter) through the 
-OUT output port (first parameter). The companion method, peek, returns the message on the input port that is given as a unique parameter, 
-and is used exclusively in the extTransition function. Both poke and peek methods are defined in the AtomicDEVS class, and should not be 
-overridden.
-
-The CoupledDEVS class only has one method to override, the tie-breaking select function. This takes a list of sub-models which are in 
-conflict. The select function should return the sub-model instance from this list who's transition is to fire next. All a CoupledDEVS 
-sub-models should be included by passing their instance variables to the addSubModel function.
-
-Coupling of ports is performed through the connectPorts method. Its first parameter is the source port and the second parameter is the 
-destination port. A coupling is rejected and an error message issued if the coupling is invalid.
-
-The source and destination ports are instances of the class Port. This class defines channels where events may pass between DEVS models. 
-These channels are defined in the Port's inLine and outLine attributes.
-
-Consider the example of the situation illustrated in Figure (TODO). There exists a descriptive class SomeDEVS for a DEVS (either atomic 
-or coupled) with an input and output port locally known as IN and OUT. We want to connect the input port to the output port of the 
-SimpleGenerator atomic- DEVS described above: both DEVS must of course be children of the same coupled-DEVS for the coupling to be 
-performed. The coupled-DEVS descriptive class is defined below.
-
-% TODO: code
-
-Note that the parameter to the constructor is used to parameterize the SimpleGenerator atomic- DEVS. As for atomic-DEVS, the constructor 
-first calls the parent class' constructor. Note also that the coupled-DEVS itself has an output port. The first coupling is an internal 
-coupling, while the second is an external output coupling. This is a complete definition for a coupled-DEVS descriptive class. The 
-default select function is used.
-
-Once all the descriptive classes in the hierarchical DEVS model have been defined, the whole model can be build by instantiating the 
-root DEVS. This is possible since the hierarchical representation of the model is built by composition rather than aggregation.
-
-As a final warning, note that recursive definitions are illegal, since they are incompatible with a tree structure. As a trivial example, 
-a coupled-DEVS' descriptive class SomeCoupledDEVS cannot call in its constructor the addSubModel method with an instance of 
-SomeCoupledDEVS. This is mentionned since such recursive constructs will not be detected.
-
-\subsubsection{Simulation Engine}

+ 0 - 67
paper/03-Methodology.tex

@@ -1,67 +0,0 @@
-\chapter{Methodology}
-\label{chapt:Methodology}
-The methodology employed in this thesis outlines the systematic approach taken to translate SCCD into PyDEVS. This section provides an overview of the strategies, tools, and processes utilized to achieve the translation objectives. 
-The translation involves converting models represented in one formalism into another while preserving their essential behavioral characteristics. Such translation is critical for interoperability, model verification, and simulation 
-interoperability between systems designed using different modeling paradigms.
-
-We also present the overarching methodology for translating SCCD to PyDEVS, detailing the steps involved, challenges encountered, and the rationale behind the chosen approaches. Additionally, we discuss alternative 
-approaches considered during the development process, providing insights into why certain strategies were pursued while others were discarded.
-
-\section{Translation Tools}
-
-The translation of SCCD to DEVS involves the use of specialized tools and techniques to facilitate the conversion process. In this section, we discuss the evolution of the translation tools employed in this research, from initial 
-parsing methods to the adoption of a visitor pattern for seamless translation.
-
-\subsection{Parsing line by line}
-Initially, in the endeavor to translate SCCD to DEVS, the SCXML file was parsed meticulously, line by line. However, as we delved deeper into the process, we encountered challenges that made this approach increasingly cumbersome. 
-The complexity of the SCXML structure made it difficult to extract the necessary information efficiently, leading to inefficiencies and potential errors in the translation process. Recognizing the need for a more robust and 
-structured approach, we sought alternative solutions to streamline our workflow.
-
-\subsection{Visitor Pattern}
-Upon further investigation, it was discovered that the SCCD compiler already integrates a robust visitor pattern for translating SCXML files into Python and/or Java representations. This discovery marks a significant breakthrough 
-in the translation process, as it not only facilitates the traversal of intricate data structures without altering the structure itself but also enables seamless integration of new languages or platforms.
-
-The compiler generates an Abstract Syntax Tree (AST), which serves as the foundation for the visitor to traverse each node systematically. This thesis elucidates the profound utility of this approach. Firstly, the visitor parses 
-the tree from the root to the leaf nodes, thereby enabling a chronological description of the output. This sequential traversal allows for the orderly declaration of imports and their subsequent usage, streamlining the code 
-generation process. Furthermore, by compartmentalizing each node, the visitor pattern facilitates the generation of code independent of other nodes, enhancing the modularity and efficiency of the SCCD framework.
-
-Moreover, the visitor pattern's versatility extends to accommodating various platforms, including Thread, UI Event Loop, and Game Loop, for both Python and Java. This inherent adaptability underscores the feasibility of integrating 
-the DEVS formalism seamlessly into the SCCD framework. By developing a visitor tailored for DEVS and integrating it as a platform, extending the SCCD compiler's capabilities becomes a straightforward endeavor.
-
-
-
-\section{Considered Translation Approaches}
-
-\subsection{First approach: Implementing everything into one AtomicDEVS}
-The first approach is to set the entire SCCD code, which includes the controller, ObjectManager and every class, to one AtomicDEVS model. While this could be possible, it was chosen not to do this for several reasons.
-
-\subsection{Second approach: Setting every component to AtomicDEVS}
-Another approach is to set every possible component (Controller, ObjectManager and classes) to an AtomicDEVS model. This proved to be impossible with the standard
-atomicDEVS because in SCCD, statecharts can be created at runtime. The classic AtomicDEVS does not allow to create AtomicDEVS objects at runtime and thus mapping statecharts
-to a corresponding AtomicDEVS is impossible.
-
-\subsection{Chosen approach: TODO}
-The approach that is chosen is to have a Controller component as a CoupledDEVS object and the ObjectManager and class type as an AtomicDEVS object. What is different with the approach explained in \ref{TODO} is that 
-the class type is an AtomicDEVS an not every instance of that type. 
-
-\subsubsection{Controller component}
-This component originated from the SCCD runner. While the controller in the SCCD runner is created to control the runtime of the objects, the controller created in PyDEVS serves merely as a structural object. In the 
-controller the submodels and their couplings are described. This is perfect because the classes in SCCD need to be coupled to each other and the ObjectManager. To couple them, the SCCD to PyDEVS compiler will generate 
-a controller and link every AtomicDEVS to the AtomicDEVS of the ObjectManager.
-
-\subsubsection{ObjectManager component}
-The ObjectManager has the same use cases as the ObjectManager in SCCD. The only difference is that objects can not explicitely be created in this component but rather the Event to do an action gets now forwarded do the 
-specific class component an instance should be created, deleted from. This way the ObjectManager itself still decides if the instance can/may be made or not. Instances can still send events to the ObjectManager with the 
-\"cd\" scope. 
-
-
-When the application is started, the default class
-
-the object manager now thus not create an instance of the default class and starts its associated Statecharts model. But it sends a \"start\_instance\" Event to the default class allowing 
-the default class to start the instance that is already created in the 
-
-From then on, instances can send several events to the object manager to control the set of currently executing objects. The object manager accepts four events. We list them below, including the parameters that have to be sent as part of the event:
-
-\subsubsection{Class component}
-
-\subsubsection{Class Instance component}

+ 0 - 6
paper/04-Implementation.tex

@@ -1,6 +0,0 @@
-\chapter{Implementation}
-\label{chapt:Implementation}
-Blablabla
-
-\section{Definitions}
-Some introductory section

+ 0 - 6
paper/05-Examples.tex

@@ -1,6 +0,0 @@
-\chapter{Examples}
-\label{chapt:Examples}
-Blablabla
-
-\section{Definitions}
-Some introductory section

+ 0 - 3
paper/99-Conclusions.tex

@@ -1,3 +0,0 @@
-\chapter{Conclusions}
-\label{chapt:Conclusions}
-Example of todo: \todo{Write conclusions here.} 

+ 0 - 5
paper/AA-Testcode.tex

@@ -1,5 +0,0 @@
-\chapter{An appendix}
-\label{chapt:appendix}
-
-
-An Appendix is just like another chapter.

+ 0 - 96
paper/Makefile

@@ -1,96 +0,0 @@
-LATEX	= latex
-BIBTEX	= bibtex
-MAKEINDEX = makeindex
-XDVI	= xdvi -gamma 4
-DVIPS	= dvips
-DVIPDF  = dvipdft
-L2H	= latex2html
-GH	= gv
-
-RERUN = "(There were undefined references|Rerun to get (cross-references|the bars) right)"
-RERUNBIB = "No file.*\.bbl|Citation.*undefined"
-MAKEIDX = "^[^%]*\\makeindex"
-MPRINT = "^[^%]*print"
-USETHUMBS = "^[^%]*thumbpdf"
-
-DATE=$(shell date +%Y-%m-%d)
-
-COPY = if test -r $(<:%.tex=%.toc); then cp $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); fi 
-RM = rm -f
-
-SRC	:= $(shell egrep -l '^[^%]*\\begin\{document\}' *.tex)
-TRG	= $(SRC:%.tex=%.dvi)
-PSF	= $(SRC:%.tex=%.ps)
-PDF	= $(SRC:%.tex=%.pdf)
-
-define run-latex
-	$(COPY);$(LATEX) $<
-	egrep $(MAKEIDX) $< && ($(MAKEINDEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) >/dev/null; true
-	egrep -c $(RERUNBIB) $(<:%.tex=%.log) && ($(BIBTEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) ; true
-	egrep $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) >/dev/null; true
-	egrep $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) >/dev/null; true
-	if cmp -s $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); then true ;else $(LATEX) $< ; fi
-	$(RM) $(<:%.tex=%.toc.bak)
-	# Display relevant warnings
-	egrep -i "(Reference|Citation).*undefined" $(<:%.tex=%.log) ; true
-endef
-
-define run-pdflatex
-	LATEX=pdflatex
-	@$(run-latex)
-endef
-
-define get_dependencies
-	deps=`perl -ne '($$_)=/^[^%]*\\\(?:include|input)\{(.*?)\}/;@_=split /,/;foreach $$t (@_) {print "$$t.tex "}' $<`
-endef
-
-define getbibs
-	bibs=`perl -ne '($$_)=/^[^%]*\\\bibliography\{(.*?)\}/;@_=split /,/;foreach $$b (@_) {print "$$b.bib "}' $< $$deps`
-endef
-
-define manconf
-	mandeps=`if test -r $(basename $@).cnf ; then cat $(basename $@).cnf |tr -d '\n\r' ; fi`
-endef
-
-all 	: veryclean $(TRG) wordcount 
-		acroread $(PDF) &
-
-.PHONY	: all show clean ps pdf showps veryclean wordcount
-
-clean	:
-	  -rm -f $(TRG) $(PSF) $(PDF) $(TRG:%.dvi=%.aux) $(TRG:%.dvi=%.bbl) $(TRG:%.dvi=%.blg) $(TRG:%.dvi=%.log) $(TRG:%.dvi=%.out) $(TRG:%.dvi=%.idx) $(TRG:%.dvi=%.ilg) $(TRG:%.dvi=%.ind) $(TRG:%.dvi=%.toc) $(TRG:%.dvi=%.d)
-
-veryclean	: clean
-	  -rm -f *.log *.aux *.dvi *.bbl *.blg *.ilg *.toc *.lof *.lot *.idx *.ind *.ps  *~ *.tdo *.lol
-
-%.d	: %.tex
-	$(get_dependencies) ; echo $$deps ; \
-	$(getbibs) ; echo $$bibs ; \
-	$(manconf) ; echo  $$mandeps  ;\
-	echo "$*.dvi $@ : $< $$deps $$bibs $$mandeps" > $@ 
-
-include $(SRC:.tex=.d)
-
-$(TRG)	: %.dvi : %.tex
-	  @$(run-latex)
-
-$(PSF)	: %.ps : %.dvi
-	  @$(DVIPS) $< -o $@
-
-$(PDF) : %.pdf : %.tex
-	@$(run-pdflatex)
-
-
-show	: $(TRG)
-	  @for i in $(TRG) ; do $(XDVI) $$i & done
-
-showps	: $(PSF)
-	  @for i in $(PSF) ; do $(GH) $$i & done
-
-ps	: $(PSF) 
-
-pdf	: $(PDF) 
-
-wordcount:
-	@echo "counting words in tex files"
-	detex MasterThesis.tex | wc -w

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 38
paper/MasterThesis.bbl


+ 0 - 128
paper/MasterThesis.fdb_latexmk

@@ -1,128 +0,0 @@
-# Fdb version 3
-["bibtex MasterThesis"] 0 "MasterThesis.aux" "MasterThesis.bbl" "MasterThesis" 1715609534
-  "/usr/local/texlive/2019/texmf-dist/bibtex/bst/base/plain.bst" 1292289607 20613 bd3fbfa9f64872b81ac57a0dd2ed855f ""
-  "MasterThesis.aux" 0 -1 0 "pdflatex"
-  "references.bib" 1312367667 789 20803d158fccdc749b2e64f161e2607a ""
-  (generated)
-  "MasterThesis.bbl"
-  "MasterThesis.blg"
-["pdflatex"] 1715609533 "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.tex" "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.pdf" "MasterThesis" 1715609534
-  "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.aux" 1715609533 8 a94a2480d3289e625eea47cd1b285758 ""
-  "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.tex" 1708595575 2030 b07d38d40f55a12ddbb2150cd1cb0161 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/map/fontname/texfonts.map" 1511824771 3332 103109f5612ad95229751940c61aada0 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmcsc10.tfm" 1136768653 1300 63a6111ee6274895728663cf4b4e7e81 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmss12.tfm" 1136768653 1324 37b971caf729d7edd9cbb9f9b0ea76eb ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmss17.tfm" 1136768653 1320 ed93d62c5f2c16343826001f03341dbc ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmssbx10.tfm" 1136768653 1272 e2d13f0df30bf3ad990bb9d028e37f34 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/tfm/public/cm/cmti12.tfm" 1136768653 1484 ed72f8f5cf654cda15ecc8e32bfcbee5 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1248133631 32080 340ef9bf63678554ee606688e7b5339d ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb" 1248133631 36741 fa121aac0049305630cf160b86157ee4 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb" 1248133631 35469 70d41d2b9ea31d5d813066df7c99281c ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1248133631 32722 d7379af29a190c3f453aba36302ff5a9 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmssbx10.pfb" 1248133631 28902 2f5c04fd2884d1878057baa5aad22765 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb" 1248133631 32587 1788b0c1c5b39540c96f5e42ccd6dae8 ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb" 1248133631 32626 4f5c1b83753b1dd3a97d1b399a005b4b ""
-  "/usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb" 1248133631 36118 fad905eba93cff5bce1e185fe980a177 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/babel/babel.def" 1557004175 78303 c54368864528e704f6f347e670e631cd ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/babel/babel.sty" 1557004175 17694 218403ecedc79eb72e8ecde7bc3b3f87 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/babel/switch.def" 1557004175 14454 24b05ffde1fce7ca761904a613e8ce1f ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/babel/txtbabel.def" 1554327732 7435 ef73091c345c1e2e85b0f9a441eb1f7d ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1463608860 8237 3b62ef1f7e2c23a328c814b3893bc11f ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1536701967 185392 b99a6d53180e04300c35e18725f31231 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1465595255 70864 bcd5b216757bd619ae692a151d90085d ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/base/ifthen.sty" 1523050425 5161 c004ea5a189d4bdcf42e86754ad75a58 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/base/omscmr.fd" 1523050425 2472 aa08940f0a4dc6c24ae9f943b04ae0b9 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/base/report.cls" 1544567569 22992 ac205d2578ad3f18cf73b50579632d1c ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/base/size12.clo" 1544567569 8305 6a682ae291edd56e2d7accbf95eca451 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/colortbl/colortbl.sty" 1544741426 10678 47854138cd4fdca1d7b24b0290c999d4 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/eso-pic/eso-pic.sty" 1526160256 11991 c1669f88e13f8bb6243df144e456b477 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1548974385 11128 a53805799bebfed6358fc1658a18e41f ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/color.sty" 1523134385 7028 112f909feb676788e7ea1c5b0b76320f ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/epsfig.sty" 1523134385 3390 371f3edde417b3763d7e25ed5bb647ec ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/graphics.sty" 1523134385 15272 5a97061616e0c8b2aa79c6615ff769f4 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/graphicx.sty" 1523134385 9063 d0a305975932762117cd1f06a582f896 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/keyval.sty" 1523134385 2591 6404d0c7d28505fb38ce0d86c2e28ae7 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/lscape.sty" 1523134385 1754 456e1ddf48323a62f9e0fbc379de63a3 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/trig.sty" 1523134385 3977 cb9221976ed8a183afad65b59aa8629a ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/hpdftex.def" 1543704539 51744 477aad43ad6a7ba8c462d20c3e0808e0 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/hyperref.sty" 1543704539 236074 d994150943d35d6af0d586a60cc78dd1 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/nameref.sty" 1465687530 12949 81e4e808884a8f0e276b69410e234656 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/hyperref/pd1enc.def" 1543704539 14098 b4e1ecab4699a0341b8e1349e4c53fb1 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1254097189 235 6031e5765137be07eed51a510b2b8fb7 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/listings/listings.cfg" 1551393442 1830 8ebf24b6078970a5f7b81814f96ef6bc ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/listings/listings.sty" 1551393442 80450 ccf6250c881393368e27f23b483782ab ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/listings/lstmisc.sty" 1551393442 77022 9205b75844150972cc4077e78ec26b25 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/natbib/natbib.sty" 1291685959 45456 1c8843383c0bd05870c45fa0ebea6cc2 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1463608860 3834 4363110eb0ef1eb2b71c8fcbcdb6c357 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1463608860 12095 5337833c991d80788a43d3ce26bd1c46 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/grfext.sty" 1463608860 7075 2fe3d848bba95f139de11ded085e74aa ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1463608860 3720 63669daeb0b67d5fbec899824e2f1491 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1463608860 22417 1d9df1eb66848aa31b18a593099cf45c ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/pdflscape.sty" 1463348357 6688 c84de1eae6cda82865a6d3d09e339ec9 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1463608860 9581 023642318cef9f4677efe364de1e2a27 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/pdfpages/pdfpages.sty" 1509485055 52989 80e784f009ef46fd8220535bd14a7d82 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/pdfpages/pppdftex.def" 1509485055 6364 ca3f15bd79c5439d528d1a286b3405c1 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/shadow/shadow.sty" 1288893655 4274 0483d04191c1937afb7f81210c4767b0 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/titlesec/block.tss" 1458858524 1410 f5fabf556740993e1391ddd9561033c8 ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/tools/array.sty" 1546812253 12527 31ab547f6520657998ecf91709f950ac ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/tools/calc.sty" 1523050425 10212 357072c1d20578a30d6387d8a22e72ab ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/tools/xspace.sty" 1523050425 4542 5251001fb2c96205905dbac86c51c5ab ""
-  "/usr/local/texlive/2019/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
-  "/usr/local/texlive/2019/texmf-dist/web2c/texmf.cnf" 1557092114 35484 cb1661360667bf4db662a8895053b554 ""
-  "/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1557342064 3277517 23507ed665b4dd9046f0f2a94bbef2be ""
-  "/usr/local/texlive/2019/texmf-var/web2c/pdftex/pdflatex.fmt" 1581889033 4259636 d37c56afa7e03d15fcc5f2788a45c45a ""
-  "/usr/local/texlive/2019/texmf.cnf" 1557341546 577 d150fef99ac436ad1156e86b0892f6ef ""
-  "00-Abstract.tex" 1714059270 2073 13ccc55c5cd51514a665533fb52a9e1c ""
-  "00-Acknowledgements.tex" 1715427653 656 ee65fbbb6b3664787846529a5549f9a8 ""
-  "00-NedSamenvatting.tex" 1312367667 167 8399376b625bface729d36e4e2250554 ""
-  "01-Introduction.tex" 1715427459 4584 bd9332205df766b6e0dc472aad14af43 ""
-  "02-Background.tex" 1715442328 44801 ff31ac7490e0242d73bd5ec8ad5859c4 ""
-  "03-Methodology.tex" 1715609533 6243 9e57ae7d631a7e179935aa678199bad4 ""
-  "04-Implementation.tex" 1708595418 112 55cb6455e2f9f0104ec4d8e6d0f49273 ""
-  "05-Examples.tex" 1708595429 100 9e94dd9a3549d797588d04c14167759b ""
-  "99-Conclusions.tex" 1312367667 96 14738e95e1c9f65e878257a213a68c0e ""
-  "AA-Testcode.tex" 1312367667 88 92b0f084449dc6404f28e8aa563e51d2 ""
-  "MasterThesis.aux" 0 -1 0 "pdflatex"
-  "MasterThesis.bbl" 1715428329 2894 1197f90e1f331fc225e7b9a639c97f93 "bibtex MasterThesis"
-  "MasterThesis.out" 0 -1 0 "pdflatex"
-  "MasterThesis.tex" 1708595575 2030 b07d38d40f55a12ddbb2150cd1cb0161 ""
-  "algorithm2e.sty" 1312367667 90314 30002475f17985f6891a4234c2b3fb79 ""
-  "appendix.sty" 1312367667 8966 36f3fb990db085b747e9212d3dddd969 ""
-  "comp.sty" 1322491102 22573 32f91057d0cde4d85b672e75fe038916 ""
-  "fncychap.sty" 1312367667 18802 524a3e548e4cea4360a6ecd21ff1dd71 ""
-  "images/UA-LogoText.png" 1312367667 22386 866b3200128b22ab32dffaddf861ffb2 ""
-  "images/ansymo_logo.pdf" 1322491050 32116 b297edcffd787b5dfbbcd42653b6f5a7 ""
-  "lineno.sty" 1312367667 62108 fd7538fc2f881bc48827cacfb8a55424 ""
-  "paralist.sty" 1312367667 14612 3f6ffd5c93ae0d11f6a016f56fd319e1 ""
-  "picinpar.sty" 1312367667 24409 c0cc078f3063909ee9f34b5dc9ae71ef ""
-  "titlesec.sty" 1312367667 47627 5593f18067f6da9a34ba2dc08abaee8e ""
-  (generated)
-  "MasterThesis.out"
-  "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.log"
-  "MasterThesis.aux"
-  "MasterThesis.pdf"
-  "MasterThesis.log"
-  "MasterThesis.toc"
-  "/Users/sampieters/Desktop/VSCodeProjects/SCCD2DEVS/paper/MasterThesis.pdf"
-  "MasterThesis.lot"
-  "MasterThesis.lof"

BIN
paper/MasterThesis.pdf


BIN
paper/MasterThesis.synctex.gz


+ 0 - 70
paper/MasterThesis.tex

@@ -1,70 +0,0 @@
-\documentclass[a4paper,12pt]{report}
-
-\usepackage[masterthesis,english]{comp}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\title{Translating statecharts and class diagrams to DEVS}
-\author{Sam Pieters}
-\principaladviser{Hans Vangheluwe}
-\assistantadviser{Joeri Exelmans}
-\submitdate{May 2024}
-\bibfile{references}
-\bibpunct{[}{]}{;}{a}{,}{,}
-%\bibliographystyle{alpha}
-
-% Make hyperref package use black links
-\hypersetup{
-	pdfauthor={Author of this thesis},
-	pdftitle={Title of this masterThesis},
-	pdfkeywords={some keywords},
-    colorlinks,
-    citecolor=black,
-    filecolor=black,
-    linkcolor=black,
-    urlcolor=black
-}
-
-%correct faulty hyphenation here, most usefull for "nederlandstalige samenvatting" as english is hyphenated automatically
-\hyphenation{die-nen}
-
-% Make sure links to images link correctly to the image and not the text
-\usepackage[all]{hypcap}
-
-%TODO COMMANDS
-\newcommand{\todo}[1]{
-	\addcontentsline{tdo}{todo}{\protect{#1}}
-    \textcolor{blue}{TODO: #1} %\marginpar{#1}
-}
-
-\makeatletter \newcommand \listoftodos{\section*{Todo list} \@starttoc{tdo}}
-  \newcommand\l@todo[2]
-    {\par\noindent \textit{#2}, \parbox{14cm}{#1}\par} \makeatother
-
-%Make sure that subenumerations are also numbered and referenced correctly
-\renewcommand{\theenumii}{.\arabic{enumii}}
-\renewcommand{\labelenumii}{\labelenumi\arabic{enumii}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{document}
-%\listoftodos
-%\newpage
-\frontpages
-\input{00-NedSamenvatting}
-\input{00-Acknowledgements}
-\input{00-Abstract}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\mainbodypages
-\input{01-Introduction}
-\input{02-Background.tex}
-\input{03-Methodology.tex}
-\input{04-Implementation.tex}
-\input{05-Examples.tex}
-\input{99-Conclusions}
-\backpages
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{appendices}
-\input{AA-Testcode}
-\end{appendices}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\end{document}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 2122
paper/algorithm2e.sty


+ 0 - 302
paper/appendix.sty

@@ -1,302 +0,0 @@
-%%
-%% This is file `appendix.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% appendix.dtx  (with options: `usc')
-%% 
-%% -----------------------------------------------------------------
-%%   Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com until June 2004
-%%                              (or at: pandgwilson at earthlink dot net)
-%%   Copyright 1998 --- 2004 Peter R. Wilson
-%% 
-%%   This work may be distributed and/or modified under the
-%%   conditions of the LaTeX Project Public License, either
-%%   version 1.3 of this license or (at your option) any
-%%   later version.
-%%   The latest version of the license is in
-%%      http://www.latex-project.org/lppl.txt
-%%   and version 1.3 or later is part of all distributions of
-%%   LaTeX version 2003/06/01 or later.
-%% 
-%%   This work has the LPPL maintenance status "author-maintained".
-%% 
-%%   This work consists of the files listed in the README file.
-%% -----------------------------------------------------------------
-%% 
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{appendix}[2002/08/06 v1.2 extra appendix facilities]
-
-\newif\if@chapter@pp\@chapter@ppfalse
-\newif\if@knownclass@pp\@knownclass@ppfalse
-\@ifundefined{chapter}{%
-  \@ifundefined{section}{}{\@knownclass@pptrue}}{%
-  \@chapter@pptrue\@knownclass@pptrue}
-\providecommand{\phantomsection}{}
-\newcounter{@pps}
-  \renewcommand{\the@pps}{\alph{@pps}}
-\newif\if@pphyper
-  \@pphyperfalse
-\AtBeginDocument{%
-  \@ifpackageloaded{hyperref}{\@pphypertrue}{}}
-
-\newif\if@dotoc@pp\@dotoc@ppfalse
-\newif\if@dotitle@pp\@dotitle@ppfalse
-\newif\if@dotitletoc@pp\@dotitletoc@ppfalse
-\newif\if@dohead@pp\@dohead@ppfalse
-\newif\if@dopage@pp\@dopage@ppfalse
-\DeclareOption{toc}{\@dotoc@pptrue}
-\DeclareOption{title}{\@dotitle@pptrue}
-\DeclareOption{titletoc}{\@dotitletoc@pptrue}
-\DeclareOption{header}{\@dohead@pptrue}
-\DeclareOption{page}{\@dopage@pptrue}
-\ProcessOptions\relax
-\newcommand{\@ppendinput}{}
-\if@knownclass@pp\else
-  \PackageWarningNoLine{appendix}%
-    {There is no \protect\chapter\space or \protect\section\space command.\MessageBreak
-     The appendix package will not be used}
-  \renewcommand{\@ppendinput}{\endinput}
-\fi
-\@ppendinput
-
-\newcommand{\appendixtocon}{\@dotoc@pptrue}
-\newcommand{\appendixtocoff}{\@dotoc@ppfalse}
-\newcommand{\appendixpageon}{\@dopage@pptrue}
-\newcommand{\appendixpageoff}{\@dopage@ppfalse}
-\newcommand{\appendixtitleon}{\@dotitle@pptrue}
-\newcommand{\appendixtitleoff}{\@dotitle@ppfalse}
-\newcommand{\appendixtitletocon}{\@dotitletoc@pptrue}
-\newcommand{\appendixtitletocoff}{\@dotitletoc@ppfalse}
-\newcommand{\appendixheaderon}{\@dohead@pptrue}
-\newcommand{\appendixheaderoff}{\@dohead@ppfalse}
-\newcounter{@ppsavesec}
-\newcounter{@ppsaveapp}
-\setcounter{@ppsaveapp}{0}
-\newcommand{\@ppsavesec}{%
-  \if@chapter@pp \setcounter{@ppsavesec}{\value{chapter}} \else
-                 \setcounter{@ppsavesec}{\value{section}} \fi}
-\newcommand{\@pprestoresec}{%
-  \if@chapter@pp \setcounter{chapter}{\value{@ppsavesec}} \else
-                 \setcounter{section}{\value{@ppsavesec}} \fi}
-\newcommand{\@ppsaveapp}{%
-  \if@chapter@pp \setcounter{@ppsaveapp}{\value{chapter}} \else
-                 \setcounter{@ppsaveapp}{\value{section}} \fi}
-\newcommand{\restoreapp}{%
-  \if@chapter@pp \setcounter{chapter}{\value{@ppsaveapp}} \else
-                 \setcounter{section}{\value{@ppsaveapp}} \fi}
-\providecommand{\appendixname}{Appendix}
-\newcommand{\appendixtocname}{Appendices}
-\newcommand{\appendixpagename}{Appendices}
-\newcommand{\appendixpage}{%
-  \if@chapter@pp \@chap@pppage \else \@sec@pppage \fi
-}
-\newcommand{\clear@ppage}{%
-  \if@openright\cleardoublepage\else\clearpage\fi}
-
-\newcommand{\@chap@pppage}{%
-  \clear@ppage
-  \thispagestyle{plain}%
-  \if@twocolumn\onecolumn\@tempswatrue\else\@tempswafalse\fi
-  \null\vfil
-  \markboth{}{}%
-  {\centering
-   \interlinepenalty \@M
-   \normalfont
-   \Huge \bfseries \appendixpagename\par}%
-  \if@dotoc@pp
-    \addappheadtotoc
-  \fi
-  \vfil\newpage
-  \if@twoside
-    \if@openright
-      \null
-      \thispagestyle{empty}%
-      \newpage
-    \fi
-  \fi
-  \if@tempswa
-    \twocolumn
-  \fi
-}
-
-\newcommand{\@sec@pppage}{%
-  \par
-  \addvspace{4ex}%
-  \@afterindentfalse
-  {\parindent \z@ \raggedright
-   \interlinepenalty \@M
-   \normalfont
-   \huge \bfseries \appendixpagename%
-   \markboth{}{}\par}%
-  \if@dotoc@pp
-    \addappheadtotoc
-  \fi
-  \nobreak
-  \vskip 3ex
-  \@afterheading
-}
-
-\newif\if@pptocpage
-  \@pptocpagetrue
-\newcommand{\noappendicestocpagenum}{\@pptocpagefalse}
-\newcommand{\appendicestocpagenum}{\@pptocpagetrue}
-\newcommand{\addappheadtotoc}{%
-  \phantomsection
-  \if@chapter@pp
-    \if@pptocpage
-      \addcontentsline{toc}{chapter}{\appendixtocname}%
-    \else
-      \if@pphyper
-        \addtocontents{toc}%
-          {\protect\contentsline{chapter}{\appendixtocname}{}{\@currentHref}}%
-      \else
-        \addtocontents{toc}%
-          {\protect\contentsline{chapter}{\appendixtocname}{}}%
-      \fi
-    \fi
-  \else
-    \if@pptocpage
-      \addcontentsline{toc}{section}{\appendixtocname}%
-    \else
-      \if@pphyper
-        \addtocontents{toc}%
-          {\protect\contentsline{section}{\appendixtocname}{}{\@currentHref}}%
-      \else
-        \addtocontents{toc}%
-          {\protect\contentsline{section}{\appendixtocname}{}}%
-      \fi
-    \fi
-  \fi
-}
-
-\providecommand{\theH@pps}{\alph{@pps}}
-
-\newcommand{\@resets@pp}{\par
-  \@ppsavesec
-  \stepcounter{@pps}
-  \setcounter{section}{0}%
-  \if@chapter@pp
-    \setcounter{chapter}{0}%
-    \renewcommand\@chapapp{\appendixname}%
-    \renewcommand\thechapter{\@Alph\c@chapter}%
-  \else
-    \setcounter{subsection}{0}%
-    \renewcommand\thesection{\@Alph\c@section}%
-  \fi
-  \if@pphyper
-    \if@chapter@pp
-      \renewcommand{\theHchapter}{\theH@pps.\Alph{chapter}}%
-    \else
-      \renewcommand{\theHsection}{\theH@pps.\Alph{section}}%
-    \fi
-    \def\Hy@chapapp{\appendixname}%
-  \fi
-  \restoreapp
-}
-
-\newenvironment{appendices}{%
-  \@resets@pp
-  \if@dotoc@pp
-    \if@dopage@pp              % both page and toc
-      \if@chapter@pp           % chapters
-        \clear@ppage
-      \fi
-      \appendixpage
-    \else                      % toc only
-       \if@chapter@pp          % chapters
-         \clear@ppage
-       \fi
-      \addappheadtotoc
-    \fi
-  \else
-    \if@dopage@pp              % page only
-      \appendixpage
-    \fi
-  \fi
-  \if@chapter@pp
-    \if@dotitletoc@pp \@redotocentry@pp{chapter} \fi
-  \else
-    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
-    \if@dohead@pp
-      \def\sectionmark##1{%
-        \if@twoside
-          \markboth{\@formatsecmark@pp{##1}}{}
-        \else
-          \markright{\@formatsecmark@pp{##1}}{}
-        \fi}
-    \fi
-    \if@dotitle@pp
-      \def\sectionname{\appendixname}
-      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
-        \csname the##1\endcsname\quad}
-    \fi
-  \fi}{%
-  \@ppsaveapp\@pprestoresec}
-
-\newcommand{\setthesection}{\thechapter.\Alph{section}}
-\newcommand{\setthesubsection}{\thesection.\Alph{subsection}}
-
-\newcommand{\@resets@ppsub}{\par
-  \stepcounter{@pps}
-  \if@chapter@pp
-    \setcounter{section}{0}
-    \renewcommand{\thesection}{\setthesection}
-  \else
-    \setcounter{subsection}{0}
-    \renewcommand{\thesubsection}{\setthesubsection}
-  \fi
-  \if@pphyper
-    \if@chapter@pp
-      \renewcommand{\theHsection}{\theH@pps.\setthesection}%
-    \else
-      \renewcommand{\theHsubsection}{\theH@pps.\setthesubsection}%
-    \fi
-    \def\Hy@chapapp{\appendixname}%
-  \fi
-}
-
-\newenvironment{subappendices}{%
-  \@resets@ppsub
-  \if@chapter@pp
-    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
-    \if@dotitle@pp
-      \def\sectionname{\appendixname}
-      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
-        \csname the##1\endcsname\quad}
-    \fi
-  \else
-    \if@dotitletoc@pp \@redotocentry@pp{subsection} \fi
-    \if@dotitle@pp
-      \def\subsectionname{\appendixname}
-      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
-        \csname the##1\endcsname\quad}
-    \fi
-  \fi}{}
-
-\newcommand{\@formatsecmark@pp}[1]{%
-  \MakeUppercase{\appendixname\space
-    \ifnum \c@secnumdepth >\z@
-      \thesection\quad
-    \fi
-    #1}}
-\newcommand{\@redotocentry@pp}[1]{%
-  \let\oldacl@pp=\addcontentsline
-  \def\addcontentsline##1##2##3{%
-    \def\@pptempa{##1}\def\@pptempb{toc}%
-    \ifx\@pptempa\@pptempb
-      \def\@pptempa{##2}\def\@pptempb{#1}%
-      \ifx\@pptempa\@pptempb
-\oldacl@pp{##1}{##2}{\appendixname\space ##3}%
-      \else
-        \oldacl@pp{##1}{##2}{##3}%
-      \fi
-    \else
-      \oldacl@pp{##1}{##2}{##3}%
-    \fi}
-}
-
-\endinput
-%%
-%% End of file `appendix.sty'.

+ 0 - 897
paper/comp.sty

@@ -1,897 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%  IDENTIFICATION
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{comp}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%   SETUP MACROS AND SWITCHES
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\@title{}
-\def\@author{}
-
-\def\titlepageblurb#1{\gdef\@titlepageblurb{#1}}
-\def\principaladviser#1{\gdef\@principaladviser{#1}}
-\def\@principaladviser{*}
-\def\coprincipaladviser#1{\gdef\@coprincipaladviser{#1}}
-\def\@coprincipaladviser{*}
-\def\assistantadviser#1{\gdef\@assistantadviser{#1}}
-\def\@assistantadviser{*}
-\def\submitdate#1{\gdef\@submitdate{#1}}
-\def\copyrightyear#1{\gdef\@copyrightyear{#1}} 
-\def\@copyrightyear{\number\the\year}
-\def\reportnumber#1{\gdef\@reportnumber{#1}}
-%\def\tocdepthvalue#1{\gdef\@tocdepthvalue{#1}}
-%\def\secnumdepthvalue#1{\gdef\@secnumdepthvalue{#1}}
-\def\@tocdepthvalue{}
-\def\@secnumdepthvalue{}
-
-\def\bibfile#1{\gdef\@bibfile{#1}}
-
-\newif\ifw@ntsignature
-\newif\ifw@ntcopyright
-\newif\ifw@nttableofcontents
-\newif\ifw@ntlistoffigures
-\newif\ifw@ntlistoftables
-\newif\ifw@ntbibliography
-\newif\ifw@ntindex
-\newif\ifw@ntnumbers
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%  OPTION DECLARATION PART
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%-------------------
-%%%%  ENGLISH OPTION
-%-------------------
-\DeclareOption{english}{%
-		\PassOptionsToPackage{english}{babel}
-		%
-		\def\@submitdate{%
-				\ifcase\the\month\or
-				January\or February\or March\or April\or May\or June\or
-				July\or August\or September\or October\or November\or December\fi
-				\space \number\the\year
-		}
-		%
-		\def\@phddegree{Doctor}
-		%
-		\def\@masterdegree{Master}
-		%
-		\def\@bachelordegree{Bachelor}
-		%
-		\def\@advisername{Principal Adviser}
-		%
-		\def\@coadvisername{Principal Co-Adviser}
-		%
-		\def\@assistantadvisername{Assistant Adviser}
-		%
-		\def\@dissertationblurb{
-		   	Dissertation Submitted in \@submitdate\ to the\\
-		   	Department of Mathematics and Computer Science\\
-		   	of the Faculty of Sciences, University of Antwerp,\\
-		   	in Partial Fulfillment of the Requirements\\
-		   	for the Degree of \@thesisdegree\ of Science.
-		}
-		%
-		\def\@techreportblurb{
-		   	Technical Report \@reportnumber , submitted \@submitdate . \\
-		   	Department of Mathematics and Computer Science\\
-		   	of the Faculty of Sciences, University of Antwerp.
-		}
-		%
-		\def\@advisersblurb{%
-				\if*\@principaladviser \else
-		  			{\@advisername: \@principaladviser} \\
-		  	\fi
-		  	\if*\@coprincipaladviser \else
-		  			{\@coadvisername : \@coprincipaladviser}\\
-		  	\fi
-		  	\if*\@assistantadviser \else
-		  			{\@assistantadvisername : \@assistantadviser}\\
-		  	\fi
-		}
-		%
-		\def\@courseblurb{
-		   	\@coursedegree\ of Computer Science curriculum,\\
-		   	Faculty of Sciences, University of Antwerp.\\
-		   	Course notes for academic year \@submitdate.
-		}
-		%
-		\def\@researchgroupblurb{%
-				
-		}
-		%
-		\def\@signatureblurb{%
-				I certify that I have read this dissertation and that, 
-    		in my opinion, it is fully adequate in scope and quality as a 
-        dissertation for the degree of \@thesisdegree.
-		}
-		%
-		\def\@copyrightblurb{%
-				All rights reserved.
-		}
-}
-
-%-----------------
-%%%%  DUTCH OPTION
-%-----------------
-\DeclareOption{dutch}{%
-		\PassOptionsToPackage{dutch}{babel}
-		%
-		\def\@submitdate{%
-				\ifcase\the\month\or
-				Januari\or Februari\or Maart\or April\or Mei\or Juni\or
-				Juli\or Augustus\or September\or Oktober\or November\or December\fi
-				\space \number\the\year
-		}
-		%
-		\def\@phddegree{Doctor}
-		%
-		\def\@masterdegree{Master}
-		%
-		\def\@bachelordegree{Bachelor}
-		%
-		\def\@advisername{Promotor}
-		%
-		\def\@coadvisername{Co-Promotor}
-		%
-		\def\@assistantadvisername{Begeleider}
-		%
-		\def\@dissertationblurb{
-		   	Thesis ingediend in \@submitdate\ bij het\\
-		   	Departement Wiskunde en Informatica van de\\
-		   	Faculteit Wetenschappen, Universiteit Antwerpen,\\
-		   	ter vervulling van de vereisten voor het bekomen\\
-		   	van het Diploma van \@thesisdegree\ in de Wetenschappen.
-		   	\newline
-		}
-		%
-		\def\@advisersblurb{%
-				\if*\@principaladviser \else
-		  			{\@advisername: \@principaladviser} \\
-		  	\fi
-		  	\if*\@coprincipaladviser \else
-		  			{\@coadvisername : \@coprincipaladviser}\\
-		  	\fi
-		  	\if*\@assistantadviser \else
-		  			{\@assistantadvisername : \@assistantadviser}\\
-		  	\fi
-		}
-		%
-		\def\@courseblurb{
-		   	Opleiding \@coursedegree\ of Science in Informatica, van de\\
-		   	Faculteit Wetenschappen, Universiteit Antwerpen.\\
-		   	Nota's bij de cursus voor academiejaar \@submitdate.
-		   	\newline
-		}
-		%
-		\def\@researchgroupblurb{% 
-				
-		}
-		%
-		\def\@signatureblurb{%
-				Ik verklaar dat ik deze thesis heb gelezen en dat, naar mijn
-				mening, het werk in draagwijdte en kwaliteit beantwoordt
-				aan de vereisten voor een thesis voor het diploma van  
-    	  \@thesisdegree.
-		}
-		%
-		\def\@copyrightblurb{%
-				Alle rechten voorbehouden.
-		}
-}
-
-
-%---------------------
-%%%%  PHDTHESIS OPTION
-%---------------------
-\DeclareOption{phdthesis}{%
-   	\def\@thesisdegree{\@phddegree}
-   	\def\@titlepageblurb{\@dissertationblurb}
-   	\w@ntcopyrighttrue
-   	\w@ntsignaturetrue
-   	\w@nttableofcontentstrue
-   	\def\@tocdepthvalue{2}
-   	\w@nttableofcontentstrue
-   	\w@ntlistoffigurestrue		
-   	\w@ntlistoftablestrue
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindextrue		
-}
-
-
-%------------------------
-%%%%  MASTERTHESIS OPTION
-%------------------------
-\DeclareOption{masterthesis}{%
-   	\def\@thesisdegree{\@masterdegree}
-   	\def\@titlepageblurb{\@dissertationblurb}
-   	\w@ntcopyrightfalse
-   	\w@ntsignaturefalse
-   	\w@nttableofcontentstrue
-   	\def\@tocdepthvalue{2}
-   	\w@ntlistoffigurestrue		
-   	\w@ntlistoftablestrue		
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-
-%--------------------------
-%%%%  BACHELORTHESIS OPTION
-%--------------------------
-\DeclareOption{bachelorthesis}{%
-   	\def\@thesisdegree{\@bachelordegree}
-   	\def\@titlepageblurb{\@dissertationblurb}
-   	\w@ntsopyrightfalse
-   	\w@ntsignaturefalse
-   	\w@nttableofcontentstrue
-   	\def\@tocdepthvalue{1}
-   	\w@ntlistoffiguresfalse		
-   	\w@ntlistofoablesfalse		
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-%------------------------
-%%%%  MASTERCOURSE OPTION
-%------------------------
-\DeclareOption{mastercourse}{%
-   	\def\@coursedegree{\@masterdegree}
-   	\def\@titlepageblurb{\@courseblurb}
-   	\w@ntcopyrightfalse
-   	\w@ntsignaturefalse
-   	\w@nttableofcontentstrue
-   	\def\@tocdepthvalue{1}
-   	\w@ntlistoffiguresfalse		
-   	\w@ntlistoftablesfalse
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-%--------------------------
-%%%%  BACHELORCOURSE OPTION
-%--------------------------
-\DeclareOption{bachelorcourse}{%
-   	\def\@coursedegree{\@bachelordegree}
-   	\def\@titlepageblurb{\@courseblurb}
-   	\w@nttableofcontentstrue
-   	\w@ntcopyrightfalse
-   	\w@ntsignaturefalse
-   	\def\@tocdepthvalue{1}
-   	\w@ntlistoffiguresfalse		
-   	\w@ntlistoftablesfalse
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-%----------------------
-%%%%  TECHREPORT OPTION
-%----------------------
-\DeclareOption{techreport}{%
-   	\def\@titlepageblurb{\@techreportblurb}
-   	\w@nttableofcontentstrue
-   	\w@ntcopyrightfalse
-   	\w@ntsignaturefalse
-   	\def\@tocdepthvalue{1}
-   	\w@ntlistoffiguresfalse		
-   	\w@ntlistoftablesfalse
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-%-------------------
-%%%%  GENERIC OPTION
-%-------------------
-\DeclareOption{generic}{%
-   	\def\@titlepageblurb{}
-   	\w@nttableofcontentsfalse
-   	\w@ntcopyrightfalse
-   	\w@ntsignaturefalse
-   	\def\@tocdepthvalue{1}
-   	\w@ntlistoffiguresfalse		
-   	\w@ntlistoftablesfalse
-   	%	
-   	\def\@secnumdepthvalue{2}
-   	%
-   	\w@ntbibliographytrue
-   	\w@ntindexfalse		
-}
-
-%---------------------------------
-%%%%  COPYRIGHT/NOCOPYRIGHT OPTION
-%---------------------------------
-\DeclareOption{copyright}{%
-		\w@ntcopyrighttrue
-}
-
-\DeclareOption{nocopyright}{%
-		\w@ntcopyrightfalse
-}
-
-%---------------------------------
-%%%%  SIGNATURE/NOSIGNATURE OPTION
-%---------------------------------
-\DeclareOption{signature}{%
-		\w@ntsignaturetrue
-}
-
-\DeclareOption{nosignature}{%
-		\w@ntsignaturefalse
-}
-
-%---------------------------------
-%%%%  TABLEOFCONTENTS/NOTABLEOFCONTENTS OPTION
-%---------------------------------
-\DeclareOption{tableofcontents}{%
-		\w@nttableofcontentstrue
-}
-
-\DeclareOption{notableofcontents}{%
-		\w@nttableofcontentsfalse
-}
-
-%-----------------------------------------
-%%%%  LISTOFFIGURES/NOLISTOFFIGURES OPTION
-%-----------------------------------------
-\DeclareOption{listoffigures}{%
-		\w@ntlistoffigurestrue
-}
-
-\DeclareOption{nolistoffigures}{%
-		\w@ntlistoffiguresfalse
-}
-
-
-%---------------------------------------
-%%%%  LISTOFTABLES/NOLISTOFTABLES OPTION
-%---------------------------------------
-\DeclareOption{listoftables}{%
-		\w@ntlistoftablestrue
-}
-
-\DeclareOption{nolistoftables}{%
-		\w@ntlistoftablesfalse
-}
-
-%---------------------------------------
-%%%%  BIBLIOGRAPHY/NOBIBLIOGRAPHY OPTION
-%---------------------------------------
-\DeclareOption{bibliograpy}{%
-		\w@ntbibliographytrue
-}
-
-\DeclareOption{nobibliography}{%
-		\w@ntbibliographyfalse
-}
-
-%-------------------------
-%%%%  INDEX/NOINDEX OPTION
-%-------------------------
-\DeclareOption{index}{%
-		\makeindex
-		\w@ntindextrue
-}
-
-\DeclareOption{noindex}{%
-		\w@ntindexfalse
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%  EXECUTION OF OPTIONS PART
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ExecuteOptions{phdthesis,english}
-\ProcessOptions
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%  PACKAGE LOADING PART
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\RequirePackage{graphicx}
-\RequirePackage[dvips,dvipdf,pdftex]{graphicx}
-%\DeclareGraphicsRule{*}{mps}{*}{}
-%\DeclareGraphicsExtensions{.jpg,.mps,.pdf,.png,.ps}
-\DeclareGraphicsRule{*}{eps}{*}{}
-\RequirePackage[Sonny]{fncychap}
-\RequirePackage[noindentafter,calcwidth]{titlesec}
-\RequirePackage{fancyhdr}
-\RequirePackage{paralist}
-\RequirePackage{listings,color}
-\RequirePackage[toc,page,title,titletoc]{appendix}
-\RequirePackage[round]{natbib}
-\RequirePackage{url}
-\RequirePackage{babel}
-\RequirePackage{ifthen}
-\RequirePackage{picinpar}
-\RequirePackage{colortbl}
-\RequirePackage{shadow}
-\RequirePackage{lineno}
-\RequirePackage{algorithm2e}
-\RequirePackage{epsfig}
-\RequirePackage{hyperref}
-% make sure to link CORRECTLY to images and tables, and not to the caption
-% needs to be loaded AFTER the hyperref package
-
-%
-\ifw@ntindex
-		\RequirePackage{makeidx}
-\fi
-%
-\ifcase\pdfoutput
-\else
-\RequirePackage{pdfpages}
-\fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%   MAIN CODE PART: TEXTPAGE FORMATTING
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-%---------------
-%%%% PAGE LAYOUT
-%---------------
-\oddsidemargin=1.80cm 
-\textwidth=14cm 
-\setlength{\voffset}{-10mm}
-\setlength{\textheight}{215mm}
-\setlength{\headheight}{14pt}
-%\setlength{\parindent}{0.0mm}
-%\addtolength{\parskip}{0.3\baselineskip}
-
-%--------------
-%%%% PAGE STYLE
-%--------------
-\fancypagestyle{compP@geStyle}{%
-		\fancyhf{}	
-		\rhead{\thepage}
-		\lhead{\rightmark}
-		\renewcommand{\headrulewidth}{0.5pt}
-		\renewcommand{\footrulewidth}{0pt}
-		\addtolength{\headheight}{0.5pt}
-}
-
-\fancypagestyle{plain}{%
-		\fancyhead{}
-		\renewcommand{\headrulewidth}{0pt}
-}
-
-%------------------
-%%%% SECTION TITLES
-%------------------
-\newenvironment{unnumbered}
-{	\setcounter{secnumdepth}{0}%
-	\addtocontents{toc}{\protect\setcounter{tocdepth}{0}\ignorespaces}%
-	\w@ntnumbersfalse
-}
-{	\setcounter{secnumdepth}{2}%
-	\addtocontents{toc}{\protect\setcounter{tocdepth}{2}\ignorespaces}%
-	\w@ntnumberstrue
-}
-
-\AtBeginDocument{
-		\w@ntnumberstrue
-		\setcounter{secnumdepth}{\@secnumdepthvalue}
-
-		\titleformat{\section}[block]
-				{\Large\sffamily\bfseries}
-				{}{0ex}
-				{\titleline*[l]{\titlerule[1pt]}\vspace{4pt} \thesection\quad}
-				[{\titleline*[l]{\vspace{18pt}\titlerule[1pt]}}]
-		\titlespacing*{\section}{0pc}{*3}{*2}
-		%
-		\titleformat{\subsection}[block]
-				{\large\sffamily\bfseries}
-				{}{0ex}
-				%{\ifthenelse{\@secnumdepthvalue<2}{}{\thesubsection\quad}}
-				{\ifw@ntnumbers \thesubsection\quad \else \quad \fi}
-				%[]
-		\titlespacing*{\subsection}{0pc}{*2}{*1}
-		%
-		\titleformat{\subsubsection}[block]
-				{\large\sffamily\bfseries}
-				{}{0ex}
-				{\ifthenelse{\@secnumdepthvalue<3}{}{\thesubsubsection\quad}}
-				[]
-		\titlespacing*{\subsubsection}{0pc}{*1}{*0}
-		%
-		%
-%		\myCppCodeFormat
-%		\myJavaCodeFormat
-		\myShabox
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% MAIN CODE PART : MAKING THE FRONT PAGES
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%--------------
-%%%% TITLE PAGE
-%--------------
-\newcommand{\makeTitlePage}{%
-    \begin{titlepage}
-    		\null
-		    \hbox{  
-			\ifcase\pdfoutput
-				%\includegraphics[scale=0.2]{UA-LogoText.eps} 
-				\includegraphics[5cm,7.2cm][9cm,8.5cm]{images/UA-LogoText.png}
-			\else
-				%\includegraphics[width=50mm, height=10mm, keepaspectratio]{UA-LogoText.jpg}
-				\includegraphics[scale=0.2]{images/UA-LogoText.png}
-				%\includegraphics[5cm,7.2cm][9cm,8.5cm]{UA-LogoText.jpg}
-			\fi
-                    }
-		    \hbox{
-		      	\vrule depth 0.87\textheight%
-		      	\mbox{\hspace{2pt}}
-		      	\vtop{%
-		        	\vskip 70\p@
-		       		\raisebox{0mm}[5ex][0ex]{
-		       				\parbox{12cm}{  {\huge \bfseries \@title  \par}  }
-		       		}
-		       		\vskip 120\p@
-			        \mbox{\hspace{2pt} \bfseries \@author \par}			        
-			        \vskip 120\p@
-					\mbox{\hspace{2pt} \@advisername :\quad \@principaladviser \par}
-					\vskip 5\p@
-					\mbox{\hspace{2pt} \@assistantadvisername :\quad \@assistantadviser \par}
-					\vskip 45\p@
-					\raisebox{0mm}[6ex][0ex]{
-			        		\parbox{10cm}{{\@titlepageblurb} }
-				    }
-			        \vskip 50\p@
-			        \mbox{ 
-					\ifcase\pdfoutput 
-						%\includegraphics[scale=0.5]{CoMP-logo-embedfont.eps} 
-						\includegraphics[bb = 7cm 7.8cm 9.5cm 8.8cm, keepaspectratio]{images/ansymo_logo.pdf} 
-					\else
-						%\includegraphics[width=25mm, height=8mm, keepaspectratio]{CoMP-logo-embedfont.jpg} 
-						\includegraphics[scale=0.5]{images/ansymo_logo.pdf} 
-						%\includegraphics[7cm,7cm][9cm,8cm]{CoMP-logo-embedfont.jpg} 
-					\fi
-                             	}
-			        \raisebox{4mm}{
-					\resizebox{!}{0.37cm}{
-					\parbox{8cm}{ \scshape \@researchgroupblurb }
-					}
-			        }
-		        }
-		    } 
-		    \vfill                   
-  	\end{titlepage}
-}
-
-%-------------------
-%%%%% COPYRIGHT PAGE
-%-------------------
-\newcommand{\makeCopyrightPage}{%
-		\begin{titlepage}
-        \null
-        \vfill
-        \begin{center}
-                \large
-                Copyright\ \copyright\ \@copyrightyear\ \@author\\
-                \@copyrightblurb
-        \end{center}
-        \vfill
-    \end{titlepage}
-}		
-
-%-------------------
-%%%%% SIGNATURE PAGE
-%-------------------
-\newcommand{\signature}[1]{%
-    \vspace{1.0in}
-    \hbox to 5in{\hfil\begin{tabular}{@{}l@{}}
-    \vrule width 4in height 0.4pt depth 0pt\\ #1\end{tabular}}
-}
-
-\newcommand{\makeSignaturePage}{%
-    \begin{titlepage}
-				\begin{flushright}
-		    		\begin{minipage}{5in}
-		      			\vspace{7cm}
-		        	  \@signatureblurb
-		            \par
-		            % pricipal adviser
-		            \signature{\@advisername ,\quad \@principaladviser}
-		            \vfill
-		            % if second principal advisor
-		            \if*\@coprincipaladviser \else
-		            \signature{\@coadvisername ,\quad \@coprincipaladviser}
-		            \vfill\fi
-		            \if*\@assistantadviser \else
-		            \signature{\@assistantadvisername ,\quad \@assistantadviser}
-		            \vfill\fi
-
-		        \end{minipage}
-		    \end{flushright}
-    \end{titlepage}
-}
-
-%---------------------------
-%%%%% TABLE OF CONTENTS PAGE
-%---------------------------
-\AtBeginDocument{
-		\setcounter{tocdepth}{\@tocdepthvalue}
-}
-\newcommand{\makeTableOfContentsPage}{%
-    {\sffamily \tableofcontents}
-}
-
-%-------------------------
-%%%%% LIST OF FIGURES PAGE
-%-------------------------
-\newcommand{\makeListOfFiguresPage}{%
-	\clearpage
-    \phantomsection
-  	\addcontentsline{toc}{chapter}{\listfigurename}
-	\listoffigures
-}
-
-%------------------------
-%%%%% LIST OF TABLES PAGE
-%------------------------
-\newcommand{\makeListOfTablesPage}{%
-	\clearpage
-    \phantomsection
-   	\addcontentsline{toc}{chapter}{\listtablename}
-	\listoftables
-}
-
-%------------------------
-%%%%% LIST OF LISTINGS PAGE
-%------------------------
-\newcommand{\makeListOfListingsPage}{%
-	\renewcommand{\lstlistlistingname}{List of Listings}
-   	\clearpage
-	\phantomsection
-   	\addcontentsline{toc}{chapter}{\lstlistlistingname}
-	\lstlistoflistings%
-}
-
-%---------------
-%%%% FRONT PAGES
-%---------------
-\newcommand{\frontpages}{%    
-	\pagenumbering{roman}
-    \pagestyle{plain}
-   	\makeTitlePage
-   	\ifw@ntcopyright \makeCopyrightPage \fi
-   	\ifw@ntsignature \makeSignaturePage \fi 
-		\ifw@nttableofcontents \makeTableOfContentsPage \fi
-   	\ifw@ntlistoffigures \makeListOfFiguresPage \fi
-   	\ifw@ntlistoftables \makeListOfTablesPage \fi
-	%\makeListOfListingsPage
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% MAIN CODE PART : MAKING THE MAIN BODY PAGES
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%-------------------
-%%%% MAIN BODY PAGES
-%-------------------	
-\newcommand{\mainbodypages}{%
-		\clearpage
-		\pagestyle{compP@geStyle}
-		\pagenumbering{arabic}
-		%\setlength{\parindent}{0.0mm}
-		%\addtolength{\parskip}{0.5\baselineskip} 
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% MAIN CODE PART : MAKING THE BACK PAGES
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%----------------------
-%%%%% BIBLIOGRAPHY PAGE
-%----------------------
-\newcommand{\makeBibliographyPage}{%
-  	\bibliographystyle{plain}
-	\clearpage
-	\phantomsection
-	\addcontentsline{toc}{chapter}{Bibliography}
-  	\bibliography{\@bibfile}
-}
-
-%---------------------
-%%%%%   THE INDEX PAGE
-%---------------------
-\newcommand{\makeIndexPage}{%
-		\addcontentsline{toc}{chapter}{Index}  	
-		\printindex
-}
-
-%--------------
-%%%% BACK PAGES
-%--------------
-\newcommand{\backpages}{%
-		\pagestyle{plain}
-		\ifw@ntbibliography
-				\makeBibliographyPage
-		\fi
-		\ifw@ntindex
-				\makeIndexPage
-		\fi
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% MISCELLANEOUS COMMANDS TO BE USED IN THE MAIN BODY
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%---------
-%%%% myDef
-%---------
-\newcommand{\myDef}[2]{
-    \begin{flushright}
-        \parbox{3.3cm}{
-            \begin{flushleft}
-                {\emph Definitie:\\ \vspace{1mm}}{\bf  #1 }
-            \end{flushleft}
-        }
-        \parbox{10.5cm}{ #2 }
-    \end{flushright}
-}
-
-%---------
-%%%% myTxt
-%---------
-\newcommand{\myTxt}[2]{
-    \begin{flushright}
-        \parbox{3.3cm}{
-            \begin{flushleft}
-                {\bf  #1 }
-            \end{flushleft}
-        }
-        \parbox{10.5cm}{ #2 }
-    \end{flushright}
-}
-
-%------------
-%%%% myMarTxt
-%------------
-\newcommand{\myMarTxt}[1]{
-    \reversemarginpar
-	  \setlength{\marginparwidth}{5cm}
-	  \marginpar[\ \\ \begin{minipage}{5cm}{\begin{flushright} { #1 } \end{flushright}}\end{minipage}]{}
-}
-
-%-------------
-% mySidebarTxt
-%-------------
-\newcommand{\mySidebarTxt}[1]{%
-		\newlength{\temptabcolsep}
-		\setlength{\temptabcolsep}{\tabcolsep}%
-\setlength{\tabcolsep}{0pt}%
-\begin{tabular}{r|>{\columncolor[gray]{0.75}}cr}%
-\begin{minipage}{4cm}%
-						\begin{flushright}
-    #1%
-            \end{flushright}
-\end{minipage}%
-        \hspace*{0.15cm} &%
-		\hspace*{0.15cm} &%
-\end{tabular}%
-\setlength{\tabcolsep}{\temptabcolsep}%
-}
-
-%---------------------
-% myShadedParagraphTxt
-%---------------------
-\newcommand{\shadedparagraph}[1]{%
-\begin{tabular}{>{\columncolor[gray]{.75}}l}%
-\begin{minipage}{0.96\textwidth}%
-\vspace*{0.2cm}%
-#1%
-\vspace*{0.2cm}%
-\end{minipage}%
-\end{tabular}%
-}
-
-%-----------
-% myBoxedTxt
-%-----------
-\newcommand{\framedparagraph}[1]{
-		\setlength{\fboxsep}{0.5cm}
-		\begin{center}
- 				\framebox { \parbox{13cm}{#1}}
-		\end{center}
-}
-
-%----------------
-% myCppCodeFormat
-%----------------
-\newcommand{\myCppCodeFormat}{%
-		\lstloadlanguages{C++}
-		\lstset{language=C++,commentstyle=\scriptsize\color{green}, identifierstyle=\color{red},tabsize=4, xleftmargin=2ex,captionpos=b}
-}
-
-%-----------------
-% myJavaCodeFormat
-%-----------------
-\newcommand{\myJavaCodeFormat}{%
-		\lstloadlanguages{Java}
-		\lstset{language=Java,commentstyle=\scriptsize,identifierstyle=\color{red},tabsize=4, xleftmargin=2ex,captionpos=b}
-}
-
-%-----------------
-% myShabox
-%-----------------
-\newcommand{\myShabox}{%
-		\setlength{\sdim}{6pt}
-}
-
-% graphviz.tex
-% originally written by Derek Rayside, November 2003
-% following an idea that Daniel Jackson implemented in his Tagger program
-%
-% parameters to \digraph:
-% 1 - parameters for \includegraphics (optional; default value is "scale=1")
-% 2 - name of the digraph
-% 3 - body of the digraph
-\newcommand{\digraph}[3][scale=1]{
-\newwrite\dotfile
-\immediate\openout\dotfile=#2.dot
-\immediate\write\dotfile{digraph #2 {\string#3}}
-\immediate\closeout\dotfile
-\IfFileExists{#2.ps}
-% the postscript exists: include it
-{ \includegraphics[#1]{#2} }
-% the postscript doesn't exist: tell the user how to create it
-{ \fbox{ \begin{tabular}{l}
-The file \texttt{#2.ps} hasn't been created from
-\texttt{#2.dot} yet. \\
-Run `\texttt{dot -Tps -o #2.ps #2.dot}' to create it. \\
-Here is a \textsf{bash} loop to process all \textsf{dot} files
-in the current directory: \\
-\texttt{
-for f in *.dot do ;
-dot -Tps -o \$\{f\%dot\}ps \$f ;
-done
-}
-\end{tabular}}
-}
-}
-
-
-% BoxedGraph
-%
-% 1 - parameters for \includegraphics (optional; default value is "scale=1")
-% 2 - name of the digraph
-\newcommand{\psgraphboxed}[4][scale=1]
-{
-	\begin{figure}[h]
-		\begin{center}
-			%\fbox{
-			\includegraphics[#1]{#2}
-			\caption{#3}
-			\label{#4}
-			%}
-		\end{center}
-	\end{figure}
-}
-
-

+ 0 - 683
paper/fncychap.sty

@@ -1,683 +0,0 @@
-%%% Copyright   Ulf A. Lindgren
-%%%
-%%% Note        Premission is granted to modify this file under
-%%%             the condition that it is saved using another
-%%%             file and package name.
-%%%
-%%% Revision    1.1 (1997)
-%%%
-%%%             Jan. 8th Modified package name base date option
-%%%             Jan. 22th Modified FmN and FmTi for error in book.cls
-%%%                  \MakeUppercase{#}->{\MakeUppercase#}
-%%%             Apr. 6th Modified Lenny option to prevent undesired 
-%%%                  skip of line.
-%%%             Nov. 8th Fixed \@chapapp for AMS
-%%%
-%%% Revision    1.2 (1998)
-%%%
-%%%             Feb. 11th Fixed appendix problem related to Bjarne
-%%%             Aug. 11th Fixed problem related to 11pt and 12pt 
-%%%                  suggested by Tomas Lundberg. THANKS!
-%%%
-%%% Revision    1.3 (2004)
-%%%             Sep. 20th problem with frontmatter, mainmatter and
-%%%                  backmatter, pointed out by Lapo Mori
-%%%
-%%% Revision    1.31 (2004)
-%%%             Sep. 21th problem with the Rejne definition streched text
-%%%                  caused ugly gaps in the vrule aligned with the title
-%%%                  text. Kindly pointed out to me by Hendri Adriaens
-%%%
-%%% Revision    1.32 (2005)
-%%%             Jun. 23th compatibility problem with the KOMA class 'scrbook.cls'
-%%%                  a remedy is a redefinition of '\@schapter' in
-%%%                  line with that used in KOMA. The problem was pointed
-%%%                  out to me by Mikkel Holm Olsen
-%%%
-%%% Revision    1.33 (2005)
-%%%             Aug. 9th misspelled ``TWELV'' corrected, the error was pointed
-%%%                  out to me by George Pearson
-%%%
-%%% Revision    1.34 (2007)
-%%%             Added an alternative to Lenny provided by Peter
-%%%             Osborne (2005-11-28)
-%%%             Corrected front, main and back matter, based on input
-%%%             from Bas van Gils (2006-04-24)
-%%%             Jul. 30th Added Bjornstrup option provided by Jean-Marc
-%%%             Francois (2007-01-05).
-%%%             Reverted to \MakeUppercase{#} see rev 1.1, solved
-%%%             problem with MakeUppercase and MakeLowercase pointed
-%%%             out by Marco Feuerstein  (2007-06-06) 
-
-
-%%% Last modified   Jul. 2007
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{fncychap}
-             [2007/07/30 v1.34
-                 LaTeX package (Revised chapters)]
-
-%%%% For conditional inclusion of color
-\newif\ifusecolor
-\usecolorfalse
-
-
-
-%%%% DEFINITION OF Chapapp variables
-\newcommand{\CNV}{\huge\bfseries}
-\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
-
-
-%%%% DEFINITION OF TheChapter variables
-\newcommand{\CNoV}{\huge\bfseries}
-\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
-
-\newif\ifUCN
-\UCNfalse
-\newif\ifLCN
-\LCNfalse
-\def\ChNameLowerCase{\LCNtrue\UCNfalse}
-\def\ChNameUpperCase{\UCNtrue\LCNfalse}
-\def\ChNameAsIs{\UCNfalse\LCNfalse}
-
-%%%%% Fix for AMSBook 971008
-
-\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
-
-
-%%%%% Fix for Bjarne and appendix 980211
-
-\newif\ifinapp
-\inappfalse
-\renewcommand\appendix{\par
-  \setcounter{chapter}{0}%
-  \setcounter{section}{0}%
-  \inapptrue%
-  \renewcommand\@chapapp{\appendixname}%
-  \renewcommand\thechapter{\@Alph\c@chapter}}
-
-%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
-
-\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{}
-
-%%%%%
-
-
-
-\newcommand{\FmN}[1]{%
-\ifUCN
-   {\MakeUppercase{#1}}\LCNfalse
-\else
-   \ifLCN
-      {\MakeLowercase{#1}}\UCNfalse
-   \else #1
-   \fi
-\fi}
-
-
-%%%% DEFINITION OF Title variables
-\newcommand{\CTV}{\Huge\bfseries}
-\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
-
-%%%% DEFINITION OF the basic rule width
-\newlength{\RW}
-\setlength{\RW}{1pt}
-\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
-
-\newif\ifUCT
-\UCTfalse
-\newif\ifLCT
-\LCTfalse
-\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
-\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
-\def\ChTitleAsIs{\UCTfalse\LCTfalse}
-\newcommand{\FmTi}[1]{%
-\ifUCT
-   {\MakeUppercase{#1}}\LCTfalse
-\else
-   \ifLCT
-      {\MakeLowercase{#1}}\UCTfalse
-   \else {#1}
-   \fi
-\fi}
-
-
-
-\newlength{\mylen}
-\newlength{\myhi}
-\newlength{\px}
-\newlength{\py}
-\newlength{\pyy}
-\newlength{\pxx}
-
-
-\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
-
-\newcommand{\DOCH}{%
-  \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-  \par\nobreak
-  \vskip 20\p@
-  }
-\newcommand{\DOTI}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-\newcommand{\DOTIS}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-
-%%%%%% SONNY DEF
-
-\DeclareOption{Sonny}{%
-  \ChNameVar{\Large\sf\bfseries}
-  \ChNumVar{\Huge\bfseries}
-  \ChTitleVar{\Large\sf\bfseries}
-  \ChRuleWidth{0.5pt}
-  \ChNameUpperCase
-  \renewcommand{\DOCH}{%
-    \raggedleft
-    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-    \par\nobreak
-    \vskip 40\p@}
-  \renewcommand{\DOTI}[1]{%
-    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
-    \vskip 5\p@
-    \CTV\FmTi{#1}\par\nobreak
-    \mghrulefill{\RW}\par\nobreak
-    \vskip 40\p@}
-  \renewcommand{\DOTIS}[1]{%
-    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
-    \vskip 5\p@
-    \CTV\FmTi{#1}\par\nobreak
-    \mghrulefill{\RW}\par\nobreak
-    \vskip 40\p@}
-}
-
-%%%%%% LENNY DEF
-
-\DeclareOption{Lenny}{%
-
-  \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
-  \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
-  \ChTitleVar{\Huge\bfseries\rm}
-  \ChRuleWidth{1pt}
-  \renewcommand{\DOCH}{%
-    \settowidth{\px}{\CNV\FmN{\@chapapp}}
-    \addtolength{\px}{2pt}
-    \settoheight{\py}{\CNV\FmN{\@chapapp}}
-    \addtolength{\py}{1pt}
-
-    \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
-    \addtolength{\mylen}{1pt}
-    \settowidth{\pxx}{\CNoV\thechapter}
-    \addtolength{\pxx}{-1pt}
-
-    \settoheight{\pyy}{\CNoV\thechapter}
-    \addtolength{\pyy}{-2pt}
-    \setlength{\myhi}{\pyy}
-    \addtolength{\myhi}{-1\py}
-    \par
-    \parbox[b]{\textwidth}{%
-    \rule[\py]{\RW}{\myhi}%
-    \hskip -\RW%
-    \rule[\pyy]{\px}{\RW}%
-    \hskip -\px%
-    \raggedright%
-    \CNV\FmN{\@chapapp}\space\CNoV\thechapter%
-    \hskip1pt%
-    \mghrulefill{\RW}%
-    \rule{\RW}{\pyy}\par\nobreak%
-    \vskip -\baselineskip%
-    \vskip -\pyy%
-    \hskip \mylen%
-    \mghrulefill{\RW}\par\nobreak%
-    \vskip \pyy}%
-    \vskip 20\p@}
- 
-
-  \renewcommand{\DOTI}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
-
-  \renewcommand{\DOTIS}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-%%%%%% Peter Osbornes' version of LENNY DEF
-
-\DeclareOption{PetersLenny}{%
-
-% five new lengths 
-\newlength{\bl}                           %  bottom left   : orig \space
-\setlength{\bl}{6pt}
-\newcommand{\BL}[1]{\setlength{\bl}{#1}}
-\newlength{\br}                           %  bottom right  : orig 1pt
-\setlength{\br}{1pt}
-\newcommand{\BR}[1]{\setlength{\br}{#1}}
-\newlength{\tl}                           %  top left      : orig 2pt
-\setlength{\tl}{2pt}
-\newcommand{\TL}[1]{\setlength{\tl}{#1}}
-\newlength{\trr}                           %  top right      :orig 1pt 
-\setlength{\trr}{1pt}
-\newcommand{\TR}[1]{\setlength{\trr}{#1}}
-\newlength{\blrule}                           %  top right      :orig 1pt 
-\setlength{\trr}{0pt}
-\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}}
-
-
-  \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
-  \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
-  \ChTitleVar{\Huge\bfseries\rm}
-  \ChRuleWidth{1pt}
-\renewcommand{\DOCH}{%
-
-
-%%%%%%%                                   tweaks for 1--9 and A--Z
-\ifcase\c@chapter\relax%
-\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3
-\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4
-\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5
-\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8
-\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9
-\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11
-\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16
-\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18
-\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19
-\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20
-\fi
-
-\ifinapp\ifcase\c@chapter\relax%
-\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B
-\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E
-\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F
-\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I
-\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M
-\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O
-\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q
-\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R
-\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S
-\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T
-\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U
-\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V
-\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X
-\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z
-\fi\fi
-%%%%%%%
-    \settowidth{\px}{\CNV\FmN{\@chapapp}}
-    \addtolength{\px}{\tl}        %MOD change 2pt to \tl
-    \settoheight{\py}{\CNV\FmN{\@chapapp}}
-    \addtolength{\py}{1pt}
-
-    \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
-    \addtolength{\mylen}{\trr}% MOD change 1pt to \tr
-    \settowidth{\pxx}{\CNoV\thechapter}
-    \addtolength{\pxx}{-1pt}
-
-    \settoheight{\pyy}{\CNoV\thechapter}
-    \addtolength{\pyy}{-2pt}
-    \setlength{\myhi}{\pyy}
-    \addtolength{\myhi}{-1\py}
-    \par
-    \parbox[b]{\textwidth}{%
-    \rule[\py]{\RW}{\myhi}%
-    \hskip -\RW%
-    \rule[\pyy]{\px}{\RW}% 
-    \hskip -\px%
-    \raggedright%
-    \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD 
-%    \CNV\FmN{\@chapapp}\space\CNoV\thechapter                     %ORIGINAL
-    \hskip\br%                           %MOD 1pt to \br
-    \mghrulefill{\RW}% 
-    \rule{\RW}{\pyy}\par\nobreak% 
-    \vskip -\baselineskip%
-    \vskip -\pyy%
-    \hskip \mylen%
-    \mghrulefill{\RW}\par\nobreak%
-    \vskip \pyy}%
-    \vskip 20\p@}
- 
-
-  \renewcommand{\DOTI}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
-
-  \renewcommand{\DOTIS}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-
-%
-
-
-%%%%%% BJORNSTRUP DEF
-
-\DeclareOption{Bjornstrup}{%
-  \usecolortrue
-  % pzc (Zapf Chancelery) is nice.  ppl (Palatino) is cool too.
-  \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont}
-  \ChTitleVar{\raggedleft\Large\sffamily\bfseries}
-
-  \setlength{\myhi}{10pt}         % Space between grey box border and text
-  \setlength{\mylen}{\textwidth}
-  \addtolength{\mylen}{-2\myhi}
-  \renewcommand{\DOCH}{%
-    \settowidth{\py}{\CNoV\thechapter}
-    \addtolength{\py}{-10pt}      % Amount of space by which the
-%                                  % number is shifted right
-    \fboxsep=0pt%
-    \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}%
-    \kern-\py\raise20pt%
-    \hbox{\color[gray]{.5}\CNoV\thechapter}\\%
-  }
-  
-  \renewcommand{\DOTI}[1]{%
-    \nointerlineskip\raggedright%
-    \fboxsep=\myhi%
-    \vskip-1ex%
-    \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
-    \vskip 40\p@%
-  }
-
-  \renewcommand{\DOTIS}[1]{%
-    \fboxsep=0pt
-    \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\%
-    \nointerlineskip\raggedright%
-    \fboxsep=\myhi%
-    \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
-    \vskip 40\p@%
-  }
-}
-
-
-%%%%%%% GLENN DEF
-
-
-\DeclareOption{Glenn}{%
-  \ChNameVar{\bfseries\Large\sf}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\bfseries\Large\rm}
-  \ChRuleWidth{1pt}
-  \ChNameUpperCase
-  \ChTitleUpperCase
-  \renewcommand{\DOCH}{%
-    \settoheight{\myhi}{\CTV\FmTi{Test}}
-    \setlength{\py}{\baselineskip}
-    \addtolength{\py}{\RW}
-    \addtolength{\py}{\myhi}
-    \setlength{\pyy}{\py}
-    \addtolength{\pyy}{-1\RW}
-     
-    \raggedright
-    \CNV\FmN{\@chapapp}\space\CNoV\thechapter
-    \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
-
-  \renewcommand{\DOTI}[1]{%
-    \addtolength{\pyy}{-4pt}
-    \settoheight{\myhi}{\CTV\FmTi{#1}}
-    \addtolength{\myhi}{\py}
-    \addtolength{\myhi}{-1\RW}
-    \vskip -1\pyy
-    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
-    \raggedleft\CTV\FmTi{#1}\par\nobreak
-    \vskip 80\p@}
-
-\newlength{\backskip}
-  \renewcommand{\DOTIS}[1]{%
-%    \setlength{\py}{10pt}
-%    \setlength{\pyy}{\py}
-%    \addtolength{\pyy}{\RW}
-%    \setlength{\myhi}{\baselineskip}
-%    \addtolength{\myhi}{\pyy}
-%    \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
-%    \addtolength{}{}
-%\vskip -1\baselineskip
-%    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
-%    \raggedleft\CTV\FmTi{#1}\par\nobreak
-%    \vskip 60\p@}
-%% Fix suggested by Tomas Lundberg
-    \setlength{\py}{25pt}  % eller vad man vill
-    \setlength{\pyy}{\py}
-    \setlength{\backskip}{\py}
-    \addtolength{\backskip}{2pt}
-    \addtolength{\pyy}{\RW}
-    \setlength{\myhi}{\baselineskip}
-    \addtolength{\myhi}{\pyy}
-    \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
-    \vskip -1\backskip
-    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
-    \raggedleft\CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-%%%%%%% CONNY DEF
-
-\DeclareOption{Conny}{%
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\centering\Huge\rm\bfseries}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\centering\Huge\rm}
-  \ChRuleWidth{2pt}
-
-  \renewcommand{\DOCH}{%
-    \mghrulefill{3\RW}\par\nobreak
-    \vskip -0.5\baselineskip
-    \mghrulefill{\RW}\par\nobreak
-    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-    \par\nobreak
-    \vskip -0.5\baselineskip
-   }
-  \renewcommand{\DOTI}[1]{%
-    \mghrulefill{\RW}\par\nobreak
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 60\p@
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \mghrulefill{\RW}\par\nobreak
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 60\p@
-    }
-  }
-
-%%%%%%% REJNE DEF
-
-\DeclareOption{Rejne}{%
-
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\centering\Large\rm}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\centering\Huge\rm}
-  \ChRuleWidth{1pt}
-  \renewcommand{\DOCH}{%
-    \settoheight{\py}{\CNoV\thechapter}
-    \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
-    \addtolength{\py}{-1pt}
-    \CNV\FmN{\@chapapp}\par\nobreak
-    \vskip 20\p@
-    \setlength{\myhi}{2\baselineskip}
-    \setlength{\px}{\myhi}
-    \addtolength{\px}{-1\RW}
-    \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
-    10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
-     \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31
-    }
-  \renewcommand{\DOTI}[1]{%
-    \setlength{\mylen}{\textwidth}
-    \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
-    \addtolength{\mylen}{-2\RW}
-    {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak%
-    \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}%
-    \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \setlength{\py}{\fboxrule}
-    \setlength{\fboxrule}{\RW}
-    \setlength{\mylen}{\textwidth}
-    \addtolength{\mylen}{-2\RW}
-    \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} 
-    \setlength{\fboxrule}{\py}
-    \vskip 60\p@
-    }
-  }
-
-
-%%%%%%% BJARNE DEF
-
-\DeclareOption{Bjarne}{%
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\raggedleft\normalsize\rm}
-  \ChNumVar{\raggedleft \bfseries\Large}
-  \ChTitleVar{\raggedleft \Large\rm}
-  \ChRuleWidth{1pt}
-
-
-%% Note thechapter -> c@chapter fix appendix bug
-%% Fixed misspelled 12
-
-  \newcounter{AlphaCnt}
-  \newcounter{AlphaDecCnt}
-  \newcommand{\AlphaNo}{%
-    \ifcase\number\theAlphaCnt
-      \ifnum\c@chapter=0
-        ZERO\else{}\fi
-    \or ONE\or TWO\or THREE\or FOUR\or FIVE
-    \or SIX\or SEVEN\or EIGHT\or NINE\or TEN
-    \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN
-    \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
-}
-
-  \newcommand{\AlphaDecNo}{%
-    \setcounter{AlphaDecCnt}{0}
-    \@whilenum\number\theAlphaCnt>0\do
-      {\addtocounter{AlphaCnt}{-10}
-       \addtocounter{AlphaDecCnt}{1}}
-     \ifnum\number\theAlphaCnt=0
-     \else
-       \addtocounter{AlphaDecCnt}{-1}
-       \addtocounter{AlphaCnt}{10}
-     \fi
-     
-     
-    \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
-    FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
-    }
-  \newcommand{\TheAlphaChapter}{%
-    
-    \ifinapp 
-      \thechapter
-    \else
-      \setcounter{AlphaCnt}{\c@chapter}
-      \ifnum\c@chapter<20
-        \AlphaNo
-      \else
-        \AlphaDecNo\AlphaNo
-      \fi
-    \fi
-    }  
-  \renewcommand{\DOCH}{%
-    \mghrulefill{\RW}\par\nobreak
-    \CNV\FmN{\@chapapp}\par\nobreak 
-    \CNoV\TheAlphaChapter\par\nobreak
-    \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
-    \vskip 20\p@
-    }
-  \renewcommand{\DOTI}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-}
-
-\DeclareOption*{%
-  \PackageWarning{fancychapter}{unknown style option}
-  }
-
-\ProcessOptions* \relax
-
-\ifusecolor
-  \RequirePackage{color} 
-\fi
-\def\@makechapterhead#1{%
-  \vspace*{50\p@}%
-  {\parindent \z@ \raggedright \normalfont
-    \ifnum \c@secnumdepth >\m@ne
-      \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
-        \DOCH
-      \fi
-    \fi
-    \interlinepenalty\@M
-    \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
-      \DOTI{#1}%
-    \else%
-      \DOTIS{#1}%
-    \fi
-  }}
-
-
-%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-%%OUT:
-%\def\@schapter#1{\if@twocolumn
-%                   \@topnewpage[\@makeschapterhead{#1}]%
-%                 \else
-%                   \@makeschapterhead{#1}%
-%                   \@afterheading
-%                 \fi}
-
-%%IN:
-\def\@schapter#1{%
-\if@twocolumn%
-  \@makeschapterhead{#1}%
-\else%
-  \@makeschapterhead{#1}%
-  \@afterheading%
-\fi}
-
-%%% End: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-\def\@makeschapterhead#1{%
-  \vspace*{50\p@}%
-  {\parindent \z@ \raggedright
-    \normalfont
-    \interlinepenalty\@M
-    \DOTIS{#1}
-    \vskip 40\p@
-  }}
-
-\endinput
-
-

BIN
paper/images/DEVSSimulationProcedure.png


BIN
paper/images/UA-LogoText.png


BIN
paper/images/UA-LogoTextC.png


BIN
paper/images/ansymo_logo.pdf


BIN
paper/images/ansymo_logo_medium.png


BIN
paper/images/lore.png


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 1517
paper/lineno.sty


+ 0 - 964
paper/oz.sty

@@ -1,964 +0,0 @@
-%%
-%% This is file `oz.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% oz.dtx  (with options: `package')
-%% Copyright (C) 1993 Sebastian Rahtz. All rights reserved.
-%% This is a generated file for Object Z.  Permission is granted to to
-%% customize the declarations in this file to serve the needs of your
-%% installation.  However, no permission is granted to distribute a
-%% modified version of this file under its original name.
-%% 
-\def\fileversion{2.46}
-\def\filedate{1999/05/24}
-\def\docdate {1994/08/13}
-%% File: oz.dtx Copyright (C) 1995-1999 Sebastian Rahtz
-\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{oz}[\filedate\space\fileversion\space Object Z macros]
-\message{`Object-Z Macros' \fileversion\space <\filedate>}
-\RequirePackage{calc}
-\def\oz@parbox{\@ifnextchar [{\oz@iparbox}{\oz@iparbox[c]}}
-\long\def\oz@iparbox[#1]#2#3{\leavevmode \@pboxswfalse
-   \if #1b\vbox
-     \else \if #1t\vtop
-              \else \vbox
-                     %\ifmmode \vcenter \else \@pboxswtrue $\vcenter \fi
-           \fi
-    \fi
-{\hsize #2\@parboxrestore #3}
-                     %\if@pboxsw \m@th$\fi
-}
-\@ifpackageloaded{lucbr}{}{%
-\DeclareMathVersion{oz}
-\SetMathAlphabet{\mathrm}{oz}{\encodingdefault}{\rmdefault}{m}{n}%
-\SetMathAlphabet{\mathbf}{oz}{\encodingdefault}{\rmdefault}{bx}{n}%
-\SetMathAlphabet{\mathsf}{oz}{\encodingdefault}{\sfdefault}{m}{n}%
-\DeclareSymbolFont{italics}{\encodingdefault}{\rmdefault}{m}{it}%
-\DeclareSymbolFontAlphabet{\mathrm}{operators}
-\DeclareSymbolFontAlphabet{\mathit}{letters}
-\DeclareSymbolFontAlphabet{\mathcal}{symbols}
-\DeclareSymbolFontAlphabet{\ozit}{italics}
-\DeclareSymbolFont{lasy}{U}{lasy}{m}{n}
-\DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
-\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
-\let\mho\undefined
-\let\Join\undefined
-\let\Box\undefined
-\let\Diamond\undefined
-\let\leadsto\undefined
-\let\sqsubset\undefined
-\let\sqsupset\undefined
-\let\lhd\undefined
-\let\unlhd\undefined
-\let\rhd\undefined
-\let\unrhd\undefined
-\DeclareMathSymbol{\mho}{\mathord}{lasy}{"30}
-\DeclareMathSymbol{\Join}{\mathrel}{lasy}{"31}
-\DeclareMathSymbol{\Box}{\mathord}{lasy}{"32}
-\DeclareMathSymbol{\Diamond}{\mathord}{lasy}{"33}
-\DeclareMathSymbol{\leadsto}{\mathrel}{lasy}{"3B}
-\DeclareMathSymbol{\sqsubset}{\mathrel}{lasy}{"3C}
-\DeclareMathSymbol{\sqsupset}{\mathrel}{lasy}{"3D}
-\DeclareMathSymbol{\lhd}{\mathrel}{lasy}{"01}
-\DeclareMathSymbol{\unlhd}{\mathrel}{lasy}{"02}
-\DeclareMathSymbol{\rhd}{\mathrel}{lasy}{"03}
-\DeclareMathSymbol{\unrhd}{\mathrel}{lasy}{"04}
-\DeclareSymbolFontAlphabet{\mathbb}{AMSb}
-\DeclareSymbolFontAlphabet{\bbold}{AMSb}
-\mathversion{oz}
-}
-\newbox\strutbox@
-\def\strut@{\copy\strutbox@}
-\addto@hook\every@math@size{%
-    \setbox\strutbox@\hbox{\lower.5\normallineskiplimit
- \vbox{\kern-\normallineskiplimit\copy\strutbox}}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% NOTE: bBigg is used to define the font size for zbig etc
-%% however it defines these as fixed sizes.
-%% The 209 definitions set the font size dependent on the
-%% current point size.
-%%
-%% Hence in 209 you can do \Large\cnj and the symbol is bigger
-%% But in 2e it remains a fixed size!
-%%
-%% This is a problem for the Object-Z operators as originally
-%% defined in the 209 oz.sty `96 file.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\def\bBigg@#1#2{%
-\mbox{\ifcase#1\or\large\or\Large\or\LARGE\or\small\or\footnotesize\fi
-$#2$}\nulldelimiterspace\z@ \m@th}
-\addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
-  \big@size 1.2\ht\z@}
-\newdimen\big@size
-\def\zBIG{\bBigg@{3}}
-\def\zBig{\bBigg@{2}}
-\def\zbig{\bBigg@{1}}
-\def\zsmall{\bBigg@{4}}
-\def\zSmall{\bBigg@{5}}
-\def\String#1{\hbox{`\texttt{#1}'}}
-\def\STRING#1{\hbox{``\texttt{#1}''}}
-\def\infix#1{\z@rel{{\underline{#1}}}}
-\def\word#1{\z@op{#1}}
-\def\keyword#1{\z@op{\mbox{\textrm{#1}}}}
-\def\boldword#1{\z@op{\mbox{\textbf{#1}}}}
-\def\underword#1{\z@op{{\underline{#1}}}}
-\def\underkeyword#1{\z@op{{\underline{\mbox{\textrm{#1}}}}}}
-\def\underboldword#1{\z@op{{\underline{\mbox{\textbf{#1}}}}}}
-\def\@setmcodes#1#2#3{{\count0=#1 \count1=#3
-    \loop \global\mathcode\count0=\count1 \ifnum \count0<#2
-    \advance\count0 by1 \advance\count1 by1 \repeat}}
-\@setmcodes{`A}{`Z}{"7\hexnumber@\symitalics41}
-\@setmcodes{`a}{`z}{"7\hexnumber@\symitalics61}
-\let\@mc=\mathchardef
-\mathcode`\;="8000 % Makes ; active in math mode
-{\catcode`\;=\active \gdef;{\semicolon\;}}
-\@mc\semicolon="603B
-\def\z@op#1{\mathop{\mathstrut{#1}}\nolimits}
-\def\z@bin#1{\mathbin{\mathstrut{#1}}}
-\def\z@rel#1{\mathrel{\mathstrut{#1}}}
-\def\z@bigop#1{\z@op{\zbig{#1}}}
-\def\z@bigbin#1{\z@bin{\zbig{#1}}}
-\def\z@bigrel#1{\z@rel{\zbig{#1}}}
-\def\z@Bigop#1{\z@op{\zBig{#1}}}
-\def\z@Bigbin#1{\z@bin{\zBig{#1}}}
-\def\z@Bigrel#1{\z@rel{\zBig{#1}}}
-\def\z@smallop#1{\z@op{\zsmall{#1}}}
-\def\z@smallbin#1{\z@bin{\zsmall{#1}}}
-\def\z@smallrel#1{\z@rel{\zsmall{#1}}}
-\def\_{\leavevmode \vbox{\hrule width0.4em}}
-\let\xforall=\forall
-\let\xexists=\exists
-\let\xlambda=\lambda
-\let\xmu=\mu
-\let\xsucc\succ
-\let\xprec\prec
-\let\dotaccent=\dot
-\let\sectionsymbol=\S
-\let\integral=\int
-\let\product\prod
-\def\p#1{\mathrel{\ooalign{\hfil$\mapstochar\mkern 5mu$\hfil\cr$#1$}}}
-\def\f#1{\mathrel{\ooalign{\hfil
-    $\mapstochar\mkern 3mu\mapstochar\mkern 5mu$\hfil\cr$#1$}}}
-\@ifpackageloaded{lucbr}{%
- \DeclareMathSymbol{\doublebarwedge}{\mathbin}{symbols}{"D4}
- \DeclareMathSymbol{\lll}{\mathrel}{letters}{"DE}
- \DeclareMathSymbol{\ggg}{\mathrel}{letters}{"DF}
- \DeclareMathSymbol{\eth}{\mathrel}{operators}{"F0}
-}{%
-\let\rightleftharpoons\undefined
-\let\angle\undefined
-\DeclareMathSymbol\boxdot{\mathbin}{AMSa}{"00}
-\DeclareMathSymbol\boxplus{\mathbin}{AMSa}{"01}
-\DeclareMathSymbol\boxtimes{\mathbin}{AMSa}{"02}
-\DeclareMathSymbol\square{\mathord}{AMSa}{"03}
-\DeclareMathSymbol\blacksquare{\mathord}{AMSa}{"04}
-\DeclareMathSymbol\centerdot{\mathbin}{AMSa}{"05}
-\DeclareMathSymbol\lozenge{\mathord}{AMSa}{"06}
-\DeclareMathSymbol\blacklozenge{\mathord}{AMSa}{"07}
-\DeclareMathSymbol\circlearrowright{\mathrel}{AMSa}{"08}
-\DeclareMathSymbol\circlearrowleft{\mathrel}{AMSa}{"09}
-\DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A}
-\DeclareMathSymbol\leftrightharpoons{\mathrel}{AMSa}{"0B}
-\DeclareMathSymbol\boxminus{\mathbin}{AMSa}{"0C}
-\DeclareMathSymbol\Vdash{\mathrel}{AMSa}{"0D}
-\DeclareMathSymbol\Vvdash{\mathrel}{AMSa}{"0E}
-\DeclareMathSymbol\vDash{\mathrel}{AMSa}{"0F}
-\DeclareMathSymbol\twoheadrightarrow{\mathrel}{AMSa}{"10}
-\DeclareMathSymbol\twoheadleftarrow{\mathrel}{AMSa}{"11}
-\DeclareMathSymbol\leftleftarrows{\mathrel}{AMSa}{"12}
-\DeclareMathSymbol\rightrightarrows{\mathrel}{AMSa}{"13}
-\DeclareMathSymbol\upuparrows{\mathrel}{AMSa}{"14}
-\DeclareMathSymbol\downdownarrows{\mathrel}{AMSa}{"15}
-\DeclareMathSymbol\upharpoonright{\mathrel}{AMSa}{"16}
-\DeclareMathSymbol\downharpoonright{\mathrel}{AMSa}{"17}
-\DeclareMathSymbol\upharpoonleft{\mathrel}{AMSa}{"18}
-\DeclareMathSymbol\downharpoonleft{\mathrel}{AMSa}{"19}
-\DeclareMathSymbol\rightarrowtail{\mathrel}{AMSa}{"1A}
-\DeclareMathSymbol\leftarrowtail{\mathrel}{AMSa}{"1B}
-\DeclareMathSymbol\leftrightarrows{\mathrel}{AMSa}{"1C}
-\DeclareMathSymbol\rightleftarrows{\mathrel}{AMSa}{"1D}
-\DeclareMathSymbol\Lsh{\mathrel}{AMSa}{"1E}
-\DeclareMathSymbol\Rsh{\mathrel}{AMSa}{"1F}
-\DeclareMathSymbol\rightsquigarrow{\mathrel}{AMSa}{"20}
-\DeclareMathSymbol\leftrightsquigarrow{\mathrel}{AMSa}{"21}
-\DeclareMathSymbol\looparrowleft{\mathrel}{AMSa}{"22}
-\DeclareMathSymbol\looparrowright{\mathrel}{AMSa}{"23}
-\DeclareMathSymbol\circeq{\mathrel}{AMSa}{"24}
-\DeclareMathSymbol\succsim{\mathrel}{AMSa}{"25}
-\DeclareMathSymbol\gtrsim{\mathrel}{AMSa}{"26}
-\DeclareMathSymbol\gtrapprox{\mathrel}{AMSa}{"27}
-\DeclareMathSymbol\multimap{\mathrel}{AMSa}{"28}
-\DeclareMathSymbol\therefore{\mathrel}{AMSa}{"29}
-\DeclareMathSymbol\because{\mathrel}{AMSa}{"2A}
-\DeclareMathSymbol\doteqdot{\mathrel}{AMSa}{"2B}
-\DeclareMathSymbol\triangleq{\mathrel}{AMSa}{"2C}
-\DeclareMathSymbol\precsim{\mathrel}{AMSa}{"2D}
-\DeclareMathSymbol\lesssim{\mathrel}{AMSa}{"2E}
-\DeclareMathSymbol\lessapprox{\mathrel}{AMSa}{"2F}
-\DeclareMathSymbol\eqslantless{\mathrel}{AMSa}{"30}
-\DeclareMathSymbol\eqslantgtr{\mathrel}{AMSa}{"31}
-\DeclareMathSymbol\curlyeqprec{\mathrel}{AMSa}{"32}
-\DeclareMathSymbol\curlyeqsucc{\mathrel}{AMSa}{"33}
-\DeclareMathSymbol\preccurlyeq{\mathrel}{AMSa}{"34}
-\DeclareMathSymbol\leqq{\mathrel}{AMSa}{"35}
-\DeclareMathSymbol\leqslant{\mathrel}{AMSa}{"36}
-\DeclareMathSymbol\lessgtr{\mathrel}{AMSa}{"37}
-\DeclareMathSymbol\backprime{\mathord}{AMSa}{"38}
-\DeclareMathSymbol\risingdotseq{\mathrel}{AMSa}{"3A}
-\DeclareMathSymbol\fallingdotseq{\mathrel}{AMSa}{"3B}
-\DeclareMathSymbol\succcurlyeq{\mathrel}{AMSa}{"3C}
-\DeclareMathSymbol\geqq{\mathrel}{AMSa}{"3D}
-\DeclareMathSymbol\geqslant{\mathrel}{AMSa}{"3E}
-\DeclareMathSymbol\gtrless{\mathrel}{AMSa}{"3F}
-\DeclareMathSymbol\sqsubset{\mathrel}{AMSa}{"40}
-\DeclareMathSymbol\sqsupset{\mathrel}{AMSa}{"41}
-\DeclareMathSymbol\vartriangleright{\mathrel}{AMSa}{"42}
-\DeclareMathSymbol\vartriangleleft{\mathrel}{AMSa}{"43}
-\DeclareMathSymbol\trianglerighteq{\mathrel}{AMSa}{"44}
-\DeclareMathSymbol\trianglelefteq{\mathrel}{AMSa}{"45}
-\DeclareMathSymbol\bigstar{\mathord}{AMSa}{"46}
-\DeclareMathSymbol\between{\mathrel}{AMSa}{"47}
-\DeclareMathSymbol\blacktriangledown{\mathord}{AMSa}{"48}
-\DeclareMathSymbol\blacktriangleright{\mathrel}{AMSa}{"49}
-\DeclareMathSymbol\blacktriangleleft{\mathrel}{AMSa}{"4A}
-\DeclareMathSymbol\vartriangle{\mathord}{AMSa}{"4D}
-\DeclareMathSymbol\blacktriangle{\mathord}{AMSa}{"4E}
-\DeclareMathSymbol\triangledown{\mathord}{AMSa}{"4F}
-\DeclareMathSymbol\eqcirc{\mathrel}{AMSa}{"50}
-\DeclareMathSymbol\lesseqgtr{\mathrel}{AMSa}{"51}
-\DeclareMathSymbol\gtreqless{\mathrel}{AMSa}{"52}
-\DeclareMathSymbol\lesseqqgtr{\mathrel}{AMSa}{"53}
-\DeclareMathSymbol\gtreqqless{\mathrel}{AMSa}{"54}
-\DeclareMathSymbol\Rrightarrow{\mathrel}{AMSa}{"56}
-\DeclareMathSymbol\Lleftarrow{\mathrel}{AMSa}{"57}
-\DeclareMathSymbol\veebar{\mathbin}{AMSa}{"59}
-\DeclareMathSymbol\barwedge{\mathbin}{AMSa}{"5A}
-\DeclareMathSymbol\doublebarwedge{\mathbin}{AMSa}{"5B}
-\DeclareMathSymbol\angle{\mathord}{AMSa}{"5C}
-\DeclareMathSymbol\measuredangle{\mathord}{AMSa}{"5D}
-\DeclareMathSymbol\sphericalangle{\mathord}{AMSa}{"5E}
-\DeclareMathSymbol\varpropto{\mathrel}{AMSa}{"5F}
-\DeclareMathSymbol\smallsmile{\mathrel}{AMSa}{"60}
-\DeclareMathSymbol\smallfrown{\mathrel}{AMSa}{"61}
-\DeclareMathSymbol\Subset{\mathrel}{AMSa}{"62}
-\DeclareMathSymbol\Supset{\mathrel}{AMSa}{"63}
-\DeclareMathSymbol\Cup{\mathbin}{AMSa}{"64}
-\DeclareMathSymbol\Cap{\mathbin}{AMSa}{"65}
-\DeclareMathSymbol\curlywedge{\mathbin}{AMSa}{"66}
-\DeclareMathSymbol\curlyvee{\mathbin}{AMSa}{"67}
-\DeclareMathSymbol\leftthreetimes{\mathbin}{AMSa}{"68}
-\DeclareMathSymbol\rightthreetimes{\mathbin}{AMSa}{"69}
-\DeclareMathSymbol\subseteqq{\mathrel}{AMSa}{"6A}
-\DeclareMathSymbol\supseteqq{\mathrel}{AMSa}{"6B}
-\DeclareMathSymbol\bumpeq{\mathrel}{AMSa}{"6C}
-\DeclareMathSymbol\Bumpeq{\mathrel}{AMSa}{"6D}
-\DeclareMathSymbol\lll{\mathrel}{AMSa}{"6E}
-\DeclareMathSymbol\ggg{\mathrel}{AMSa}{"6F}
-\DeclareMathDelimiter\ulcorner{4}{AMSa}{"70}{AMSa}{"70}
-\DeclareMathDelimiter\urcorner{5}{AMSa}{"71}{AMSa}{"71}
-\DeclareMathDelimiter\llcorner{4}{AMSa}{"78}{AMSa}{"78}
-\DeclareMathDelimiter\lrcorner{5}{AMSa}{"79}{AMSa}{"79}
-\xdef\yen  {\noexpand\mathhexbox\hexnumber@\symAMSa 55 }
-\xdef\checkmark{\noexpand\mathhexbox\hexnumber@\symAMSa 58 }
-\xdef\circledR {\noexpand\mathhexbox\hexnumber@\symAMSa 72 }
-\xdef\maltese  {\noexpand\mathhexbox\hexnumber@\symAMSa 7A }
-\DeclareMathSymbol\circledS{\mathord}{AMSa}{"73}
-\DeclareMathSymbol\pitchfork{\mathrel}{AMSa}{"74}
-\DeclareMathSymbol\dotplus{\mathbin}{AMSa}{"75}
-\DeclareMathSymbol\backsim{\mathrel}{AMSa}{"76}
-\DeclareMathSymbol\backsimeq{\mathrel}{AMSa}{"77}
-\DeclareMathSymbol\complement{\mathord}{AMSa}{"7B}
-\DeclareMathSymbol\intercal{\mathbin}{AMSa}{"7C}
-\DeclareMathSymbol\circledcirc{\mathbin}{AMSa}{"7D}
-\DeclareMathSymbol\circledast{\mathbin}{AMSa}{"7E}
-\DeclareMathSymbol\circleddash{\mathbin}{AMSa}{"7F}
-\DeclareMathSymbol\lvertneqq{\mathrel}{AMSb}{"00}
-\DeclareMathSymbol\gvertneqq{\mathrel}{AMSb}{"01}
-\DeclareMathSymbol\nleq{\mathrel}{AMSb}{"02}
-\DeclareMathSymbol\ngeq{\mathrel}{AMSb}{"03}
-\DeclareMathSymbol\nless{\mathrel}{AMSb}{"04}
-\DeclareMathSymbol\ngtr{\mathrel}{AMSb}{"05}
-\DeclareMathSymbol\nprec{\mathrel}{AMSb}{"06}
-\DeclareMathSymbol\nsucc{\mathrel}{AMSb}{"07}
-\DeclareMathSymbol\lneqq{\mathrel}{AMSb}{"08}
-\DeclareMathSymbol\gneqq{\mathrel}{AMSb}{"09}
-\DeclareMathSymbol\nleqslant{\mathrel}{AMSb}{"0A}
-\DeclareMathSymbol\ngeqslant{\mathrel}{AMSb}{"0B}
-\DeclareMathSymbol\lneq{\mathrel}{AMSb}{"0C}
-\DeclareMathSymbol\gneq{\mathrel}{AMSb}{"0D}
-\DeclareMathSymbol\npreceq{\mathrel}{AMSb}{"0E}
-\DeclareMathSymbol\nsucceq{\mathrel}{AMSb}{"0F}
-\DeclareMathSymbol\precnsim{\mathrel}{AMSb}{"10}
-\DeclareMathSymbol\succnsim{\mathrel}{AMSb}{"11}
-\DeclareMathSymbol\lnsim{\mathrel}{AMSb}{"12}
-\DeclareMathSymbol\gnsim{\mathrel}{AMSb}{"13}
-\DeclareMathSymbol\nleqq{\mathrel}{AMSb}{"14}
-\DeclareMathSymbol\ngeqq{\mathrel}{AMSb}{"15}
-\DeclareMathSymbol\precneqq{\mathrel}{AMSb}{"16}
-\DeclareMathSymbol\succneqq{\mathrel}{AMSb}{"17}
-\DeclareMathSymbol\precnapprox{\mathrel}{AMSb}{"18}
-\DeclareMathSymbol\succnapprox{\mathrel}{AMSb}{"19}
-\DeclareMathSymbol\lnapprox{\mathrel}{AMSb}{"1A}
-\DeclareMathSymbol\gnapprox{\mathrel}{AMSb}{"1B}
-\DeclareMathSymbol\nsim{\mathrel}{AMSb}{"1C}
-\DeclareMathSymbol\ncong{\mathrel}{AMSb}{"1D}
-\DeclareMathSymbol\nsubseteqq{\mathrel}{AMSb}{"22}
-\DeclareMathSymbol\nsupseteqq{\mathrel}{AMSb}{"23}
-\DeclareMathSymbol\subsetneqq{\mathrel}{AMSb}{"24}
-\DeclareMathSymbol\supsetneqq{\mathrel}{AMSb}{"25}
-\DeclareMathSymbol\subsetneq{\mathrel}{AMSb}{"28}
-\DeclareMathSymbol\supsetneq{\mathrel}{AMSb}{"29}
-\DeclareMathSymbol\nsubseteq{\mathrel}{AMSb}{"2A}
-\DeclareMathSymbol\nsupseteq{\mathrel}{AMSb}{"2B}
-\DeclareMathSymbol\nparallel{\mathrel}{AMSb}{"2C}
-\DeclareMathSymbol\nmid{\mathrel}{AMSb}{"2D}
-\DeclareMathSymbol\nshortmid{\mathrel}{AMSb}{"2E}
-\DeclareMathSymbol\nshortparallel{\mathrel}{AMSb}{"2F}
-\DeclareMathSymbol\nvdash{\mathrel}{AMSb}{"30}
-\DeclareMathSymbol\nVdash{\mathrel}{AMSb}{"31}
-\DeclareMathSymbol\nvDash{\mathrel}{AMSb}{"32}
-\DeclareMathSymbol\nVDash{\mathrel}{AMSb}{"33}
-\DeclareMathSymbol\ntrianglerighteq{\mathrel}{AMSb}{"34}
-\DeclareMathSymbol\ntrianglelefteq{\mathrel}{AMSb}{"35}
-\DeclareMathSymbol\ntriangleleft{\mathrel}{AMSb}{"36}
-\DeclareMathSymbol\ntriangleright{\mathrel}{AMSb}{"37}
-\DeclareMathSymbol\nleftarrow{\mathrel}{AMSb}{"38}
-\DeclareMathSymbol\nrightarrow{\mathrel}{AMSb}{"39}
-\DeclareMathSymbol\nLeftarrow{\mathrel}{AMSb}{"3A}
-\DeclareMathSymbol\nRightarrow{\mathrel}{AMSb}{"3B}
-\DeclareMathSymbol\nLeftrightarrow{\mathrel}{AMSb}{"3C}
-\DeclareMathSymbol\nleftrightarrow{\mathrel}{AMSb}{"3D}
-\DeclareMathSymbol\divideontimes{\mathbin}{AMSb}{"3E}
-\DeclareMathSymbol\varnothing{\mathord}{AMSb}{"3F}
-\DeclareMathSymbol\mho{\mathord}{AMSb}{"66}
-\DeclareMathSymbol\eth{\mathord}{AMSb}{"67}
-\DeclareMathSymbol\eqsim{\mathrel}{AMSb}{"68}
-\DeclareMathSymbol\beth{\mathord}{AMSb}{"69}
-\DeclareMathSymbol\gimel{\mathord}{AMSb}{"6A}
-\DeclareMathSymbol\daleth{\mathord}{AMSb}{"6B}
-\DeclareMathSymbol\lessdot{\mathrel}{AMSb}{"6C}
-\DeclareMathSymbol\gtrdot{\mathrel}{AMSb}{"6D}
-\DeclareMathSymbol\ltimes{\mathbin}{AMSb}{"6E}
-\DeclareMathSymbol\rtimes{\mathbin}{AMSb}{"6F}
-\DeclareMathSymbol\shortmid{\mathrel}{AMSb}{"70}
-\DeclareMathSymbol\shortparallel{\mathrel}{AMSb}{"71}
-\DeclareMathSymbol\smallsetminus{\mathbin}{AMSb}{"72}
-\DeclareMathSymbol\thicksim{\mathrel}{AMSb}{"73}
-\DeclareMathSymbol\thickapprox{\mathrel}{AMSb}{"74}
-\DeclareMathSymbol\approxeq{\mathrel}{AMSb}{"75}
-\DeclareMathSymbol\succapprox{\mathrel}{AMSb}{"76}
-\DeclareMathSymbol\precapprox{\mathrel}{AMSb}{"77}
-\DeclareMathSymbol\curvearrowleft{\mathrel}{AMSb}{"78}
-\DeclareMathSymbol\curvearrowright{\mathrel}{AMSb}{"79}
-\DeclareMathSymbol\digamma{\mathord}{AMSb}{"7A}
-\DeclareMathSymbol\varkappa{\mathord}{AMSb}{"7B}
-\DeclareMathSymbol\hslash{\mathord}{AMSb}{"7D}
-\DeclareMathSymbol\hbar{\mathord}{AMSb}{"7E}
-\DeclareMathSymbol\backepsilon{\mathrel}{AMSb}{"7F}
-}
-\def\interleave{{\parallel\!\!\vert}}
-\def\shortinterleave{\z@rel{\mathord\shortmid\mathord\shortparallel}}
-\def\napprox{\not\approx}
-\let\restriction\upharpoonright
-\let\Doteq\doteqdot
-\let\doublecup\Cup
-\let\llless\lll
-\let\gggtr\ggg
-\let\doublecap\Cap
-\def \nat   {{\mathbb N}}
-\def \integer   {{\mathbb Z}}
-\def \natone    {{\mathbb N}_1}
-\def \real  {{\mathbb R}}
-\def \bool  {{\mathbb B}}
-\let \divides   \div
-\def \div   {\z@bin{\mathrm{div}}}
-\def \mod   {\z@bin{\mathrm{mod}}}
-\def \succ  {\word{succ}}
-\def \expon {^}
-\let \num   \integer
-\let \nplus \natone
-\def \lnot  {\neg\;}
-\def \land  {\z@rel{\wedge}}
-\def \lor   {\z@rel{\vee}}
-\let \imp   \Rightarrow
-\let\iff    \Leftrightarrow
-\def \all   {\z@op{\xforall}}
-\def \exi   {\z@op{\xexists}}
-\def \exione    {\exists_1}
-\@ifpackageloaded{lucbr}{%
-\DeclareMathSymbol{\nexi}{0}{arrows}{"20}
-}{%
-\DeclareMathSymbol{\nexi}{\mathord}{AMSb}{"40}
-}
-\def \dot   {\z@rel{\bullet}}
-\def \true  {\keyword{true}}
-\def \false {\keyword{false}}
-\let \cond  \rightarrow
-\let \spot  \dot
-\mathcode`\@="8000% make @ active in mathmode
-{\catcode`\@=\active \gdef@{\dot}}
-\let \implies   \imp
-\let \forall    \all
-\let \exists    \exi
-\let \nexists   \nexi
-\let \emptyset  \varnothing
-\def \varemptyset  {\{\,\}}
-\def \pset  {\z@op{\mathbb P}}
-\def \psetone   {\pset_1}
-\def \fset  {\z@op{\mathbb F}}
-\def \fsetone   {\fset_1}
-\def \sset  {\z@op{\mathbb S}}
-\let \mem   \in
-\def \nem   {\not\mem}
-\def \uni   {\z@bin\cup}
-\def \int   {\z@bin\cap}
-\let \prod  \times
-\def \min   {\word{min}}
-\def \max   {\word{max}}
-\def \duni  {\z@Bigop{\lower0.25ex\hbox{$\uni$}}}
-\def \dint  {\z@Bigop{\lower0.25ex\hbox{$\int$}}}
-\def \upto  {\z@bin{\ldotp\ldotp}}
-\let \psubs \subset
-\let \subs  \subseteq
-\let \psups \supset
-\let \sups  \supseteq
-\def \diff  {\z@bin{\backslash}}
-\let \cross \prod
-\let \notin \nem
-\let \nmem  \nem
-\let \union \uni
-\let \inter \int
-\let \power \pset
-\let \finset    \fset
-\let \dunion    \duni
-\let \dinter    \dint
-\def \lambda    {\z@op{\xlambda}}
-\def \mu    {\z@op{\xmu}}
-\def \dom   {\keyword{dom}}
-\def \ran   {\keyword{ran}}
-\def \id    {\keyword{id}}
-\@ifpackageloaded{lucbr}{%
-\DeclareMathSymbol{\dres}{\mathbin}{letters}{"2F}
-\DeclareMathSymbol{\rres}{\mathbin}{letters}{"2E}
-}{%
-\DeclareMathSymbol{\dres}{\mathbin}{AMSa}{"43}
-\DeclareMathSymbol{\rres}{\mathbin}{AMSa}{"42}
-}
-\def \dsub  {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\dres}}}
-\def \rsub  {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\rres}}}
-\let \fovr  \oplus
-\let \cmp   \circ
-\def \fcmp  {\mathbin{\raise 0.6ex\hbox{\oalign{\hfil$\scriptscriptstyle
-     \mathrm{o}$\hfil\cr\hfil$\scriptscriptstyle\mathrm{9}$\hfil}}}}
-\def \inv   {^\sim}
-\def \limg  {(\!|}
-\def \rimg  {|\!)}
-\let \map   \mapsto
-\let \rel   \leftrightarrow
-\let \tfun  \rightarrow
-\let \tinj  \rightarrowtail
-\def \tsur  {\mathrel{\ooalign{$\tfun$\hfil\cr$\mkern4mu\tfun$}}}
-\def \pfun  {\p\tfun}
-\def \pinj  {\p\tinj}
-\def \psur  {\p\tsur}
-\def \ffun  {\f\tfun}
-\def \finj  {\f\tinj}
-\def \bij   {\mathrel{\ooalign{$\tinj$\hfil\cr$\mkern5mu\tfun$}}}
-\def \tcl   {^+}
-\def \rtcl  {^*}
-\def \iter  {^}
-\let \comp  \fcmp
-\let \ndres \dsub
-\let \nrres \rsub
-\let \fun   \tfun
-\let \inj   \tinj
-\let \surj  \tsur
-\let \psurj \psur
-\let \llless    \lll
-\let \gggtr \ggg
-\def \interleave    {{\parallel\!\!\vert}}
-\def \shortinterleave   {\z@rel{\mathord\shortmid\mathord\shortparallel}}
-\let \restriction   \upharpoonright
-\def \napprox   {\not\approx}
-\def \seq   {\keyword{seq}}
-\def \iseq {\keyword{iseq}}
-\def \seqone    {\seq_1}
-\def \emptyseq  {\lseq\,\rseq}
-\let \lseq  \langle
-\let \rseq  \rangle
-\def \head  {\word{head}}
-\def \tail  {\word{tail}}
-\def \front {\word{front}}
-\def \last  {\word{last}}
-\def \rev   {\word{rev}}
-\def \squash    {\word{squash}}
-\def \next  {\keyword{next}}
-\def \inseq {\keyword{in}}
-\@ifpackageloaded{lucbr}{%
-\DeclareMathSymbol{\sres}{2}{arrows}{"75}
-\DeclareMathSymbol{\ires}{2}{arrows}{"76}
-\DeclareMathSymbol{\@@cat}{\mathbin}{operators}{"5F}
-}{%
-\DeclareMathSymbol{\@@cat}{\mathbin}{AMSa}{"61}
-\DeclareMathSymbol{\sres}{\mathbin}{AMSa}{"16}
-\DeclareMathSymbol{\ires}{\mathbin}{AMSa}{"18}
-}
-\def \cat   {\mathbin{\raise 0.8ex\hbox{$\mathchar\@@cat$}}}
-\def \ssub  {\z@bin{\rlap{$-$}{\sres}}}
-\def \isub  {\z@bin{\rlap{$-$}{\ires}}}
-\def \dcat  {\z@op{\cat/}}
-\def \dovr  {\z@op{\fovr/}}
-\def \dcmp  {\z@op{\fcmp/}}
-\let \prefix    \subseteq
-\def \suffix    {\keyword{suffix}}
-\def \seqi  {\keyword{seq_\infty}}
-\def \partitions    {\keyword{partitions}}
-\def \partition {\keyword{partitions}}
-\def \disjoint  {\keyword{disjoint}}
-\def \subseq    {\keyword{subseq}}
-\let \filter    \sres
-\def \lsch  {\z@bigop{[}}
-\def \rsch  {\z@bigop{]}}
-\def \dparallel {\z@bigop{\parallel}\limits}
-\def \zand  {\z@bigbin\land}
-\def \zor   {\z@bigbin\lor}
-\def \zcmp  {\z@bigbin\fcmp}
-\def \zexi  {\z@bigop\exists}
-\def \zall  {\z@bigop\forall}
-\def \znot  {\z@bigop\neg}
-\def \zbar  {\z@bigbin\cbar}
-\def \zfor  {/}
-\def \zhide {\z@bigbin\backslash}
-\def \zimp  {\z@bigrel\imp}
-\def \zeq   {\z@bigrel\iff}
-\def \zovr  {\z@bigrel\oplus}
-\def \zpipe {\z@bigbin{\mathord>\!\!\mathord>}}
-\def \pre   {\keyword{pre}}
-\def \pred  {\keyword{pred}}
-\def \post  {\keyword{post}}
-\def \zproject  {\z@bigbin\sres}
-\def\rename{\@ifnextchar*{\z@rename}{\z@@rename}}
-\def\z@rename*[#1/#2]{\left[#1 \over #2\right]}
-\def\z@@rename[#1/#2]{\left[#1 \zfor #2\right]}
-\let \project   \zproject
-\let \import    \sres
-\let \semi  \zcmp
-\let \hide  \zhide
-\let\buni\uplus
-\def \emptybag  {\lbag\:\rbag}
-\def \lbag  {[\![}
-\def \rbag  {]\!]}
-\def \bag   {\keyword{bag}}
-\def \items {\word{items}}
-\let \inbag \inseq
-\def \bagcount  {\word{count}}
-\def \ddef  {\z@rel{\;::=\;}}
-\def \bbar  {\z@bigrel{|}}
-\let \cbar  \mid
-\def \lang  {\langle\!\langle}
-\def \rang  {\rangle\!\rangle}
-\def \sdef  {\z@rel{\widehat=}}
-\def \defs  {\z@smallrel{==}}
-\def \varsdef   {\z@rel\triangleq}
-\let \sdefs \sdef
-\mathcode`\|=\mid
-\let \ldata \lang
-\let \rdata \rang
-\def \lblot {\langle\!|}
-\def \rblot {|\!\rangle}
-\def \IMP   {\boldword{Import}}
-\let \env   \Rrightarrow
-\def \zlet  {\boldword{let}}
-\def \zin   {\boldword{in}}
-\def \zwhere    {\boldword{where}}
-\def\HOLE{\z@op{\hbox{$\lll\star\star\star\ggg$}}}
-\def\landd{} % to support qzed editor
-\def\semid{} % to support qzed editor
-\def\qzed{\ifz@inclass\else\zed\fi}
-\def\endqzed{\ifz@inclass\else\endzed\fi}
-\def\qua{\mbox{::}}
-\def\redef{\mbox{\textbf{~redef}}}
-\def\Init{I\!{\scriptstyle{NIT}}}
-\def\Exit{E\!{\scriptstyle{XIT}}}
-\def\Internal{I\!{\scriptstyle{NTERNAL}}}
-\def\Aux{A\!{\scriptstyle{UX}}}
-\def\intern{\mbox{\textsf{i}}}
-\def\thrm{\z@rel\vdash}
-\def\qed{\zsmall\Box}
-\let\Qed\Box
-\let\QED\square
-\def\BLACKQED{\zsmall\blacksquare}
-\let\ETH\qed
-\def\TH{\boldword{Theorem}}
-\def\LE{\boldword{Lemma}}
-\def\PR{\boldword{Proof}}
-\def\refines{\z@rel\sqsupseteq}
-\def\defines{\z@rel\sqsubseteq}
-\def\weakrefine{\z@rel{\raise0.2ex\rlap{\hbox{$\sqsupset$}}\lower1ex\hbox{$\sim$}}}
-\def\weakdefine{\z@rel{\raise0.2ex\rlap{\hbox{$\sqsubset$}}\lower1ex\hbox{$\sim$}}}
-\let\shows\thrm
-\def\childof{\z@rel\xsucc}
-\def\parentof{\z@rel\xprec}
-\let\weaksubclass\succsim
-\let\weaksupclass\precsim
-\def\hasa{\z@rel{\mathord\xsucc\!\!\!\mathord\xsucc}}
-\def\instancein{\z@rel{\mathord\xprec\!\!\!\mathord\xprec}}
-\def\subtype{\z@rel\sqsubset}
-\def\subtypeeq{\z@rel\sqsubseteq}
-\def\suptype{\z@rel\sqsupset}
-\def\suptypeeq{\z@rel\sqsupseteq}
-\let\inherits\childof
-\let\subclass\childof
-\let\isa\childof
-\let\supclass\parentof
-\let\instantiates\hasa
-\let\islikea\weaksubclass
-\def\poly{\mathord\downarrow}
-\def\widen#1{\z@op{{\overline{#1}}}}
-\def\atnext{\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\zSmall\bigcirc$}\kern0.01em\zSmall\bigcirc}
-\def\atlast{\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\kern0.01em\mathord-$}\zSmall\bigcirc}
-\def\always{\lower0.37ex\hbox{$\zbig\Box$}}
-\def\uptilnow{\rlap{$\kern0.02em\mathord-$}\lower0.37ex\hbox{$\zbig\Box$}}
-\def\eventually{\lower0.37ex\hbox{$\zbig\Diamond$}}
-\def\previously{\rlap{$\kern0.04em\mathord-$}\lower0.37ex\hbox{$\zbig\Diamond$}}
-\let\henceforth\always
-\def \mono  {\keyword{monotonic}}
-\def \porder    {\keyword{partial\_order}}
-\def \torder    {\keyword{total\_order}}
-\newbox\z@combox\newdimen\z@wdcalc
-\def\comment{\@ifnextchar*{\z@leftcomment}{\z@comment}}
-\def\z@comment#1{$\z@stopfield\z@addfield\z@startfield$%
-\global\setbox\z@combox\hbox{\quad[{\sf #1}]}\z@wdcalc=\wd\z@combox%
-\advance\z@wdcalc by \wd\z@curline\advance\z@wdcalc by \z@curindent%
-\advance\z@wdcalc by \zedleftsep\advance\z@wdcalc by \zedlinethickness%
-\advance\z@wdcalc by 2\zedindent\ifdim\z@wdcalc>\displaywidth\\%
-\fi&\box\z@combox\ignorespaces}
-\def\z@leftcomment*#1{\hbox{[{\sf #1}]}}
-\def \oid {{\bbold O}}
-\def \self   {\word{self}}
-\def \contained {\word{contained}}
-\let \classuni    \uni
-\def \visibility {\zproject}
-\def \invisibility {{\project\hspace{-0.63 em}\cross}}
-\def \cid {{\bigcirc\mbox{\scriptsize{\hspace{-0.78em}}\mbox{\tiny{C}}}}}
-\def \sid {{\bigcirc\mbox{\scriptsize{\hspace{-0.74em}}\mbox{\tiny{S}}}}}
-\def \eid {{\bigcirc\mbox{\scriptsize{\hspace{-0.74em}}\mbox{\tiny{E}}}}}
-\def \pll {~\parallel~}
-\def \plo {~\parallel_{!}~}
-\def \sqc {~\semi~}
-\def \cnj {~\zand~}
-\def \gch {~[\mbox{\hspace{-0.06em}}]~}
-\def \enh {~\dot~}
-\def \dsqc {\mbox{{\Large $\fcmp~$}}}
-\def \dgch {\mbox{{\Large $[\mbox{\hspace{-0.06em}}]$}}}
-\def \dcnj {\mbox{{\Large $\land$}}}
-\def \dpll {\mbox{{\Large $\parallel$}}}
-\def \dplo {\mbox{{\Large $\parallel_{!}$}}}
-\newcount\z@stackmin
-\newcount\z@stackmax
-\newcount\z@stacktop
-\newdimen\@gtempa \z@stackmin=\allocationnumber
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
-\newdimen\@gtempa
-\z@stackmax=\allocationnumber
-\dimen\z@stackmin=0pt
-\newbox\z@curline
-\newdimen\z@curindent
-\dimen\z@curindent=0pt
-\def\z@space{{}\;{}}
-\newbox\z@curfield
-\def\z@startline{\setbox\z@curline\hbox{}%
-     \global\z@curindent\dimen\z@stacktop
-     \z@startfield\ignorespaces}
-\def\z@stopline{\z@stopfield
-    \z@addfield
-    \hbox{\hskip\z@curindent \box\z@curline}}
-
-\def\z@startfield{\global\setbox\z@curfield\hbox\bgroup}
-\def\z@stopfield{\egroup}
-\def\z@addfield{\global\setbox\z@curline\hbox{\unhbox
-     \z@curline\unhbox\z@curfield}}
-
-\def\z@pushmargin{\hbox{\kern0pt}$%
-  \z@stopfield
-  \z@addfield
-  \ifnum \z@stacktop < \z@stackmax
-    \global\advance\z@stacktop \@ne
-  \else
-    \@latexerr{Z margin stack overflow (too many \string\M's)}
-    \@ehd
-  \fi
-  \global\dimen\z@stacktop\z@curindent
-  \global\advance\dimen\z@stacktop \wd\z@curline
-  \z@startfield\ignorespaces
-  $\relax}
-\def\z@popmargin{\ifnum \z@stacktop > \z@stackmin
-    \global\advance\z@stacktop \m@ne \ignorespaces
-  \else
-    \@latexerr{Z Margin stack underflow (too many \string\O's)}
-    \@ehd
-  \fi}
-\def\M{\z@pushmargin} \def\O{\z@popmargin} \def\S{\z@space}
-\z@stacktop\z@stackmin
-\newdimen\zedindent \zedindent=\leftmargini
-\newdimen\zedleftsep    \zedleftsep=1em
-\newdimen\zedtab    \zedtab=2em
-\newdimen\zedbar    \zedbar=8em
-\newdimen\zedlinethickness  \zedlinethickness=0.4pt
-\newdimen\zedcornerheight   \zedcornerheight=0pt
-\newcount\z@cols
-\newif\ifz@firstline    \z@firstlinefalse
-\newif\ifz@inclass  \z@inclassfalse
-\newif\ifz@inenv    \z@inenvfalse
-\newif\ifz@leftmargin   \z@leftmargintrue
-\newif\ifz@incols   \z@incolsfalse
-\newif\ifleftnames  \leftnamesfalse
-\def\leftschemas{\leftnamestrue}
-\newif\ifz@inbox    \z@inboxfalse
-\newskip\zedbaselineskip    \zedbaselineskip\baselineskip
-\newbox\zstrutbox   \setbox\zstrutbox=\copy\strutbox
-\def\zstrut{\relax\ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}
-\def\zedbaselinestretch{1}
-\def\baselinestretch{1}
-\newcount\interzedlinepenalty   \interzedlinepenalty=10000  %never break
-\newcount\preboxpenalty \preboxpenalty=0    %break easily
-\newcount\forcepagepenalty  \forcepagepenalty=-10000    %always break
-\interdisplaylinepenalty=100    %break sometimes
-\def\zedsize#1{\def\z@size{#1}}
-\def\z@size{}
-\newskip\z@adskip\newskip\z@bdskip\newskip\z@adsskip\newskip\z@bdsskip
-\def\z@changesize{%
-\z@adskip\abovedisplayskip\z@bdskip\belowdisplayskip% save skips
-\z@adsskip\abovedisplayshortskip\z@bdsskip\belowdisplayshortskip
-\z@size % change size
-\abovedisplayskip\z@adskip\belowdisplayskip\z@bdskip% restore skips
-\abovedisplayshortskip\z@adsskip\belowdisplayshortskip\z@bdsskip}
-\def\z@zeroskips{\abovedisplayskip\z@\belowdisplayskip\z@
-    \abovedisplayshortskip\z@\belowdisplayshortskip\z@}
-\def\@setfontsize#1#2#3{\@nomath#1%
-    \ifx\protect\@typeset@protect
-      \let\@currsize#1%
-    \fi
-    \fontsize{#2}{#3}\selectfont
-\setlength{\zedbaselineskip}{\baselineskip/\real{\baselinestretch}}%
-    \zedbaselineskip\zedbaselinestretch\zedbaselineskip
-    \setbox\zstrutbox\hbox{\vrule height.7\zedbaselineskip
-    depth.3\zedbaselineskip width\z@}}
-\def\z@narrow{\advance\linewidth by -\zedindent}
-\def\z@wide{\advance\linewidth by \zedindent}
-\def\z@hrulefill{\leaders\hrule height\zedlinethickness\hfill}
-\def\z@topline#1{\omit\@ifnextchar[{\z@@topline{#1}}{\z@@topline{#1}[]}}
-\def\z@@topline#1[#2]{\hbox to\linewidth{\zstrut\ifleftnames\else
-    \vrule height\zedlinethickness width\zedlinethickness
-    \hbox to\zedleftsep{\z@hrulefill}\fi#1\z@hrulefill
-    \smash{\vrule height\zedlinethickness width\zedlinethickness
-    depth\zedcornerheight}\hbox{\sf #2}}\cr}
-\def\z@dbltopline#1{\omit\@ifnextchar[{\z@@dbltopline{#1}}{\z@@dbltopline{#1}[]}}
-\def\z@@dbltopline#1[#2]{\z@@topline{#1}[#2]%
-\noalign{\kern-\baselineskip
-    \kern-\zedlinethickness
-    \kern-\doublerulesep \nobreak}%
-\omit\z@@topline{\hphantom{#1}}[\hphantom{#2}]%
-\noalign{\kern\doublerulesep
-    \kern\zedlinethickness \nobreak}}
-\def\z@botline{\also\omit\hbox to\linewidth{\z@hrulefill
-\smash{\vrule height\zedcornerheight width\zedlinethickness
-    depth 0pt}}\cr}
-\def\z@@botline[#1]{\hbox to\linewidth{\vrule\z@hrulefill\hbox{\sf\smash{#1}}}\also}
-\def\zedline{\also\omit\@ifnextchar[{\z@@botline}{\z@@botline[]}}
-\def\where{\also \omit \hbox to\zedbar{\z@hrulefill}\cr\also}
-\let \ST    \where
-\def\z@left{\ifz@inbox\vrule width\zedlinethickness\hskip\zedleftsep\fi}
-\def\z@env{\global\z@firstlinetrue\z@changesize
-    $$
-    \z@inenvtrue
-    \baselineskip\zedbaselineskip
-    \parskip=0pt\lineskip=0pt\z@narrow
-    \advance\displayindent by \zedindent
-    \def\\{\crcr}% Must have \def and not \let for nested alignments.
-    \everycr={\noalign{\ifz@firstline \global\z@firstlinefalse
-    \else \penalty\interzedlinepenalty \fi}}
-    \tabskip=0pt}
-\def\endz@env{$$
- \global\@ignoretrue
-}
-\def\z@format{\halign to\linewidth\bgroup%
-    \zstrut\z@left\z@startline\ignorespaces$\@lign##$\z@stopline\hfil%
-    \tabskip=0pt plus1fil%
-    &\hbox to 0pt{\hss\@lign##}\tabskip=0pt\cr}
-\def\z@boxenv{\z@narrow\let\also=\als@ \let\Also=\Als@ \let\ALSO=\ALS@
-    \z@inboxtrue \predisplaypenalty=\preboxpenalty \z@env\z@format}
-\def\z@outnonbox{\z@outclasscheck\z@leavevmode\z@env}
-\def\z@inoutbox{\z@leavevmode\z@makeouter\z@inclassfalse\z@boxenv}
-\def\@but{\noalign{\nointerlineskip}}
-\def\z@nopar{\global\@endpetrue}
-\def\z@leavevmode{\ifvmode\if@inlabel\indent\else\if@noskipsec\indent\else
-    \if@nobreak\global\@nobreakfalse\everypar={}\fi
-    {\parskip=0pt\noindent}\fi\fi\fi}
-\def\also{\crcr\noalign{\vskip\jot}}
-\def\Also{\crcr\noalign{\vskip2\jot}}
-\def\ALSO{\Also\Also}
-\def\als@{\crcr\@but\omit\vrule height\jot width\zedlinethickness \cr \@but}
-\def\Als@{\crcr\@but\omit\vrule height2\jot width\zedlinethickness \cr \@but}
-\def\ALS@{\crcr\@but\omit\vrule height4\jot width\zedlinethickness \cr \@but}
-\def\znewpage{\also\noalign{\penalty\forcepagepenalty}\also}
-\def\zbreak{\also\noalign{\penalty\interdisplaylinepenalty\vskip-\jot}\also}
-\def\Zbreak{\also\noalign{\penalty\interdisplaylinepenalty}\also}
-\def\ZBREAK{\Also\noalign{\penalty\interdisplaylinepenalty}\Also}
-\def\t#1{\hskip #1\zedtab}
-\def\flushr#1{\crcr&#1\quad\cr}
-\def\z@inclasscheck{\ifz@inclass\else
-    \@latexerr{This Z environment is only allowed within a class}
-{Perhaps you forgot to include a \string\begin\string{class\string}
-somewhere^^Jor you are trying to print a file that needs updating.^^J\@ehc} \fi}
-\def\z@outclasscheck{\ifz@inclass
-    \@latexerr{This Z environment is not allowed inside a class}
-{This environment doesn't really make sense within a class.^^J%
-If you really want it then I'll try my best to fit in in.^^J\@ehc}\else
-\ifz@inenv \@latexerr{New Z environment declared before previous
-one is completed}
-{I suspect that you've forgotten to finish the last environment.^^J%
-You are trying to nest environments and this can only be done inside classes^^J%
-besides, the environment you have started isn't valid within classes any way.^^JI suggest that you type \space X <return> \space to quit and then correct your document.}
-\fi\fi}
-\def\z@makeouter{%
- \ifz@inenv
-   \ifz@inclass\z@inenvfalse
-    \hskip-\zedleftsep \advance\linewidth by -\zedlinethickness
-    \zedindent=\zedleftsep \zedleftsep=0.8\zedleftsep
-    \zedbar=0.8\zedbar \zedtab=0.8\zedtab
-    \oz@parbox{\linewidth}\bgroup
-    \z@zeroskips
-   \else
- \@latexerr{Incorrect place for Z environment; nesting is
-  allowed only inside classes}
-   {You've either forgotten to finish the last environment,^^J%
-   you've forgotten to include a
-   \string\begin\string{class\string} somewhere^^J%
-   or you are trying to print a file that needs updating.^^J%
-   (Then again, you might just be trying to do something^^J%
-    that the author of these macros didn't intend you to do)^^J\@ehc}
-   \fi
- \else
-   \bgroup
- \fi
-}
-\def \z@makeinner{\egroup
-   \global\z@curindent\z@
-}
-\def \classbreak{\also\egroup$$\vskip -\ht\zstrutbox
-    \vskip -\abovedisplayskip\vskip -\belowdisplayskip\z@wide\z@boxenv\also}
-\def\zed{\z@outnonbox\z@inboxfalse\z@format}
-\def\endzed{\crcr\egroup\endz@env}
-\let\[=\zed
-\def\]{\crcr\egroup$$\ignorespaces}
-\def\argue{\z@outnonbox\interzedlinepenalty=\interdisplaylinepenalty
-    \openup 1\jot \z@format
-    \noalign{\vskip-\jot}}% equal vspace above and below argue display
-\let\endargue=\endzed
-\def\infrule{\z@outnonbox\halign\bgroup
-    \zstrut\quad$\@lign##$\quad\hfil&\quad\@lign##\hfil\cr}
-\let\endinfrule=\endzed
-\def\derive{\crcr\also\@but\omit\z@hrulefill%
-    \@ifnextchar[{\z@sidecondition}{\cr\also\@but}}
-\def\Derive{\crcr\also\@but\omit\z@hrulefill\cr\@but
-    \noalign{\kern-\dp\zstrutbox
-    \kern\doublerulesep \nobreak}%
-\omit\derive}
-\def\z@sidecondition[#1]{&$\smash{\lower 0.2ex\hbox{$[\;#1\;]$}}$\cr\also\@but}
-\def\syntax{\z@outnonbox\halign\bgroup
-    \zstrut$\@lign##$\hfil &\hfil$\@lign{}##{}$\hfil
-    &$\@lign##$\hfil &\qquad\@lign-- ##\hfil\cr}
-\let\endsyntax=\endzed
-\def\schema#1{\z@inoutbox\z@topline{$\,#1\,$}}
-\def\endschema{\z@botline \endzed \z@makeinner \z@nopar}
-\@namedef{anonschema}{\leftnamesfalse\z@inoutbox\z@topline{}}
-\expandafter\let\csname endanonschema\endcsname=\endschema
-\def\genschema#1#2{\z@inoutbox\z@topline{$\,#1\:[#2]\,$}}
-\let\endgenschema=\endschema
-\def\axdef{\z@inoutbox}
-\def\endaxdef{\endzed\z@makeinner}
-\def\uniqdef{\leftnamesfalse\z@inoutbox\z@dbltopline{}}
-\let\enduniqdef=\endschema
-\def\gendef{\@ifnextchar[{\z@gendef}{\z@@gendef}}
-\def\z@gendef[#1]{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,[#1]\,$}}
-\def\z@@gendef#1{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,[#1]\,$}}
-\let\endgendef=\endschema
-\def\gengendef{\@ifnextchar[{\z@gengendef}{\z@@gengendef}}
-\def\z@gengendef[#1]{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,#1\,$}}
-\def\z@@gengendef#1{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,#1\,$}}
-\let\endgengendef=\endschema
-\def\class#1{\z@leavevmode\z@makeouter\z@inclasstrue
-    \z@boxenv\z@topline{$\,#1\,$}}
-\let\endclass\endschema
-\def\op{\z@inclasscheck\schema}
-\let\endop\endschema
-\def\state{\z@inclasscheck\anonschema}
-\let\endstate\endschema
-\def\init{\z@inclasscheck\schema{\Init}}
-\let\endinit\endschema
-\let\const\axdef
-\let\endconst\endaxdef
-\def\type{\z@inclasscheck}
-\let\endtype\relax
-\def\sidebyside{\@ifnextchar[{\z@columns}{\z@columns[2]}}
-\def\z@columns[#1]{\z@leavevmode\z@cols#1 \z@makeouter\z@narrow%
-    $$\lineskip=0pt\z@incolstrue
-    \predisplaysize\maxdimen
-    \ifz@leftmargin\hskip-\zedindent\z@leftmarginfalse\fi
-    \setbox0=\hbox to \linewidth\bgroup\z@zeroskips%
-    \divide\zedbar by \z@cols \divide\zedleftsep by \z@cols
-    \divide\zedtab by \z@cols \divide\linewidth by \z@cols
-   \oz@parbox[t]{\linewidth}\bgroup\z@wide}
-\def\nextside{\egroup\hss\oz@parbox[t]{\linewidth}\bgroup\z@wide}
-\newdimen\z@temp
-\def\endsidebyside{\egroup\egroup
-    \z@temp\ht0 \advance\z@temp by \dp0\advance\z@temp by-\dp\zstrutbox
-    \hbox{\raise\z@temp\box0}\endz@env\z@makeinner\z@nopar}
-\def\zpar{\z@leavevmode
-    \ifz@inenv\z@inclasstrue\fi% fudge to let zpar in all boxes
-    \z@makeouter\z@changesize
-    \advance\linewidth by -\z@curindent
-    \advance\linewidth by -\wd\z@curline
-    \hskip-\wd\z@curline\advance\linewidth by -\zedindent$$
-    \ifz@leftmargin\hskip-\zedindent\fi% adjustment for first column
-    \advance\displayindent by \zedindent
-    \advance\displaywidth by -\zedindent
-    \advance\displayindent by \z@curindent
-    \advance\displayindent by \wd\z@curline
-    \advance\displaywidth by -\z@curindent
-    \advance\displaywidth by -\wd\z@curline
-    \global\setbox\z@curline\hbox{}
-    \z@narrow\oz@parbox[b]{\linewidth}\bgroup\hfil\break}
-\def\endzpar{\egroup$$\z@makeinner\z@nopar}
-\def \classcom{\zpar\sf}
-\let \endclasscom=\endzpar
-\def\proof{\zpar$\PR$\zpar}
-\def\endproof{\endzpar\endzpar}
-\def\zseq#1{\lseq #1 \rseq}
-\def\zset#1{\{ #1 \}}
-\def\zimg#1{\limg #1 \rimg}
-\def\zsch#1{\lsch #1 \rsch}
-\def\zimgset#1{\zimg\zset{#1}}
-\def\fuzzcompatible{%
-\let\defs\sdef
-\let\empty\emptyset
-}
-\endinput
-%%
-%% End of file `oz.sty'.

+ 0 - 472
paper/paralist.sty

@@ -1,472 +0,0 @@
-%%
-%% This is file `paralist.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% paralist.dtx  (with options: `package')
-%% 
-%% Copyright 1998-2002 Bernd Schandl
-%% email schandl@gmx.net
-%% www   http://schandl.gmxhome.de/paralist
-%% 
-%% This file can be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License distributed from CTAN
-%% archives in the directory macros/latex/base/lppl.txt; either
-%% version 1 of the license, or (at your option) any later version.
-%% 
-%% \CharacterTable
-%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%%   Digits        \0\1\2\3\4\5\6\7\8\9
-%%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%%   Dollar        \$     Percent       \%     Ampersand     \&
-%%   Acute accent  \'     Left paren    \(     Right paren   \)
-%%   Asterisk      \*     Plus          \+     Comma         \,
-%%   Minus         \-     Point         \.     Solidus       \/
-%%   Colon         \:     Semicolon     \;     Less than     \<
-%%   Equals        \=     Greater than  \>     Question mark \?
-%%   Commercial at \@     Left bracket  \[     Backslash     \\
-%%   Right bracket \]     Circumflex    \^     Underscore    \_
-%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%%   Right brace   \}     Tilde         \~}
-%%
-\ProvidesPackage{paralist}%
-          [2002/03/18 v2.3b Extended list environments (BS)]
-\NeedsTeXFormat{LaTeX2e}
-\newif\if@plnewitem\@plnewitemtrue
-\newif\if@plnewenum\@plnewenumtrue
-\newif\if@plalwaysadjust\@plalwaysadjustfalse
-\newif\if@plneveradjust\@plneveradjustfalse
-\newif\if@plneverdecrease\@plneverdecreasefalse
-\newif\if@pldefblank\@pldefblankfalse
-\newif\if@plpointedenum\@plpointedenumfalse
-\newif\if@plpointlessenum\@plpointlessenumfalse
-\newif\if@plflushright\@plflushrighttrue
-\newif\if@plloadcfg\@plloadcfgtrue
-\DeclareOption{newitem}{\@plnewitemtrue}
-\DeclareOption{olditem}{\@plnewitemfalse}
-\DeclareOption{newenum}{\@plnewenumtrue}
-\DeclareOption{oldenum}{\@plnewenumfalse}
-\DeclareOption{alwaysadjust}{\@plalwaysadjusttrue}
-\DeclareOption{neveradjust}{\@plneveradjusttrue}
-\DeclareOption{neverdecrease}{\@plneverdecreasetrue}
-\DeclareOption{increaseonly}{\@plneverdecreasetrue
-  \PackageWarningNoLine{Paralist}{Option increaseonly deprecated.
-    \MessageBreak Use option neverdecrease instead}}
-\DeclareOption{defblank}{\@pldefblanktrue}
-\DeclareOption{pointedenum}{\@plpointedenumtrue}
-\DeclareOption{pointlessenum}{\@plpointlessenumtrue}
-\DeclareOption{cfg}{\@plloadcfgtrue}
-\DeclareOption{nocfg}{\@plloadcfgfalse}
-\DeclareOption{flushright}{\@plflushrighttrue}
-\DeclareOption{flushleft}{\@plflushrightfalse}
-\ExecuteOptions{newitem,newenum,cfg,flushright}
-\ProcessOptions\relax
-\if@plalwaysadjust\@plneveradjustfalse\fi
-\newlength{\pltopsep}
-\newlength{\plpartopsep}
-\newlength{\plitemsep}
-\newlength{\plparsep}
-\setlength{\pltopsep}{0pt}
-\setlength{\plpartopsep}{0pt}
-\setlength{\plitemsep}{0pt}
-\setlength{\plparsep}{0pt}
-\def\if@empty#1#2#3{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\@empty#2\else#3\fi}
-\def\pl@item[#1]{%
-  \if@noitemarg
-    \@noitemargfalse
-    \if@nmbrlist
-      \refstepcounter{\@listctr}%
-    \fi
-  \fi
-  \settowidth{\@tempdima}{#1}%
-  \ifdim\@tempdima>\z@\makelabel{{#1}}\nobreakspace\fi
-  \ignorespaces
-  }
-\def\paradescriptionlabel#1{{\normalfont\bfseries #1}}
-\if@plflushright
-  \def\enumlabel#1{\hss#1}
-\else
-  \def\enumlabel#1{#1\hfil}
-\fi
-\if@plflushright
-  \def\itemlabel#1{\hss#1}
-\else
-  \def\itemlabel#1{#1\hfil}
-\fi
-\newif\if@plmylabel\@plmylabelfalse
-\newif\if@pldoadjust\@pldoadjustfalse
-\def\@adjust@enum@labelwidth{%
-  \if@plneveradjust\else
-    \if@plalwaysadjust\@pldoadjusttrue\else
-      \if@plmylabel\@pldoadjusttrue\fi
-    \fi
-  \fi
-  \if@pldoadjust
-    \csname c@\@enumctr\endcsname7
-    \settowidth{\@tempdima}{%
-      \csname label\@enumctr\endcsname\hspace{\labelsep}}%
-    \advance\@listdepth by 1\relax
-    \if@plneverdecrease
-      \ifdim\@tempdima >
-        \csname leftmargin\romannumeral\@listdepth\endcsname
-          \csname leftmargin\romannumeral\@listdepth\endcsname
-            \@tempdima
-      \fi
-    \else
-      \csname leftmargin\romannumeral\@listdepth\endcsname
-        \@tempdima
-    \fi
-    \advance\@listdepth by -1\relax
-  \fi
-  \@pldoadjustfalse
-  \@plmylabelfalse}
-\def\@adjust@item@labelwidth{%
-  \if@plneveradjust\else
-    \if@plalwaysadjust\@pldoadjusttrue\else
-      \if@plmylabel\@pldoadjusttrue\fi
-    \fi
-  \fi
-  \if@pldoadjust
-    \settowidth{\@tempdima}{%
-      \csname\@itemitem\endcsname\hspace{\labelsep}}%
-    \advance\@listdepth by 1\relax
-    \if@plneverdecrease
-      \ifdim\@tempdima >
-        \csname leftmargin\romannumeral\@listdepth\endcsname
-          \csname leftmargin\romannumeral\@listdepth\endcsname
-            \@tempdima
-      \fi
-    \else
-      \csname leftmargin\romannumeral\@listdepth\endcsname
-        \@tempdima
-    \fi
-    \advance\@listdepth by -1\relax
-  \fi
-  \@pldoadjustfalse
-  \@plmylabelfalse}
-\newtoks\pl@lab
-\def\pl@qmark{?}
-\def\pl@label#1#2{%
-  \edef\pl@the{\noexpand#1{\@enumctr}}%
-  \pl@lab\expandafter{\the\pl@lab\csname the\@enumctr\endcsname}%
-  \advance\@tempcnta1
-  \pl@loop}
-\def\pl@space{\afterassignment\pl@sp@ce\let\@tempa= }
-\def\pl@sp@ce{\pl@lab\expandafter{\the\pl@lab\space}\pl@loop}
-\def\pl@group#1{\pl@lab\expandafter{\the\pl@lab{#1}}\pl@loop}
-\def\pl@other#1{\pl@lab\expandafter{\the\pl@lab#1}\pl@loop}
-\def\pl@loop{\futurelet\pl@temp\pl@loop@}
-\def\pl@loop@{%
-  \ifx A\pl@temp         \def\@tempa{\pl@label\Alph  }\else
-  \ifx a\pl@temp         \def\@tempa{\pl@label\alph  }\else
-  \ifx i\pl@temp         \def\@tempa{\pl@label\roman }\else
-  \ifx I\pl@temp         \def\@tempa{\pl@label\Roman }\else
-  \ifx 1\pl@temp         \def\@tempa{\pl@label\arabic}\else
-  \ifx \@sptoken\pl@temp \let\@tempa\pl@space         \else
-  \ifx \bgroup\pl@temp   \let\@tempa\pl@group         \else
-  \ifx \@@@\pl@temp      \let\@tempa\@gobble          \else
-                         \let\@tempa\pl@other
-                         \pl@hook
-                 \fi\fi\fi\fi\fi\fi\fi\fi
-  \@tempa}
-\providecommand\pl@hook{}
-\def\@enumlabel@#1[#2]{%
-  \@plmylabeltrue
-  \@tempcnta0
-  \pl@lab{}%
-  \let\pl@the\pl@qmark
-  \expandafter\pl@loop\@gobble#2\@@@
-  \ifnum\@tempcnta=1\else
-    \PackageWarning{paralist}{Incorrect label; no or multiple
-      counters.\MessageBreak The label is: \@gobble#2}%
-  \fi
-  \expandafter\edef\csname label\@enumctr\endcsname{\the\pl@lab}%
-  \expandafter\let\csname the\@enumctr\endcsname\pl@the
-  #1}
-\def\@itemlabel@#1[#2]{%
-  \@plmylabeltrue
-  \def\pl@itemitem{#2}%
-  \def\@itemitem{pl@itemitem}%
-  #1}
-\def\asparaenum{%
-  \ifnum\@enumdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@enumdepth\@ne
-    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-  \fi
-  \@ifnextchar[{\@enumlabel@{\@asparaenum@}[}{\@asparaenum@}}
-\def\@asparaenum@{%
-  \expandafter\list\csname label\@enumctr\endcsname{%
-    \usecounter{\@enumctr}%
-    \labelwidth\z@
-    \labelsep.5em
-    \leftmargin\z@
-    \parsep\parskip
-    \itemsep\z@
-    \topsep\z@
-    \partopsep\parskip
-    \itemindent\parindent
-    \advance\itemindent\labelsep
-    \def\makelabel##1{##1}}}
-\let\endasparaenum\endlist
-\def\inparaenum{%
-  \ifnum\@enumdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@enumdepth\@ne
-    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-  \fi
-  \@ifnextchar[{\@enumlabel@{\@inparaenum@}[}{\@inparaenum@}}
-\def\@inparaenum@{%
-  \usecounter{\@enumctr}%
-  \def\@itemlabel{\csname label\@enumctr\endcsname}%
-  \let\@item\pl@item
-  \def\makelabel##1{##1}%
-  \ignorespaces}
-\let\endinparaenum\ignorespacesafterend
-\def\compactenum{%
-  \ifnum\@enumdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@enumdepth\@ne
-    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-  \fi
-  \@ifnextchar[{\@enumlabel@{\@compactenum@}[}{\@compactenum@}}
-\def\@compactenum@{%
-  \@adjust@enum@labelwidth
-  \expandafter\list\csname label\@enumctr\endcsname{%
-    \usecounter{\@enumctr}%
-    \parsep\plparsep
-    \itemsep\plitemsep
-    \topsep\pltopsep
-    \partopsep\plpartopsep
-    \labelwidth
-      \csname leftmargin\romannumeral\@listdepth\endcsname
-    \advance\labelwidth-\labelsep
-    \let\makelabel\enumlabel}}
-\let\endcompactenum\endlist
-\if@plnewenum
-  \def\enumerate{%
-    \ifnum \@enumdepth >\thr@@
-      \@toodeep
-    \else
-      \advance\@enumdepth \@ne
-      \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-    \fi
-    \@ifnextchar[{\@enumlabel@{\@enumerate@}[}{\@enumerate@}}
-  \def\@enumerate@{%
-    \@adjust@enum@labelwidth
-    \expandafter\list\csname label\@enumctr\endcsname{%
-      \usecounter{\@enumctr}%
-      \labelwidth
-        \csname leftmargin\romannumeral\@listdepth\endcsname
-      \advance\labelwidth-\labelsep
-      \let\makelabel\enumlabel}}
-\fi
-\def\asparaitem{%
-  \ifnum\@itemdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@itemdepth\@ne
-    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-  \fi
-  \@ifnextchar[{\@itemlabel@{\@asparaitem@}}{\@asparaitem@}}
-\def\@asparaitem@{%
-  \expandafter\list\csname\@itemitem\endcsname{%
-    \labelwidth\z@
-    \labelsep.5em
-    \leftmargin\z@
-    \parsep\parskip
-    \itemsep\z@
-    \topsep\z@
-    \partopsep\parskip
-    \itemindent\parindent
-    \advance\itemindent\labelsep
-    \def\makelabel##1{##1}}}
-\let\endasparaitem\endlist
-\def\inparaitem{%
-  \ifnum\@itemdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@itemdepth\@ne
-    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-  \fi
-  \@ifnextchar[{\@itemlabel@{\@inparaitem@}}{\@inparaitem@}}
-\def\@inparaitem@{%
-  \def\@itemlabel{\csname\@itemitem\endcsname}%
-  \let\@item\pl@item
-  \def\makelabel##1{##1}%
-  \ignorespaces}
-\let\endinparaitem\ignorespacesafterend
-\def\compactitem{%
-  \ifnum\@itemdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@itemdepth\@ne
-    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-  \fi
-  \@ifnextchar[{\@itemlabel@{\@compactitem@}}{\@compactitem@}}
-\def\@compactitem@{%
-  \@adjust@item@labelwidth
-  \expandafter\list\csname\@itemitem\endcsname{%
-    \parsep\plparsep
-    \itemsep\plitemsep
-    \topsep\pltopsep
-    \partopsep\plpartopsep
-    \labelwidth
-      \csname leftmargin\romannumeral\@listdepth\endcsname
-    \advance\labelwidth-\labelsep
-    \let\makelabel\itemlabel}}
-\let\endcompactitem\endlist
-\if@plnewitem
-  \def\itemize{%
-    \ifnum \@itemdepth >\thr@@
-      \@toodeep
-    \else
-      \advance\@itemdepth\@ne
-      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-    \fi
-    \@ifnextchar[{\@itemlabel@{\@itemize@}}{\@itemize@}}
-  \def\@itemize@{%
-    \@adjust@item@labelwidth
-    \expandafter\list\csname\@itemitem\endcsname{%
-      \labelwidth
-        \csname leftmargin\romannumeral\@listdepth\endcsname
-      \advance\labelwidth-\labelsep
-      \let\makelabel\itemlabel}}
-\fi
-\def\asparadesc{%
-  \list{}{%
-    \labelwidth\z@
-    \labelsep.5em
-    \leftmargin\z@
-    \parsep\parskip
-    \itemsep\z@
-    \topsep\z@
-    \partopsep\parskip
-    \itemindent\parindent
-    \advance\itemindent\labelsep
-    \let\makelabel\paradescriptionlabel}}
-\let\endasparadesc\endlist
-\def\inparadesc{%
-  \let\@itemlabel\@empty
-  \let\@item\pl@item
-  \let\makelabel\paradescriptionlabel
-  \ignorespaces}
-\let\endinparadesc\ignorespacesafterend
-\def\compactdesc{%
-  \list{}{%
-    \parsep\plparsep
-    \itemsep\plitemsep
-    \topsep\pltopsep
-    \partopsep\plpartopsep
-    \labelwidth\z@
-    \itemindent-\leftmargin
-    \let\makelabel\descriptionlabel}}
-\let\endcompactdesc\endlist
-\if@pldefblank
-  \def\asparablank{%
-    \list{}{%
-      \labelwidth\z@
-      \labelsep\z@
-      \leftmargin\z@
-      \parsep\parskip
-      \itemsep\z@
-      \topsep\z@
-      \partopsep\parskip
-      \itemindent\parindent
-      \advance\itemindent\labelsep
-      \def\makelabel##1{##1}}}
-  \let\endasparablank\endlist
-  \def\inparablank{%
-    \let\@itemlabel\@empty
-    \let\@item\pl@item
-    \ignorespaces}
-  \let\endinparablank\ignorespacesafterend
-\fi
-\def\setdefaultitem#1#2#3#4{%
-  \if@empty{#1}{}{\def\labelitemi{#1}}%
-  \if@empty{#2}{}{\def\labelitemii{#2}}%
-  \if@empty{#3}{}{\def\labelitemiii{#3}}%
-  \if@empty{#4}{}{\def\labelitemiv{#4}}}
-\def\defaultitem{%
-  \PackageWarning{Paralist}{Macro \protect\defaultitem\space
-    deprecated. \MessageBreak Use macro \protect\setdefaultitem
-    \space instead!! \MessageBreak Used}
-  \setdefaultitem}
-\newif\if@pltemp
-\def\setdefaultenum#1#2#3#4{%
-  \if@plneveradjust\@pltemptrue\else\@pltempfalse\fi
-  \@plneveradjusttrue
-  \if@empty{#1}{}{%
-    \def\@enumctr{enumi}%
-    \@enumlabel@{\relax}[[#1]}%
-  \if@empty{#2}{}{%
-    \def\@enumctr{enumii}%
-    \@enumlabel@{\relax}[[#2]}%
-  \if@empty{#3}{}{%
-    \def\@enumctr{enumiii}%
-    \@enumlabel@{\relax}[[#3]}%
-  \if@empty{#4}{}{%
-    \def\@enumctr{enumiv}%
-    \@enumlabel@{\relax}[[#4]}%
-  \if@pltemp\@plneveradjusttrue\else\@plneveradjustfalse\fi
-  \@plmylabelfalse
-  \relax}
-\def\defaultenum{%
-  \PackageWarning{Paralist}{Macro \protect\defaultenum\space
-    deprecated. \MessageBreak Use macro \protect\setdefaultenum
-    \space instead!! \MessageBreak Used}
-  \setdefaultitem}
-\def\setdefaultleftmargin#1#2#3#4#5#6{%
-  \if@empty{#1}{}{\leftmargini#1}%
-  \if@empty{#2}{}{\leftmarginii#2}%
-  \if@empty{#3}{}{\leftmarginiii#3}%
-  \if@empty{#4}{}{\leftmarginiv#4}%
-  \if@empty{#5}{}{\leftmarginv#5}%
-  \if@empty{#6}{}{\leftmarginvi#6}%
-  \relax}
-\def\defaultleftmargin#1#2#3#4{%
-  \setdefaultleftmargin{#1}{#2}{#3}{#4}{}{}%
-  \PackageWarning{Paralist}{Macro \protect\defaultleftmargin
-    \space deprecated. \MessageBreak Use macro
-    \protect\setdefaultleftmargin\space instead!!
-    \MessageBreak But note that it has six arguments!
-    \MessageBreak Used}}
-\def\pl@pointxxxenum{%
-  \def\theenumi{\arabic{enumi}}%
-  \def\theenumii{\theenumi.\arabic{enumii}}%
-  \def\theenumiii{\theenumii.\arabic{enumiii}}%
-  \def\theenumiv{\theenumiii.\arabic{enumiv}}%
-  \def\p@enumi{}%
-  \def\p@enumii{}%
-  \def\p@enumiii{}%
-  \def\p@enumiv{}}
-\def\pl@pointedenum{%
-  \def\labelenumi{\theenumi.}%
-  \def\labelenumii{\theenumii.}%
-  \def\labelenumiii{\theenumiii.}%
-  \def\labelenumiv{\theenumiv.}}
-\def\pl@pointlessenum{%
-  \def\labelenumi{\theenumi}%
-  \def\labelenumii{\theenumii}%
-  \def\labelenumiii{\theenumiii}%
-  \def\labelenumiv{\theenumiv}}
-\def\pointedenum{\pl@pointxxxenum\pl@pointedenum}
-\def\pointlessenum{\pl@pointxxxenum\pl@pointlessenum}
-\if@plpointedenum\pointedenum\fi
-\if@plpointlessenum\pointlessenum\fi
-\if@plloadcfg
-  \InputIfFileExists{paralist.cfg}{%
-    \PackageInfo{Paralist}{%
-      Using the configuration file paralist.cfg}}{}
-\fi
-
-\endinput
-%%
-%% End of file `paralist.sty'.

+ 0 - 747
paper/picinpar.sty

@@ -1,747 +0,0 @@
-% This is picinpar.sty
-% Macros for making windows with LaTeX
-%
-% By Friedhelm Sowa, Heinrich-Heine-University D\"usseldorf,
-%                    Computing Center
-%                    In case of emergency try to get the email adress
-%                    after having checked the input :-)
-%                    Okay, for those who are too lazy:
-%                          tex@ze8.rz.uni-duesseldorf.de
-%                          sowa@convex.rz.uni-duesseldorf.de
-%
-% Incorporated are basic ideas of Alan Hoenig (Thanks Alan!)
-% Thanks to Phil Taylor, who gave some useful hints during his
-% tutorial at the EURO TeX 92 in Prague.
-%
-% Also thanks to Ulrik Vieth, who incorporated the macros for
-% generating captions within the windows.
-%
-%----------------
-% Known problems:
-%
-%    - Don't use \samepage
-%    - Use \footnotemark within and \footnotetext outside the
-%      window-environment instead of \footnote
-%    - When using the epic-package load picinpar before epic
-%      like \documentstyle[...,picinpar,epic]{...}
-%----------------
-%
-%                       Here we go
-%
-% Counts
-\newcount\br     \newcount\bl
-\newcount\na     \newcount\nb  \newcount\tcdsav
-\newcount\tcl    \newcount\tcd \newcount\tcn
-\newcount\cumtcl \newcount\cumpartcl
-% Dimens
-\newdimen\lftside   \newdimen\rtside
-\newdimen\hpic      \newdimen\vpic
-\newdimen\strutilg  \newdimen\picwd
-\newdimen\topheight \newdimen\ilg
-\newdimen\lpic      \newdimen\cumpar
-% Tokens
-\newtoks\twa \newtoks\la \newtoks\ra
-\newtoks\ha  \newtoks\pictoc
-% Boxes
-\newbox\rawtext   \newbox\holder
-\newbox\windowbox \newbox\wartext
-\newbox\finaltext \newbox\aslice    \newbox\bslice
-\newbox\wbox      \newbox\wstrutbox \newbox\picbox
-\newbox\waslice   \newbox\wbslice   \newbox\fslice
-% Another strut
-\def\wstrut{\relax\ifmmode\copy\wstrutbox\else\unhcopy\wstrutbox\fi}
-%
-\long\def\window[#1,#2,#3,#4] {%
-% #1 is an integer---no.  of lines down from par top
-% #2 is l, r or c what means left, right or centered
-%    default is, that the picture is printed at the left side
-% #3 is the material for setting a graphic box
-% #4 is the explanation for the graphic
-\vskip\parskip
-\global\cumpar=0pt
-\global\cumpartcl=0
-\global\cumtcl=0
-    \tcd=#1
-    \lftside=0pt \rtside=0pt
-%    \hpic=\linewidth
-    \twa={} \la={} \ra={} \ha={}
-\setbox\wbox=\hbox{(}
-\computeilg
-\pictoc={#3}
-\setbox\windowbox=\vbox{\hbox{#3}}
-\setbox\wbox=\vbox{\hbox{\noindent#4}}
-\picwd=\wd\windowbox
-\hpic=\picwd
-\vpic=\ht\windowbox\advance\vpic\dp\windowbox
-\if #2c\lftside=\linewidth\advance\lftside-\picwd\rtside=0.5\lftside
-       \lftside=\rtside
-\else \if #2r\lftside=\linewidth\advance\lftside-\picwd
-              \rtside=0pt
-      \else\rtside=\linewidth\advance\rtside-\picwd
-           \lftside=0pt
-      \fi
-\fi
-%
-% In case of a centered picture, that does not allow text beside
-% we have to add some glue between preceding text, window and
-% following text.
-%
-\if #2c
- \ifdim\rtside<72pt
-  \rtside=0pt\lftside=0pt
-  \setbox\windowbox=\vbox{%
-    \hrule width\picwd height0pt depth0pt
-    \vskip.5\parskip\box\windowbox\vskip.5\parskip
-    \hrule width\picwd height0pt depth0pt}
-  \vpic=\ht\windowbox\advance\vpic\dp\windowbox
- \fi
- \parskip0pt % Within the window area a \parskip>0pt may look ugly
-\fi
-\ifnum\picwd=0\setbox\picbox=\vbox{\hbox{\noindent#4}}   % without picture
-                               \hpic=\wd\picbox % calculate dimensions
-              \ifnum\lftside=0\rtside=\linewidth\advance\rtside-\hpic
-              \else\ifnum\rtside=0\lftside=\linewidth\advance\lftside-\hpic
-              \else\rtside=0.5\linewidth\advance\rtside-0.5\hpic
-                   \lftside=\rtside
-              \fi\fi
-\else\setbox\picbox=\vbox{\hsize=\hpic\vbox to\vpic{\box\windowbox\vfill}%
-\ifdim\ht\wbox>0pt\vskip\ilg\vbox{\hsize=\hpic\noindent#4
-%
-% See above, this is the second part of glue
-%
-\if #2c
- \ifdim\rtside=0pt \ifdim\lftside=0pt
- \vskip\parskip\hrule width\hpic height0pt depth0pt
- \fi \fi
-\fi
-}
-\fi}\fi
-\vpic=\ht\picbox\advance\vpic\dp\picbox
-\ifdim\lftside>0pt\advance\lftside-0.5\baselineskip\fi  % put in a distance
-\ifdim\rtside>0pt\advance\rtside-0.5\baselineskip\fi    % between text and
-                                                        % window
-\global\br=\rtside \global\bl=\lftside
-\ifnum\picwd=0
-\ifdim\vpic>0pt\picwd=\hpic
-\else\vpic=\ht\picbox\advance\vpic\dp\picbox
-\fi
-\fi
-    \global\tcl=0 \lpic=0pt
-    \loop\global\advance\tcl by 1 \lpic=\tcl\baselineskip
-    \ifdim\lpic<\vpic\repeat
-    \vpic=\lpic
-    \global\cumtcl=\tcl
-%
-% Here we know exactly the number of indented lines and
-% are able to generate the tokens for the \parshape list
-%
-    \ifnum\bl>0\la={ 0pt \lftside}\fi
-    \ifnum\br>0\ra={ 0pt \rtside}\fi
-    \ifnum\tcd>0\ha={ 0pt \linewidth}\fi
-    \ifnum\tcl<1\global\tcl=1\fi
-    \createparshapespec
-    \tcd=#1                        % restore the lintel
-    \global\tcdsav=#1
-%
-% This is a very tricky part of the package. Some day there
-% will exist a detailed documentation.
-%
-\ifdim\parskip>0pt
-    \def\par{\hfill\vadjust{\vskip0pt\vbox to\parskip{\vss}}
-             \global\advance\cumpartcl by 1
-             \global\advance\cumpar by \parskip
-             \global\lpic=\ht\wstrutbox
-             \global\advance\lpic by \dp\wstrutbox
-             \ifdim\cumpar<\lpic
-             \else\advance\cumpar by -\lpic
-                  \advance\cumtcl by -1
-             \fi
-             \egroup\global\tcd=\tcdsav
-             \setbox\wartext=\vbox{\unvbox\rawtext}
-\setbox\rawtext=\vbox\bgroup
-\clubpenalty=0\widowpenalty=0
-\tolerance=1000
-\global\lpic=\ht\wstrutbox
-\global\advance\lpic by \dp\wstrutbox
-%
-% Pick up header lines
-%
-\ifnum\tcd>0\vbadness=10000\splittopskip0pt
- \loop\setbox\holder=\vsplit\wartext to \lpic
-  \hpic=\wd\holder\prune\holder\hpic
-  \ifdim\ht\holder=\parskip
-   \hbox{\vrule height\parskip width0pt depth0pt}
-   \typeout{A paragraph ended within headlines! Please change }
-   \typeout{the number of headlines for the window environment!}
-   \global\advance\tcd by -1
-  \else\hbox{\vbox{\box\holder\unskip}}
-   \global\advance\tcd by -1
-  \fi
- \ifnum\tcd>0\repeat
- \global\tcd=0
- \ifdim\ht\wartext>0pt
- \ifdim\ht\wartext=\parskip\global\advance\tcdsav by 1
-       \setbox\holder=\vsplit\wartext to \lpic
-       \hbox{\vrule height\parskip width0pt depth0pt}
-       \global\advance\cumpar by -\parskip
-       \global\advance\cumpartcl by -1
- \fi\fi
-\fi
-%
-% Pick up lines beside window, the rest too
-%
-\global\tcn=0
-\topheight=0pt
-\ifdim\ht\wartext>0pt\vbadness=10000\splittopskip0pt
- \loop\setbox\holder=\vsplit\wartext to \lpic
-  \hpic=\wd\holder\prune\holder\hpic
-  \ifdim\ht\holder=\parskip
-  \hbox{\vrule height\parskip width0pt depth0pt}
-  \global\advance\topheight by \parskip
-  \else
-   \setbox\fslice=\hbox{\box\holder}
-    \hpic=\ht\fslice
-    \advance\hpic by\dp\fslice
-   \ifdim\hpic>\lpic
-   \global\advance\topheight by\hpic
-   \hbox{\vbox{\box\fslice\vss}}
-   \else\ifdim\hpic=0pt\relax
-   \else\global\advance\topheight by \lpic
-   \hbox{\vbox{\box\fslice}}\fi\fi
-  \fi
- \ifdim\ht\wartext>0pt\repeat
-\tcn=0
-\loop\advance\tcn by 1
-\advance\topheight by -\lpic
-\ifdim\topheight>0pt\repeat
-\hpic=\topheight
-\ifdim\hpic<0pt\advance\tcn by -1\fi
-\global\topheight=\tcn\lpic
-\fi
-%
-% If the indented part is not completed we have to generate a
-% new token for the \parshape list
-%
-\ifnum\tcn<\cumtcl
-\global\tcl=\cumtcl
-\global\advance\topheight by\cumpartcl\parskip
-             \global\advance\tcl by -\tcn \global\twa={}
-             \ifnum\tcl>0
-\global\vpic=\topheight
-\global\topheight=\tcl\lpic
-\global\advance\vpic by \topheight
-\global\advance\vpic by \lpic
-             \createparshapespec
-             \parshape=\tcn \the\twa
-             \else\parshape=0
-             \fi
-\else\parshape=0\fi}
-\else\def\par{\\}
-\fi % new definition of \par in case of \parskip>0 ends here
-%
-% This is where we start to pick up the paragraph(s)
-%
-    \setbox\rawtext=\vbox\bgroup\unvbox\rawtext\unskip
-    \clubpenalty=0\widowpenalty=0
-    \tolerance=1000
-    \parshape=\tcn \the\twa }
-%
-\def\endwindow{%
-    \global\tcd=\tcdsav
-    \egroup\vskip\parskip\parshape=0 % reset parshape; end \box\rawtext
-    \vbadness=10000
-    \splittopskip=0pt
-%
-% Typeset the lines above the window
-%
-\ifnum\tcd>0\setbox\holder=\vsplit\rawtext to \tcd\baselineskip
-\tcn=\tcd
-\loop\advance\tcn -1
-\setbox\fslice=\vsplit\holder to\baselineskip
-\prune\fslice\linewidth
-\topheight=0pt
-\ifnum\dp\fslice>\dp\wstrutbox
-       \advance\topheight-\dp\fslice
-       \advance\topheight\dp\wstrutbox
-       \advance\topheight\ilg\fi
-\hbox to\linewidth{\box\fslice}
-\vskip-\topheight
-\ifdim\ht\holder>0pt\repeat
-\fi
-%
-% Now we build the boxes beside the window
-%
-\global\topheight=\tcl\baselineskip
-\ifnum\cumpartcl>0\global\tcl=\cumtcl
-      \global\topheight=\vpic
-\fi
-\ifnum\bl>0\ifnum\br>0\multiply\topheight by 2\fi\fi
-\ifnum\bl>0\setbox\holder=\vsplit\rawtext to\topheight
-\else\ifnum\br>0\setbox\holder=\vsplit\rawtext to\topheight\fi\fi
-\tcn=\tcl \na=0 \nb=0
-\ifnum\bl>0\ifnum\br>0\multiply\tcn by 2\fi\fi
-\ifnum\bl>0\na=\tcn\ifnum\br>0\divide\na by 2\fi\fi
-\ifnum\br>0\nb=\tcn\ifnum\bl>0\divide\nb by 2\fi\fi
-\ifnum\na=0\ifnum\nb=0
-      \setbox\waslice=\vbox to\vpic{\vss}
-      \setbox\wbslice=\vbox to\vpic{\vss}
-      \bl=1\br=1
-      \vskip\ilg
-\fi\fi
-%
-% both sides
-%
-\ifnum\na>0 \ifnum\nb>0
-\loop\advance\nb -1
-\advance\na -1
-\setbox\aslice=\vsplit\holder to\baselineskip
-\prune\aslice\lftside
-\setbox\waslice=\vbox{\unvbox\waslice\hbox
-to\lftside{\box\aslice\hfil}}
-\setbox\bslice=\vsplit\holder to\baselineskip
-\prune\bslice\rtside
-\setbox\wbslice=\vbox{\unvbox\wbslice\hbox
-to\rtside{\box\bslice\hfil}}
-\ifnum\nb>0\repeat
-\fi\fi
-%
-% only text on the left side
-%
-\ifnum\na>0
-    \loop\advance\na -1
-    \setbox\aslice=\vsplit\holder to\baselineskip
-    \prune\aslice\lftside
-    \setbox\waslice=\vbox{\unvbox\waslice\hbox
-    to\lftside{\box\aslice\hfil}}
-    \ifdim\ht\holder>0pt\repeat
-\fi
-%
-% only text on the right side
-%
-\ifnum\nb>0
-    \loop\advance\nb -1
-    \setbox\bslice=\vsplit\holder to\baselineskip
-    \prune\bslice\rtside
-    \setbox\wbslice=\vbox{\unvbox\wbslice\hbox
-    to\rtside{\box\bslice\hfil}}
-    \ifdim\ht\holder>0pt\repeat
-\fi
-%
-% fixing the dimensions of the window part
-%
-\ifnum\bl=0\topheight=\ht\wbslice
-\else\ifnum\br=0\topheight=\ht\waslice
-      \else\ifdim\ht\waslice>\ht\wbslice\topheight=\ht\waslice
-            \else\topheight=\ht\wbslice\fi\fi\fi
-%
-% ship out the window material to the main vertical list
-%
-\setbox\windowbox=\vbox{\hbox to\linewidth{%
-\ifnum\bl>0\box\waslice\hfill\fi%
-\vbox to\topheight{\hrule width\picwd height0pt depth0pt\vskip0pt%
-\vfill\unvbox\picbox%
-\ifnum\picwd>0\vfill\fi%
-\vss}\ifnum\br>0\hfill\box\wbslice\fi}}%
-\unvbox\windowbox%
-\loop
- \setbox\bslice=\vsplit\rawtext to\baselineskip
- \prune\bslice\linewidth
- \setbox\wbslice=\vbox{\hbox to\linewidth{\box\bslice\hfil}}
- \unvbox\wbslice
- \ifdim\ht\rawtext>0pt
-\repeat
-}% FINITO
-%
-% What else do we need?
-%
-\def\prune#1#2{
-% take a \vbox containing a single \hbox,
-% \unvbox it, and cancel the \lastskip
-% put in a \hbox of width #2
- \unvbox#1 \setbox#1=\lastbox % \box#1 now is an \hbox
- \ifdim\ht#1=\parskip
- \setbox#1=\hbox to#2{\vrule height\parskip depth0pt width0pt\hfill}
- \else\ifdim\ht#1=0pt\relax
- \else\setbox#1=\hbox to#2{\wstrut\unhbox#1\unskip}\fi\fi}
-%
-% Here the token \twa is generated.
-% It's not so difficult as it looks like.
-%
-\def\createparshapespec{%
-\global\tcn=0
-\ifnum\bl>0\global\tcn=\tcl\else\ifnum\br>0\global\tcn=\tcl\fi\fi
-\na=0 \nb=0
-\ifnum\bl>0\ifnum\br>0\multiply\tcn by 2\fi\fi
-\ifnum\bl>0\na=\tcn\ifnum\br>0\divide\na by 2\fi\fi
-\ifnum\br>0\nb=\tcn\ifnum\bl>0\divide\nb by 2\fi\fi
-\global\advance\tcn by\tcd \global\advance\tcn by1
-\ifnum\tcd>0
-\loop\twa=\expandafter{\the\twa\the\ha}\advance\tcd -1
-\ifnum\tcd>0\repeat
-\fi
-\ifnum\bl>0 \ifnum\br>0
-\loop\twa=\expandafter{\the\twa\the\la}\advance\na -1
-\twa=\expandafter{\the\twa\the\ra}\advance\nb -1
-\ifnum\na>0\repeat
-\fi\fi
-\ifnum\na>0
-\loop\twa=\expandafter{\the\twa\the\la}\advance\na -1
-\ifnum\na>0\repeat
-\fi
-\ifnum\nb>0
-\loop\twa=\expandafter{\the\twa\the\ra}\advance\nb -1
-\ifnum\nb>0\repeat
-\fi
-\global\twa=\expandafter{\the\twa 0pt \the\linewidth}}
-%
-\def\computeilg{% compute the interline glue
- \tcl=0\ilg=0pt\strutilg=0pt
- \loop\setbox\wbox=\hbox{\char\tcl}
- \ifdim\ht\wbox>\ilg\ilg=\ht\wbox\fi
- \ifdim\dp\wbox>\strutilg\strutilg=\dp\wbox\fi
- \advance\tcl by 1
- \ifnum\tcl<128\repeat
- \ht\wbox=\ilg
- \dp\wbox=\strutilg
- \strutilg=\ht\wbox %\advance\strutilg by\ilg
- \ifdim\strutilg>\baselineskip
-  \typeout{character with height greater baselineskip found in font}
-  \typeout{baselineskip changed to 1.5 of that height!}
-  \baselineskip=1.5\strutilg
- \fi
- \global\ilg=\baselineskip
- \global\advance\ilg-\ht\wbox \global\advance\ilg-\dp\wbox
- \strutilg=\ht\wbox \advance\strutilg by\ilg
- \setbox\wstrutbox=\hbox{\vrule height\strutilg depth\dp\wbox width0pt}}
-%
-% frames
-%
-\def\framepic#1{\vbox{%
-\hsize\expandafter\wd\csname #1box\endcsname
-\advance\hsize .8pt \hrule%
-\hbox to\hsize%
-{\vrule\hfill\vbox to\expandafter\ht\csname #1box\endcsname{%
-\expandafter\box\csname #1box\endcsname }\hfill\vrule}\hrule\vss}}
-%
-\def\wframepic#1{\vbox{%
-\hsize\expandafter\wd\csname #1box\endcsname
-\advance\hsize 3.8pt\hrule%
-\hbox to\hsize%
-{\vrule\hfill\vbox{\kern1.5pt%
-\expandafter\box\csname #1box\endcsname
-\kern1.5pt}\hfill\vrule}\hrule\vss}}
-%
-% caption
-%
-\def\winstepcounter#1{\global\advance\csname c@#1\endcsname 1
-    {\let\@elt\@stpelt \csname cl@#1\endcsname}}
-
-\def\winrefstepcounter#1{\winstepcounter{#1}\let\@tempa\protect
-\def\protect{\noexpand\protect\noexpand}%
-\edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}%
-\let\protect\@tempa}
-\long\def\w@dblarg#1{\@ifnextchar[{#1}{\w@xdblarg{#1}}}
-\long\def\w@xdblarg#1#2\par{#1[{#2}]#2\par}
-
-\def\wincaption{\winrefstepcounter\@captype \w@dblarg{\@wincaption\@captype}}
-
-\long\def\@wincaption#1[#2]#3\par{\par\addcontentsline{\csname
-  ext@#1\endcsname}{#1}{\protect\numberline{\csname
-  the#1\endcsname}{\ignorespaces #2}}\begingroup
-    \@parboxrestore
-    \normalsize
-    \@makewincaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
-  \endgroup}
-
-\long\def\@makewincaption#1#2{%
-   \setbox\@tempboxa\hbox{\footnotesize{\bf #1:\enspace}{#2}}%
-   \ifdim\wd\@tempboxa>\picwd
-      {\footnotesize{\bf #1:\enspace}{#2\par}}
-   \else
-      \hbox to\picwd{\hfil\box\@tempboxa\hfil}
-   \fi}
-
-\long\def\figwindow[#1,#2,#3,#4] {%
-     \advance\c@figure -1
-     \begin{window}[#1,#2,{#3},{\def\@captype{figure}%
-        \wincaption#4\par}] }
-
-\long\def\tabwindow[#1,#2,#3,#4] {%
-     \advance\c@table -1
-     \begin{window}[#1,#2,{#3},{\def\@captype{table}%
-        \wincaption#4\par}] }
-
-\def\endfigwindow{\end{window}}
-\def\endtabwindow{\end{window}}
-\endinput
-%%%
-\documentstyle[german,picinpar]{article}
-\setlength{\parskip}{.66\baselineskip}
-\setlength{\parindent}{0pt}
-\begin{document}
-\section*{Beispiele zu {\tt picinpar.sty}}
-\font\yn=cmss17 scaled \magstep5 %oder sonst was gro"ses (yinit?)
-\begin{verbatim}
-\begin{window}[0,l,{\yn V},{}]
-or einigen Jahren wurde von ...
-... Abschnitts erfolgten automatisch.
-\end{window}
-\end{verbatim}
-
-\begin{window}[0,l,{\yn V},{}]
-or einigen Jahren wurde von Donald E.~Knuth im TUGboat ein kleines
-Problem mit der Bitte um L"osung vorgestellt. Es handelte sich darum,
-in einem Paragraphen ein Fenster zu erzeugen, in das man beliebigen Text
-oder eine Zeichnung hineinsetzen kann. Prompt kamen dann in den folgenden
-Ausgaben L"osungsvorschl"age: Einer von DEK pers"onlich, der andere von
-Alan Hoenig. Der letztgenannte brachte die elegantere L"osung, die keine
-manuellen Korrekturen mehr notwendig machte. Sein Makro verlangte lediglich
-in den Parametern Informationen "uber die Breite und H"ohe der
-freizulassenden Stelle im Paragraphen. Die Einz"uge und der Satz der
-Fragmente des Abschnitts erfolgten automatisch.
-\end{window}
-
-\begin{verbatim}
-\begin{figwindow}[2,r,{
-\unitlength1cm
-\begin{picture}(3,1.4)
-\put(0.7,0.7){\circle*{0.2}}     \put(0.7,0.7){\circle{1.2}}
-\put(0.7,0.7){\vector(0,1){0.6}} \put(2.5,0.7){\circle*{0.5}}
-\end{picture}
-},{Kreise und Pfeile}]
-Was leisten nun diese Macros ...
-... sieht hierbei wie folgt aus:
-\end{figwindow}
-\end{verbatim}
-
-\begin{figwindow}[2,r,{
-\unitlength1cm
-\begin{picture}(3,1.4)
-\put(0.7,0.7){\circle*{0.2}}     \put(0.7,0.7){\circle{1.2}}
-\put(0.7,0.7){\vector(0,1){0.6}} \put(2.5,0.7){\circle*{0.5}}
-\end{picture}
-},{Kreise und Pfeile}]
-Was leisten nun diese Macros? Einen kleinen Eindruck hat man schon
-zu Anfang dieses Artikels bekommen: der erste Buchstabe des Absatzes
-ist in einer anderen Schriftgr"o"se gedruckt und in den Absatz eingepa"st.
-Es mu"s aber nicht unbedingt Text sein, der so einger"uckt wird. Es kann
-ebenso eine \verb?picture?--Umgebung sein, die so in den Absatz eingef"ugt
-wird. Das rechts stehende Beispiel, das aus "'\LaTeX , Eine Einf"uhrung"'
-bekannt sein d"urfte, ist in einer \verb?minipage?--Umgebung gesetzt
-worden. Die Eingabe im Text sieht hierbei wie oben aus.
-\end{figwindow}
-
-\begin{verbatim}
-\begin{tabwindow}[1,r,{
-\begin{tabular}[t]{|r|l|r@{:}l|}
-\hline
-1&HSV&12&0\\
-...
-\end{tabular}
-},{Tabelle}]
-Auch der Satz von Tabellen in ...
-... w"urde sie etwas durchh"angen.
-
-Nachdem die Tastatur gequ"alt ...
-... noch die Nummerierung stimmt.
-\end{tabwindow}
-\end{verbatim}
-
-\begin{tabwindow}[1,r,{
-\begin{tabular}[t]{|r|l|r@{:}l|}
-\hline
-1&HSV&12&0\\
-\hline
-2&MSV&11&1\\
-\hline
-3&VfB&10&2\\
-\hline
-4&SVW&9&3\\
-\hline
-5&1.\ FCK&8&4\\
-\hline
-\end{tabular}
-},{Tabelle}]
-Auch der Satz von Tabellen in ein Fenster ist kein gro"ses Problem.
-Man nimmt einfach eine Tabelle, oder denkt sich auch eine aus.
-Dann wird daf"ur Sorge getragen, da"s sie auch mit der unteren
-Zeile ausgerichtet wird. Ansonsten w"urde sie etwas durchh"angen.
-
-Nachdem die Tastatur gequ"alt und das Hirn zermartert wurde kommt
-dann so etwas heraus, wie es hier rechts zu sehen ist. Sogar die
-Tabellenbezeichnung ist erschienen. Aber wirklich interessant wird's,
-wenn auch bei der n"achsten Tabelle noch die Nummerierung stimmt.
-\end{tabwindow}
-
-\begin{verbatim}
-\begin{tabwindow}[2,l,{
-\begin{tabular}[t]{|r|l|r@{:}l|}
-...
-\end{tabular}
-},{Tabelle}]
-Was wahnsinnig ...
-... sagt's denn?
-\end{tabwindow}
-\end{verbatim}
-
-\begin{tabwindow}[2,l,{
-\begin{tabular}[t]{|r|l|r@{:}l|}
-\hline
-1&HSV&12&0\\
-\hline
-2&MSV&11&1\\
-\hline
-3&VfB&10&2\\
-\hline
-4&SVW&9&3\\
-\hline
-5&1.\ FCK&8&4\\
-\hline
-\end{tabular}
-},{Tabelle}]
-Was wahnsinnig auflockernd wirkt, ist der st"andige Positionswechsel
-von Abbildungen auf einer Seite. Das Auge wird nicht m"ude bei
-der Erkundung der typographischen Vielfalt, die in gedruckten
-Werken enthalten ist. Aber man sollte sich nichtsdestotrotz doch
-auf die wesentlichen Mitteilungen konzentrieren, die mit derartigen
-Werken vermittelt werden sollen.
-
-Was sind aber nun die essentiellen Informationen? Naja, ein kleines
-{\tt l} und eine {\tt 2} bewirkt ein g"anzlich anderes Erscheinungsbild
-der Realit"at, wie sie mit den Augen eines Fu"sballfans der sechziger
-Jahre gesehen sein k"onnte. Bevor wir es vergessen: Da war doch noch
-die Unsicherheit wegen der Nummerierung von Tabellen. Na also, wer
-sagt's denn?
-\end{tabwindow}
-
-\begin{verbatim}
-\begin{tabwindow}[4,c,{
-\begin{tabular}[t]{|r|l|r@{:}l|r@{:}l|}
-...
-\end{tabular}
-},{Tabelle}]
-\sloppy
-Aber jetzt wird alles auf ...
-... genug der Beispiele.
-\end{tabwindow}
-\end{verbatim}
-
-\begin{tabwindow}[4,c,{
-\begin{tabular}[t]{|r|l|r@{:}l|r@{:}l|}
-\hline
-1&HSV&12&0&14&1\\
-\hline
-2&MSV&11&1&10&4\\
-\hline
-3&VfB&10&2&12&9\\
-\hline
-4&SVW&9&3&11&9\\
-\hline
-5&1.\ FCK&8&4&10&10\\
-\hline
-\end{tabular}
-},{Tabelle}]
-\sloppy
-Aber jetzt wird alles auf die Spitze getrieben. Oder vielmehr
-in die Mitte gesetzt. Ja doch, auch der zentrierte Satz einer Tabelle
-ist ebenfalls kein gro"ses Problem. Ein Problem ist jedoch, wie denn
-der Text gelesen werden soll. Erst die linke Spalte und dann die
-rechte oder einfach von links nach rechts? Oft kann man es nicht
-falsch machen. Das tr"ostet doch ungemein!
-
-Nun noch ein kleiner Hinweis in eigener Sache:
-Beim zentrierten Satz ist es schon besser, wenn der Abstand zwischen
-den Abschnitten auf $0pt$ gesetzt wird oder nur ein Paragraph verwendet
-wird. Der Grund? Die Abst"ande k"onnen unabh"angig vom Zeilenabstand
-sein und so ist ein optisch korrekter Satz der Spalten rechts und
-links vom Fenster etwas m"uhsam {\tt :-)}. Um nichts dem Zufall zu
-"uberlassen wird dies gleich von {\tt picinpar} erledigt.
-\end{tabwindow}
-
-Jetzt noch der Fall, bei dem eine Abbildung zentriert in den Text gesetzt
-werden soll, aber rechts und links so wenig Platz ($<=72pt$) bleibt,
-da"s dort die Probleme mit den Trennungen zu gro"s werden w"urden. Als
-Beispiel wird im Fenster die \TeX{}--Eingabe zu diesem Fall gezeigt. Um
-gleich etwaigen Problemen vorzubeugen, wird zun"achst wie folgt vorgegangen:
-
-{\parskip0pt\topsep0pt
-\begin{verbatim}
-\newbox\pppbox
-\setbox\pppbox=\vbox{\hsize=11cm
-\begin{verbatim}
-\begin{figwindow}[4,c,{\wframepic{ppp}
-},
-{Die Eingabe zu diesem Textteil!}]
-Diese Vorgehensweise ist wegen der Benutzung
-...
-dem Einsatz im Wege.
-\end{figwindow}
-\end{verbatim}
-\verb?\end{verbatim}?
-\begin{verbatim}
-}
-\end{verbatim}
-}
-\newbox\pppbox
-\setbox\pppbox=\vbox{\hsize=11cm
-\begin{verbatim}
-\begin{figwindow}[4,c,{\wframepic{ppp}
-},
-{Die Eingabe zu diesem Textteil!}]
-Diese Vorgehensweise ist wegen der Benutzung
-...
-dem Einsatz im Wege.
-\end{figwindow}
-\end{verbatim}
-}
-\begin{figwindow}[4,c,{\wframepic{ppp}},
-{Die Eingabe zu diesem Textteil!}]
-Diese Vorgehensweise ist wegen der Benutzung von {\tt figwindow} und
-der {\tt verbatim} dargestellten Eingabe notwendig. Aber ist ja auch egal.
-Wichtig ist einfach, da"s festgestellt wird, ob rechts und links vom
-zentrierten Bild noch genug Platz frei ist, um dort Text ohne gro"se
-Probleme zu setzen. Die Wahl von $72pt$ ist mehr oder weniger willk"urlich
-vorgenommen worden. Letztlich h"angt diese Grenze ja auch von der
-verwendeten Sprache ab. Falls also nicht genug Platz an den Seiten
-vorhanden ist, dann wird einfach nach dem Fenster mit dem Text fortgefahren.
-Noch mal schnell ein Blick auf die Nummerierung der Abbildungen...
-Ja, stimmt genau. Jetzt steht also dem Einsatz nichts im Wege.
-\end{figwindow}
-
-\begin{window}[3,r,{\arraycolsep=2.5pt \def\arraystretch{.75}
-$\left(\begin{array}{ccccccccc}%
-	 *&*&*&*&&&&&\\
-        **&*&*&*&*&&&&\\ \cline{3-6}
-	 *&*&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&&&\\
-	 &*&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&*&&\\
-	 &&\multicolumn{1}{|c}{*}&*&*&\multicolumn{1}{c|}{*}&*&*&\\ \cline{3-6}
-	 &&&*&*&*&*&*&*\\
-	 &&&&*&*&*&*&*\\
-	 &&&&&*&*&*&*\\
-	 &&&&&&*&*&*
-	 \end{array}
-   \right)$},{}]
-Doch halt! Es handelt sich hier ja um \TeX{}. Und das ist Grund genug, auch
-noch kurz auf mathematischen Formelsatz einzugehen. Sowohl im Fenster als
-auch im Text neben dem Fenster k"onnen Formeln erscheinen, deren Dimensionen
-beim Satz weitestgehend ber"ucksichtigt werden. Da ist also rechts ein
-{\tt array} und hier folgt eine Formel:
-
-\def\formel#1#2#3#4#5{#1(#4)-#1(#3)=
-\int_{#3}^{#4}\sum_{j=0}^{#5}#2(x_j)
-\prod_{{k=0}\atop{k\not= j}}^{#5}
-{x-x_k\over x_j-x_k}\; dx}
-$\formel Ffabn$
-
-Der zentrierte Satz von Formeln neben dem Text ist bisher mit
-{\tt picinpar.sty} nicht m"oglich, vielleicht kommt es aber eines
-Tages. Und "uberhaupt hat sich gerade der Mathematiksatz als gro"ses
-Problem bei der Entwicklung herausgestellt, da doch viel {\tt glue} in
-den {\tt boxes} verwendet wird. Aber es geht ja doch so halbwegs.
-\end{window}
-\vfill
-\centerline{Friedhelm Sowa, Heinrich--Heine--Universit"at D"usseldorf,
-Universit"atsrechenzentrum}
-\centerline{Email: sowa@convex.rz.uni-duesseldorf.de {\sl oder}
-tex@ze8.rz.uni-duesseldorf.de}
-\end{document}

+ 0 - 27
paper/references.bib

@@ -1,27 +0,0 @@
-%% This BibTeX bibliography file was created using BibDesk.
-%% http://bibdesk.sourceforge.net/
-
-
-%% Created for Quinten Soetens at 2010-04-22 14:05:52 +0200 
-
-
-%% Saved with string encoding Unicode (UTF-8) 
-
-
-@comment{jabref-meta: selector_publisher:}
-@comment{jabref-meta: selector_author:}
-@comment{jabref-meta: selector_journal:}
-@comment{jabref-meta: selector_keywords:}
-
-
-
-@book{Demeyer2008,
-	Annote = {book},
-	Author = {Serge Demeyer and St{\'e}phane Ducasse and Oscar Nierstrasz},
-	Isbn = {978-3-9523341-2-6},
-	Keywords = {olit scg-pub snf-none jb09 skipdoi stefPub moose-pub},
-	Publisher = {Square Bracket Associates},
-	Title = {Object-Oriented Reengineering Patterns},
-	Url = {http://www.iam.unibe.ch/~scg/OORP},
-	Year = {2008},
-	Bdsk-Url-1 = {http://www.iam.unibe.ch/~scg/OORP}}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 1529
paper/titlesec.sty