Browse Source

Rename some things, update README.

Joeri Exelmans 5 years ago
parent
commit
3064fa0c4e

+ 7 - 0
README.md

@@ -29,6 +29,13 @@ Assuming you followed the installation instructions above, run:
 python3 -m sccd.test.run test/test_files
 ```
 
+## Runtime environment variables
+
+The following environment variables can be set to change the behavior of the runtime. These options can be set while running the tests, or while running one of the examples.
+
+* `SCCDDEBUG`: When set, additional debug information is printed, such as the individual transitions taken.
+* `SCCDTIMINGS`: When set, at exit, the runtime will print information about how much time in total was spent during various parts of its execution, such as loading the model (if model was loaded from a file), generating transition candidates, executing transitions, executing actions, and more.
+
 ## Included tools
 
 The following Python modules are runnable from terminal:

+ 25 - 0
examples/digitalwatch/run.py

@@ -0,0 +1,25 @@
+from DigitalWatchGUI import DigitalWatchGUI
+import tkinter
+from tkinter.constants import NO
+
+from sccd.controller.controller import *
+from sccd.statechart.parser.xml import parse_f, create_statechart_parser
+from sccd.model.model import *
+
+g = Globals()
+sc_parser = create_statechart_parser(g, "statechart_digitalwatch.xml")
+statechart = parse_f("statechart_digitalwatch.xml", rules=sc_parser)
+model = SingleInstanceModel(g, statechart)
+controller = Controller(model)
+
+
+root = tkinter.Tk()
+root.withdraw()
+topLevel = tkinter.Toplevel(root)
+topLevel.resizable(width=NO, height=NO)
+topLevel.title("DWatch")
+gui = DigitalWatchGUI(topLevel)
+
+gui.controller.
+
+root.mainloop()

+ 15 - 0
examples/digitalwatch/statechart_digitalwatch.xml

@@ -15,6 +15,21 @@
     refresh_chrono_display = func {};
   </datamodel>
 
+  <outport name="out">
+    <event name="set_alarm"/>
+    <event name="set_indiglo"/>
+    <event name="unset_indiglo"/>
+    <event name="increase_time_by_one"/>
+    <event name="refresh_time_display"/>
+    <event name="check_time"/>
+    <event name="start_selection"/>
+    <event name="stop_selection"/>
+    <event name="increase_selection"/>
+    <event name="reset_chrono"/>
+    <event name="increase_chrono_by_one"/>
+    <event name="refresh_chrono_display"/>
+  </outport>
+
   <inport name="in">
     <event name="bottom_left_pressed"/>
     <event name="bottom_left_released"/>

+ 5 - 4
src/sccd/render.py

@@ -40,20 +40,21 @@ if __name__ == '__main__':
 
     def process(src):
       try:
-        parse_statechart = create_statechart_parser(Globals(), src, load_external=False)[0][1]
+        path = os.path.dirname(src)
+        parse_sc = statechart_parser_rules(Globals(), path, load_external=False)[0][1]
 
         def parse_test(el):
           def when_done(*statecharts):
             return statecharts[0]
           # When parsing <test>, only look for <statechart> node in it.
           # All other nodes will be ignored.
-          return ([("statechart", parse_statechart)], when_done)
+          return ([("statechart", parse_sc)], when_done)
 
-        statechart = parse(src,
+        statechart = parse_f(src,
           # Match both <test> and <statechart> root nodes:
           [
             ("test?", parse_test),
-            ("statechart?", parse_statechart)
+            ("statechart?", parse_sc)
           ],
           ignore_unmatched=True)
 

+ 3 - 2
src/sccd/statechart/cmd/check_model.py

@@ -12,9 +12,10 @@ if __name__ == "__main__":
     src = args.path
 
     try:
-      sc_parser = create_statechart_parser(Globals(), src, load_external=True)
+      path = os.path.dirname(src)
+      rules = statechart_parser_rules(Globals(), path, load_external=True)
 
-      statechart = parse(src, sc_parser, decorate_exceptions=(ModelError,))
+      statechart = parse(src, rules, decorate_exceptions=(ModelError,))
 
       assert isinstance(statechart, Statechart)
     except Exception as e:

+ 1 - 1
src/sccd/statechart/dynamic/round.py

@@ -237,7 +237,7 @@ class SmallStep(Round):
                     print_debug("")
                     if enabled_events:
                         print_debug("events: " + str(enabled_events))
-                    print_debug("candidates: " + str(candidates))
+                    print_debug("candidates: " + ",  ".join(str(t) for t in candidates))
                 candidates = iter(candidates)
 
             return candidates

+ 11 - 12
src/sccd/statechart/parser/xml.py

@@ -17,8 +17,8 @@ def check_duration_type(type):
       msg += "\n Hint: Did you forget a duration unit sufix? ('s', 'ms', ...)"
     raise Exception(msg)
 
-
-def create_statechart_parser(globals, src_file, load_external = True, parse = parse_f) -> Rules:
+# path: path for finding external statecharts
+def statechart_parser_rules(globals, path, load_external = True, parse_f = parse_f) -> Rules:
   import os
   def parse_statechart(el):
     ext_file = el.get("src")
@@ -36,8 +36,7 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
     else:
       if not load_external:
         raise SkipFile("Parser configured not to load statecharts from external files.")
-      ext_file_path = os.path.join(os.path.dirname(src_file), ext_file)
-      statechart = parse(ext_file_path, create_statechart_parser(globals, ext_file_path))
+      statechart = parse_f(os.path.join(path, ext_file), statechart_parser_rules(globals, path, load_external=False, parse_f=parse_f))
 
     def parse_semantics(el):
       # Use reflection to find the possible XML attributes and their values
@@ -81,7 +80,7 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
       transitions = [] # All of the statechart's transitions accumulate here, cause we still need to find their targets, which we can't do before the entire state tree has been built. We find their targets when encoutering the </root> closing tag.
       after_id = 0 # After triggers need unique IDs within the scope of the statechart model
 
-      def create_actions_parser(scope):
+      def actions_rules(scope):
 
         def parse_raise(el):
           params = []
@@ -138,7 +137,7 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
           elif len(state.children) > 1:
             raise XmlError("More than 1 child state: must set 'initial' attribute.")
 
-      def create_state_parser(parent, sibling_dict: Dict[str, State]={}):
+      def state_child_rules(parent, sibling_dict: Dict[str, State]={}):
 
         def common(el, constructor):
           short_name = require_attribute(el, "id")
@@ -160,11 +159,11 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
           children_dict = {}
           def finish_state():
             deal_with_initial(el, state, children_dict)
-          return (create_state_parser(parent=state, sibling_dict=children_dict), finish_state)
+          return (state_child_rules(parent=state, sibling_dict=children_dict), finish_state)
 
         def parse_parallel(el):
           state = common_nonpseudo(el, ParallelState)
-          return create_state_parser(parent=state)
+          return state_child_rules(parent=state)
 
         def parse_history(el):
           history_type = el.get("type", "shallow")
@@ -178,12 +177,12 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
         def parse_onentry(el):
           def finish_onentry(*actions):
             parent.enter = actions
-          return (create_actions_parser(statechart.scope), finish_onentry)
+          return (actions_rules(statechart.scope), finish_onentry)
 
         def parse_onexit(el):
           def finish_onexit(*actions):
             parent.exit = actions
-          return (create_actions_parser(statechart.scope), finish_onexit)
+          return (actions_rules(statechart.scope), finish_onexit)
 
         def parse_transition(el):
           if parent is root:
@@ -242,7 +241,7 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
             transitions.append((transition, el))
             parent.transitions.append(transition)
 
-          return (create_actions_parser(scope), finish_transition)
+          return (actions_rules(scope), finish_transition)
 
         return {"state": parse_state, "parallel": parse_parallel, "history": parse_history, "onentry": parse_onentry, "onexit": parse_onexit, "transition": parse_transition}
 
@@ -278,7 +277,7 @@ def create_statechart_parser(globals, src_file, load_external = True, parse = pa
 
         statechart.tree = StateTree(root)
 
-      return (create_state_parser(root, sibling_dict=children_dict), finish_root)
+      return (state_child_rules(root, sibling_dict=children_dict), finish_root)
 
     def finish_statechart():
       return statechart

+ 8 - 5
src/sccd/statechart/static/tree.py

@@ -34,7 +34,7 @@ class State:
         return self.opt.state_id_bitmap
 
     def __repr__(self):
-        return "State(\"%s\")" % (self.opt.full_name)
+        return "State(\"%s\")" % (self.short_name)
 
 # Generated fields (for optimization) of a state
 @dataclass
@@ -81,7 +81,7 @@ class ShallowHistoryState(HistoryState):
         return states_to_bitmap(self.parent.children)
 
     def __repr__(self):
-        return "ShallowHistoryState(\"%s\")" % (self.opt.full_name)
+        return "ShallowHistoryState(\"%s\")" % (self.short_name)
 
 class DeepHistoryState(HistoryState):
 
@@ -90,7 +90,7 @@ class DeepHistoryState(HistoryState):
         return self.parent.opt.descendants
 
     def __repr__(self):
-        return "DeepHistoryState(\"%s\")" % (self.opt.full_name)
+        return "DeepHistoryState(\"%s\")" % (self.short_name)
 
 class ParallelState(State):
 
@@ -98,7 +98,7 @@ class ParallelState(State):
         return self.target_states(instance)
 
     def __repr__(self):
-        return "ParallelState(\"%s\")" % (self.opt.full_name)
+        return "ParallelState(\"%s\")" % (self.short_name)
 
 @dataclass
 class EventDecl:
@@ -194,7 +194,7 @@ class Transition:
 
     opt: Optional['TransitionOptimization'] = None        
                     
-    def __repr__(self):
+    def __str__(self):
         return termcolor.colored("%s 🡪 %s" % (self.source.opt.full_name, self.targets[0].opt.full_name), 'green')
 
 # Generated fields (for optimization) of a transition
@@ -312,3 +312,6 @@ class StateTree:
                 arena_bitmap=arena.opt.descendants | arena.opt.state_id_bitmap)
 
         timer.stop("optimize tree")
+
+    def __repr__(self):
+        return "StateTree(root=%s, state_list=%s, transition_list=%s)" % (self.root, self.state_list, self.transition_list)

+ 3 - 3
src/sccd/test/parser.py

@@ -11,9 +11,9 @@ class TestVariant:
   input: list
   output: list
 
-def create_test_parser(create_statechart_parser):
+def test_parser_rules(statechart_parser_rules):
   globals = Globals(fixed_delta=None)
-  statechart_parser = create_statechart_parser(globals)
+  sc_rules = statechart_parser_rules(globals)
   input = []
   output = []
 
@@ -84,6 +84,6 @@ def create_test_parser(create_statechart_parser):
         output=output)
       for i, variant in enumerate(variants)]
 
-    return (statechart_parser + [("input?", parse_input), ("output?", parse_output)], when_done)
+    return (sc_rules + [("input?", parse_input), ("output?", parse_output)], when_done)
 
   return [("test", parse_test)]

+ 6 - 3
src/sccd/test/run.py

@@ -20,11 +20,14 @@ class Test(unittest.TestCase):
     return self.src
 
   def runTest(self):
-    statechart_parser = functools.partial(create_statechart_parser, src_file=self.src)
-    test_parser = create_test_parser(statechart_parser)
+    # assume external statechart files in same directory as test
+    
+    path = os.path.dirname(self.src)
+    sc_rules = functools.partial(statechart_parser_rules, path=path)
+    test_rules = test_parser_rules(sc_rules)
     try:
       timer.start("parse test")
-      test_variants = parse_f(self.src, test_parser)
+      test_variants = parse_f(self.src, test_rules)
       timer.stop("parse test")
     except Exception as e:
       print_debug(e)

+ 64 - 64
test/test_files/day_atlee/statechart_fig9_trafficlight.svg

@@ -4,25 +4,25 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="514pt" height="542pt"
- viewBox="0.00 0.00 514.00 542.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="482pt" height="542pt"
+ viewBox="0.00 0.00 482.00 542.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 538)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-538 510,-538 510,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-538 478,-538 478,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__TrafficLight</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 486,-8 486,-8 492,-8 498,-14 498,-20 498,-20 498,-483 498,-483 498,-489 492,-495 486,-495 486,-495 20,-495 20,-495 14,-495 8,-489 8,-483 8,-483 8,-20 8,-20 8,-14 14,-8 20,-8"/>
-<text text-anchor="start" x="223.8306" y="-476.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">TrafficLight</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 454,-8 454,-8 460,-8 466,-14 466,-20 466,-20 466,-483 466,-483 466,-489 460,-495 454,-495 454,-495 20,-495 20,-495 14,-495 8,-489 8,-483 8,-483 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="207.8306" y="-476.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">TrafficLight</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__TrafficLight_EastWest</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="261,-16 261,-457 490,-457 490,-16 261,-16"/>
-<text text-anchor="start" x="350.3296" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EastWest</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="245,-16 245,-457 458,-457 458,-16 245,-16"/>
+<text text-anchor="start" x="326.3296" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EastWest</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__TrafficLight_NorthSouth</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-457 253,-457 253,-16 24,-16"/>
-<text text-anchor="start" x="108.158" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NorthSouth</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-457 237,-457 237,-16 24,-16"/>
+<text text-anchor="start" x="100.158" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NorthSouth</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -41,123 +41,123 @@
 <!-- _TrafficLight_EastWest_initial -->
 <g id="node4" class="node">
 <title>_TrafficLight_EastWest_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="334" cy="-413.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="314" cy="-413.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _TrafficLight_EastWest_EW_Red -->
 <g id="node7" class="node">
 <title>_TrafficLight_EastWest_EW_Red</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="398,-326 270,-326 270,-280 398,-280 398,-326"/>
-<text text-anchor="start" x="309.9976" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Red</text>
-<text text-anchor="start" x="275.5006" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="270,-303 270,-303 398,-303 398,-303 270,-303"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M283,-281C283,-281 385,-281 385,-281 391,-281 397,-287 397,-293 397,-293 397,-313 397,-313 397,-319 391,-325 385,-325 385,-325 283,-325 283,-325 277,-325 271,-319 271,-313 271,-313 271,-293 271,-293 271,-287 277,-281 283,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="370,-326 258,-326 258,-280 370,-280 370,-326"/>
+<text text-anchor="start" x="289.9976" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Red</text>
+<text text-anchor="start" x="263.8388" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="258,-303 258,-303 370,-303 370,-303 258,-303"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M271,-281C271,-281 357,-281 357,-281 363,-281 369,-287 369,-293 369,-293 369,-313 369,-313 369,-319 363,-325 357,-325 357,-325 271,-325 271,-325 265,-325 259,-319 259,-313 259,-313 259,-293 259,-293 259,-287 265,-281 271,-281"/>
 </g>
 <!-- _TrafficLight_EastWest_initial&#45;&gt;_TrafficLight_EastWest_EW_Red -->
 <g id="edge2" class="edge">
 <title>_TrafficLight_EastWest_initial&#45;&gt;_TrafficLight_EastWest_EW_Red</title>
-<path fill="none" stroke="#000000" d="M334,-407.8288C334,-403.1736 334,-396.4097 334,-390.5 334,-390.5 334,-390.5 334,-343.5 334,-341.127 334,-338.6757 334,-336.2081"/>
-<polygon fill="#000000" stroke="#000000" points="337.5001,-336.1306 334,-326.1306 330.5001,-336.1306 337.5001,-336.1306"/>
-<text text-anchor="middle" x="335.3895" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M314,-407.8288C314,-403.1736 314,-396.4097 314,-390.5 314,-390.5 314,-390.5 314,-343.5 314,-341.127 314,-338.6757 314,-336.2081"/>
+<polygon fill="#000000" stroke="#000000" points="317.5001,-336.1306 314,-326.1306 310.5001,-336.1306 317.5001,-336.1306"/>
+<text text-anchor="middle" x="315.3895" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _TrafficLight_EastWest_EW_Yellow -->
 <g id="node5" class="node">
 <title>_TrafficLight_EastWest_EW_Yellow</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="419,-70 291,-70 291,-24 419,-24 419,-70"/>
-<text text-anchor="start" x="324.3334" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Yellow</text>
-<text text-anchor="start" x="296.5006" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="291,-47 291,-47 419,-47 419,-47 291,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M304,-25C304,-25 406,-25 406,-25 412,-25 418,-31 418,-37 418,-37 418,-57 418,-57 418,-63 412,-69 406,-69 406,-69 304,-69 304,-69 298,-69 292,-63 292,-57 292,-57 292,-37 292,-37 292,-31 298,-25 304,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="389,-70 277,-70 277,-24 389,-24 389,-70"/>
+<text text-anchor="start" x="302.3334" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Yellow</text>
+<text text-anchor="start" x="282.8388" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="277,-47 277,-47 389,-47 389,-47 277,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M290,-25C290,-25 376,-25 376,-25 382,-25 388,-31 388,-37 388,-37 388,-57 388,-57 388,-63 382,-69 376,-69 376,-69 290,-69 290,-69 284,-69 278,-63 278,-57 278,-57 278,-37 278,-37 278,-31 284,-25 290,-25"/>
 </g>
 <!-- _TrafficLight_EastWest_EW_Yellow&#45;&gt;_TrafficLight_EastWest_EW_Red -->
 <g id="edge3" class="edge">
 <title>_TrafficLight_EastWest_EW_Yellow&#45;&gt;_TrafficLight_EastWest_EW_Red</title>
-<path fill="none" stroke="#000000" d="M297.8491,-70.1402C293.6406,-74.9318 291,-80.6625 291,-87.5 291,-262.5 291,-262.5 291,-262.5 291,-265.5766 291.5905,-268.4882 292.6331,-271.2314"/>
-<polygon fill="#000000" stroke="#000000" points="289.641,-273.048 297.7188,-279.9037 295.6793,-269.507 289.641,-273.048"/>
-<text text-anchor="start" x="291" y="-172" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M281.8811,-70.2028C277.6772,-75.0235 275,-80.7452 275,-87.5 275,-262.5 275,-262.5 275,-262.5 275,-265.4192 275.5322,-268.2091 276.4724,-270.86"/>
+<polygon fill="#000000" stroke="#000000" points="273.5348,-272.7802 281.4401,-279.8341 279.659,-269.39 273.5348,-272.7802"/>
+<text text-anchor="start" x="275" y="-172" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
 </g>
 <!-- _TrafficLight_EastWest_EW_Green -->
 <g id="node6" class="node">
 <title>_TrafficLight_EastWest_EW_Green</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="482,-198 354,-198 354,-152 482,-152 482,-198"/>
-<text text-anchor="start" x="388.3288" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Green</text>
-<text text-anchor="start" x="359.5006" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="354,-175 354,-175 482,-175 482,-175 354,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M367,-153C367,-153 469,-153 469,-153 475,-153 481,-159 481,-165 481,-165 481,-185 481,-185 481,-191 475,-197 469,-197 469,-197 367,-197 367,-197 361,-197 355,-191 355,-185 355,-185 355,-165 355,-165 355,-159 361,-153 367,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="450,-198 338,-198 338,-152 450,-152 450,-198"/>
+<text text-anchor="start" x="364.3288" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">EW_Green</text>
+<text text-anchor="start" x="343.8388" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="338,-175 338,-175 450,-175 450,-175 338,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M351,-153C351,-153 437,-153 437,-153 443,-153 449,-159 449,-165 449,-165 449,-185 449,-185 449,-191 443,-197 437,-197 437,-197 351,-197 351,-197 345,-197 339,-191 339,-185 339,-185 339,-165 339,-165 339,-159 345,-153 351,-153"/>
 </g>
 <!-- _TrafficLight_EastWest_EW_Green&#45;&gt;_TrafficLight_EastWest_EW_Yellow -->
 <g id="edge4" class="edge">
 <title>_TrafficLight_EastWest_EW_Green&#45;&gt;_TrafficLight_EastWest_EW_Yellow</title>
-<path fill="none" stroke="#000000" d="M383.4063,-151.6338C379.5625,-146.6363 377,-140.9034 377,-134.5 377,-134.5 377,-134.5 377,-87.5 377,-84.9095 376.6481,-82.3264 376.0334,-79.7904"/>
-<polygon fill="#000000" stroke="#000000" points="379.2882,-78.5002 372.548,-70.3259 372.7194,-80.9193 379.2882,-78.5002"/>
-<text text-anchor="start" x="377" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">end &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M363.1098,-151.575C359.4593,-146.5222 357,-140.7857 357,-134.5 357,-134.5 357,-134.5 357,-87.5 357,-84.854 356.6162,-82.2294 355.9456,-79.6633"/>
+<polygon fill="#000000" stroke="#000000" points="359.0999,-78.1245 352.1432,-70.1335 352.5983,-80.7186 359.0999,-78.1245"/>
+<text text-anchor="start" x="357" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">end &#160;&#160;</text>
 </g>
 <!-- _TrafficLight_EastWest_EW_Red&#45;&gt;_TrafficLight_EastWest_EW_Green -->
 <g id="edge5" class="edge">
 <title>_TrafficLight_EastWest_EW_Red&#45;&gt;_TrafficLight_EastWest_EW_Green</title>
-<path fill="none" stroke="#000000" d="M370.2813,-279.9037C374.3125,-274.8762 377,-269.0633 377,-262.5 377,-262.5 377,-262.5 377,-215.5 377,-212.5985 377.5261,-209.8346 378.4592,-207.2144"/>
-<polygon fill="#000000" stroke="#000000" points="381.5811,-208.8027 383.4063,-198.3662 375.4712,-205.3866 381.5811,-208.8027"/>
-<text text-anchor="start" x="377" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M350.2813,-279.9037C354.3125,-274.8762 357,-269.0633 357,-262.5 357,-262.5 357,-262.5 357,-215.5 357,-212.6518 357.5049,-209.9164 358.3969,-207.3062"/>
+<polygon fill="#000000" stroke="#000000" points="361.5139,-208.899 363.1098,-198.425 355.3306,-205.6177 361.5139,-208.899"/>
+<text text-anchor="start" x="357" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
 </g>
 <!-- _TrafficLight_NorthSouth -->
 <!-- _TrafficLight_NorthSouth_initial -->
 <g id="node9" class="node">
 <title>_TrafficLight_NorthSouth_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="97" cy="-413.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="93" cy="-413.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Green -->
 <g id="node12" class="node">
 <title>_TrafficLight_NorthSouth_NS_Green</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="161,-326 33,-326 33,-280 161,-280 161,-326"/>
-<text text-anchor="start" x="68.6608" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Green</text>
-<text text-anchor="start" x="38.5006" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="33,-303 33,-303 161,-303 161,-303 33,-303"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M46,-281C46,-281 148,-281 148,-281 154,-281 160,-287 160,-293 160,-293 160,-313 160,-313 160,-319 154,-325 148,-325 148,-325 46,-325 46,-325 40,-325 34,-319 34,-313 34,-313 34,-293 34,-293 34,-287 40,-281 46,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="149,-326 37,-326 37,-280 149,-280 149,-326"/>
+<text text-anchor="start" x="64.6608" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Green</text>
+<text text-anchor="start" x="42.8388" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="37,-303 37,-303 149,-303 149,-303 37,-303"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M50,-281C50,-281 136,-281 136,-281 142,-281 148,-287 148,-293 148,-293 148,-313 148,-313 148,-319 142,-325 136,-325 136,-325 50,-325 50,-325 44,-325 38,-319 38,-313 38,-313 38,-293 38,-293 38,-287 44,-281 50,-281"/>
 </g>
 <!-- _TrafficLight_NorthSouth_initial&#45;&gt;_TrafficLight_NorthSouth_NS_Green -->
 <g id="edge6" class="edge">
 <title>_TrafficLight_NorthSouth_initial&#45;&gt;_TrafficLight_NorthSouth_NS_Green</title>
-<path fill="none" stroke="#000000" d="M97,-407.8288C97,-403.1736 97,-396.4097 97,-390.5 97,-390.5 97,-390.5 97,-343.5 97,-341.127 97,-338.6757 97,-336.2081"/>
-<polygon fill="#000000" stroke="#000000" points="100.5001,-336.1306 97,-326.1306 93.5001,-336.1306 100.5001,-336.1306"/>
-<text text-anchor="middle" x="98.3895" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M93,-407.8288C93,-403.1736 93,-396.4097 93,-390.5 93,-390.5 93,-390.5 93,-343.5 93,-341.127 93,-338.6757 93,-336.2081"/>
+<polygon fill="#000000" stroke="#000000" points="96.5001,-336.1306 93,-326.1306 89.5001,-336.1306 96.5001,-336.1306"/>
+<text text-anchor="middle" x="94.3895" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Red -->
 <g id="node10" class="node">
 <title>_TrafficLight_NorthSouth_NS_Red</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="182,-70 54,-70 54,-24 182,-24 182,-70"/>
-<text text-anchor="start" x="95.3296" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Red</text>
-<text text-anchor="start" x="59.5006" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="54,-47 54,-47 182,-47 182,-47 54,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M67,-25C67,-25 169,-25 169,-25 175,-25 181,-31 181,-37 181,-37 181,-57 181,-57 181,-63 175,-69 169,-69 169,-69 67,-69 67,-69 61,-69 55,-63 55,-57 55,-57 55,-37 55,-37 55,-31 61,-25 67,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="168,-70 56,-70 56,-24 168,-24 168,-70"/>
+<text text-anchor="start" x="89.3296" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Red</text>
+<text text-anchor="start" x="61.8388" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="56,-47 56,-47 168,-47 168,-47 56,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M69,-25C69,-25 155,-25 155,-25 161,-25 167,-31 167,-37 167,-37 167,-57 167,-57 167,-63 161,-69 155,-69 155,-69 69,-69 69,-69 63,-69 57,-63 57,-57 57,-57 57,-37 57,-37 57,-31 63,-25 69,-25"/>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Red&#45;&gt;_TrafficLight_NorthSouth_NS_Green -->
 <g id="edge7" class="edge">
 <title>_TrafficLight_NorthSouth_NS_Red&#45;&gt;_TrafficLight_NorthSouth_NS_Green</title>
-<path fill="none" stroke="#000000" d="M60.8491,-70.1402C56.6406,-74.9318 54,-80.6625 54,-87.5 54,-262.5 54,-262.5 54,-262.5 54,-265.5766 54.5905,-268.4882 55.6331,-271.2314"/>
-<polygon fill="#000000" stroke="#000000" points="52.641,-273.048 60.7188,-279.9037 58.6793,-269.507 52.641,-273.048"/>
+<path fill="none" stroke="#000000" d="M60.8811,-70.2028C56.6772,-75.0235 54,-80.7452 54,-87.5 54,-262.5 54,-262.5 54,-262.5 54,-265.4192 54.5322,-268.2091 55.4724,-270.86"/>
+<polygon fill="#000000" stroke="#000000" points="52.5348,-272.7802 60.4401,-279.8341 58.659,-269.39 52.5348,-272.7802"/>
 <text text-anchor="start" x="54" y="-172" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Yellow -->
 <g id="node11" class="node">
 <title>_TrafficLight_NorthSouth_NS_Yellow</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="245,-198 117,-198 117,-152 245,-152 245,-198"/>
-<text text-anchor="start" x="151.6654" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Yellow</text>
-<text text-anchor="start" x="122.5006" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.set_light</text>
-<polygon fill="#000000" stroke="#000000" points="117,-175 117,-175 245,-175 245,-175 117,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M130,-153C130,-153 232,-153 232,-153 238,-153 244,-159 244,-165 244,-165 244,-185 244,-185 244,-191 238,-197 232,-197 232,-197 130,-197 130,-197 124,-197 118,-191 118,-185 118,-185 118,-165 118,-165 118,-159 124,-153 130,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="229,-198 117,-198 117,-152 229,-152 229,-198"/>
+<text text-anchor="start" x="143.6654" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">NS_Yellow</text>
+<text text-anchor="start" x="122.8388" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.set_light</text>
+<polygon fill="#000000" stroke="#000000" points="117,-175 117,-175 229,-175 229,-175 117,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M130,-153C130,-153 216,-153 216,-153 222,-153 228,-159 228,-165 228,-165 228,-185 228,-185 228,-191 222,-197 216,-197 216,-197 130,-197 130,-197 124,-197 118,-191 118,-185 118,-185 118,-165 118,-165 118,-159 124,-153 130,-153"/>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Yellow&#45;&gt;_TrafficLight_NorthSouth_NS_Red -->
 <g id="edge8" class="edge">
 <title>_TrafficLight_NorthSouth_NS_Yellow&#45;&gt;_TrafficLight_NorthSouth_NS_Red</title>
-<path fill="none" stroke="#000000" d="M146.4063,-151.6338C142.5625,-146.6363 140,-140.9034 140,-134.5 140,-134.5 140,-134.5 140,-87.5 140,-84.9095 139.6481,-82.3264 139.0334,-79.7904"/>
-<polygon fill="#000000" stroke="#000000" points="142.2882,-78.5002 135.548,-70.3259 135.7194,-80.9193 142.2882,-78.5002"/>
-<text text-anchor="start" x="140" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M142.1098,-151.575C138.4593,-146.5222 136,-140.7857 136,-134.5 136,-134.5 136,-134.5 136,-87.5 136,-84.854 135.6162,-82.2294 134.9456,-79.6633"/>
+<polygon fill="#000000" stroke="#000000" points="138.0999,-78.1245 131.1432,-70.1335 131.5983,-80.7186 138.0999,-78.1245"/>
+<text text-anchor="start" x="136" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">change &#160;&#160;</text>
 </g>
 <!-- _TrafficLight_NorthSouth_NS_Green&#45;&gt;_TrafficLight_NorthSouth_NS_Yellow -->
 <g id="edge9" class="edge">
 <title>_TrafficLight_NorthSouth_NS_Green&#45;&gt;_TrafficLight_NorthSouth_NS_Yellow</title>
-<path fill="none" stroke="#000000" d="M133.2813,-279.9037C137.3125,-274.8762 140,-269.0633 140,-262.5 140,-262.5 140,-262.5 140,-215.5 140,-212.5985 140.5261,-209.8346 141.4592,-207.2144"/>
-<polygon fill="#000000" stroke="#000000" points="144.5811,-208.8027 146.4063,-198.3662 138.4712,-205.3866 144.5811,-208.8027"/>
-<text text-anchor="start" x="140" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">end &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M129.2813,-279.9037C133.3125,-274.8762 136,-269.0633 136,-262.5 136,-262.5 136,-262.5 136,-215.5 136,-212.6518 136.5049,-209.9164 137.3969,-207.3062"/>
+<polygon fill="#000000" stroke="#000000" points="140.5139,-208.899 142.1098,-198.425 134.3306,-205.6177 140.5139,-208.899"/>
+<text text-anchor="start" x="136" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">end &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 34 - 34
test/test_files/features/after/test_after.svg

@@ -4,77 +4,77 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="242pt" height="231pt"
- viewBox="0.00 0.00 242.00 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="215pt" height="231pt"
+ viewBox="0.00 0.00 214.78 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 227)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 238,-227 238,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 210.785,-227 210.785,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="117" cy="-217.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="101" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _s1 -->
 <g id="node5" class="node">
 <title>_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="145,-184 89,-184 89,-148 145,-148 145,-184"/>
-<text text-anchor="start" x="110.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M101.3333,-149C101.3333,-149 132.6667,-149 132.6667,-149 138.3333,-149 144,-154.6667 144,-160.3333 144,-160.3333 144,-171.6667 144,-171.6667 144,-177.3333 138.3333,-183 132.6667,-183 132.6667,-183 101.3333,-183 101.3333,-183 95.6667,-183 90,-177.3333 90,-171.6667 90,-171.6667 90,-160.3333 90,-160.3333 90,-154.6667 95.6667,-149 101.3333,-149"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="129,-184 73,-184 73,-148 129,-148 129,-184"/>
+<text text-anchor="start" x="94.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M85.3333,-149C85.3333,-149 116.6667,-149 116.6667,-149 122.3333,-149 128,-154.6667 128,-160.3333 128,-160.3333 128,-171.6667 128,-171.6667 128,-177.3333 122.3333,-183 116.6667,-183 116.6667,-183 85.3333,-183 85.3333,-183 79.6667,-183 74,-177.3333 74,-171.6667 74,-171.6667 74,-160.3333 74,-160.3333 74,-154.6667 79.6667,-149 85.3333,-149"/>
 </g>
 <!-- __initial&#45;&gt;_s1 -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_s1</title>
-<path fill="none" stroke="#000000" d="M117,-211.9886C117,-207.6293 117,-201.1793 117,-194.4801"/>
-<polygon fill="#000000" stroke="#000000" points="120.5001,-194.0122 117,-184.0122 113.5001,-194.0122 120.5001,-194.0122"/>
-<text text-anchor="middle" x="118.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M101,-211.9886C101,-207.6293 101,-201.1793 101,-194.4801"/>
+<polygon fill="#000000" stroke="#000000" points="104.5001,-194.0122 101,-184.0122 97.5001,-194.0122 104.5001,-194.0122"/>
+<text text-anchor="middle" x="102.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _s4 -->
 <g id="node2" class="node">
 <title>_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-46 0,-46 0,0 106,0 106,-46"/>
-<text text-anchor="start" x="46.6646" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<text text-anchor="start" x="5.5022" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_4</text>
-<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 106,-23 106,-23 0,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 93,-1 93,-1 99,-1 105,-7 105,-13 105,-13 105,-33 105,-33 105,-39 99,-45 93,-45 93,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-46 0,-46 0,0 90,0 90,-46"/>
+<text text-anchor="start" x="38.6646" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<text text-anchor="start" x="5.8404" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_4</text>
+<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 90,-23 90,-23 0,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 77,-1 77,-1 83,-1 89,-7 89,-13 89,-13 89,-33 89,-33 89,-39 83,-45 77,-45 77,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
 </g>
 <!-- _s3 -->
 <g id="node3" class="node">
 <title>_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="234,-120 128,-120 128,-74 234,-74 234,-120"/>
-<text text-anchor="start" x="174.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<text text-anchor="start" x="133.5022" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_3</text>
-<polygon fill="#000000" stroke="#000000" points="128,-97 128,-97 234,-97 234,-97 128,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M141,-75C141,-75 221,-75 221,-75 227,-75 233,-81 233,-87 233,-87 233,-107 233,-107 233,-113 227,-119 221,-119 221,-119 141,-119 141,-119 135,-119 129,-113 129,-107 129,-107 129,-87 129,-87 129,-81 135,-75 141,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="202,-120 112,-120 112,-74 202,-74 202,-120"/>
+<text text-anchor="start" x="150.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<text text-anchor="start" x="117.8404" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_3</text>
+<polygon fill="#000000" stroke="#000000" points="112,-97 112,-97 202,-97 202,-97 112,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M125,-75C125,-75 189,-75 189,-75 195,-75 201,-81 201,-87 201,-87 201,-107 201,-107 201,-113 195,-119 189,-119 189,-119 125,-119 125,-119 119,-119 113,-113 113,-107 113,-107 113,-87 113,-87 113,-81 119,-75 125,-75"/>
 </g>
 <!-- _s2 -->
 <g id="node4" class="node">
 <title>_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-120 0,-120 0,-74 106,-74 106,-120"/>
-<text text-anchor="start" x="46.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<text text-anchor="start" x="5.5022" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_2</text>
-<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 106,-97 106,-97 0,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 93,-75 93,-75 99,-75 105,-81 105,-87 105,-87 105,-107 105,-107 105,-113 99,-119 93,-119 93,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-120 0,-120 0,-74 90,-74 90,-120"/>
+<text text-anchor="start" x="38.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<text text-anchor="start" x="5.8404" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_2</text>
+<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 90,-97 90,-97 0,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 77,-75 77,-75 83,-75 89,-81 89,-87 89,-87 89,-107 89,-107 89,-113 83,-119 77,-119 77,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
 </g>
 <!-- _s2&#45;&gt;_s4 -->
 <g id="edge2" class="edge">
 <title>_s2&#45;&gt;_s4</title>
-<path fill="none" stroke="#000000" d="M53,-73.9916C53,-68.476 53,-62.474 53,-56.5881"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-56.249 53,-46.2491 49.5001,-56.2491 56.5001,-56.249"/>
-<text text-anchor="start" x="53" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(150 ms) &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-73.9916C45,-68.476 45,-62.474 45,-56.5881"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-56.249 45,-46.2491 41.5001,-56.2491 48.5001,-56.249"/>
+<text text-anchor="start" x="45" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(150 ms) &#160;&#160;</text>
 </g>
 <!-- _s1&#45;&gt;_s3 -->
 <g id="edge4" class="edge">
 <title>_s1&#45;&gt;_s3</title>
-<path fill="none" stroke="#000000" d="M145.1022,-148.8417C148.6296,-146.1072 152.0347,-143.1369 155,-140 158.1875,-136.6281 161.1728,-132.8012 163.9023,-128.8539"/>
-<polygon fill="#000000" stroke="#000000" points="167.0262,-130.4645 169.4484,-120.1502 161.1228,-126.7027 167.0262,-130.4645"/>
-<text text-anchor="start" x="164" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(200 ms) &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M123.6999,-147.7069C126.2816,-145.2327 128.7793,-142.6351 131,-140 133.9251,-136.5291 136.7352,-132.6927 139.3563,-128.783"/>
+<polygon fill="#000000" stroke="#000000" points="142.3837,-130.5439 144.7633,-120.2197 136.4649,-126.8065 142.3837,-130.5439"/>
+<text text-anchor="start" x="139" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(200 ms) &#160;&#160;</text>
 </g>
 <!-- _s1&#45;&gt;_s2 -->
 <g id="edge3" class="edge">
 <title>_s1&#45;&gt;_s2</title>
-<path fill="none" stroke="#000000" d="M94.3018,-147.7885C91.4944,-145.2608 88.7306,-142.6278 86.215,-140 82.6375,-136.2629 79.0684,-132.1535 75.6683,-128.0028"/>
-<polygon fill="#000000" stroke="#000000" points="78.3304,-125.7267 69.3802,-120.0571 72.8413,-130.0707 78.3304,-125.7267"/>
-<text text-anchor="start" x="87" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(100 ms) &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M72.9897,-150.2633C69.0317,-147.217 65.2754,-143.7804 62.215,-140 59.6694,-136.8554 57.4594,-133.286 55.5515,-129.5802"/>
+<polygon fill="#000000" stroke="#000000" points="58.6673,-127.9725 51.412,-120.2517 52.269,-130.8118 58.6673,-127.9725"/>
+<text text-anchor="start" x="63" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(100 ms) &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 13 - 13
test/test_files/features/after/test_after_reentry.svg

@@ -94,25 +94,25 @@
 <!-- _p_o0_c -->
 <g id="node9" class="node">
 <title>_p_o0_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="366,-70 260,-70 260,-24 366,-24 366,-70"/>
-<text text-anchor="start" x="310" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="265.8376" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="260,-47 260,-47 366,-47 366,-47 260,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M273,-25C273,-25 353,-25 353,-25 359,-25 365,-31 365,-37 365,-37 365,-57 365,-57 365,-63 359,-69 353,-69 353,-69 273,-69 273,-69 267,-69 261,-63 261,-57 261,-57 261,-37 261,-37 261,-31 267,-25 273,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="357.5,-70 268.5,-70 268.5,-24 357.5,-24 357.5,-70"/>
+<text text-anchor="start" x="310.5" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="274.6758" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="269,-47 269,-47 358,-47 358,-47 269,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M281.5,-25C281.5,-25 344.5,-25 344.5,-25 350.5,-25 356.5,-31 356.5,-37 356.5,-37 356.5,-57 356.5,-57 356.5,-63 350.5,-69 344.5,-69 344.5,-69 281.5,-69 281.5,-69 275.5,-69 269.5,-63 269.5,-57 269.5,-57 269.5,-37 269.5,-37 269.5,-31 275.5,-25 281.5,-25"/>
 </g>
 <!-- _p_o0_b -->
 <g id="node10" class="node">
 <title>_p_o0_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="146,-70 40,-70 40,-24 146,-24 146,-70"/>
-<text text-anchor="start" x="89.6646" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="45.5022" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="40,-47 40,-47 146,-47 146,-47 40,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M53,-25C53,-25 133,-25 133,-25 139,-25 145,-31 145,-37 145,-37 145,-57 145,-57 145,-63 139,-69 133,-69 133,-69 53,-69 53,-69 47,-69 41,-63 41,-57 41,-57 41,-37 41,-37 41,-31 47,-25 53,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="134,-70 44,-70 44,-24 134,-24 134,-70"/>
+<text text-anchor="start" x="85.6646" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
+<text text-anchor="start" x="49.8404" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="44,-47 44,-47 134,-47 134,-47 44,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M57,-25C57,-25 121,-25 121,-25 127,-25 133,-31 133,-37 133,-37 133,-57 133,-57 133,-63 127,-69 121,-69 121,-69 57,-69 57,-69 51,-69 45,-63 45,-57 45,-57 45,-37 45,-37 45,-31 51,-25 57,-25"/>
 </g>
 <!-- _p_o0_b&#45;&gt;_p_o0_a -->
 <g id="edge5" class="edge">
 <title>_p_o0_b&#45;&gt;_p_o0_a</title>
-<path fill="none" stroke="#000000" d="M60.4401,-70.1659C56.5922,-75.2451 54,-81.0576 54,-87.5 54,-134.5 54,-134.5 54,-134.5 54,-142.4809 58.3685,-148.8951 64.4418,-153.9561"/>
+<path fill="none" stroke="#000000" d="M60.0965,-70.2213C56.4695,-75.361 54,-81.1807 54,-87.5 54,-134.5 54,-134.5 54,-134.5 54,-142.4809 58.3685,-148.8951 64.4418,-153.9561"/>
 <polygon fill="#000000" stroke="#000000" points="62.6059,-156.94 72.8459,-159.659 66.5365,-151.1477 62.6059,-156.94"/>
 <text text-anchor="middle" x="55.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
@@ -126,8 +126,8 @@
 <!-- _p_o0_a&#45;&gt;_p_o0_b -->
 <g id="edge6" class="edge">
 <title>_p_o0_a&#45;&gt;_p_o0_b</title>
-<path fill="none" stroke="#000000" d="M101,-151.9402C101,-146.3497 101,-140.1701 101,-134.5 101,-134.5 101,-134.5 101,-87.5 101,-85.2289 100.8774,-82.8996 100.6626,-80.5611"/>
-<polygon fill="#000000" stroke="#000000" points="104.0919,-79.8142 99.2245,-70.4036 97.161,-80.7955 104.0919,-79.8142"/>
+<path fill="none" stroke="#000000" d="M101,-151.9402C101,-146.3497 101,-140.1701 101,-134.5 101,-134.5 101,-134.5 101,-87.5 101,-85.0869 100.8017,-82.6249 100.4562,-80.1666"/>
+<polygon fill="#000000" stroke="#000000" points="103.8432,-79.267 98.3368,-70.2155 96.9967,-80.7252 103.8432,-79.267"/>
 <text text-anchor="start" x="101" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(100 ms) [INSTATE([&quot;/p/o1/x&quot;])] &#160;&#160;</text>
 </g>
 </g>

+ 24 - 24
test/test_files/features/datamodel/test_guard_action.svg

@@ -4,59 +4,59 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="259pt" height="157pt"
- viewBox="0.00 0.00 259.00 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="251pt" height="157pt"
+ viewBox="0.00 0.00 250.50 157.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 153)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-153 255,-153 255,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-153 246.5,-153 246.5,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="55.5" cy="-143.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="47" cy="-143.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _counting -->
 <g id="node3" class="node">
 <title>_counting</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="89,-110 22,-110 22,-74 89,-74 89,-110"/>
-<text text-anchor="start" x="33.3242" y="-88.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">counting</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M34.3333,-75C34.3333,-75 76.6667,-75 76.6667,-75 82.3333,-75 88,-80.6667 88,-86.3333 88,-86.3333 88,-97.6667 88,-97.6667 88,-103.3333 82.3333,-109 76.6667,-109 76.6667,-109 34.3333,-109 34.3333,-109 28.6667,-109 23,-103.3333 23,-97.6667 23,-97.6667 23,-86.3333 23,-86.3333 23,-80.6667 28.6667,-75 34.3333,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="80.5,-110 13.5,-110 13.5,-74 80.5,-74 80.5,-110"/>
+<text text-anchor="start" x="24.8242" y="-88.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">counting</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M25.8333,-75C25.8333,-75 68.1667,-75 68.1667,-75 73.8333,-75 79.5,-80.6667 79.5,-86.3333 79.5,-86.3333 79.5,-97.6667 79.5,-97.6667 79.5,-103.3333 73.8333,-109 68.1667,-109 68.1667,-109 25.8333,-109 25.8333,-109 20.1667,-109 14.5,-103.3333 14.5,-97.6667 14.5,-97.6667 14.5,-86.3333 14.5,-86.3333 14.5,-80.6667 20.1667,-75 25.8333,-75"/>
 </g>
 <!-- __initial&#45;&gt;_counting -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_counting</title>
-<path fill="none" stroke="#000000" d="M55.5,-137.9886C55.5,-133.6293 55.5,-127.1793 55.5,-120.4801"/>
-<polygon fill="#000000" stroke="#000000" points="59.0001,-120.0122 55.5,-110.0122 52.0001,-120.0122 59.0001,-120.0122"/>
-<text text-anchor="middle" x="56.8895" y="-121" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M47,-137.9886C47,-133.6293 47,-127.1793 47,-120.4801"/>
+<polygon fill="#000000" stroke="#000000" points="50.5001,-120.0122 47,-110.0122 43.5001,-120.0122 50.5001,-120.0122"/>
+<text text-anchor="middle" x="48.3895" y="-121" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _done -->
 <g id="node2" class="node">
 <title>_done</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="111,-46 0,-46 0,0 111,0 111,-46"/>
-<text text-anchor="start" x="42.6584" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
-<text text-anchor="start" x="6.4982" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.done</text>
-<polygon fill="#000000" stroke="#000000" points=".5,-23 .5,-23 111.5,-23 111.5,-23 .5,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 98,-1 98,-1 104,-1 110,-7 110,-13 110,-13 110,-33 110,-33 110,-39 104,-45 98,-45 98,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="94,-46 0,-46 0,0 94,0 94,-46"/>
+<text text-anchor="start" x="33.6584" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
+<text text-anchor="start" x="5.8364" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.done</text>
+<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 94,-23 94,-23 0,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 81,-1 81,-1 87,-1 93,-7 93,-13 93,-13 93,-33 93,-33 93,-39 87,-45 81,-45 81,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
 </g>
 <!-- _counting&#45;&gt;_done -->
 <g id="edge4" class="edge">
 <title>_counting&#45;&gt;_done</title>
-<path fill="none" stroke="#000000" d="M55.5,-73.8711C55.5,-68.4482 55.5,-62.3229 55.5,-56.2494"/>
-<polygon fill="#000000" stroke="#000000" points="59.0001,-56.21 55.5,-46.21 52.0001,-56.21 59.0001,-56.21"/>
-<text text-anchor="start" x="55.5" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 3] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M47,-73.8711C47,-68.4482 47,-62.3229 47,-56.2494"/>
+<polygon fill="#000000" stroke="#000000" points="50.5001,-56.21 47,-46.21 43.5001,-56.21 50.5001,-56.21"/>
+<text text-anchor="start" x="47" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 3] &#160;&#160;</text>
 </g>
 <!-- _counting&#45;&gt;_counting -->
 <g id="edge2" class="edge">
 <title>_counting&#45;&gt;_counting</title>
-<path fill="none" stroke="#000000" d="M89.097,-94.9971C101.1628,-95.0615 111,-94.0625 111,-92 111,-90.582 106.3504,-89.6667 99.5236,-89.2541"/>
-<polygon fill="#000000" stroke="#000000" points="99.1784,-85.7448 89.097,-89.0029 99.0097,-92.7428 99.1784,-85.7448"/>
-<text text-anchor="start" x="111" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M80.597,-94.9971C92.6628,-95.0615 102.5,-94.0625 102.5,-92 102.5,-90.582 97.8504,-89.6667 91.0236,-89.2541"/>
+<polygon fill="#000000" stroke="#000000" points="90.6784,-85.7448 80.597,-89.0029 90.5097,-92.7428 90.6784,-85.7448"/>
+<text text-anchor="start" x="102.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _counting&#45;&gt;_counting -->
 <g id="edge3" class="edge">
 <title>_counting&#45;&gt;_counting</title>
-<path fill="none" stroke="#000000" d="M89.3606,-97.4987C111.5366,-98.9891 133,-97.1563 133,-92 133,-87.6293 117.5781,-85.6465 99.3727,-86.0515"/>
-<polygon fill="#000000" stroke="#000000" points="99.1934,-82.556 89.3606,-86.5013 99.5076,-89.5489 99.1934,-82.556"/>
-<text text-anchor="start" x="133" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x &lt; 3]/x = x + 1 ^out.inc &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M80.8606,-97.4987C103.0366,-98.9891 124.5,-97.1563 124.5,-92 124.5,-87.6293 109.0781,-85.6465 90.8727,-86.0515"/>
+<polygon fill="#000000" stroke="#000000" points="90.6934,-82.556 80.8606,-86.5013 91.0076,-89.5489 90.6934,-82.556"/>
+<text text-anchor="start" x="124.5" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x &lt; 3]/x = x + 1 ^out.inc &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 142 - 142
test/test_files/features/expressions/test_expressions.svg

@@ -4,350 +4,350 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="231pt" height="1824pt"
- viewBox="0.00 0.00 231.00 1824.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="223pt" height="1824pt"
+ viewBox="0.00 0.00 222.50 1824.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1820)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1820 227,-1820 227,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1820 218.5,-1820 218.5,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__boolean_logic</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M40.5,-74C40.5,-74 187.5,-74 187.5,-74 193.5,-74 199.5,-80 199.5,-86 199.5,-86 199.5,-611 199.5,-611 199.5,-617 193.5,-623 187.5,-623 187.5,-623 40.5,-623 40.5,-623 34.5,-623 28.5,-617 28.5,-611 28.5,-611 28.5,-86 28.5,-86 28.5,-80 34.5,-74 40.5,-74"/>
-<text text-anchor="start" x="76.9872" y="-604.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">boolean_logic</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M32,-74C32,-74 179,-74 179,-74 185,-74 191,-80 191,-86 191,-86 191,-611 191,-611 191,-617 185,-623 179,-623 179,-623 32,-623 32,-623 26,-623 20,-617 20,-611 20,-611 20,-86 20,-86 20,-80 26,-74 32,-74"/>
+<text text-anchor="start" x="68.4872" y="-604.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">boolean_logic</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__arithmetic</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M75.5,-651C75.5,-651 180.5,-651 180.5,-651 186.5,-651 192.5,-657 192.5,-663 192.5,-663 192.5,-1270 192.5,-1270 192.5,-1276 186.5,-1282 180.5,-1282 180.5,-1282 75.5,-1282 75.5,-1282 69.5,-1282 63.5,-1276 63.5,-1270 63.5,-1270 63.5,-663 63.5,-663 63.5,-657 69.5,-651 75.5,-651"/>
-<text text-anchor="start" x="102.5014" y="-1263.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">arithmetic</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M67,-651C67,-651 172,-651 172,-651 178,-651 184,-657 184,-663 184,-663 184,-1270 184,-1270 184,-1276 178,-1282 172,-1282 172,-1282 67,-1282 67,-1282 61,-1282 55,-1276 55,-1270 55,-1270 55,-663 55,-663 55,-657 61,-651 67,-651"/>
+<text text-anchor="start" x="94.0014" y="-1263.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">arithmetic</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__comparisons</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M111.5,-1310C111.5,-1310 179.5,-1310 179.5,-1310 185.5,-1310 191.5,-1316 191.5,-1322 191.5,-1322 191.5,-1765 191.5,-1765 191.5,-1771 185.5,-1777 179.5,-1777 179.5,-1777 111.5,-1777 111.5,-1777 105.5,-1777 99.5,-1771 99.5,-1765 99.5,-1765 99.5,-1322 99.5,-1322 99.5,-1316 105.5,-1310 111.5,-1310"/>
-<text text-anchor="start" x="111.4968" y="-1758.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M103,-1310C103,-1310 171,-1310 171,-1310 177,-1310 183,-1316 183,-1322 183,-1322 183,-1765 183,-1765 183,-1771 177,-1777 171,-1777 171,-1777 103,-1777 103,-1777 97,-1777 91,-1771 91,-1765 91,-1765 91,-1322 91,-1322 91,-1316 97,-1310 103,-1310"/>
+<text text-anchor="start" x="102.9968" y="-1758.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
 </g>
 <!-- self_tr__comparisons__comparisons_23 -->
 <!-- _comparisons -->
 <!-- self_tr__comparisons__comparisons_23&#45;&gt;_comparisons -->
 <g id="edge24" class="edge">
 <title>self_tr__comparisons__comparisons_23:w&#45;&gt;_comparisons</title>
-<path fill="none" stroke="#000000" d="M157.5,-1810.5C150.9615,-1810.5 151.8895,-1799.902 155.644,-1786.5696"/>
-<polygon fill="#000000" stroke="#000000" points="158.9926,-1787.5882 158.6378,-1776.9993 152.3118,-1785.4983 158.9926,-1787.5882"/>
+<path fill="none" stroke="#000000" d="M149,-1810.5C142.4615,-1810.5 143.3895,-1799.902 147.144,-1786.5696"/>
+<polygon fill="#000000" stroke="#000000" points="150.4926,-1787.5882 150.1378,-1776.9993 143.8118,-1785.4983 150.4926,-1787.5882"/>
 </g>
 <!-- __initial -->
 <g id="node2" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="217.5" cy="-1810.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="209" cy="-1810.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- __initial&#45;&gt;_comparisons -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_comparisons</title>
-<path fill="none" stroke="#000000" d="M214.8099,-1805.4478C210.9592,-1798.2161 203.5324,-1784.2681 196.2349,-1770.5632"/>
-<polygon fill="#000000" stroke="#000000" points="199.2864,-1768.8469 191.4971,-1761.6652 193.1077,-1772.1369 199.2864,-1768.8469"/>
-<text text-anchor="middle" x="210.8895" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M206.3099,-1805.4478C202.4592,-1798.2161 195.0324,-1784.2681 187.7349,-1770.5632"/>
+<polygon fill="#000000" stroke="#000000" points="190.7864,-1768.8469 182.9971,-1761.6652 184.6077,-1772.1369 190.7864,-1768.8469"/>
+<text text-anchor="middle" x="202.3895" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _final -->
 <g id="node3" class="node">
 <title>_final</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="129,-46 0,-46 0,0 129,0 129,-46"/>
-<text text-anchor="start" x="53.999" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">final</text>
-<text text-anchor="start" x="6.1646" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.all_good</text>
-<polygon fill="#000000" stroke="#000000" points=".5,-23 .5,-23 129.5,-23 129.5,-23 .5,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 116,-1 116,-1 122,-1 128,-7 128,-13 128,-13 128,-33 128,-33 128,-39 122,-45 116,-45 116,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="112,-46 0,-46 0,0 112,0 112,-46"/>
+<text text-anchor="start" x="44.999" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">final</text>
+<text text-anchor="start" x="5.5028" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.all_good</text>
+<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 112,-23 112,-23 0,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 99,-1 99,-1 105,-1 111,-7 111,-13 111,-13 111,-33 111,-33 111,-39 105,-45 99,-45 99,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
 </g>
 <!-- _boolean_logic -->
 <!-- _boolean_logic_initial -->
 <g id="node5" class="node">
 <title>_boolean_logic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="64.5" cy="-579.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="56" cy="-579.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _boolean_logic_s1 -->
 <g id="node11" class="node">
 <title>_boolean_logic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-528 36.5,-528 36.5,-492 92.5,-492 92.5,-528"/>
-<text text-anchor="start" x="58.1646" y="-506.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-493C48.8333,-493 80.1667,-493 80.1667,-493 85.8333,-493 91.5,-498.6667 91.5,-504.3333 91.5,-504.3333 91.5,-515.6667 91.5,-515.6667 91.5,-521.3333 85.8333,-527 80.1667,-527 80.1667,-527 48.8333,-527 48.8333,-527 43.1667,-527 37.5,-521.3333 37.5,-515.6667 37.5,-515.6667 37.5,-504.3333 37.5,-504.3333 37.5,-498.6667 43.1667,-493 48.8333,-493"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-528 28,-528 28,-492 84,-492 84,-528"/>
+<text text-anchor="start" x="49.6646" y="-506.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-493C40.3333,-493 71.6667,-493 71.6667,-493 77.3333,-493 83,-498.6667 83,-504.3333 83,-504.3333 83,-515.6667 83,-515.6667 83,-521.3333 77.3333,-527 71.6667,-527 71.6667,-527 40.3333,-527 40.3333,-527 34.6667,-527 29,-521.3333 29,-515.6667 29,-515.6667 29,-504.3333 29,-504.3333 29,-498.6667 34.6667,-493 40.3333,-493"/>
 </g>
 <!-- _boolean_logic_initial&#45;&gt;_boolean_logic_s1 -->
 <g id="edge2" class="edge">
 <title>_boolean_logic_initial&#45;&gt;_boolean_logic_s1</title>
-<path fill="none" stroke="#000000" d="M64.5,-573.5745C64.5,-565.7003 64.5,-551.2498 64.5,-538.1135"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-538.0109 64.5,-528.011 61.0001,-538.011 68.0001,-538.0109"/>
-<text text-anchor="middle" x="65.8895" y="-548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M56,-573.5745C56,-565.7003 56,-551.2498 56,-538.1135"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-538.0109 56,-528.011 52.5001,-538.011 59.5001,-538.0109"/>
+<text text-anchor="middle" x="57.3895" y="-548" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _boolean_logic_s6 -->
 <g id="node6" class="node">
 <title>_boolean_logic_s6</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-118 36.5,-118 36.5,-82 92.5,-82 92.5,-118"/>
-<text text-anchor="start" x="58.1646" y="-96.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-83C48.8333,-83 80.1667,-83 80.1667,-83 85.8333,-83 91.5,-88.6667 91.5,-94.3333 91.5,-94.3333 91.5,-105.6667 91.5,-105.6667 91.5,-111.3333 85.8333,-117 80.1667,-117 80.1667,-117 48.8333,-117 48.8333,-117 43.1667,-117 37.5,-111.3333 37.5,-105.6667 37.5,-105.6667 37.5,-94.3333 37.5,-94.3333 37.5,-88.6667 43.1667,-83 48.8333,-83"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-118 28,-118 28,-82 84,-82 84,-118"/>
+<text text-anchor="start" x="49.6646" y="-96.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-83C40.3333,-83 71.6667,-83 71.6667,-83 77.3333,-83 83,-88.6667 83,-94.3333 83,-94.3333 83,-105.6667 83,-105.6667 83,-111.3333 77.3333,-117 71.6667,-117 71.6667,-117 40.3333,-117 40.3333,-117 34.6667,-117 29,-111.3333 29,-105.6667 29,-105.6667 29,-94.3333 29,-94.3333 29,-88.6667 34.6667,-83 40.3333,-83"/>
 </g>
 <!-- _boolean_logic_s6&#45;&gt;_final -->
 <g id="edge3" class="edge">
 <title>_boolean_logic_s6&#45;&gt;_final</title>
-<path fill="none" stroke="#000000" d="M64.5,-81.7521C64.5,-74.0806 64.5,-64.9093 64.5,-56.1197"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-56.0895 64.5,-46.0895 61.0001,-56.0895 68.0001,-56.0895"/>
-<text text-anchor="middle" x="65.8895" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M56,-81.7521C56,-74.0806 56,-64.9093 56,-56.1197"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-56.0895 56,-46.0895 52.5001,-56.0895 59.5001,-56.0895"/>
+<text text-anchor="middle" x="57.3895" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _boolean_logic_s5 -->
 <g id="node7" class="node">
 <title>_boolean_logic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-200 36.5,-200 36.5,-164 92.5,-164 92.5,-200"/>
-<text text-anchor="start" x="58.1646" y="-178.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-165C48.8333,-165 80.1667,-165 80.1667,-165 85.8333,-165 91.5,-170.6667 91.5,-176.3333 91.5,-176.3333 91.5,-187.6667 91.5,-187.6667 91.5,-193.3333 85.8333,-199 80.1667,-199 80.1667,-199 48.8333,-199 48.8333,-199 43.1667,-199 37.5,-193.3333 37.5,-187.6667 37.5,-187.6667 37.5,-176.3333 37.5,-176.3333 37.5,-170.6667 43.1667,-165 48.8333,-165"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-200 28,-200 28,-164 84,-164 84,-200"/>
+<text text-anchor="start" x="49.6646" y="-178.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-165C40.3333,-165 71.6667,-165 71.6667,-165 77.3333,-165 83,-170.6667 83,-176.3333 83,-176.3333 83,-187.6667 83,-187.6667 83,-193.3333 77.3333,-199 71.6667,-199 71.6667,-199 40.3333,-199 40.3333,-199 34.6667,-199 29,-193.3333 29,-187.6667 29,-187.6667 29,-176.3333 29,-176.3333 29,-170.6667 34.6667,-165 40.3333,-165"/>
 </g>
 <!-- _boolean_logic_s5&#45;&gt;_boolean_logic_s6 -->
 <g id="edge4" class="edge">
 <title>_boolean_logic_s5&#45;&gt;_boolean_logic_s6</title>
-<path fill="none" stroke="#000000" d="M64.5,-163.8015C64.5,-153.3976 64.5,-140.1215 64.5,-128.3768"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-128.1476 64.5,-118.1476 61.0001,-128.1476 68.0001,-128.1476"/>
-<text text-anchor="start" x="64.5" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (false or false and true)] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M56,-163.8015C56,-153.3976 56,-140.1215 56,-128.3768"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-128.1476 56,-118.1476 52.5001,-128.1476 59.5001,-128.1476"/>
+<text text-anchor="start" x="56" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (false or false and true)] &#160;&#160;</text>
 </g>
 <!-- _boolean_logic_s4 -->
 <g id="node8" class="node">
 <title>_boolean_logic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-282 36.5,-282 36.5,-246 92.5,-246 92.5,-282"/>
-<text text-anchor="start" x="58.1646" y="-260.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-247C48.8333,-247 80.1667,-247 80.1667,-247 85.8333,-247 91.5,-252.6667 91.5,-258.3333 91.5,-258.3333 91.5,-269.6667 91.5,-269.6667 91.5,-275.3333 85.8333,-281 80.1667,-281 80.1667,-281 48.8333,-281 48.8333,-281 43.1667,-281 37.5,-275.3333 37.5,-269.6667 37.5,-269.6667 37.5,-258.3333 37.5,-258.3333 37.5,-252.6667 43.1667,-247 48.8333,-247"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-282 28,-282 28,-246 84,-246 84,-282"/>
+<text text-anchor="start" x="49.6646" y="-260.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-247C40.3333,-247 71.6667,-247 71.6667,-247 77.3333,-247 83,-252.6667 83,-258.3333 83,-258.3333 83,-269.6667 83,-269.6667 83,-275.3333 77.3333,-281 71.6667,-281 71.6667,-281 40.3333,-281 40.3333,-281 34.6667,-281 29,-275.3333 29,-269.6667 29,-269.6667 29,-258.3333 29,-258.3333 29,-252.6667 34.6667,-247 40.3333,-247"/>
 </g>
 <!-- _boolean_logic_s4&#45;&gt;_boolean_logic_s5 -->
 <g id="edge5" class="edge">
 <title>_boolean_logic_s4&#45;&gt;_boolean_logic_s5</title>
-<path fill="none" stroke="#000000" d="M64.5,-245.8015C64.5,-235.3976 64.5,-222.1215 64.5,-210.3768"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-210.1476 64.5,-200.1476 61.0001,-210.1476 68.0001,-210.1476"/>
-<text text-anchor="start" x="64.5" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (true and false or false)] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M56,-245.8015C56,-235.3976 56,-222.1215 56,-210.3768"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-210.1476 56,-200.1476 52.5001,-210.1476 59.5001,-210.1476"/>
+<text text-anchor="start" x="56" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (true and false or false)] &#160;&#160;</text>
 </g>
 <!-- _boolean_logic_s3 -->
 <g id="node9" class="node">
 <title>_boolean_logic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-364 36.5,-364 36.5,-328 92.5,-328 92.5,-364"/>
-<text text-anchor="start" x="58.1646" y="-342.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-329C48.8333,-329 80.1667,-329 80.1667,-329 85.8333,-329 91.5,-334.6667 91.5,-340.3333 91.5,-340.3333 91.5,-351.6667 91.5,-351.6667 91.5,-357.3333 85.8333,-363 80.1667,-363 80.1667,-363 48.8333,-363 48.8333,-363 43.1667,-363 37.5,-357.3333 37.5,-351.6667 37.5,-351.6667 37.5,-340.3333 37.5,-340.3333 37.5,-334.6667 43.1667,-329 48.8333,-329"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-364 28,-364 28,-328 84,-328 84,-364"/>
+<text text-anchor="start" x="49.6646" y="-342.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-329C40.3333,-329 71.6667,-329 71.6667,-329 77.3333,-329 83,-334.6667 83,-340.3333 83,-340.3333 83,-351.6667 83,-351.6667 83,-357.3333 77.3333,-363 71.6667,-363 71.6667,-363 40.3333,-363 40.3333,-363 34.6667,-363 29,-357.3333 29,-351.6667 29,-351.6667 29,-340.3333 29,-340.3333 29,-334.6667 34.6667,-329 40.3333,-329"/>
 </g>
 <!-- _boolean_logic_s3&#45;&gt;_boolean_logic_s4 -->
 <g id="edge6" class="edge">
 <title>_boolean_logic_s3&#45;&gt;_boolean_logic_s4</title>
-<path fill="none" stroke="#000000" d="M64.5,-327.8015C64.5,-317.3976 64.5,-304.1215 64.5,-292.3768"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-292.1476 64.5,-282.1476 61.0001,-292.1476 68.0001,-292.1476"/>
-<text text-anchor="start" x="64.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true and not false] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M56,-327.8015C56,-317.3976 56,-304.1215 56,-292.3768"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-292.1476 56,-282.1476 52.5001,-292.1476 59.5001,-292.1476"/>
+<text text-anchor="start" x="56" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true and not false] &#160;&#160;</text>
 </g>
 <!-- _boolean_logic_s2 -->
 <g id="node10" class="node">
 <title>_boolean_logic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="92.5,-446 36.5,-446 36.5,-410 92.5,-410 92.5,-446"/>
-<text text-anchor="start" x="58.1646" y="-424.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M48.8333,-411C48.8333,-411 80.1667,-411 80.1667,-411 85.8333,-411 91.5,-416.6667 91.5,-422.3333 91.5,-422.3333 91.5,-433.6667 91.5,-433.6667 91.5,-439.3333 85.8333,-445 80.1667,-445 80.1667,-445 48.8333,-445 48.8333,-445 43.1667,-445 37.5,-439.3333 37.5,-433.6667 37.5,-433.6667 37.5,-422.3333 37.5,-422.3333 37.5,-416.6667 43.1667,-411 48.8333,-411"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="84,-446 28,-446 28,-410 84,-410 84,-446"/>
+<text text-anchor="start" x="49.6646" y="-424.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M40.3333,-411C40.3333,-411 71.6667,-411 71.6667,-411 77.3333,-411 83,-416.6667 83,-422.3333 83,-422.3333 83,-433.6667 83,-433.6667 83,-439.3333 77.3333,-445 71.6667,-445 71.6667,-445 40.3333,-445 40.3333,-445 34.6667,-445 29,-439.3333 29,-433.6667 29,-433.6667 29,-422.3333 29,-422.3333 29,-416.6667 34.6667,-411 40.3333,-411"/>
 </g>
 <!-- _boolean_logic_s2&#45;&gt;_boolean_logic_s3 -->
 <g id="edge7" class="edge">
 <title>_boolean_logic_s2&#45;&gt;_boolean_logic_s3</title>
-<path fill="none" stroke="#000000" d="M64.5,-409.8015C64.5,-399.3976 64.5,-386.1215 64.5,-374.3768"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-374.1476 64.5,-364.1476 61.0001,-374.1476 68.0001,-374.1476"/>
-<text text-anchor="start" x="64.5" y="-384" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[false or true] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M56,-409.8015C56,-399.3976 56,-386.1215 56,-374.3768"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-374.1476 56,-364.1476 52.5001,-374.1476 59.5001,-374.1476"/>
+<text text-anchor="start" x="56" y="-384" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[false or true] &#160;&#160;</text>
 </g>
 <!-- _boolean_logic_s1&#45;&gt;_boolean_logic_s2 -->
 <g id="edge8" class="edge">
 <title>_boolean_logic_s1&#45;&gt;_boolean_logic_s2</title>
-<path fill="none" stroke="#000000" d="M64.5,-491.8015C64.5,-481.3976 64.5,-468.1215 64.5,-456.3768"/>
-<polygon fill="#000000" stroke="#000000" points="68.0001,-456.1476 64.5,-446.1476 61.0001,-456.1476 68.0001,-456.1476"/>
-<text text-anchor="start" x="64.5" y="-466" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M56,-491.8015C56,-481.3976 56,-468.1215 56,-456.3768"/>
+<polygon fill="#000000" stroke="#000000" points="59.5001,-456.1476 56,-446.1476 52.5001,-456.1476 59.5001,-456.1476"/>
+<text text-anchor="start" x="56" y="-466" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true] &#160;&#160;</text>
 </g>
 <!-- _arithmetic -->
 <!-- _arithmetic_initial -->
 <g id="node13" class="node">
 <title>_arithmetic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="99.5" cy="-1238.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="91" cy="-1238.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _arithmetic_s1 -->
 <g id="node20" class="node">
 <title>_arithmetic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-1187 71.5,-1187 71.5,-1151 127.5,-1151 127.5,-1187"/>
-<text text-anchor="start" x="93.1646" y="-1165.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-1152C83.8333,-1152 115.1667,-1152 115.1667,-1152 120.8333,-1152 126.5,-1157.6667 126.5,-1163.3333 126.5,-1163.3333 126.5,-1174.6667 126.5,-1174.6667 126.5,-1180.3333 120.8333,-1186 115.1667,-1186 115.1667,-1186 83.8333,-1186 83.8333,-1186 78.1667,-1186 72.5,-1180.3333 72.5,-1174.6667 72.5,-1174.6667 72.5,-1163.3333 72.5,-1163.3333 72.5,-1157.6667 78.1667,-1152 83.8333,-1152"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-1187 63,-1187 63,-1151 119,-1151 119,-1187"/>
+<text text-anchor="start" x="84.6646" y="-1165.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-1152C75.3333,-1152 106.6667,-1152 106.6667,-1152 112.3333,-1152 118,-1157.6667 118,-1163.3333 118,-1163.3333 118,-1174.6667 118,-1174.6667 118,-1180.3333 112.3333,-1186 106.6667,-1186 106.6667,-1186 75.3333,-1186 75.3333,-1186 69.6667,-1186 64,-1180.3333 64,-1174.6667 64,-1174.6667 64,-1163.3333 64,-1163.3333 64,-1157.6667 69.6667,-1152 75.3333,-1152"/>
 </g>
 <!-- _arithmetic_initial&#45;&gt;_arithmetic_s1 -->
 <g id="edge9" class="edge">
 <title>_arithmetic_initial&#45;&gt;_arithmetic_s1</title>
-<path fill="none" stroke="#000000" d="M99.5,-1232.5745C99.5,-1224.7003 99.5,-1210.2498 99.5,-1197.1135"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-1197.0109 99.5,-1187.011 96.0001,-1197.011 103.0001,-1197.0109"/>
-<text text-anchor="middle" x="100.8895" y="-1207" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M91,-1232.5745C91,-1224.7003 91,-1210.2498 91,-1197.1135"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-1197.0109 91,-1187.011 87.5001,-1197.011 94.5001,-1197.0109"/>
+<text text-anchor="middle" x="92.3895" y="-1207" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _arithmetic_s7 -->
 <g id="node14" class="node">
 <title>_arithmetic_s7</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-695 71.5,-695 71.5,-659 127.5,-659 127.5,-695"/>
-<text text-anchor="start" x="93.1646" y="-673.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s7</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-660C83.8333,-660 115.1667,-660 115.1667,-660 120.8333,-660 126.5,-665.6667 126.5,-671.3333 126.5,-671.3333 126.5,-682.6667 126.5,-682.6667 126.5,-688.3333 120.8333,-694 115.1667,-694 115.1667,-694 83.8333,-694 83.8333,-694 78.1667,-694 72.5,-688.3333 72.5,-682.6667 72.5,-682.6667 72.5,-671.3333 72.5,-671.3333 72.5,-665.6667 78.1667,-660 83.8333,-660"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-695 63,-695 63,-659 119,-659 119,-695"/>
+<text text-anchor="start" x="84.6646" y="-673.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s7</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-660C75.3333,-660 106.6667,-660 106.6667,-660 112.3333,-660 118,-665.6667 118,-671.3333 118,-671.3333 118,-682.6667 118,-682.6667 118,-688.3333 112.3333,-694 106.6667,-694 106.6667,-694 75.3333,-694 75.3333,-694 69.6667,-694 64,-688.3333 64,-682.6667 64,-682.6667 64,-671.3333 64,-671.3333 64,-665.6667 69.6667,-660 75.3333,-660"/>
 </g>
 <!-- _arithmetic_s7&#45;&gt;_boolean_logic -->
 <g id="edge10" class="edge">
 <title>_arithmetic_s7&#45;&gt;_boolean_logic</title>
-<path fill="none" stroke="#000000" d="M99.5,-658.661C99.5,-651.2376 99.5,-642.2479 99.5,-633.0279"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-632.9962 99.5,-622.9962 96.0001,-632.9963 103.0001,-632.9962"/>
-<text text-anchor="middle" x="100.8895" y="-634" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M91,-658.661C91,-651.2376 91,-642.2479 91,-633.0279"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-632.9962 91,-622.9962 87.5001,-632.9963 94.5001,-632.9962"/>
+<text text-anchor="middle" x="92.3895" y="-634" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _arithmetic_s6 -->
 <g id="node15" class="node">
 <title>_arithmetic_s6</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-777 71.5,-777 71.5,-741 127.5,-741 127.5,-777"/>
-<text text-anchor="start" x="93.1646" y="-755.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-742C83.8333,-742 115.1667,-742 115.1667,-742 120.8333,-742 126.5,-747.6667 126.5,-753.3333 126.5,-753.3333 126.5,-764.6667 126.5,-764.6667 126.5,-770.3333 120.8333,-776 115.1667,-776 115.1667,-776 83.8333,-776 83.8333,-776 78.1667,-776 72.5,-770.3333 72.5,-764.6667 72.5,-764.6667 72.5,-753.3333 72.5,-753.3333 72.5,-747.6667 78.1667,-742 83.8333,-742"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-777 63,-777 63,-741 119,-741 119,-777"/>
+<text text-anchor="start" x="84.6646" y="-755.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-742C75.3333,-742 106.6667,-742 106.6667,-742 112.3333,-742 118,-747.6667 118,-753.3333 118,-753.3333 118,-764.6667 118,-764.6667 118,-770.3333 112.3333,-776 106.6667,-776 106.6667,-776 75.3333,-776 75.3333,-776 69.6667,-776 64,-770.3333 64,-764.6667 64,-764.6667 64,-753.3333 64,-753.3333 64,-747.6667 69.6667,-742 75.3333,-742"/>
 </g>
 <!-- _arithmetic_s6&#45;&gt;_arithmetic_s7 -->
 <g id="edge11" class="edge">
 <title>_arithmetic_s6&#45;&gt;_arithmetic_s7</title>
-<path fill="none" stroke="#000000" d="M99.5,-740.8015C99.5,-730.3976 99.5,-717.1215 99.5,-705.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-705.1476 99.5,-695.1476 96.0001,-705.1476 103.0001,-705.1476"/>
-<text text-anchor="start" x="99.5" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-740.8015C91,-730.3976 91,-717.1215 91,-705.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-705.1476 91,-695.1476 87.5001,-705.1476 94.5001,-705.1476"/>
+<text text-anchor="start" x="91" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
 </g>
 <!-- _arithmetic_s5 -->
 <g id="node16" class="node">
 <title>_arithmetic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-859 71.5,-859 71.5,-823 127.5,-823 127.5,-859"/>
-<text text-anchor="start" x="93.1646" y="-837.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-824C83.8333,-824 115.1667,-824 115.1667,-824 120.8333,-824 126.5,-829.6667 126.5,-835.3333 126.5,-835.3333 126.5,-846.6667 126.5,-846.6667 126.5,-852.3333 120.8333,-858 115.1667,-858 115.1667,-858 83.8333,-858 83.8333,-858 78.1667,-858 72.5,-852.3333 72.5,-846.6667 72.5,-846.6667 72.5,-835.3333 72.5,-835.3333 72.5,-829.6667 78.1667,-824 83.8333,-824"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-859 63,-859 63,-823 119,-823 119,-859"/>
+<text text-anchor="start" x="84.6646" y="-837.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-824C75.3333,-824 106.6667,-824 106.6667,-824 112.3333,-824 118,-829.6667 118,-835.3333 118,-835.3333 118,-846.6667 118,-846.6667 118,-852.3333 112.3333,-858 106.6667,-858 106.6667,-858 75.3333,-858 75.3333,-858 69.6667,-858 64,-852.3333 64,-846.6667 64,-846.6667 64,-835.3333 64,-835.3333 64,-829.6667 69.6667,-824 75.3333,-824"/>
 </g>
 <!-- _arithmetic_s5&#45;&gt;_arithmetic_s6 -->
 <g id="edge12" class="edge">
 <title>_arithmetic_s5&#45;&gt;_arithmetic_s6</title>
-<path fill="none" stroke="#000000" d="M99.5,-822.8015C99.5,-812.3976 99.5,-799.1215 99.5,-787.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-787.1476 99.5,-777.1476 96.0001,-787.1476 103.0001,-787.1476"/>
-<text text-anchor="start" x="99.5" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-822.8015C91,-812.3976 91,-799.1215 91,-787.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-787.1476 91,-777.1476 87.5001,-787.1476 94.5001,-787.1476"/>
+<text text-anchor="start" x="91" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
 </g>
 <!-- _arithmetic_s4 -->
 <g id="node17" class="node">
 <title>_arithmetic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-941 71.5,-941 71.5,-905 127.5,-905 127.5,-941"/>
-<text text-anchor="start" x="93.1646" y="-919.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-906C83.8333,-906 115.1667,-906 115.1667,-906 120.8333,-906 126.5,-911.6667 126.5,-917.3333 126.5,-917.3333 126.5,-928.6667 126.5,-928.6667 126.5,-934.3333 120.8333,-940 115.1667,-940 115.1667,-940 83.8333,-940 83.8333,-940 78.1667,-940 72.5,-934.3333 72.5,-928.6667 72.5,-928.6667 72.5,-917.3333 72.5,-917.3333 72.5,-911.6667 78.1667,-906 83.8333,-906"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-941 63,-941 63,-905 119,-905 119,-941"/>
+<text text-anchor="start" x="84.6646" y="-919.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-906C75.3333,-906 106.6667,-906 106.6667,-906 112.3333,-906 118,-911.6667 118,-917.3333 118,-917.3333 118,-928.6667 118,-928.6667 118,-934.3333 112.3333,-940 106.6667,-940 106.6667,-940 75.3333,-940 75.3333,-940 69.6667,-940 64,-934.3333 64,-928.6667 64,-928.6667 64,-917.3333 64,-917.3333 64,-911.6667 69.6667,-906 75.3333,-906"/>
 </g>
 <!-- _arithmetic_s4&#45;&gt;_arithmetic_s5 -->
 <g id="edge13" class="edge">
 <title>_arithmetic_s4&#45;&gt;_arithmetic_s5</title>
-<path fill="none" stroke="#000000" d="M99.5,-904.8015C99.5,-894.3976 99.5,-881.1215 99.5,-869.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-869.1476 99.5,-859.1476 96.0001,-869.1476 103.0001,-869.1476"/>
-<text text-anchor="start" x="99.5" y="-879" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[21 // 3 == 7] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-904.8015C91,-894.3976 91,-881.1215 91,-869.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-869.1476 91,-859.1476 87.5001,-869.1476 94.5001,-869.1476"/>
+<text text-anchor="start" x="91" y="-879" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[21 // 3 == 7] &#160;&#160;</text>
 </g>
 <!-- _arithmetic_s3 -->
 <g id="node18" class="node">
 <title>_arithmetic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-1023 71.5,-1023 71.5,-987 127.5,-987 127.5,-1023"/>
-<text text-anchor="start" x="93.1646" y="-1001.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-988C83.8333,-988 115.1667,-988 115.1667,-988 120.8333,-988 126.5,-993.6667 126.5,-999.3333 126.5,-999.3333 126.5,-1010.6667 126.5,-1010.6667 126.5,-1016.3333 120.8333,-1022 115.1667,-1022 115.1667,-1022 83.8333,-1022 83.8333,-1022 78.1667,-1022 72.5,-1016.3333 72.5,-1010.6667 72.5,-1010.6667 72.5,-999.3333 72.5,-999.3333 72.5,-993.6667 78.1667,-988 83.8333,-988"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-1023 63,-1023 63,-987 119,-987 119,-1023"/>
+<text text-anchor="start" x="84.6646" y="-1001.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-988C75.3333,-988 106.6667,-988 106.6667,-988 112.3333,-988 118,-993.6667 118,-999.3333 118,-999.3333 118,-1010.6667 118,-1010.6667 118,-1016.3333 112.3333,-1022 106.6667,-1022 106.6667,-1022 75.3333,-1022 75.3333,-1022 69.6667,-1022 64,-1016.3333 64,-1010.6667 64,-1010.6667 64,-999.3333 64,-999.3333 64,-993.6667 69.6667,-988 75.3333,-988"/>
 </g>
 <!-- _arithmetic_s3&#45;&gt;_arithmetic_s4 -->
 <g id="edge14" class="edge">
 <title>_arithmetic_s3&#45;&gt;_arithmetic_s4</title>
-<path fill="none" stroke="#000000" d="M99.5,-986.8015C99.5,-976.3976 99.5,-963.1215 99.5,-951.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-951.1476 99.5,-941.1476 96.0001,-951.1476 103.0001,-951.1476"/>
-<text text-anchor="start" x="99.5" y="-961" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-986.8015C91,-976.3976 91,-963.1215 91,-951.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-951.1476 91,-941.1476 87.5001,-951.1476 94.5001,-951.1476"/>
+<text text-anchor="start" x="91" y="-961" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
 </g>
 <!-- _arithmetic_s2 -->
 <g id="node19" class="node">
 <title>_arithmetic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="127.5,-1105 71.5,-1105 71.5,-1069 127.5,-1069 127.5,-1105"/>
-<text text-anchor="start" x="93.1646" y="-1083.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M83.8333,-1070C83.8333,-1070 115.1667,-1070 115.1667,-1070 120.8333,-1070 126.5,-1075.6667 126.5,-1081.3333 126.5,-1081.3333 126.5,-1092.6667 126.5,-1092.6667 126.5,-1098.3333 120.8333,-1104 115.1667,-1104 115.1667,-1104 83.8333,-1104 83.8333,-1104 78.1667,-1104 72.5,-1098.3333 72.5,-1092.6667 72.5,-1092.6667 72.5,-1081.3333 72.5,-1081.3333 72.5,-1075.6667 78.1667,-1070 83.8333,-1070"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="119,-1105 63,-1105 63,-1069 119,-1069 119,-1105"/>
+<text text-anchor="start" x="84.6646" y="-1083.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M75.3333,-1070C75.3333,-1070 106.6667,-1070 106.6667,-1070 112.3333,-1070 118,-1075.6667 118,-1081.3333 118,-1081.3333 118,-1092.6667 118,-1092.6667 118,-1098.3333 112.3333,-1104 106.6667,-1104 106.6667,-1104 75.3333,-1104 75.3333,-1104 69.6667,-1104 64,-1098.3333 64,-1092.6667 64,-1092.6667 64,-1081.3333 64,-1081.3333 64,-1075.6667 69.6667,-1070 75.3333,-1070"/>
 </g>
 <!-- _arithmetic_s2&#45;&gt;_arithmetic_s3 -->
 <g id="edge15" class="edge">
 <title>_arithmetic_s2&#45;&gt;_arithmetic_s3</title>
-<path fill="none" stroke="#000000" d="M99.5,-1068.8015C99.5,-1058.3976 99.5,-1045.1215 99.5,-1033.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-1033.1476 99.5,-1023.1476 96.0001,-1033.1476 103.0001,-1033.1476"/>
-<text text-anchor="start" x="99.5" y="-1043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-1068.8015C91,-1058.3976 91,-1045.1215 91,-1033.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-1033.1476 91,-1023.1476 87.5001,-1033.1476 94.5001,-1033.1476"/>
+<text text-anchor="start" x="91" y="-1043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
 </g>
 <!-- _arithmetic_s1&#45;&gt;_arithmetic_s2 -->
 <g id="edge16" class="edge">
 <title>_arithmetic_s1&#45;&gt;_arithmetic_s2</title>
-<path fill="none" stroke="#000000" d="M99.5,-1150.8015C99.5,-1140.3976 99.5,-1127.1215 99.5,-1115.3768"/>
-<polygon fill="#000000" stroke="#000000" points="103.0001,-1115.1476 99.5,-1105.1476 96.0001,-1115.1476 103.0001,-1115.1476"/>
-<text text-anchor="start" x="99.5" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M91,-1150.8015C91,-1140.3976 91,-1127.1215 91,-1115.3768"/>
+<polygon fill="#000000" stroke="#000000" points="94.5001,-1115.1476 91,-1105.1476 87.5001,-1115.1476 94.5001,-1115.1476"/>
+<text text-anchor="start" x="91" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
 </g>
 <!-- _comparisons&#45;&gt;self_tr__comparisons__comparisons_23 -->
 <g id="edge23" class="edge">
 <title>_comparisons:e&#45;&gt;self_tr__comparisons__comparisons_23:e</title>
-<path fill="none" stroke="#000000" d="M178.885,-1776.9997C173.8815,-1794.4465 165.5473,-1810.5 157.5,-1810.5"/>
-<text text-anchor="start" x="175.5" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M170.385,-1776.9997C165.3815,-1794.4465 157.0473,-1810.5 149,-1810.5"/>
+<text text-anchor="start" x="167" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _comparisons_initial -->
 <g id="node22" class="node">
 <title>_comparisons_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="138.5" cy="-1733.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="130" cy="-1733.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _comparisons_s1 -->
 <g id="node27" class="node">
 <title>_comparisons_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="166.5,-1682 110.5,-1682 110.5,-1646 166.5,-1646 166.5,-1682"/>
-<text text-anchor="start" x="132.1646" y="-1660.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M122.8333,-1647C122.8333,-1647 154.1667,-1647 154.1667,-1647 159.8333,-1647 165.5,-1652.6667 165.5,-1658.3333 165.5,-1658.3333 165.5,-1669.6667 165.5,-1669.6667 165.5,-1675.3333 159.8333,-1681 154.1667,-1681 154.1667,-1681 122.8333,-1681 122.8333,-1681 117.1667,-1681 111.5,-1675.3333 111.5,-1669.6667 111.5,-1669.6667 111.5,-1658.3333 111.5,-1658.3333 111.5,-1652.6667 117.1667,-1647 122.8333,-1647"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="158,-1682 102,-1682 102,-1646 158,-1646 158,-1682"/>
+<text text-anchor="start" x="123.6646" y="-1660.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M114.3333,-1647C114.3333,-1647 145.6667,-1647 145.6667,-1647 151.3333,-1647 157,-1652.6667 157,-1658.3333 157,-1658.3333 157,-1669.6667 157,-1669.6667 157,-1675.3333 151.3333,-1681 145.6667,-1681 145.6667,-1681 114.3333,-1681 114.3333,-1681 108.6667,-1681 103,-1675.3333 103,-1669.6667 103,-1669.6667 103,-1658.3333 103,-1658.3333 103,-1652.6667 108.6667,-1647 114.3333,-1647"/>
 </g>
 <!-- _comparisons_initial&#45;&gt;_comparisons_s1 -->
 <g id="edge17" class="edge">
 <title>_comparisons_initial&#45;&gt;_comparisons_s1</title>
-<path fill="none" stroke="#000000" d="M138.5,-1727.5745C138.5,-1719.7003 138.5,-1705.2498 138.5,-1692.1135"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1692.0109 138.5,-1682.011 135.0001,-1692.011 142.0001,-1692.0109"/>
-<text text-anchor="middle" x="139.8895" y="-1702" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M130,-1727.5745C130,-1719.7003 130,-1705.2498 130,-1692.1135"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1692.0109 130,-1682.011 126.5001,-1692.011 133.5001,-1692.0109"/>
+<text text-anchor="middle" x="131.3895" y="-1702" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _comparisons_s5 -->
 <g id="node23" class="node">
 <title>_comparisons_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="166.5,-1354 110.5,-1354 110.5,-1318 166.5,-1318 166.5,-1354"/>
-<text text-anchor="start" x="132.1646" y="-1332.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M122.8333,-1319C122.8333,-1319 154.1667,-1319 154.1667,-1319 159.8333,-1319 165.5,-1324.6667 165.5,-1330.3333 165.5,-1330.3333 165.5,-1341.6667 165.5,-1341.6667 165.5,-1347.3333 159.8333,-1353 154.1667,-1353 154.1667,-1353 122.8333,-1353 122.8333,-1353 117.1667,-1353 111.5,-1347.3333 111.5,-1341.6667 111.5,-1341.6667 111.5,-1330.3333 111.5,-1330.3333 111.5,-1324.6667 117.1667,-1319 122.8333,-1319"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="158,-1354 102,-1354 102,-1318 158,-1318 158,-1354"/>
+<text text-anchor="start" x="123.6646" y="-1332.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M114.3333,-1319C114.3333,-1319 145.6667,-1319 145.6667,-1319 151.3333,-1319 157,-1324.6667 157,-1330.3333 157,-1330.3333 157,-1341.6667 157,-1341.6667 157,-1347.3333 151.3333,-1353 145.6667,-1353 145.6667,-1353 114.3333,-1353 114.3333,-1353 108.6667,-1353 103,-1347.3333 103,-1341.6667 103,-1341.6667 103,-1330.3333 103,-1330.3333 103,-1324.6667 108.6667,-1319 114.3333,-1319"/>
 </g>
 <!-- _comparisons_s5&#45;&gt;_arithmetic -->
 <g id="edge18" class="edge">
 <title>_comparisons_s5&#45;&gt;_arithmetic</title>
-<path fill="none" stroke="#000000" d="M138.5,-1317.661C138.5,-1310.2376 138.5,-1301.2479 138.5,-1292.0279"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1291.9962 138.5,-1281.9962 135.0001,-1291.9963 142.0001,-1291.9962"/>
-<text text-anchor="middle" x="139.8895" y="-1293" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M130,-1317.661C130,-1310.2376 130,-1301.2479 130,-1292.0279"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1291.9962 130,-1281.9962 126.5001,-1291.9963 133.5001,-1291.9962"/>
+<text text-anchor="middle" x="131.3895" y="-1293" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _comparisons_s4 -->
 <g id="node24" class="node">
 <title>_comparisons_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="166.5,-1436 110.5,-1436 110.5,-1400 166.5,-1400 166.5,-1436"/>
-<text text-anchor="start" x="132.1646" y="-1414.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M122.8333,-1401C122.8333,-1401 154.1667,-1401 154.1667,-1401 159.8333,-1401 165.5,-1406.6667 165.5,-1412.3333 165.5,-1412.3333 165.5,-1423.6667 165.5,-1423.6667 165.5,-1429.3333 159.8333,-1435 154.1667,-1435 154.1667,-1435 122.8333,-1435 122.8333,-1435 117.1667,-1435 111.5,-1429.3333 111.5,-1423.6667 111.5,-1423.6667 111.5,-1412.3333 111.5,-1412.3333 111.5,-1406.6667 117.1667,-1401 122.8333,-1401"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="158,-1436 102,-1436 102,-1400 158,-1400 158,-1436"/>
+<text text-anchor="start" x="123.6646" y="-1414.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M114.3333,-1401C114.3333,-1401 145.6667,-1401 145.6667,-1401 151.3333,-1401 157,-1406.6667 157,-1412.3333 157,-1412.3333 157,-1423.6667 157,-1423.6667 157,-1429.3333 151.3333,-1435 145.6667,-1435 145.6667,-1435 114.3333,-1435 114.3333,-1435 108.6667,-1435 103,-1429.3333 103,-1423.6667 103,-1423.6667 103,-1412.3333 103,-1412.3333 103,-1406.6667 108.6667,-1401 114.3333,-1401"/>
 </g>
 <!-- _comparisons_s4&#45;&gt;_comparisons_s5 -->
 <g id="edge19" class="edge">
 <title>_comparisons_s4&#45;&gt;_comparisons_s5</title>
-<path fill="none" stroke="#000000" d="M138.5,-1399.8015C138.5,-1389.3976 138.5,-1376.1215 138.5,-1364.3768"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1364.1476 138.5,-1354.1476 135.0001,-1364.1476 142.0001,-1364.1476"/>
-<text text-anchor="start" x="138.5" y="-1374" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M130,-1399.8015C130,-1389.3976 130,-1376.1215 130,-1364.3768"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1364.1476 130,-1354.1476 126.5001,-1364.1476 133.5001,-1364.1476"/>
+<text text-anchor="start" x="130" y="-1374" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
 </g>
 <!-- _comparisons_s3 -->
 <g id="node25" class="node">
 <title>_comparisons_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="166.5,-1518 110.5,-1518 110.5,-1482 166.5,-1482 166.5,-1518"/>
-<text text-anchor="start" x="132.1646" y="-1496.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M122.8333,-1483C122.8333,-1483 154.1667,-1483 154.1667,-1483 159.8333,-1483 165.5,-1488.6667 165.5,-1494.3333 165.5,-1494.3333 165.5,-1505.6667 165.5,-1505.6667 165.5,-1511.3333 159.8333,-1517 154.1667,-1517 154.1667,-1517 122.8333,-1517 122.8333,-1517 117.1667,-1517 111.5,-1511.3333 111.5,-1505.6667 111.5,-1505.6667 111.5,-1494.3333 111.5,-1494.3333 111.5,-1488.6667 117.1667,-1483 122.8333,-1483"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="158,-1518 102,-1518 102,-1482 158,-1482 158,-1518"/>
+<text text-anchor="start" x="123.6646" y="-1496.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M114.3333,-1483C114.3333,-1483 145.6667,-1483 145.6667,-1483 151.3333,-1483 157,-1488.6667 157,-1494.3333 157,-1494.3333 157,-1505.6667 157,-1505.6667 157,-1511.3333 151.3333,-1517 145.6667,-1517 145.6667,-1517 114.3333,-1517 114.3333,-1517 108.6667,-1517 103,-1511.3333 103,-1505.6667 103,-1505.6667 103,-1494.3333 103,-1494.3333 103,-1488.6667 108.6667,-1483 114.3333,-1483"/>
 </g>
 <!-- _comparisons_s3&#45;&gt;_comparisons_s4 -->
 <g id="edge20" class="edge">
 <title>_comparisons_s3&#45;&gt;_comparisons_s4</title>
-<path fill="none" stroke="#000000" d="M138.5,-1481.8015C138.5,-1471.3976 138.5,-1458.1215 138.5,-1446.3768"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1446.1476 138.5,-1436.1476 135.0001,-1446.1476 142.0001,-1446.1476"/>
-<text text-anchor="start" x="138.5" y="-1456" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M130,-1481.8015C130,-1471.3976 130,-1458.1215 130,-1446.3768"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1446.1476 130,-1436.1476 126.5001,-1446.1476 133.5001,-1446.1476"/>
+<text text-anchor="start" x="130" y="-1456" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
 </g>
 <!-- _comparisons_s2 -->
 <g id="node26" class="node">
 <title>_comparisons_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="166.5,-1600 110.5,-1600 110.5,-1564 166.5,-1564 166.5,-1600"/>
-<text text-anchor="start" x="132.1646" y="-1578.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M122.8333,-1565C122.8333,-1565 154.1667,-1565 154.1667,-1565 159.8333,-1565 165.5,-1570.6667 165.5,-1576.3333 165.5,-1576.3333 165.5,-1587.6667 165.5,-1587.6667 165.5,-1593.3333 159.8333,-1599 154.1667,-1599 154.1667,-1599 122.8333,-1599 122.8333,-1599 117.1667,-1599 111.5,-1593.3333 111.5,-1587.6667 111.5,-1587.6667 111.5,-1576.3333 111.5,-1576.3333 111.5,-1570.6667 117.1667,-1565 122.8333,-1565"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="158,-1600 102,-1600 102,-1564 158,-1564 158,-1600"/>
+<text text-anchor="start" x="123.6646" y="-1578.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M114.3333,-1565C114.3333,-1565 145.6667,-1565 145.6667,-1565 151.3333,-1565 157,-1570.6667 157,-1576.3333 157,-1576.3333 157,-1587.6667 157,-1587.6667 157,-1593.3333 151.3333,-1599 145.6667,-1599 145.6667,-1599 114.3333,-1599 114.3333,-1599 108.6667,-1599 103,-1593.3333 103,-1587.6667 103,-1587.6667 103,-1576.3333 103,-1576.3333 103,-1570.6667 108.6667,-1565 114.3333,-1565"/>
 </g>
 <!-- _comparisons_s2&#45;&gt;_comparisons_s3 -->
 <g id="edge21" class="edge">
 <title>_comparisons_s2&#45;&gt;_comparisons_s3</title>
-<path fill="none" stroke="#000000" d="M138.5,-1563.8015C138.5,-1553.3976 138.5,-1540.1215 138.5,-1528.3768"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1528.1476 138.5,-1518.1476 135.0001,-1528.1476 142.0001,-1528.1476"/>
-<text text-anchor="start" x="138.5" y="-1538" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M130,-1563.8015C130,-1553.3976 130,-1540.1215 130,-1528.3768"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1528.1476 130,-1518.1476 126.5001,-1528.1476 133.5001,-1528.1476"/>
+<text text-anchor="start" x="130" y="-1538" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
 </g>
 <!-- _comparisons_s1&#45;&gt;_comparisons_s2 -->
 <g id="edge22" class="edge">
 <title>_comparisons_s1&#45;&gt;_comparisons_s2</title>
-<path fill="none" stroke="#000000" d="M138.5,-1645.8015C138.5,-1635.3976 138.5,-1622.1215 138.5,-1610.3768"/>
-<polygon fill="#000000" stroke="#000000" points="142.0001,-1610.1476 138.5,-1600.1476 135.0001,-1610.1476 142.0001,-1610.1476"/>
-<text text-anchor="start" x="138.5" y="-1620" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M130,-1645.8015C130,-1635.3976 130,-1622.1215 130,-1610.3768"/>
+<polygon fill="#000000" stroke="#000000" points="133.5001,-1610.1476 130,-1600.1476 126.5001,-1610.1476 133.5001,-1610.1476"/>
+<text text-anchor="start" x="130" y="-1620" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 128 - 128
test/test_files/features/expressions/test_expressions_ortho.svg

@@ -4,30 +4,30 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="498pt" height="1030pt"
- viewBox="0.00 0.00 498.17 1030.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="482pt" height="1030pt"
+ viewBox="0.00 0.00 482.17 1030.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1026)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1026 494.1698,-1026 494.1698,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1026 478.1698,-1026 478.1698,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__p</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M42.1698,-8C42.1698,-8 470.1698,-8 470.1698,-8 476.1698,-8 482.1698,-14 482.1698,-20 482.1698,-20 482.1698,-971 482.1698,-971 482.1698,-977 476.1698,-983 470.1698,-983 470.1698,-983 42.1698,-983 42.1698,-983 36.1698,-983 30.1698,-977 30.1698,-971 30.1698,-971 30.1698,-20 30.1698,-20 30.1698,-14 36.1698,-8 42.1698,-8"/>
-<text text-anchor="start" x="252.8344" y="-964.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M42.1698,-8C42.1698,-8 454.1698,-8 454.1698,-8 460.1698,-8 466.1698,-14 466.1698,-20 466.1698,-20 466.1698,-971 466.1698,-971 466.1698,-977 460.1698,-983 454.1698,-983 454.1698,-983 42.1698,-983 42.1698,-983 36.1698,-983 30.1698,-977 30.1698,-971 30.1698,-971 30.1698,-20 30.1698,-20 30.1698,-14 36.1698,-8 42.1698,-8"/>
+<text text-anchor="start" x="244.8344" y="-964.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__p_boolean_logic</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="303.1698,-152 303.1698,-945 474.1698,-945 474.1698,-152 303.1698,-152"/>
-<text text-anchor="start" x="351.657" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">boolean_logic</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="287.1698,-152 287.1698,-945 458.1698,-945 458.1698,-152 287.1698,-152"/>
+<text text-anchor="start" x="335.657" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">boolean_logic</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_arithmetic</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="166.1698,-16 166.1698,-945 295.1698,-945 295.1698,-16 166.1698,-16"/>
-<text text-anchor="start" x="205.1712" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">arithmetic</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="150.1698,-16 150.1698,-945 279.1698,-945 279.1698,-16 150.1698,-16"/>
+<text text-anchor="start" x="189.1712" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">arithmetic</text>
 </g>
 <g id="clust4" class="cluster">
 <title>cluster__p_comparisons</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="46.1698,-288 46.1698,-945 158.1698,-945 158.1698,-288 46.1698,-288"/>
-<text text-anchor="start" x="68.1666" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="46.1698,-288 46.1698,-945 142.1698,-945 142.1698,-288 46.1698,-288"/>
+<text text-anchor="start" x="60.1666" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
 </g>
 <!-- self_tr__p__p_20 -->
 <!-- _p -->
@@ -59,277 +59,277 @@
 <!-- _p_boolean_logic_initial -->
 <g id="node5" class="node">
 <title>_p_boolean_logic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="339.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="323.1698" cy="-901.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_boolean_logic_s1 -->
 <g id="node11" class="node">
 <title>_p_boolean_logic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="367.1698,-814 311.1698,-814 311.1698,-778 367.1698,-778 367.1698,-814"/>
-<text text-anchor="start" x="332.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M323.5031,-779C323.5031,-779 354.8364,-779 354.8364,-779 360.5031,-779 366.1698,-784.6667 366.1698,-790.3333 366.1698,-790.3333 366.1698,-801.6667 366.1698,-801.6667 366.1698,-807.3333 360.5031,-813 354.8364,-813 354.8364,-813 323.5031,-813 323.5031,-813 317.8364,-813 312.1698,-807.3333 312.1698,-801.6667 312.1698,-801.6667 312.1698,-790.3333 312.1698,-790.3333 312.1698,-784.6667 317.8364,-779 323.5031,-779"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="351.1698,-814 295.1698,-814 295.1698,-778 351.1698,-778 351.1698,-814"/>
+<text text-anchor="start" x="316.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M307.5031,-779C307.5031,-779 338.8364,-779 338.8364,-779 344.5031,-779 350.1698,-784.6667 350.1698,-790.3333 350.1698,-790.3333 350.1698,-801.6667 350.1698,-801.6667 350.1698,-807.3333 344.5031,-813 338.8364,-813 338.8364,-813 307.5031,-813 307.5031,-813 301.8364,-813 296.1698,-807.3333 296.1698,-801.6667 296.1698,-801.6667 296.1698,-790.3333 296.1698,-790.3333 296.1698,-784.6667 301.8364,-779 307.5031,-779"/>
 </g>
 <!-- _p_boolean_logic_initial&#45;&gt;_p_boolean_logic_s1 -->
 <g id="edge2" class="edge">
 <title>_p_boolean_logic_initial&#45;&gt;_p_boolean_logic_s1</title>
-<path fill="none" stroke="#000000" d="M339.1698,-895.8288C339.1698,-891.1736 339.1698,-884.4097 339.1698,-878.5 339.1698,-878.5 339.1698,-878.5 339.1698,-831.5 339.1698,-829.1079 339.1698,-826.6252 339.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="342.6699,-824.0597 339.1698,-814.0598 335.6699,-824.0598 342.6699,-824.0597"/>
-<text text-anchor="middle" x="340.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M323.1698,-895.8288C323.1698,-891.1736 323.1698,-884.4097 323.1698,-878.5 323.1698,-878.5 323.1698,-878.5 323.1698,-831.5 323.1698,-829.1079 323.1698,-826.6252 323.1698,-824.1342"/>
+<polygon fill="#000000" stroke="#000000" points="326.6699,-824.0597 323.1698,-814.0598 319.6699,-824.0598 326.6699,-824.0597"/>
+<text text-anchor="middle" x="324.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_boolean_logic_ok -->
 <g id="node6" class="node">
 <title>_p_boolean_logic_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="407.1698,-206 311.1698,-206 311.1698,-160 407.1698,-160 407.1698,-206"/>
-<text text-anchor="start" x="352.8344" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="316.6742" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.ok</text>
-<polygon fill="#000000" stroke="#000000" points="311.1698,-183 311.1698,-183 407.1698,-183 407.1698,-183 311.1698,-183"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M324.1698,-161C324.1698,-161 394.1698,-161 394.1698,-161 400.1698,-161 406.1698,-167 406.1698,-173 406.1698,-173 406.1698,-193 406.1698,-193 406.1698,-199 400.1698,-205 394.1698,-205 394.1698,-205 324.1698,-205 324.1698,-205 318.1698,-205 312.1698,-199 312.1698,-193 312.1698,-193 312.1698,-173 312.1698,-173 312.1698,-167 318.1698,-161 324.1698,-161"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="375.1698,-206 295.1698,-206 295.1698,-160 375.1698,-160 375.1698,-206"/>
+<text text-anchor="start" x="328.8344" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
+<text text-anchor="start" x="301.0124" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.ok</text>
+<polygon fill="#000000" stroke="#000000" points="295.1698,-183 295.1698,-183 375.1698,-183 375.1698,-183 295.1698,-183"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M308.1698,-161C308.1698,-161 362.1698,-161 362.1698,-161 368.1698,-161 374.1698,-167 374.1698,-173 374.1698,-173 374.1698,-193 374.1698,-193 374.1698,-199 368.1698,-205 362.1698,-205 362.1698,-205 308.1698,-205 308.1698,-205 302.1698,-205 296.1698,-199 296.1698,-193 296.1698,-193 296.1698,-173 296.1698,-173 296.1698,-167 302.1698,-161 308.1698,-161"/>
 </g>
 <!-- _p_boolean_logic_s5 -->
 <g id="node7" class="node">
 <title>_p_boolean_logic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="367.1698,-337 311.1698,-337 311.1698,-301 367.1698,-301 367.1698,-337"/>
-<text text-anchor="start" x="332.8344" y="-315.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M323.5031,-302C323.5031,-302 354.8364,-302 354.8364,-302 360.5031,-302 366.1698,-307.6667 366.1698,-313.3333 366.1698,-313.3333 366.1698,-324.6667 366.1698,-324.6667 366.1698,-330.3333 360.5031,-336 354.8364,-336 354.8364,-336 323.5031,-336 323.5031,-336 317.8364,-336 312.1698,-330.3333 312.1698,-324.6667 312.1698,-324.6667 312.1698,-313.3333 312.1698,-313.3333 312.1698,-307.6667 317.8364,-302 323.5031,-302"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="351.1698,-337 295.1698,-337 295.1698,-301 351.1698,-301 351.1698,-337"/>
+<text text-anchor="start" x="316.8344" y="-315.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M307.5031,-302C307.5031,-302 338.8364,-302 338.8364,-302 344.5031,-302 350.1698,-307.6667 350.1698,-313.3333 350.1698,-313.3333 350.1698,-324.6667 350.1698,-324.6667 350.1698,-330.3333 344.5031,-336 338.8364,-336 338.8364,-336 307.5031,-336 307.5031,-336 301.8364,-336 296.1698,-330.3333 296.1698,-324.6667 296.1698,-324.6667 296.1698,-313.3333 296.1698,-313.3333 296.1698,-307.6667 301.8364,-302 307.5031,-302"/>
 </g>
 <!-- _p_boolean_logic_s5&#45;&gt;_p_boolean_logic_ok -->
 <g id="edge3" class="edge">
 <title>_p_boolean_logic_s5&#45;&gt;_p_boolean_logic_ok</title>
-<path fill="none" stroke="#000000" d="M335.8189,-300.6417C334.4446,-291.5981 333.1698,-280.5115 333.1698,-270.5 333.1698,-270.5 333.1698,-270.5 333.1698,-223.5 333.1698,-220.868 333.5634,-218.2706 334.2539,-215.739"/>
-<polygon fill="#000000" stroke="#000000" points="337.5441,-216.9432 338.1828,-206.3677 331.0885,-214.2367 337.5441,-216.9432"/>
-<text text-anchor="start" x="333.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (false or false and true)] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M319.8189,-300.6417C318.4446,-291.5981 317.1698,-280.5115 317.1698,-270.5 317.1698,-270.5 317.1698,-270.5 317.1698,-223.5 317.1698,-220.9416 317.4734,-218.3646 318.0018,-215.8169"/>
+<polygon fill="#000000" stroke="#000000" points="321.3532,-216.8264 320.9871,-206.2379 314.6702,-214.7436 321.3532,-216.8264"/>
+<text text-anchor="start" x="317.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (false or false and true)] &#160;&#160;</text>
 </g>
 <!-- _p_boolean_logic_s4 -->
 <g id="node8" class="node">
 <title>_p_boolean_logic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="367.1698,-460 311.1698,-460 311.1698,-424 367.1698,-424 367.1698,-460"/>
-<text text-anchor="start" x="332.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M323.5031,-425C323.5031,-425 354.8364,-425 354.8364,-425 360.5031,-425 366.1698,-430.6667 366.1698,-436.3333 366.1698,-436.3333 366.1698,-447.6667 366.1698,-447.6667 366.1698,-453.3333 360.5031,-459 354.8364,-459 354.8364,-459 323.5031,-459 323.5031,-459 317.8364,-459 312.1698,-453.3333 312.1698,-447.6667 312.1698,-447.6667 312.1698,-436.3333 312.1698,-436.3333 312.1698,-430.6667 317.8364,-425 323.5031,-425"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="351.1698,-460 295.1698,-460 295.1698,-424 351.1698,-424 351.1698,-460"/>
+<text text-anchor="start" x="316.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M307.5031,-425C307.5031,-425 338.8364,-425 338.8364,-425 344.5031,-425 350.1698,-430.6667 350.1698,-436.3333 350.1698,-436.3333 350.1698,-447.6667 350.1698,-447.6667 350.1698,-453.3333 344.5031,-459 338.8364,-459 338.8364,-459 307.5031,-459 307.5031,-459 301.8364,-459 296.1698,-453.3333 296.1698,-447.6667 296.1698,-447.6667 296.1698,-436.3333 296.1698,-436.3333 296.1698,-430.6667 301.8364,-425 307.5031,-425"/>
 </g>
 <!-- _p_boolean_logic_s4&#45;&gt;_p_boolean_logic_s5 -->
 <g id="edge4" class="edge">
 <title>_p_boolean_logic_s4&#45;&gt;_p_boolean_logic_s5</title>
-<path fill="none" stroke="#000000" d="M334.8731,-423.6741C333.9113,-418.1833 333.1698,-412.1255 333.1698,-406.5 333.1698,-406.5 333.1698,-406.5 333.1698,-359.5 333.1698,-355.4573 333.4659,-351.2119 333.9266,-347.0534"/>
-<polygon fill="#000000" stroke="#000000" points="337.4051,-347.4511 335.3359,-337.0603 330.4737,-346.4736 337.4051,-347.4511"/>
-<text text-anchor="start" x="333.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (true and false or false)] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M318.8731,-423.6741C317.9113,-418.1833 317.1698,-412.1255 317.1698,-406.5 317.1698,-406.5 317.1698,-406.5 317.1698,-359.5 317.1698,-355.4573 317.4659,-351.2119 317.9266,-347.0534"/>
+<polygon fill="#000000" stroke="#000000" points="321.4051,-347.4511 319.3359,-337.0603 314.4737,-346.4736 321.4051,-347.4511"/>
+<text text-anchor="start" x="317.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (true and false or false)] &#160;&#160;</text>
 </g>
 <!-- _p_boolean_logic_s3 -->
 <g id="node9" class="node">
 <title>_p_boolean_logic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="367.1698,-578 311.1698,-578 311.1698,-542 367.1698,-542 367.1698,-578"/>
-<text text-anchor="start" x="332.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M323.5031,-543C323.5031,-543 354.8364,-543 354.8364,-543 360.5031,-543 366.1698,-548.6667 366.1698,-554.3333 366.1698,-554.3333 366.1698,-565.6667 366.1698,-565.6667 366.1698,-571.3333 360.5031,-577 354.8364,-577 354.8364,-577 323.5031,-577 323.5031,-577 317.8364,-577 312.1698,-571.3333 312.1698,-565.6667 312.1698,-565.6667 312.1698,-554.3333 312.1698,-554.3333 312.1698,-548.6667 317.8364,-543 323.5031,-543"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="351.1698,-578 295.1698,-578 295.1698,-542 351.1698,-542 351.1698,-578"/>
+<text text-anchor="start" x="316.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M307.5031,-543C307.5031,-543 338.8364,-543 338.8364,-543 344.5031,-543 350.1698,-548.6667 350.1698,-554.3333 350.1698,-554.3333 350.1698,-565.6667 350.1698,-565.6667 350.1698,-571.3333 344.5031,-577 338.8364,-577 338.8364,-577 307.5031,-577 307.5031,-577 301.8364,-577 296.1698,-571.3333 296.1698,-565.6667 296.1698,-565.6667 296.1698,-554.3333 296.1698,-554.3333 296.1698,-548.6667 301.8364,-543 307.5031,-543"/>
 </g>
 <!-- _p_boolean_logic_s3&#45;&gt;_p_boolean_logic_s4 -->
 <g id="edge5" class="edge">
 <title>_p_boolean_logic_s3&#45;&gt;_p_boolean_logic_s4</title>
-<path fill="none" stroke="#000000" d="M339.1698,-541.9402C339.1698,-536.3497 339.1698,-530.1701 339.1698,-524.5 339.1698,-524.5 339.1698,-524.5 339.1698,-477.5 339.1698,-475.1079 339.1698,-472.6252 339.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="342.6699,-470.0597 339.1698,-460.0598 335.6699,-470.0598 342.6699,-470.0597"/>
-<text text-anchor="start" x="339.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true and not false] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M323.1698,-541.9402C323.1698,-536.3497 323.1698,-530.1701 323.1698,-524.5 323.1698,-524.5 323.1698,-524.5 323.1698,-477.5 323.1698,-475.1079 323.1698,-472.6252 323.1698,-470.1342"/>
+<polygon fill="#000000" stroke="#000000" points="326.6699,-470.0597 323.1698,-460.0598 319.6699,-470.0598 326.6699,-470.0597"/>
+<text text-anchor="start" x="323.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true and not false] &#160;&#160;</text>
 </g>
 <!-- _p_boolean_logic_s2 -->
 <g id="node10" class="node">
 <title>_p_boolean_logic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="367.1698,-696 311.1698,-696 311.1698,-660 367.1698,-660 367.1698,-696"/>
-<text text-anchor="start" x="332.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M323.5031,-661C323.5031,-661 354.8364,-661 354.8364,-661 360.5031,-661 366.1698,-666.6667 366.1698,-672.3333 366.1698,-672.3333 366.1698,-683.6667 366.1698,-683.6667 366.1698,-689.3333 360.5031,-695 354.8364,-695 354.8364,-695 323.5031,-695 323.5031,-695 317.8364,-695 312.1698,-689.3333 312.1698,-683.6667 312.1698,-683.6667 312.1698,-672.3333 312.1698,-672.3333 312.1698,-666.6667 317.8364,-661 323.5031,-661"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="351.1698,-696 295.1698,-696 295.1698,-660 351.1698,-660 351.1698,-696"/>
+<text text-anchor="start" x="316.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M307.5031,-661C307.5031,-661 338.8364,-661 338.8364,-661 344.5031,-661 350.1698,-666.6667 350.1698,-672.3333 350.1698,-672.3333 350.1698,-683.6667 350.1698,-683.6667 350.1698,-689.3333 344.5031,-695 338.8364,-695 338.8364,-695 307.5031,-695 307.5031,-695 301.8364,-695 296.1698,-689.3333 296.1698,-683.6667 296.1698,-683.6667 296.1698,-672.3333 296.1698,-672.3333 296.1698,-666.6667 301.8364,-661 307.5031,-661"/>
 </g>
 <!-- _p_boolean_logic_s2&#45;&gt;_p_boolean_logic_s3 -->
 <g id="edge6" class="edge">
 <title>_p_boolean_logic_s2&#45;&gt;_p_boolean_logic_s3</title>
-<path fill="none" stroke="#000000" d="M339.1698,-659.9402C339.1698,-654.3497 339.1698,-648.1701 339.1698,-642.5 339.1698,-642.5 339.1698,-642.5 339.1698,-595.5 339.1698,-593.1079 339.1698,-590.6252 339.1698,-588.1342"/>
-<polygon fill="#000000" stroke="#000000" points="342.6699,-588.0597 339.1698,-578.0598 335.6699,-588.0598 342.6699,-588.0597"/>
-<text text-anchor="start" x="339.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[false or true] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M323.1698,-659.9402C323.1698,-654.3497 323.1698,-648.1701 323.1698,-642.5 323.1698,-642.5 323.1698,-642.5 323.1698,-595.5 323.1698,-593.1079 323.1698,-590.6252 323.1698,-588.1342"/>
+<polygon fill="#000000" stroke="#000000" points="326.6699,-588.0597 323.1698,-578.0598 319.6699,-588.0598 326.6699,-588.0597"/>
+<text text-anchor="start" x="323.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[false or true] &#160;&#160;</text>
 </g>
 <!-- _p_boolean_logic_s1&#45;&gt;_p_boolean_logic_s2 -->
 <g id="edge7" class="edge">
 <title>_p_boolean_logic_s1&#45;&gt;_p_boolean_logic_s2</title>
-<path fill="none" stroke="#000000" d="M339.1698,-777.9402C339.1698,-772.3497 339.1698,-766.1701 339.1698,-760.5 339.1698,-760.5 339.1698,-760.5 339.1698,-713.5 339.1698,-711.1079 339.1698,-708.6252 339.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="342.6699,-706.0597 339.1698,-696.0598 335.6699,-706.0598 342.6699,-706.0597"/>
-<text text-anchor="start" x="339.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M323.1698,-777.9402C323.1698,-772.3497 323.1698,-766.1701 323.1698,-760.5 323.1698,-760.5 323.1698,-760.5 323.1698,-713.5 323.1698,-711.1079 323.1698,-708.6252 323.1698,-706.1342"/>
+<polygon fill="#000000" stroke="#000000" points="326.6699,-706.0597 323.1698,-696.0598 319.6699,-706.0598 326.6699,-706.0597"/>
+<text text-anchor="start" x="323.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic -->
 <!-- _p_arithmetic_initial -->
 <g id="node13" class="node">
 <title>_p_arithmetic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="202.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="186.1698" cy="-901.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_arithmetic_s1 -->
 <g id="node20" class="node">
 <title>_p_arithmetic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="230.1698,-814 174.1698,-814 174.1698,-778 230.1698,-778 230.1698,-814"/>
-<text text-anchor="start" x="195.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M186.5031,-779C186.5031,-779 217.8364,-779 217.8364,-779 223.5031,-779 229.1698,-784.6667 229.1698,-790.3333 229.1698,-790.3333 229.1698,-801.6667 229.1698,-801.6667 229.1698,-807.3333 223.5031,-813 217.8364,-813 217.8364,-813 186.5031,-813 186.5031,-813 180.8364,-813 175.1698,-807.3333 175.1698,-801.6667 175.1698,-801.6667 175.1698,-790.3333 175.1698,-790.3333 175.1698,-784.6667 180.8364,-779 186.5031,-779"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="214.1698,-814 158.1698,-814 158.1698,-778 214.1698,-778 214.1698,-814"/>
+<text text-anchor="start" x="179.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M170.5031,-779C170.5031,-779 201.8364,-779 201.8364,-779 207.5031,-779 213.1698,-784.6667 213.1698,-790.3333 213.1698,-790.3333 213.1698,-801.6667 213.1698,-801.6667 213.1698,-807.3333 207.5031,-813 201.8364,-813 201.8364,-813 170.5031,-813 170.5031,-813 164.8364,-813 159.1698,-807.3333 159.1698,-801.6667 159.1698,-801.6667 159.1698,-790.3333 159.1698,-790.3333 159.1698,-784.6667 164.8364,-779 170.5031,-779"/>
 </g>
 <!-- _p_arithmetic_initial&#45;&gt;_p_arithmetic_s1 -->
 <g id="edge8" class="edge">
 <title>_p_arithmetic_initial&#45;&gt;_p_arithmetic_s1</title>
-<path fill="none" stroke="#000000" d="M202.1698,-895.8288C202.1698,-891.1736 202.1698,-884.4097 202.1698,-878.5 202.1698,-878.5 202.1698,-878.5 202.1698,-831.5 202.1698,-829.1079 202.1698,-826.6252 202.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="205.6699,-824.0597 202.1698,-814.0598 198.6699,-824.0598 205.6699,-824.0597"/>
-<text text-anchor="middle" x="203.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M186.1698,-895.8288C186.1698,-891.1736 186.1698,-884.4097 186.1698,-878.5 186.1698,-878.5 186.1698,-878.5 186.1698,-831.5 186.1698,-829.1079 186.1698,-826.6252 186.1698,-824.1342"/>
+<polygon fill="#000000" stroke="#000000" points="189.6699,-824.0597 186.1698,-814.0598 182.6699,-824.0598 189.6699,-824.0597"/>
+<text text-anchor="middle" x="187.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_arithmetic_ok -->
 <g id="node14" class="node">
 <title>_p_arithmetic_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="270.1698,-70 174.1698,-70 174.1698,-24 270.1698,-24 270.1698,-70"/>
-<text text-anchor="start" x="215.8344" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="179.6742" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.ok</text>
-<polygon fill="#000000" stroke="#000000" points="174.1698,-47 174.1698,-47 270.1698,-47 270.1698,-47 174.1698,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M187.1698,-25C187.1698,-25 257.1698,-25 257.1698,-25 263.1698,-25 269.1698,-31 269.1698,-37 269.1698,-37 269.1698,-57 269.1698,-57 269.1698,-63 263.1698,-69 257.1698,-69 257.1698,-69 187.1698,-69 187.1698,-69 181.1698,-69 175.1698,-63 175.1698,-57 175.1698,-57 175.1698,-37 175.1698,-37 175.1698,-31 181.1698,-25 187.1698,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="238.1698,-70 158.1698,-70 158.1698,-24 238.1698,-24 238.1698,-70"/>
+<text text-anchor="start" x="191.8344" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
+<text text-anchor="start" x="164.0124" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.ok</text>
+<polygon fill="#000000" stroke="#000000" points="158.1698,-47 158.1698,-47 238.1698,-47 238.1698,-47 158.1698,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M171.1698,-25C171.1698,-25 225.1698,-25 225.1698,-25 231.1698,-25 237.1698,-31 237.1698,-37 237.1698,-37 237.1698,-57 237.1698,-57 237.1698,-63 231.1698,-69 225.1698,-69 225.1698,-69 171.1698,-69 171.1698,-69 165.1698,-69 159.1698,-63 159.1698,-57 159.1698,-57 159.1698,-37 159.1698,-37 159.1698,-31 165.1698,-25 171.1698,-25"/>
 </g>
 <!-- _p_arithmetic_s6 -->
 <g id="node15" class="node">
 <title>_p_arithmetic_s6</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="240.1698,-201 184.1698,-201 184.1698,-165 240.1698,-165 240.1698,-201"/>
-<text text-anchor="start" x="205.8344" y="-179.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M196.5031,-166C196.5031,-166 227.8364,-166 227.8364,-166 233.5031,-166 239.1698,-171.6667 239.1698,-177.3333 239.1698,-177.3333 239.1698,-188.6667 239.1698,-188.6667 239.1698,-194.3333 233.5031,-200 227.8364,-200 227.8364,-200 196.5031,-200 196.5031,-200 190.8364,-200 185.1698,-194.3333 185.1698,-188.6667 185.1698,-188.6667 185.1698,-177.3333 185.1698,-177.3333 185.1698,-171.6667 190.8364,-166 196.5031,-166"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="220.1698,-201 164.1698,-201 164.1698,-165 220.1698,-165 220.1698,-201"/>
+<text text-anchor="start" x="185.8344" y="-179.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s6</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M176.5031,-166C176.5031,-166 207.8364,-166 207.8364,-166 213.5031,-166 219.1698,-171.6667 219.1698,-177.3333 219.1698,-177.3333 219.1698,-188.6667 219.1698,-188.6667 219.1698,-194.3333 213.5031,-200 207.8364,-200 207.8364,-200 176.5031,-200 176.5031,-200 170.8364,-200 165.1698,-194.3333 165.1698,-188.6667 165.1698,-188.6667 165.1698,-177.3333 165.1698,-177.3333 165.1698,-171.6667 170.8364,-166 176.5031,-166"/>
 </g>
 <!-- _p_arithmetic_s6&#45;&gt;_p_arithmetic_ok -->
 <g id="edge9" class="edge">
 <title>_p_arithmetic_s6&#45;&gt;_p_arithmetic_ok</title>
-<path fill="none" stroke="#000000" d="M214.9621,-164.6215C216.1075,-155.5732 217.1698,-144.4884 217.1698,-134.5 217.1698,-134.5 217.1698,-134.5 217.1698,-87.5 217.1698,-85.1089 217.2567,-82.6444 217.4076,-80.1674"/>
-<polygon fill="#000000" stroke="#000000" points="220.9056,-80.3469 218.3294,-70.0701 213.9346,-79.7104 220.9056,-80.3469"/>
-<text text-anchor="start" x="217.1698" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M193.8452,-164.5922C194.5324,-155.5369 195.1698,-144.4548 195.1698,-134.5 195.1698,-134.5 195.1698,-134.5 195.1698,-87.5 195.1698,-85.1205 195.2219,-82.6644 195.3124,-80.1934"/>
+<polygon fill="#000000" stroke="#000000" points="198.8126,-80.2855 195.8656,-70.1088 191.8231,-79.902 198.8126,-80.2855"/>
+<text text-anchor="start" x="195.1698" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic_s5 -->
 <g id="node16" class="node">
 <title>_p_arithmetic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="230.1698,-337 174.1698,-337 174.1698,-301 230.1698,-301 230.1698,-337"/>
-<text text-anchor="start" x="195.8344" y="-315.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M186.5031,-302C186.5031,-302 217.8364,-302 217.8364,-302 223.5031,-302 229.1698,-307.6667 229.1698,-313.3333 229.1698,-313.3333 229.1698,-324.6667 229.1698,-324.6667 229.1698,-330.3333 223.5031,-336 217.8364,-336 217.8364,-336 186.5031,-336 186.5031,-336 180.8364,-336 175.1698,-330.3333 175.1698,-324.6667 175.1698,-324.6667 175.1698,-313.3333 175.1698,-313.3333 175.1698,-307.6667 180.8364,-302 186.5031,-302"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="214.1698,-337 158.1698,-337 158.1698,-301 214.1698,-301 214.1698,-337"/>
+<text text-anchor="start" x="179.8344" y="-315.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s5</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M170.5031,-302C170.5031,-302 201.8364,-302 201.8364,-302 207.5031,-302 213.1698,-307.6667 213.1698,-313.3333 213.1698,-313.3333 213.1698,-324.6667 213.1698,-324.6667 213.1698,-330.3333 207.5031,-336 201.8364,-336 201.8364,-336 170.5031,-336 170.5031,-336 164.8364,-336 159.1698,-330.3333 159.1698,-324.6667 159.1698,-324.6667 159.1698,-313.3333 159.1698,-313.3333 159.1698,-307.6667 164.8364,-302 170.5031,-302"/>
 </g>
 <!-- _p_arithmetic_s5&#45;&gt;_p_arithmetic_s6 -->
 <g id="edge10" class="edge">
 <title>_p_arithmetic_s5&#45;&gt;_p_arithmetic_s6</title>
-<path fill="none" stroke="#000000" d="M198.8189,-300.6417C197.4446,-291.5981 196.1698,-280.5115 196.1698,-270.5 196.1698,-270.5 196.1698,-270.5 196.1698,-223.5 196.1698,-219.3656 196.8999,-215.1494 198.0483,-211.075"/>
-<polygon fill="#000000" stroke="#000000" points="201.4507,-211.9605 201.5866,-201.3665 194.8739,-209.5635 201.4507,-211.9605"/>
-<text text-anchor="start" x="196.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M182.8189,-300.6417C181.4446,-291.5981 180.1698,-280.5115 180.1698,-270.5 180.1698,-270.5 180.1698,-270.5 180.1698,-223.5 180.1698,-219.4093 180.7395,-215.1785 181.6307,-211.0627"/>
+<polygon fill="#000000" stroke="#000000" points="185.0621,-211.7865 184.3668,-201.2145 178.3176,-209.9126 185.0621,-211.7865"/>
+<text text-anchor="start" x="180.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic_s4 -->
 <g id="node17" class="node">
 <title>_p_arithmetic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="230.1698,-460 174.1698,-460 174.1698,-424 230.1698,-424 230.1698,-460"/>
-<text text-anchor="start" x="195.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M186.5031,-425C186.5031,-425 217.8364,-425 217.8364,-425 223.5031,-425 229.1698,-430.6667 229.1698,-436.3333 229.1698,-436.3333 229.1698,-447.6667 229.1698,-447.6667 229.1698,-453.3333 223.5031,-459 217.8364,-459 217.8364,-459 186.5031,-459 186.5031,-459 180.8364,-459 175.1698,-453.3333 175.1698,-447.6667 175.1698,-447.6667 175.1698,-436.3333 175.1698,-436.3333 175.1698,-430.6667 180.8364,-425 186.5031,-425"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="214.1698,-460 158.1698,-460 158.1698,-424 214.1698,-424 214.1698,-460"/>
+<text text-anchor="start" x="179.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M170.5031,-425C170.5031,-425 201.8364,-425 201.8364,-425 207.5031,-425 213.1698,-430.6667 213.1698,-436.3333 213.1698,-436.3333 213.1698,-447.6667 213.1698,-447.6667 213.1698,-453.3333 207.5031,-459 201.8364,-459 201.8364,-459 170.5031,-459 170.5031,-459 164.8364,-459 159.1698,-453.3333 159.1698,-447.6667 159.1698,-447.6667 159.1698,-436.3333 159.1698,-436.3333 159.1698,-430.6667 164.8364,-425 170.5031,-425"/>
 </g>
 <!-- _p_arithmetic_s4&#45;&gt;_p_arithmetic_s5 -->
 <g id="edge11" class="edge">
 <title>_p_arithmetic_s4&#45;&gt;_p_arithmetic_s5</title>
-<path fill="none" stroke="#000000" d="M202.1698,-423.9402C202.1698,-418.3497 202.1698,-412.1701 202.1698,-406.5 202.1698,-406.5 202.1698,-406.5 202.1698,-359.5 202.1698,-355.6152 202.1698,-351.5209 202.1698,-347.4883"/>
-<polygon fill="#000000" stroke="#000000" points="205.6699,-347.1447 202.1698,-337.1447 198.6699,-347.1448 205.6699,-347.1447"/>
-<text text-anchor="start" x="202.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[21 // 3 == 7] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M186.1698,-423.9402C186.1698,-418.3497 186.1698,-412.1701 186.1698,-406.5 186.1698,-406.5 186.1698,-406.5 186.1698,-359.5 186.1698,-355.6152 186.1698,-351.5209 186.1698,-347.4883"/>
+<polygon fill="#000000" stroke="#000000" points="189.6699,-347.1447 186.1698,-337.1447 182.6699,-347.1448 189.6699,-347.1447"/>
+<text text-anchor="start" x="186.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[21 // 3 == 7] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic_s3 -->
 <g id="node18" class="node">
 <title>_p_arithmetic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="230.1698,-578 174.1698,-578 174.1698,-542 230.1698,-542 230.1698,-578"/>
-<text text-anchor="start" x="195.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M186.5031,-543C186.5031,-543 217.8364,-543 217.8364,-543 223.5031,-543 229.1698,-548.6667 229.1698,-554.3333 229.1698,-554.3333 229.1698,-565.6667 229.1698,-565.6667 229.1698,-571.3333 223.5031,-577 217.8364,-577 217.8364,-577 186.5031,-577 186.5031,-577 180.8364,-577 175.1698,-571.3333 175.1698,-565.6667 175.1698,-565.6667 175.1698,-554.3333 175.1698,-554.3333 175.1698,-548.6667 180.8364,-543 186.5031,-543"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="214.1698,-578 158.1698,-578 158.1698,-542 214.1698,-542 214.1698,-578"/>
+<text text-anchor="start" x="179.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M170.5031,-543C170.5031,-543 201.8364,-543 201.8364,-543 207.5031,-543 213.1698,-548.6667 213.1698,-554.3333 213.1698,-554.3333 213.1698,-565.6667 213.1698,-565.6667 213.1698,-571.3333 207.5031,-577 201.8364,-577 201.8364,-577 170.5031,-577 170.5031,-577 164.8364,-577 159.1698,-571.3333 159.1698,-565.6667 159.1698,-565.6667 159.1698,-554.3333 159.1698,-554.3333 159.1698,-548.6667 164.8364,-543 170.5031,-543"/>
 </g>
 <!-- _p_arithmetic_s3&#45;&gt;_p_arithmetic_s4 -->
 <g id="edge12" class="edge">
 <title>_p_arithmetic_s3&#45;&gt;_p_arithmetic_s4</title>
-<path fill="none" stroke="#000000" d="M202.1698,-541.9402C202.1698,-536.3497 202.1698,-530.1701 202.1698,-524.5 202.1698,-524.5 202.1698,-524.5 202.1698,-477.5 202.1698,-475.1079 202.1698,-472.6252 202.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="205.6699,-470.0597 202.1698,-460.0598 198.6699,-470.0598 205.6699,-470.0597"/>
-<text text-anchor="start" x="202.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M186.1698,-541.9402C186.1698,-536.3497 186.1698,-530.1701 186.1698,-524.5 186.1698,-524.5 186.1698,-524.5 186.1698,-477.5 186.1698,-475.1079 186.1698,-472.6252 186.1698,-470.1342"/>
+<polygon fill="#000000" stroke="#000000" points="189.6699,-470.0597 186.1698,-460.0598 182.6699,-470.0598 189.6699,-470.0597"/>
+<text text-anchor="start" x="186.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic_s2 -->
 <g id="node19" class="node">
 <title>_p_arithmetic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="230.1698,-696 174.1698,-696 174.1698,-660 230.1698,-660 230.1698,-696"/>
-<text text-anchor="start" x="195.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M186.5031,-661C186.5031,-661 217.8364,-661 217.8364,-661 223.5031,-661 229.1698,-666.6667 229.1698,-672.3333 229.1698,-672.3333 229.1698,-683.6667 229.1698,-683.6667 229.1698,-689.3333 223.5031,-695 217.8364,-695 217.8364,-695 186.5031,-695 186.5031,-695 180.8364,-695 175.1698,-689.3333 175.1698,-683.6667 175.1698,-683.6667 175.1698,-672.3333 175.1698,-672.3333 175.1698,-666.6667 180.8364,-661 186.5031,-661"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="214.1698,-696 158.1698,-696 158.1698,-660 214.1698,-660 214.1698,-696"/>
+<text text-anchor="start" x="179.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M170.5031,-661C170.5031,-661 201.8364,-661 201.8364,-661 207.5031,-661 213.1698,-666.6667 213.1698,-672.3333 213.1698,-672.3333 213.1698,-683.6667 213.1698,-683.6667 213.1698,-689.3333 207.5031,-695 201.8364,-695 201.8364,-695 170.5031,-695 170.5031,-695 164.8364,-695 159.1698,-689.3333 159.1698,-683.6667 159.1698,-683.6667 159.1698,-672.3333 159.1698,-672.3333 159.1698,-666.6667 164.8364,-661 170.5031,-661"/>
 </g>
 <!-- _p_arithmetic_s2&#45;&gt;_p_arithmetic_s3 -->
 <g id="edge13" class="edge">
 <title>_p_arithmetic_s2&#45;&gt;_p_arithmetic_s3</title>
-<path fill="none" stroke="#000000" d="M198.5892,-659.6439C197.7878,-654.1523 197.1698,-648.1016 197.1698,-642.5 197.1698,-642.5 197.1698,-642.5 197.1698,-595.5 197.1698,-593.2243 197.2718,-590.8746 197.4466,-588.5183"/>
-<polygon fill="#000000" stroke="#000000" points="200.9499,-588.6846 198.5892,-578.3561 193.9937,-587.9024 200.9499,-588.6846"/>
-<text text-anchor="start" x="197.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M182.5892,-659.6439C181.7878,-654.1523 181.1698,-648.1016 181.1698,-642.5 181.1698,-642.5 181.1698,-642.5 181.1698,-595.5 181.1698,-593.2243 181.2718,-590.8746 181.4466,-588.5183"/>
+<polygon fill="#000000" stroke="#000000" points="184.9499,-588.6846 182.5892,-578.3561 177.9937,-587.9024 184.9499,-588.6846"/>
+<text text-anchor="start" x="181.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
 </g>
 <!-- _p_arithmetic_s1&#45;&gt;_p_arithmetic_s2 -->
 <g id="edge14" class="edge">
 <title>_p_arithmetic_s1&#45;&gt;_p_arithmetic_s2</title>
-<path fill="none" stroke="#000000" d="M202.1698,-777.9402C202.1698,-772.3497 202.1698,-766.1701 202.1698,-760.5 202.1698,-760.5 202.1698,-760.5 202.1698,-713.5 202.1698,-711.1079 202.1698,-708.6252 202.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="205.6699,-706.0597 202.1698,-696.0598 198.6699,-706.0598 205.6699,-706.0597"/>
-<text text-anchor="start" x="202.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M186.1698,-777.9402C186.1698,-772.3497 186.1698,-766.1701 186.1698,-760.5 186.1698,-760.5 186.1698,-760.5 186.1698,-713.5 186.1698,-711.1079 186.1698,-708.6252 186.1698,-706.1342"/>
+<polygon fill="#000000" stroke="#000000" points="189.6699,-706.0597 186.1698,-696.0598 182.6699,-706.0598 189.6699,-706.0597"/>
+<text text-anchor="start" x="186.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
 </g>
 <!-- _p_comparisons -->
 <!-- _p_comparisons_initial -->
 <g id="node22" class="node">
 <title>_p_comparisons_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="102.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="92.1698" cy="-901.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_comparisons_s1 -->
 <g id="node27" class="node">
 <title>_p_comparisons_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="130.1698,-814 74.1698,-814 74.1698,-778 130.1698,-778 130.1698,-814"/>
-<text text-anchor="start" x="95.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M86.5031,-779C86.5031,-779 117.8364,-779 117.8364,-779 123.5031,-779 129.1698,-784.6667 129.1698,-790.3333 129.1698,-790.3333 129.1698,-801.6667 129.1698,-801.6667 129.1698,-807.3333 123.5031,-813 117.8364,-813 117.8364,-813 86.5031,-813 86.5031,-813 80.8364,-813 75.1698,-807.3333 75.1698,-801.6667 75.1698,-801.6667 75.1698,-790.3333 75.1698,-790.3333 75.1698,-784.6667 80.8364,-779 86.5031,-779"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="120.1698,-814 64.1698,-814 64.1698,-778 120.1698,-778 120.1698,-814"/>
+<text text-anchor="start" x="85.8344" y="-792.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M76.5031,-779C76.5031,-779 107.8364,-779 107.8364,-779 113.5031,-779 119.1698,-784.6667 119.1698,-790.3333 119.1698,-790.3333 119.1698,-801.6667 119.1698,-801.6667 119.1698,-807.3333 113.5031,-813 107.8364,-813 107.8364,-813 76.5031,-813 76.5031,-813 70.8364,-813 65.1698,-807.3333 65.1698,-801.6667 65.1698,-801.6667 65.1698,-790.3333 65.1698,-790.3333 65.1698,-784.6667 70.8364,-779 76.5031,-779"/>
 </g>
 <!-- _p_comparisons_initial&#45;&gt;_p_comparisons_s1 -->
 <g id="edge15" class="edge">
 <title>_p_comparisons_initial&#45;&gt;_p_comparisons_s1</title>
-<path fill="none" stroke="#000000" d="M102.1698,-895.8288C102.1698,-891.1736 102.1698,-884.4097 102.1698,-878.5 102.1698,-878.5 102.1698,-878.5 102.1698,-831.5 102.1698,-829.1079 102.1698,-826.6252 102.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="105.6699,-824.0597 102.1698,-814.0598 98.6699,-824.0598 105.6699,-824.0597"/>
-<text text-anchor="middle" x="103.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M92.1698,-895.8288C92.1698,-891.1736 92.1698,-884.4097 92.1698,-878.5 92.1698,-878.5 92.1698,-878.5 92.1698,-831.5 92.1698,-829.1079 92.1698,-826.6252 92.1698,-824.1342"/>
+<polygon fill="#000000" stroke="#000000" points="95.6699,-824.0597 92.1698,-814.0598 88.6699,-824.0598 95.6699,-824.0597"/>
+<text text-anchor="middle" x="93.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_comparisons_ok -->
 <g id="node23" class="node">
 <title>_p_comparisons_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="150.1698,-342 54.1698,-342 54.1698,-296 150.1698,-296 150.1698,-342"/>
-<text text-anchor="start" x="95.8344" y="-325.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="59.6742" y="-305.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.ok</text>
-<polygon fill="#000000" stroke="#000000" points="54.1698,-319 54.1698,-319 150.1698,-319 150.1698,-319 54.1698,-319"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M67.1698,-297C67.1698,-297 137.1698,-297 137.1698,-297 143.1698,-297 149.1698,-303 149.1698,-309 149.1698,-309 149.1698,-329 149.1698,-329 149.1698,-335 143.1698,-341 137.1698,-341 137.1698,-341 67.1698,-341 67.1698,-341 61.1698,-341 55.1698,-335 55.1698,-329 55.1698,-329 55.1698,-309 55.1698,-309 55.1698,-303 61.1698,-297 67.1698,-297"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="134.1698,-342 54.1698,-342 54.1698,-296 134.1698,-296 134.1698,-342"/>
+<text text-anchor="start" x="87.8344" y="-325.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
+<text text-anchor="start" x="60.0124" y="-305.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.ok</text>
+<polygon fill="#000000" stroke="#000000" points="54.1698,-319 54.1698,-319 134.1698,-319 134.1698,-319 54.1698,-319"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M67.1698,-297C67.1698,-297 121.1698,-297 121.1698,-297 127.1698,-297 133.1698,-303 133.1698,-309 133.1698,-309 133.1698,-329 133.1698,-329 133.1698,-335 127.1698,-341 121.1698,-341 121.1698,-341 67.1698,-341 67.1698,-341 61.1698,-341 55.1698,-335 55.1698,-329 55.1698,-329 55.1698,-309 55.1698,-309 55.1698,-303 61.1698,-297 67.1698,-297"/>
 </g>
 <!-- _p_comparisons_s4 -->
 <g id="node24" class="node">
 <title>_p_comparisons_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="130.1698,-460 74.1698,-460 74.1698,-424 130.1698,-424 130.1698,-460"/>
-<text text-anchor="start" x="95.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M86.5031,-425C86.5031,-425 117.8364,-425 117.8364,-425 123.5031,-425 129.1698,-430.6667 129.1698,-436.3333 129.1698,-436.3333 129.1698,-447.6667 129.1698,-447.6667 129.1698,-453.3333 123.5031,-459 117.8364,-459 117.8364,-459 86.5031,-459 86.5031,-459 80.8364,-459 75.1698,-453.3333 75.1698,-447.6667 75.1698,-447.6667 75.1698,-436.3333 75.1698,-436.3333 75.1698,-430.6667 80.8364,-425 86.5031,-425"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.1698,-460 65.1698,-460 65.1698,-424 121.1698,-424 121.1698,-460"/>
+<text text-anchor="start" x="86.8344" y="-438.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s4</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M77.5031,-425C77.5031,-425 108.8364,-425 108.8364,-425 114.5031,-425 120.1698,-430.6667 120.1698,-436.3333 120.1698,-436.3333 120.1698,-447.6667 120.1698,-447.6667 120.1698,-453.3333 114.5031,-459 108.8364,-459 108.8364,-459 77.5031,-459 77.5031,-459 71.8364,-459 66.1698,-453.3333 66.1698,-447.6667 66.1698,-447.6667 66.1698,-436.3333 66.1698,-436.3333 66.1698,-430.6667 71.8364,-425 77.5031,-425"/>
 </g>
 <!-- _p_comparisons_s4&#45;&gt;_p_comparisons_ok -->
 <g id="edge16" class="edge">
 <title>_p_comparisons_s4&#45;&gt;_p_comparisons_ok</title>
-<path fill="none" stroke="#000000" d="M102.1698,-423.9402C102.1698,-418.3497 102.1698,-412.1701 102.1698,-406.5 102.1698,-406.5 102.1698,-406.5 102.1698,-359.5 102.1698,-357.127 102.1698,-354.6757 102.1698,-352.2081"/>
-<polygon fill="#000000" stroke="#000000" points="105.6699,-352.1306 102.1698,-342.1306 98.6699,-352.1306 105.6699,-352.1306"/>
-<text text-anchor="start" x="102.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M93.1698,-423.9402C93.1698,-418.3497 93.1698,-412.1701 93.1698,-406.5 93.1698,-406.5 93.1698,-406.5 93.1698,-359.5 93.1698,-357.1262 93.1872,-354.6744 93.2173,-352.2065"/>
+<polygon fill="#000000" stroke="#000000" points="96.7181,-352.1906 93.4017,-342.1282 89.7193,-352.0625 96.7181,-352.1906"/>
+<text text-anchor="start" x="93.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
 </g>
 <!-- _p_comparisons_s3 -->
 <g id="node25" class="node">
 <title>_p_comparisons_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="130.1698,-578 74.1698,-578 74.1698,-542 130.1698,-542 130.1698,-578"/>
-<text text-anchor="start" x="95.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M86.5031,-543C86.5031,-543 117.8364,-543 117.8364,-543 123.5031,-543 129.1698,-548.6667 129.1698,-554.3333 129.1698,-554.3333 129.1698,-565.6667 129.1698,-565.6667 129.1698,-571.3333 123.5031,-577 117.8364,-577 117.8364,-577 86.5031,-577 86.5031,-577 80.8364,-577 75.1698,-571.3333 75.1698,-565.6667 75.1698,-565.6667 75.1698,-554.3333 75.1698,-554.3333 75.1698,-548.6667 80.8364,-543 86.5031,-543"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.1698,-578 65.1698,-578 65.1698,-542 121.1698,-542 121.1698,-578"/>
+<text text-anchor="start" x="86.8344" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M77.5031,-543C77.5031,-543 108.8364,-543 108.8364,-543 114.5031,-543 120.1698,-548.6667 120.1698,-554.3333 120.1698,-554.3333 120.1698,-565.6667 120.1698,-565.6667 120.1698,-571.3333 114.5031,-577 108.8364,-577 108.8364,-577 77.5031,-577 77.5031,-577 71.8364,-577 66.1698,-571.3333 66.1698,-565.6667 66.1698,-565.6667 66.1698,-554.3333 66.1698,-554.3333 66.1698,-548.6667 71.8364,-543 77.5031,-543"/>
 </g>
 <!-- _p_comparisons_s3&#45;&gt;_p_comparisons_s4 -->
 <g id="edge17" class="edge">
 <title>_p_comparisons_s3&#45;&gt;_p_comparisons_s4</title>
-<path fill="none" stroke="#000000" d="M102.1698,-541.9402C102.1698,-536.3497 102.1698,-530.1701 102.1698,-524.5 102.1698,-524.5 102.1698,-524.5 102.1698,-477.5 102.1698,-475.1079 102.1698,-472.6252 102.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="105.6699,-470.0597 102.1698,-460.0598 98.6699,-470.0598 105.6699,-470.0597"/>
-<text text-anchor="start" x="102.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M93.1698,-541.9402C93.1698,-536.3497 93.1698,-530.1701 93.1698,-524.5 93.1698,-524.5 93.1698,-524.5 93.1698,-477.5 93.1698,-475.1079 93.1698,-472.6252 93.1698,-470.1342"/>
+<polygon fill="#000000" stroke="#000000" points="96.6699,-470.0597 93.1698,-460.0598 89.6699,-470.0598 96.6699,-470.0597"/>
+<text text-anchor="start" x="93.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
 </g>
 <!-- _p_comparisons_s2 -->
 <g id="node26" class="node">
 <title>_p_comparisons_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="130.1698,-696 74.1698,-696 74.1698,-660 130.1698,-660 130.1698,-696"/>
-<text text-anchor="start" x="95.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M86.5031,-661C86.5031,-661 117.8364,-661 117.8364,-661 123.5031,-661 129.1698,-666.6667 129.1698,-672.3333 129.1698,-672.3333 129.1698,-683.6667 129.1698,-683.6667 129.1698,-689.3333 123.5031,-695 117.8364,-695 117.8364,-695 86.5031,-695 86.5031,-695 80.8364,-695 75.1698,-689.3333 75.1698,-683.6667 75.1698,-683.6667 75.1698,-672.3333 75.1698,-672.3333 75.1698,-666.6667 80.8364,-661 86.5031,-661"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.1698,-696 65.1698,-696 65.1698,-660 121.1698,-660 121.1698,-696"/>
+<text text-anchor="start" x="86.8344" y="-674.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M77.5031,-661C77.5031,-661 108.8364,-661 108.8364,-661 114.5031,-661 120.1698,-666.6667 120.1698,-672.3333 120.1698,-672.3333 120.1698,-683.6667 120.1698,-683.6667 120.1698,-689.3333 114.5031,-695 108.8364,-695 108.8364,-695 77.5031,-695 77.5031,-695 71.8364,-695 66.1698,-689.3333 66.1698,-683.6667 66.1698,-683.6667 66.1698,-672.3333 66.1698,-672.3333 66.1698,-666.6667 71.8364,-661 77.5031,-661"/>
 </g>
 <!-- _p_comparisons_s2&#45;&gt;_p_comparisons_s3 -->
 <g id="edge18" class="edge">
 <title>_p_comparisons_s2&#45;&gt;_p_comparisons_s3</title>
-<path fill="none" stroke="#000000" d="M102.1698,-659.9402C102.1698,-654.3497 102.1698,-648.1701 102.1698,-642.5 102.1698,-642.5 102.1698,-642.5 102.1698,-595.5 102.1698,-593.1079 102.1698,-590.6252 102.1698,-588.1342"/>
-<polygon fill="#000000" stroke="#000000" points="105.6699,-588.0597 102.1698,-578.0598 98.6699,-588.0598 105.6699,-588.0597"/>
-<text text-anchor="start" x="102.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M93.1698,-659.9402C93.1698,-654.3497 93.1698,-648.1701 93.1698,-642.5 93.1698,-642.5 93.1698,-642.5 93.1698,-595.5 93.1698,-593.1079 93.1698,-590.6252 93.1698,-588.1342"/>
+<polygon fill="#000000" stroke="#000000" points="96.6699,-588.0597 93.1698,-578.0598 89.6699,-588.0598 96.6699,-588.0597"/>
+<text text-anchor="start" x="93.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
 </g>
 <!-- _p_comparisons_s1&#45;&gt;_p_comparisons_s2 -->
 <g id="edge19" class="edge">
 <title>_p_comparisons_s1&#45;&gt;_p_comparisons_s2</title>
-<path fill="none" stroke="#000000" d="M102.1698,-777.9402C102.1698,-772.3497 102.1698,-766.1701 102.1698,-760.5 102.1698,-760.5 102.1698,-760.5 102.1698,-713.5 102.1698,-711.1079 102.1698,-708.6252 102.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="105.6699,-706.0597 102.1698,-696.0598 98.6699,-706.0598 105.6699,-706.0597"/>
-<text text-anchor="start" x="102.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M92.1698,-777.9402C92.1698,-772.3497 92.1698,-766.1701 92.1698,-760.5 92.1698,-760.5 92.1698,-760.5 92.1698,-713.5 92.1698,-711.107 92.1928,-708.6235 92.2318,-706.1322"/>
+<polygon fill="#000000" stroke="#000000" points="95.7325,-706.1351 92.4644,-696.057 88.7344,-705.9735 95.7325,-706.1351"/>
+<text text-anchor="start" x="92.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 28 - 28
test/test_files/features/functions/test_closure.svg

@@ -4,63 +4,63 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="150pt" height="241pt"
- viewBox="0.00 0.00 150.00 241.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="133pt" height="241pt"
+ viewBox="0.00 0.00 133.00 241.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 237)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-237 146,-237 146,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-237 129,-237 129,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="71" cy="-227.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="62.5" cy="-227.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _s1 -->
 <g id="node4" class="node">
 <title>_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="142,-194 0,-194 0,-148 142,-148 142,-194"/>
-<text text-anchor="start" x="64.6646" y="-177.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
-<text text-anchor="start" x="5.8232" y="-157.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ /x = increment()</text>
-<polygon fill="#000000" stroke="#000000" points="0,-171 0,-171 142,-171 142,-171 0,-171"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-149C13,-149 129,-149 129,-149 135,-149 141,-155 141,-161 141,-161 141,-181 141,-181 141,-187 135,-193 129,-193 129,-193 13,-193 13,-193 7,-193 1,-187 1,-181 1,-181 1,-161 1,-161 1,-155 7,-149 13,-149"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="125,-194 0,-194 0,-148 125,-148 125,-194"/>
+<text text-anchor="start" x="56.6646" y="-177.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s1</text>
+<text text-anchor="start" x="6.1614" y="-157.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry/ x = increment()</text>
+<polygon fill="#000000" stroke="#000000" points=".5,-171 .5,-171 125.5,-171 125.5,-171 .5,-171"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-149C13,-149 112,-149 112,-149 118,-149 124,-155 124,-161 124,-161 124,-181 124,-181 124,-187 118,-193 112,-193 112,-193 13,-193 13,-193 7,-193 1,-187 1,-181 1,-181 1,-161 1,-161 1,-155 7,-149 13,-149"/>
 </g>
 <!-- __initial&#45;&gt;_s1 -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_s1</title>
-<path fill="none" stroke="#000000" d="M71,-221.876C71,-217.5252 71,-211.1081 71,-204.286"/>
-<polygon fill="#000000" stroke="#000000" points="74.5001,-204.1947 71,-194.1947 67.5001,-204.1947 74.5001,-204.1947"/>
-<text text-anchor="middle" x="72.3895" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M62.5,-221.876C62.5,-217.5252 62.5,-211.1081 62.5,-204.286"/>
+<polygon fill="#000000" stroke="#000000" points="66.0001,-204.1947 62.5,-194.1947 59.0001,-204.1947 66.0001,-204.1947"/>
+<text text-anchor="middle" x="63.8895" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _s3 -->
 <g id="node2" class="node">
 <title>_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-46 15.5,-46 15.5,0 126.5,0 126.5,-46"/>
-<text text-anchor="start" x="65.1646" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
-<text text-anchor="start" x="21.9982" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.done</text>
-<polygon fill="#000000" stroke="#000000" points="16,-23 16,-23 127,-23 127,-23 16,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M28.5,-1C28.5,-1 113.5,-1 113.5,-1 119.5,-1 125.5,-7 125.5,-13 125.5,-13 125.5,-33 125.5,-33 125.5,-39 119.5,-45 113.5,-45 113.5,-45 28.5,-45 28.5,-45 22.5,-45 16.5,-39 16.5,-33 16.5,-33 16.5,-13 16.5,-13 16.5,-7 22.5,-1 28.5,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="109.5,-46 15.5,-46 15.5,0 109.5,0 109.5,-46"/>
+<text text-anchor="start" x="56.1646" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s3</text>
+<text text-anchor="start" x="21.3364" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.done</text>
+<polygon fill="#000000" stroke="#000000" points="15.5,-23 15.5,-23 109.5,-23 109.5,-23 15.5,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M28.5,-1C28.5,-1 96.5,-1 96.5,-1 102.5,-1 108.5,-7 108.5,-13 108.5,-13 108.5,-33 108.5,-33 108.5,-39 102.5,-45 96.5,-45 96.5,-45 28.5,-45 28.5,-45 22.5,-45 16.5,-39 16.5,-33 16.5,-33 16.5,-13 16.5,-13 16.5,-7 22.5,-1 28.5,-1"/>
 </g>
 <!-- _s2 -->
 <g id="node3" class="node">
 <title>_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="142,-120 0,-120 0,-74 142,-74 142,-120"/>
-<text text-anchor="start" x="64.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
-<text text-anchor="start" x="5.8232" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ /x = increment()</text>
-<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 142,-97 142,-97 0,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 129,-75 129,-75 135,-75 141,-81 141,-87 141,-87 141,-107 141,-107 141,-113 135,-119 129,-119 129,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="125,-120 0,-120 0,-74 125,-74 125,-120"/>
+<text text-anchor="start" x="56.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">s2</text>
+<text text-anchor="start" x="6.1614" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry/ x = increment()</text>
+<polygon fill="#000000" stroke="#000000" points=".5,-97 .5,-97 125.5,-97 125.5,-97 .5,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 112,-75 112,-75 118,-75 124,-81 124,-87 124,-87 124,-107 124,-107 124,-113 118,-119 112,-119 112,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
 </g>
 <!-- _s2&#45;&gt;_s3 -->
 <g id="edge2" class="edge">
 <title>_s2&#45;&gt;_s3</title>
-<path fill="none" stroke="#000000" d="M71,-73.9916C71,-68.476 71,-62.474 71,-56.5881"/>
-<polygon fill="#000000" stroke="#000000" points="74.5001,-56.249 71,-46.2491 67.5001,-56.2491 74.5001,-56.249"/>
-<text text-anchor="start" x="71" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M62.5,-73.9916C62.5,-68.476 62.5,-62.474 62.5,-56.5881"/>
+<polygon fill="#000000" stroke="#000000" points="66.0001,-56.249 62.5,-46.2491 59.0001,-56.2491 66.0001,-56.249"/>
+<text text-anchor="start" x="62.5" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 2] &#160;&#160;</text>
 </g>
 <!-- _s1&#45;&gt;_s2 -->
 <g id="edge3" class="edge">
 <title>_s1&#45;&gt;_s2</title>
-<path fill="none" stroke="#000000" d="M71,-147.9916C71,-142.476 71,-136.474 71,-130.5881"/>
-<polygon fill="#000000" stroke="#000000" points="74.5001,-130.249 71,-120.2491 67.5001,-130.2491 74.5001,-130.249"/>
-<text text-anchor="start" x="71" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 1] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M62.5,-147.9916C62.5,-142.476 62.5,-136.474 62.5,-130.5881"/>
+<polygon fill="#000000" stroke="#000000" points="66.0001,-130.249 62.5,-120.2491 59.0001,-130.2491 66.0001,-130.249"/>
+<text text-anchor="start" x="62.5" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x == 1] &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 39 - 39
test/test_files/features/history/test_history.svg

@@ -4,94 +4,94 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="205pt" height="356pt"
- viewBox="0.00 0.00 204.50 356.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="180pt" height="356pt"
+ viewBox="0.00 0.00 179.50 356.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 352)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-352 200.5,-352 200.5,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-352 175.5,-352 175.5,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__composite_1</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M44.5,-8C44.5,-8 176.5,-8 176.5,-8 182.5,-8 188.5,-14 188.5,-20 188.5,-20 188.5,-262 188.5,-262 188.5,-268 182.5,-274 176.5,-274 176.5,-274 44.5,-274 44.5,-274 38.5,-274 32.5,-268 32.5,-262 32.5,-262 32.5,-20 32.5,-20 32.5,-14 38.5,-8 44.5,-8"/>
-<text text-anchor="start" x="76.4914" y="-255.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">composite_1</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M35.5,-8C35.5,-8 151.5,-8 151.5,-8 157.5,-8 163.5,-14 163.5,-20 163.5,-20 163.5,-262 163.5,-262 163.5,-268 157.5,-274 151.5,-274 151.5,-274 35.5,-274 35.5,-274 29.5,-274 23.5,-268 23.5,-262 23.5,-262 23.5,-20 23.5,-20 23.5,-14 29.5,-8 35.5,-8"/>
+<text text-anchor="start" x="59.4914" y="-255.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">composite_1</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="173.5" cy="-325" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="161.5" cy="-325" rx="5.5" ry="5.5"/>
 </g>
 <!-- _composite_1 -->
 <!-- __initial&#45;&gt;_composite_1 -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_composite_1</title>
-<path fill="none" stroke="#000000" d="M172.5826,-319.5468C171.3707,-312.3426 169.0948,-298.8137 166.5903,-283.9259"/>
-<polygon fill="#000000" stroke="#000000" points="170.0309,-283.2799 164.9204,-273.9991 163.1279,-284.4412 170.0309,-283.2799"/>
-<text text-anchor="middle" x="168.8895" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M160.3788,-319.5468C158.8975,-312.3426 156.1159,-298.8137 153.0549,-283.9259"/>
+<polygon fill="#000000" stroke="#000000" points="156.4562,-283.0893 151.0138,-273.9991 149.5996,-284.4992 156.4562,-283.0893"/>
+<text text-anchor="middle" x="155.8895" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _state_3 -->
 <g id="node2" class="node">
 <title>_state_3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="139,-348 0,-348 0,-302 139,-302 139,-348"/>
-<text text-anchor="start" x="50.3236" y="-331.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_3</text>
-<text text-anchor="start" x="6.1612" y="-311.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_state_3</text>
-<polygon fill="#000000" stroke="#000000" points=".5,-325 .5,-325 139.5,-325 139.5,-325 .5,-325"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-303C13,-303 126,-303 126,-303 132,-303 138,-309 138,-315 138,-315 138,-335 138,-335 138,-341 132,-347 126,-347 126,-347 13,-347 13,-347 7,-347 1,-341 1,-335 1,-335 1,-315 1,-315 1,-309 7,-303 13,-303"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="123,-348 0,-348 0,-302 123,-302 123,-348"/>
+<text text-anchor="start" x="42.3236" y="-331.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_3</text>
+<text text-anchor="start" x="6.4994" y="-311.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_state_3</text>
+<polygon fill="#000000" stroke="#000000" points=".5,-325 .5,-325 123.5,-325 123.5,-325 .5,-325"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-303C13,-303 110,-303 110,-303 116,-303 122,-309 122,-315 122,-315 122,-335 122,-335 122,-341 116,-347 110,-347 110,-347 13,-347 13,-347 7,-347 1,-341 1,-335 1,-335 1,-315 1,-315 1,-309 7,-303 13,-303"/>
 </g>
 <!-- _composite_1_composite_history -->
 <g id="node7" class="node">
 <title>_composite_1_composite_history</title>
-<ellipse fill="transparent" stroke="#000000" stroke-width="2" cx="61.5" cy="-218" rx="18" ry="18"/>
-<text text-anchor="middle" x="61.5" y="-214.4" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">H</text>
+<ellipse fill="transparent" stroke="#000000" stroke-width="2" cx="49.5" cy="-218" rx="18" ry="18"/>
+<text text-anchor="middle" x="49.5" y="-214.4" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">H</text>
 </g>
 <!-- _state_3&#45;&gt;_composite_1_composite_history -->
 <g id="edge2" class="edge">
 <title>_state_3&#45;&gt;_composite_1_composite_history</title>
-<path fill="none" stroke="#000000" d="M67.7641,-301.7826C66.5463,-285.4946 64.9111,-263.623 63.6167,-246.311"/>
-<polygon fill="#000000" stroke="#000000" points="67.0976,-245.9229 62.8616,-236.2117 60.117,-246.4449 67.0976,-245.9229"/>
-<text text-anchor="middle" x="68.8895" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M57.8015,-301.9978C57.4137,-299.3048 57.0439,-296.5938 56.721,-294 54.764,-278.2788 53.0603,-260.6697 51.7999,-246.363"/>
+<polygon fill="#000000" stroke="#000000" points="55.2661,-245.8173 50.9257,-236.1524 48.2916,-246.4145 55.2661,-245.8173"/>
+<text text-anchor="middle" x="58.8895" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _composite_1&#45;&gt;_state_3 -->
 <g id="edge5" class="edge">
 <title>_composite_1&#45;&gt;_state_3</title>
-<path fill="none" stroke="#000000" d="M127.5,-274C120.0845,-280.7079 114.6559,-276.2547 106.472,-282 101.5164,-285.479 96.808,-289.7681 92.5141,-294.2772"/>
-<polygon fill="#000000" stroke="#000000" points="89.7135,-292.1607 85.7086,-301.9695 94.9562,-296.799 89.7135,-292.1607"/>
-<text text-anchor="start" x="105.5" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">to_state_3 &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M112.5,-274C105.4917,-280.5391 100.0247,-276.0982 92.472,-282 88.1224,-285.3989 84.1103,-289.5666 80.5165,-293.956"/>
+<polygon fill="#000000" stroke="#000000" points="77.703,-291.874 74.5167,-301.9784 83.3087,-296.0664 77.703,-291.874"/>
+<text text-anchor="start" x="91.5" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">to_state_3 &#160;&#160;</text>
 </g>
 <!-- _composite_1_initial -->
 <g id="node4" class="node">
 <title>_composite_1_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="110.5" cy="-218" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="95.5" cy="-218" rx="5.5" ry="5.5"/>
 </g>
 <!-- _composite_1_state_1 -->
 <g id="node6" class="node">
 <title>_composite_1_state_1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="180,-154 41,-154 41,-108 180,-108 180,-154"/>
-<text text-anchor="start" x="91.3236" y="-137.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_1</text>
-<text text-anchor="start" x="47.1612" y="-117.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_state_1</text>
-<polygon fill="#000000" stroke="#000000" points="41.5,-131 41.5,-131 180.5,-131 180.5,-131 41.5,-131"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M54,-109C54,-109 167,-109 167,-109 173,-109 179,-115 179,-121 179,-121 179,-141 179,-141 179,-147 173,-153 167,-153 167,-153 54,-153 54,-153 48,-153 42,-147 42,-141 42,-141 42,-121 42,-121 42,-115 48,-109 54,-109"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="155,-154 32,-154 32,-108 155,-108 155,-154"/>
+<text text-anchor="start" x="74.3236" y="-137.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_1</text>
+<text text-anchor="start" x="38.4994" y="-117.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_state_1</text>
+<polygon fill="#000000" stroke="#000000" points="32.5,-131 32.5,-131 155.5,-131 155.5,-131 32.5,-131"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-109C45,-109 142,-109 142,-109 148,-109 154,-115 154,-121 154,-121 154,-141 154,-141 154,-147 148,-153 142,-153 142,-153 45,-153 45,-153 39,-153 33,-147 33,-141 33,-141 33,-121 33,-121 33,-115 39,-109 45,-109"/>
 </g>
 <!-- _composite_1_initial&#45;&gt;_composite_1_state_1 -->
 <g id="edge3" class="edge">
 <title>_composite_1_initial&#45;&gt;_composite_1_state_1</title>
-<path fill="none" stroke="#000000" d="M110.5,-212.2917C110.5,-202.6218 110.5,-182.3234 110.5,-164.4303"/>
-<polygon fill="#000000" stroke="#000000" points="114.0001,-164.2715 110.5,-154.2715 107.0001,-164.2716 114.0001,-164.2715"/>
-<text text-anchor="middle" x="111.8895" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M95.3688,-212.2917C95.1465,-202.6218 94.6798,-182.3234 94.2685,-164.4303"/>
+<polygon fill="#000000" stroke="#000000" points="97.764,-164.1884 94.035,-154.2715 90.7658,-164.3494 97.764,-164.1884"/>
+<text text-anchor="middle" x="95.8895" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _composite_1_state_2 -->
 <g id="node5" class="node">
 <title>_composite_1_state_2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="180,-62 41,-62 41,-16 180,-16 180,-62"/>
-<text text-anchor="start" x="91.3236" y="-45.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_2</text>
-<text text-anchor="start" x="47.1612" y="-25.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_state_2</text>
-<polygon fill="#000000" stroke="#000000" points="41.5,-39 41.5,-39 180.5,-39 180.5,-39 41.5,-39"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M54,-17C54,-17 167,-17 167,-17 173,-17 179,-23 179,-29 179,-29 179,-49 179,-49 179,-55 173,-61 167,-61 167,-61 54,-61 54,-61 48,-61 42,-55 42,-49 42,-49 42,-29 42,-29 42,-23 48,-17 54,-17"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="155,-62 32,-62 32,-16 155,-16 155,-62"/>
+<text text-anchor="start" x="74.3236" y="-45.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">state_2</text>
+<text text-anchor="start" x="38.4994" y="-25.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_state_2</text>
+<polygon fill="#000000" stroke="#000000" points="32.5,-39 32.5,-39 155.5,-39 155.5,-39 32.5,-39"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-17C45,-17 142,-17 142,-17 148,-17 154,-23 154,-29 154,-29 154,-49 154,-49 154,-55 148,-61 142,-61 142,-61 45,-61 45,-61 39,-61 33,-55 33,-49 33,-49 33,-29 33,-29 33,-23 39,-17 45,-17"/>
 </g>
 <!-- _composite_1_state_1&#45;&gt;_composite_1_state_2 -->
 <g id="edge4" class="edge">
 <title>_composite_1_state_1&#45;&gt;_composite_1_state_2</title>
-<path fill="none" stroke="#000000" d="M110.5,-107.7845C110.5,-97.1067 110.5,-84.2376 110.5,-72.5333"/>
-<polygon fill="#000000" stroke="#000000" points="114.0001,-72.208 110.5,-62.2081 107.0001,-72.2081 114.0001,-72.208"/>
-<text text-anchor="start" x="110.5" y="-82" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">to_state_2 &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M93.5,-107.7845C93.5,-97.1067 93.5,-84.2376 93.5,-72.5333"/>
+<polygon fill="#000000" stroke="#000000" points="97.0001,-72.208 93.5,-62.2081 90.0001,-72.2081 97.0001,-72.208"/>
+<text text-anchor="start" x="93.5" y="-82" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">to_state_2 &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 26 - 26
test/test_files/semantics/big_step_maximality/statechart_flat.svg

@@ -4,61 +4,61 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="114pt" height="231pt"
- viewBox="0.00 0.00 114.00 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="98pt" height="231pt"
+ viewBox="0.00 0.00 98.00 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 227)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 110,-227 110,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 94,-227 94,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="53" cy="-217.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="45" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _a -->
 <g id="node4" class="node">
 <title>_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="81,-184 25,-184 25,-148 81,-148 81,-184"/>
-<text text-anchor="start" x="49.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M37.3333,-149C37.3333,-149 68.6667,-149 68.6667,-149 74.3333,-149 80,-154.6667 80,-160.3333 80,-160.3333 80,-171.6667 80,-171.6667 80,-177.3333 74.3333,-183 68.6667,-183 68.6667,-183 37.3333,-183 37.3333,-183 31.6667,-183 26,-177.3333 26,-171.6667 26,-171.6667 26,-160.3333 26,-160.3333 26,-154.6667 31.6667,-149 37.3333,-149"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="73,-184 17,-184 17,-148 73,-148 73,-184"/>
+<text text-anchor="start" x="41.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M29.3333,-149C29.3333,-149 60.6667,-149 60.6667,-149 66.3333,-149 72,-154.6667 72,-160.3333 72,-160.3333 72,-171.6667 72,-171.6667 72,-177.3333 66.3333,-183 60.6667,-183 60.6667,-183 29.3333,-183 29.3333,-183 23.6667,-183 18,-177.3333 18,-171.6667 18,-171.6667 18,-160.3333 18,-160.3333 18,-154.6667 23.6667,-149 29.3333,-149"/>
 </g>
 <!-- __initial&#45;&gt;_a -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_a</title>
-<path fill="none" stroke="#000000" d="M53,-211.9886C53,-207.6293 53,-201.1793 53,-194.4801"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-194.0122 53,-184.0122 49.5001,-194.0122 56.5001,-194.0122"/>
-<text text-anchor="middle" x="54.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M45,-211.9886C45,-207.6293 45,-201.1793 45,-194.4801"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-194.0122 45,-184.0122 41.5001,-194.0122 48.5001,-194.0122"/>
+<text text-anchor="middle" x="46.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _c -->
 <g id="node2" class="node">
 <title>_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-46 0,-46 0,0 106,0 106,-46"/>
-<text text-anchor="start" x="50" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="5.8376" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 106,-23 106,-23 0,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 93,-1 93,-1 99,-1 105,-7 105,-13 105,-13 105,-33 105,-33 105,-39 99,-45 93,-45 93,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="89.5,-46 .5,-46 .5,0 89.5,0 89.5,-46"/>
+<text text-anchor="start" x="42.5" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="6.6758" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="1,-23 1,-23 90,-23 90,-23 1,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13.5,-1C13.5,-1 76.5,-1 76.5,-1 82.5,-1 88.5,-7 88.5,-13 88.5,-13 88.5,-33 88.5,-33 88.5,-39 82.5,-45 76.5,-45 76.5,-45 13.5,-45 13.5,-45 7.5,-45 1.5,-39 1.5,-33 1.5,-33 1.5,-13 1.5,-13 1.5,-7 7.5,-1 13.5,-1"/>
 </g>
 <!-- _b -->
 <g id="node3" class="node">
 <title>_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-120 0,-120 0,-74 106,-74 106,-120"/>
-<text text-anchor="start" x="49.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="5.5022" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 106,-97 106,-97 0,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 93,-75 93,-75 99,-75 105,-81 105,-87 105,-87 105,-107 105,-107 105,-113 99,-119 93,-119 93,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-120 0,-120 0,-74 90,-74 90,-120"/>
+<text text-anchor="start" x="41.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
+<text text-anchor="start" x="5.8404" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 90,-97 90,-97 0,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 77,-75 77,-75 83,-75 89,-81 89,-87 89,-87 89,-107 89,-107 89,-113 83,-119 77,-119 77,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
 </g>
 <!-- _b&#45;&gt;_c -->
 <g id="edge2" class="edge">
 <title>_b&#45;&gt;_c</title>
-<path fill="none" stroke="#000000" d="M53,-73.9916C53,-68.476 53,-62.474 53,-56.5881"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-56.249 53,-46.2491 49.5001,-56.2491 56.5001,-56.249"/>
-<text text-anchor="middle" x="54.3895" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M45,-73.9916C45,-68.476 45,-62.474 45,-56.5881"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-56.249 45,-46.2491 41.5001,-56.2491 48.5001,-56.249"/>
+<text text-anchor="middle" x="46.3895" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _a&#45;&gt;_b -->
 <g id="edge3" class="edge">
 <title>_a&#45;&gt;_b</title>
-<path fill="none" stroke="#000000" d="M53,-147.8711C53,-142.4482 53,-136.3229 53,-130.2494"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-130.21 53,-120.21 49.5001,-130.21 56.5001,-130.21"/>
-<text text-anchor="start" x="53" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-147.8711C45,-142.4482 45,-136.3229 45,-130.2494"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-130.21 45,-120.21 41.5001,-130.21 48.5001,-130.21"/>
+<text text-anchor="start" x="45" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 55 - 55
test/test_files/semantics/big_step_maximality/statechart_ortho.svg

@@ -4,25 +4,25 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="300pt" height="532pt"
- viewBox="0.00 0.00 300.00 532.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="268pt" height="532pt"
+ viewBox="0.00 0.00 268.00 532.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 528)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-528 296,-528 296,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-528 264,-528 264,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__p</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 272,-8 272,-8 278,-8 284,-14 284,-20 284,-20 284,-473 284,-473 284,-479 278,-485 272,-485 272,-485 20,-485 20,-485 14,-485 8,-479 8,-473 8,-473 8,-20 8,-20 8,-14 14,-8 20,-8"/>
-<text text-anchor="start" x="142.6646" y="-466.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 240,-8 240,-8 246,-8 252,-14 252,-20 252,-20 252,-473 252,-473 252,-479 246,-485 240,-485 240,-485 20,-485 20,-485 14,-485 8,-479 8,-473 8,-473 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="126.6646" y="-466.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__p_o1</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="154,-16 154,-447 276,-447 276,-16 154,-16"/>
-<text text-anchor="start" x="208.8292" y="-428.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="138,-16 138,-447 244,-447 244,-16 138,-16"/>
+<text text-anchor="start" x="184.8292" y="-428.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_o0</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-447 146,-447 146,-16 24,-16"/>
-<text text-anchor="start" x="78.8292" y="-428.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-447 130,-447 130,-16 24,-16"/>
+<text text-anchor="start" x="70.8292" y="-428.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -41,105 +41,105 @@
 <!-- _p_o1_initial -->
 <g id="node4" class="node">
 <title>_p_o1_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="215" cy="-403.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="191" cy="-403.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_o1_d -->
 <g id="node7" class="node">
 <title>_p_o1_d</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="243,-316 187,-316 187,-280 243,-280 243,-316"/>
-<text text-anchor="start" x="211.6646" y="-294.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M199.3333,-281C199.3333,-281 230.6667,-281 230.6667,-281 236.3333,-281 242,-286.6667 242,-292.3333 242,-292.3333 242,-303.6667 242,-303.6667 242,-309.3333 236.3333,-315 230.6667,-315 230.6667,-315 199.3333,-315 199.3333,-315 193.6667,-315 188,-309.3333 188,-303.6667 188,-303.6667 188,-292.3333 188,-292.3333 188,-286.6667 193.6667,-281 199.3333,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="219,-316 163,-316 163,-280 219,-280 219,-316"/>
+<text text-anchor="start" x="187.6646" y="-294.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M175.3333,-281C175.3333,-281 206.6667,-281 206.6667,-281 212.3333,-281 218,-286.6667 218,-292.3333 218,-292.3333 218,-303.6667 218,-303.6667 218,-309.3333 212.3333,-315 206.6667,-315 206.6667,-315 175.3333,-315 175.3333,-315 169.6667,-315 164,-309.3333 164,-303.6667 164,-303.6667 164,-292.3333 164,-292.3333 164,-286.6667 169.6667,-281 175.3333,-281"/>
 </g>
 <!-- _p_o1_initial&#45;&gt;_p_o1_d -->
 <g id="edge2" class="edge">
 <title>_p_o1_initial&#45;&gt;_p_o1_d</title>
-<path fill="none" stroke="#000000" d="M215,-397.8288C215,-393.1736 215,-386.4097 215,-380.5 215,-380.5 215,-380.5 215,-333.5 215,-331.1079 215,-328.6252 215,-326.1342"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-326.0597 215,-316.0598 211.5001,-326.0598 218.5001,-326.0597"/>
-<text text-anchor="middle" x="216.3895" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M191,-397.8288C191,-393.1736 191,-386.4097 191,-380.5 191,-380.5 191,-380.5 191,-333.5 191,-331.1079 191,-328.6252 191,-326.1342"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-326.0597 191,-316.0598 187.5001,-326.0598 194.5001,-326.0597"/>
+<text text-anchor="middle" x="192.3895" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o1_f -->
 <g id="node5" class="node">
 <title>_p_o1_f</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="266.5,-70 163.5,-70 163.5,-24 266.5,-24 266.5,-70"/>
-<text text-anchor="start" x="213.8326" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">f</text>
-<text text-anchor="start" x="169.6702" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_f</text>
-<polygon fill="#000000" stroke="#000000" points="164,-47 164,-47 267,-47 267,-47 164,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M176.5,-25C176.5,-25 253.5,-25 253.5,-25 259.5,-25 265.5,-31 265.5,-37 265.5,-37 265.5,-57 265.5,-57 265.5,-63 259.5,-69 253.5,-69 253.5,-69 176.5,-69 176.5,-69 170.5,-69 164.5,-63 164.5,-57 164.5,-57 164.5,-37 164.5,-37 164.5,-31 170.5,-25 176.5,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="234,-70 148,-70 148,-24 234,-24 234,-70"/>
+<text text-anchor="start" x="189.3326" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">f</text>
+<text text-anchor="start" x="153.5084" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_f</text>
+<polygon fill="#000000" stroke="#000000" points="148,-47 148,-47 234,-47 234,-47 148,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M161,-25C161,-25 221,-25 221,-25 227,-25 233,-31 233,-37 233,-37 233,-57 233,-57 233,-63 227,-69 221,-69 221,-69 161,-69 161,-69 155,-69 149,-63 149,-57 149,-57 149,-37 149,-37 149,-31 155,-25 161,-25"/>
 </g>
 <!-- _p_o1_e -->
 <g id="node6" class="node">
 <title>_p_o1_e</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="268,-198 162,-198 162,-152 268,-152 268,-198"/>
-<text text-anchor="start" x="211.6646" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
-<text text-anchor="start" x="167.5022" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_e</text>
-<polygon fill="#000000" stroke="#000000" points="162,-175 162,-175 268,-175 268,-175 162,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M175,-153C175,-153 255,-153 255,-153 261,-153 267,-159 267,-165 267,-165 267,-185 267,-185 267,-191 261,-197 255,-197 255,-197 175,-197 175,-197 169,-197 163,-191 163,-185 163,-185 163,-165 163,-165 163,-159 169,-153 175,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="236,-198 146,-198 146,-152 236,-152 236,-198"/>
+<text text-anchor="start" x="187.6646" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
+<text text-anchor="start" x="151.8404" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_e</text>
+<polygon fill="#000000" stroke="#000000" points="146,-175 146,-175 236,-175 236,-175 146,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M159,-153C159,-153 223,-153 223,-153 229,-153 235,-159 235,-165 235,-165 235,-185 235,-185 235,-191 229,-197 223,-197 223,-197 159,-197 159,-197 153,-197 147,-191 147,-185 147,-185 147,-165 147,-165 147,-159 153,-153 159,-153"/>
 </g>
 <!-- _p_o1_e&#45;&gt;_p_o1_f -->
 <g id="edge3" class="edge">
 <title>_p_o1_e&#45;&gt;_p_o1_f</title>
-<path fill="none" stroke="#000000" d="M215,-151.8694C215,-146.1895 215,-140.125 215,-134.5 215,-134.5 215,-134.5 215,-87.5 215,-85.127 215,-82.6757 215,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-80.1306 215,-70.1306 211.5001,-80.1306 218.5001,-80.1306"/>
-<text text-anchor="middle" x="216.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M191,-151.8694C191,-146.1895 191,-140.125 191,-134.5 191,-134.5 191,-134.5 191,-87.5 191,-85.127 191,-82.6757 191,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-80.1306 191,-70.1306 187.5001,-80.1306 194.5001,-80.1306"/>
+<text text-anchor="middle" x="192.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o1_d&#45;&gt;_p_o1_e -->
 <g id="edge4" class="edge">
 <title>_p_o1_d&#45;&gt;_p_o1_e</title>
-<path fill="none" stroke="#000000" d="M215,-279.9402C215,-274.3497 215,-268.1701 215,-262.5 215,-262.5 215,-262.5 215,-215.5 215,-213.127 215,-210.6757 215,-208.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-208.1306 215,-198.1306 211.5001,-208.1306 218.5001,-208.1306"/>
-<text text-anchor="middle" x="216.3895" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M191,-279.9402C191,-274.3497 191,-268.1701 191,-262.5 191,-262.5 191,-262.5 191,-215.5 191,-213.127 191,-210.6757 191,-208.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-208.1306 191,-198.1306 187.5001,-208.1306 194.5001,-208.1306"/>
+<text text-anchor="middle" x="192.3895" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o0 -->
 <!-- _p_o0_initial -->
 <g id="node9" class="node">
 <title>_p_o0_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="85" cy="-403.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="77" cy="-403.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_o0_a -->
 <g id="node12" class="node">
 <title>_p_o0_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="113,-316 57,-316 57,-280 113,-280 113,-316"/>
-<text text-anchor="start" x="81.6646" y="-294.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M69.3333,-281C69.3333,-281 100.6667,-281 100.6667,-281 106.3333,-281 112,-286.6667 112,-292.3333 112,-292.3333 112,-303.6667 112,-303.6667 112,-309.3333 106.3333,-315 100.6667,-315 100.6667,-315 69.3333,-315 69.3333,-315 63.6667,-315 58,-309.3333 58,-303.6667 58,-303.6667 58,-292.3333 58,-292.3333 58,-286.6667 63.6667,-281 69.3333,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="105,-316 49,-316 49,-280 105,-280 105,-316"/>
+<text text-anchor="start" x="73.6646" y="-294.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M61.3333,-281C61.3333,-281 92.6667,-281 92.6667,-281 98.3333,-281 104,-286.6667 104,-292.3333 104,-292.3333 104,-303.6667 104,-303.6667 104,-309.3333 98.3333,-315 92.6667,-315 92.6667,-315 61.3333,-315 61.3333,-315 55.6667,-315 50,-309.3333 50,-303.6667 50,-303.6667 50,-292.3333 50,-292.3333 50,-286.6667 55.6667,-281 61.3333,-281"/>
 </g>
 <!-- _p_o0_initial&#45;&gt;_p_o0_a -->
 <g id="edge5" class="edge">
 <title>_p_o0_initial&#45;&gt;_p_o0_a</title>
-<path fill="none" stroke="#000000" d="M85,-397.8288C85,-393.1736 85,-386.4097 85,-380.5 85,-380.5 85,-380.5 85,-333.5 85,-331.1079 85,-328.6252 85,-326.1342"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-326.0597 85,-316.0598 81.5001,-326.0598 88.5001,-326.0597"/>
-<text text-anchor="middle" x="86.3895" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M77,-397.8288C77,-393.1736 77,-386.4097 77,-380.5 77,-380.5 77,-380.5 77,-333.5 77,-331.1079 77,-328.6252 77,-326.1342"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-326.0597 77,-316.0598 73.5001,-326.0598 80.5001,-326.0597"/>
+<text text-anchor="middle" x="78.3895" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o0_c -->
 <g id="node10" class="node">
 <title>_p_o0_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-70 32,-70 32,-24 138,-24 138,-70"/>
-<text text-anchor="start" x="82" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="37.8376" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="32,-47 32,-47 138,-47 138,-47 32,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-25C45,-25 125,-25 125,-25 131,-25 137,-31 137,-37 137,-37 137,-57 137,-57 137,-63 131,-69 125,-69 125,-69 45,-69 45,-69 39,-69 33,-63 33,-57 33,-57 33,-37 33,-37 33,-31 39,-25 45,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.5,-70 32.5,-70 32.5,-24 121.5,-24 121.5,-70"/>
+<text text-anchor="start" x="74.5" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="38.6758" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="33,-47 33,-47 122,-47 122,-47 33,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.5,-25C45.5,-25 108.5,-25 108.5,-25 114.5,-25 120.5,-31 120.5,-37 120.5,-37 120.5,-57 120.5,-57 120.5,-63 114.5,-69 108.5,-69 108.5,-69 45.5,-69 45.5,-69 39.5,-69 33.5,-63 33.5,-57 33.5,-57 33.5,-37 33.5,-37 33.5,-31 39.5,-25 45.5,-25"/>
 </g>
 <!-- _p_o0_b -->
 <g id="node11" class="node">
 <title>_p_o0_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-198 32,-198 32,-152 138,-152 138,-198"/>
-<text text-anchor="start" x="81.6646" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="37.5022" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="32,-175 32,-175 138,-175 138,-175 32,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-153C45,-153 125,-153 125,-153 131,-153 137,-159 137,-165 137,-165 137,-185 137,-185 137,-191 131,-197 125,-197 125,-197 45,-197 45,-197 39,-197 33,-191 33,-185 33,-185 33,-165 33,-165 33,-159 39,-153 45,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="122,-198 32,-198 32,-152 122,-152 122,-198"/>
+<text text-anchor="start" x="73.6646" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
+<text text-anchor="start" x="37.8404" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="32,-175 32,-175 122,-175 122,-175 32,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-153C45,-153 109,-153 109,-153 115,-153 121,-159 121,-165 121,-165 121,-185 121,-185 121,-191 115,-197 109,-197 109,-197 45,-197 45,-197 39,-197 33,-191 33,-185 33,-185 33,-165 33,-165 33,-159 39,-153 45,-153"/>
 </g>
 <!-- _p_o0_b&#45;&gt;_p_o0_c -->
 <g id="edge6" class="edge">
 <title>_p_o0_b&#45;&gt;_p_o0_c</title>
-<path fill="none" stroke="#000000" d="M85,-151.8694C85,-146.1895 85,-140.125 85,-134.5 85,-134.5 85,-134.5 85,-87.5 85,-85.127 85,-82.6757 85,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-80.1306 85,-70.1306 81.5001,-80.1306 88.5001,-80.1306"/>
-<text text-anchor="middle" x="86.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M77,-151.8694C77,-146.1895 77,-140.125 77,-134.5 77,-134.5 77,-134.5 77,-87.5 77,-85.127 77,-82.6757 77,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-80.1306 77,-70.1306 73.5001,-80.1306 80.5001,-80.1306"/>
+<text text-anchor="middle" x="78.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o0_a&#45;&gt;_p_o0_b -->
 <g id="edge7" class="edge">
 <title>_p_o0_a&#45;&gt;_p_o0_b</title>
-<path fill="none" stroke="#000000" d="M85,-279.9402C85,-274.3497 85,-268.1701 85,-262.5 85,-262.5 85,-262.5 85,-215.5 85,-213.127 85,-210.6757 85,-208.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-208.1306 85,-198.1306 81.5001,-208.1306 88.5001,-208.1306"/>
-<text text-anchor="start" x="85" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-279.9402C77,-274.3497 77,-268.1701 77,-262.5 77,-262.5 77,-262.5 77,-215.5 77,-213.127 77,-210.6757 77,-208.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-208.1306 77,-198.1306 73.5001,-208.1306 80.5001,-208.1306"/>
+<text text-anchor="start" x="77" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 34 - 34
test/test_files/semantics/big_step_maximality/test_flat_syntactic.svg

@@ -4,77 +4,77 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="114pt" height="305pt"
- viewBox="0.00 0.00 114.00 305.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="98pt" height="305pt"
+ viewBox="0.00 0.00 98.00 305.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 301)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-301 110,-301 110,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-301 94,-301 94,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="53" cy="-291.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="45" cy="-291.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _a -->
 <g id="node5" class="node">
 <title>_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="81,-258 25,-258 25,-222 81,-222 81,-258"/>
-<text text-anchor="start" x="49.6646" y="-236.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M37.3333,-223C37.3333,-223 68.6667,-223 68.6667,-223 74.3333,-223 80,-228.6667 80,-234.3333 80,-234.3333 80,-245.6667 80,-245.6667 80,-251.3333 74.3333,-257 68.6667,-257 68.6667,-257 37.3333,-257 37.3333,-257 31.6667,-257 26,-251.3333 26,-245.6667 26,-245.6667 26,-234.3333 26,-234.3333 26,-228.6667 31.6667,-223 37.3333,-223"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="73,-258 17,-258 17,-222 73,-222 73,-258"/>
+<text text-anchor="start" x="41.6646" y="-236.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M29.3333,-223C29.3333,-223 60.6667,-223 60.6667,-223 66.3333,-223 72,-228.6667 72,-234.3333 72,-234.3333 72,-245.6667 72,-245.6667 72,-251.3333 66.3333,-257 60.6667,-257 60.6667,-257 29.3333,-257 29.3333,-257 23.6667,-257 18,-251.3333 18,-245.6667 18,-245.6667 18,-234.3333 18,-234.3333 18,-228.6667 23.6667,-223 29.3333,-223"/>
 </g>
 <!-- __initial&#45;&gt;_a -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_a</title>
-<path fill="none" stroke="#000000" d="M53,-285.9886C53,-281.6293 53,-275.1793 53,-268.4801"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-268.0122 53,-258.0122 49.5001,-268.0122 56.5001,-268.0122"/>
-<text text-anchor="middle" x="54.3895" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M45,-285.9886C45,-281.6293 45,-275.1793 45,-268.4801"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-268.0122 45,-258.0122 41.5001,-268.0122 48.5001,-268.0122"/>
+<text text-anchor="middle" x="46.3895" y="-269" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _d -->
 <g id="node2" class="node">
 <title>_d</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-46 0,-46 0,0 106,0 106,-46"/>
-<text text-anchor="start" x="42.995" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d ✓</text>
-<text text-anchor="start" x="5.5022" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_d</text>
-<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 106,-23 106,-23 0,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 93,-1 93,-1 99,-1 105,-7 105,-13 105,-13 105,-33 105,-33 105,-39 99,-45 93,-45 93,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-46 0,-46 0,0 90,0 90,-46"/>
+<text text-anchor="start" x="34.995" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d ✓</text>
+<text text-anchor="start" x="5.8404" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_d</text>
+<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 90,-23 90,-23 0,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 77,-1 77,-1 83,-1 89,-7 89,-13 89,-13 89,-33 89,-33 89,-39 83,-45 77,-45 77,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
 </g>
 <!-- _c -->
 <g id="node3" class="node">
 <title>_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-120 0,-120 0,-74 106,-74 106,-120"/>
-<text text-anchor="start" x="50" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="5.8376" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 106,-97 106,-97 0,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 93,-75 93,-75 99,-75 105,-81 105,-87 105,-87 105,-107 105,-107 105,-113 99,-119 93,-119 93,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="89.5,-120 .5,-120 .5,-74 89.5,-74 89.5,-120"/>
+<text text-anchor="start" x="42.5" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="6.6758" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="1,-97 1,-97 90,-97 90,-97 1,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13.5,-75C13.5,-75 76.5,-75 76.5,-75 82.5,-75 88.5,-81 88.5,-87 88.5,-87 88.5,-107 88.5,-107 88.5,-113 82.5,-119 76.5,-119 76.5,-119 13.5,-119 13.5,-119 7.5,-119 1.5,-113 1.5,-107 1.5,-107 1.5,-87 1.5,-87 1.5,-81 7.5,-75 13.5,-75"/>
 </g>
 <!-- _c&#45;&gt;_d -->
 <g id="edge2" class="edge">
 <title>_c&#45;&gt;_d</title>
-<path fill="none" stroke="#000000" d="M53,-73.9916C53,-68.476 53,-62.474 53,-56.5881"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-56.249 53,-46.2491 49.5001,-56.2491 56.5001,-56.249"/>
-<text text-anchor="start" x="53" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-73.9916C45,-68.476 45,-62.474 45,-56.5881"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-56.249 45,-46.2491 41.5001,-56.2491 48.5001,-56.249"/>
+<text text-anchor="start" x="45" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _b -->
 <g id="node4" class="node">
 <title>_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-194 0,-194 0,-148 106,-148 106,-194"/>
-<text text-anchor="start" x="42.995" y="-177.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b ✓</text>
-<text text-anchor="start" x="5.5022" y="-157.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="0,-171 0,-171 106,-171 106,-171 0,-171"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-149C13,-149 93,-149 93,-149 99,-149 105,-155 105,-161 105,-161 105,-181 105,-181 105,-187 99,-193 93,-193 93,-193 13,-193 13,-193 7,-193 1,-187 1,-181 1,-181 1,-161 1,-161 1,-155 7,-149 13,-149"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-194 0,-194 0,-148 90,-148 90,-194"/>
+<text text-anchor="start" x="34.995" y="-177.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b ✓</text>
+<text text-anchor="start" x="5.8404" y="-157.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="0,-171 0,-171 90,-171 90,-171 0,-171"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-149C13,-149 77,-149 77,-149 83,-149 89,-155 89,-161 89,-161 89,-181 89,-181 89,-187 83,-193 77,-193 77,-193 13,-193 13,-193 7,-193 1,-187 1,-181 1,-181 1,-161 1,-161 1,-155 7,-149 13,-149"/>
 </g>
 <!-- _b&#45;&gt;_c -->
 <g id="edge3" class="edge">
 <title>_b&#45;&gt;_c</title>
-<path fill="none" stroke="#000000" d="M53,-147.9916C53,-142.476 53,-136.474 53,-130.5881"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-130.249 53,-120.2491 49.5001,-130.2491 56.5001,-130.249"/>
-<text text-anchor="start" x="53" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-147.9916C45,-142.476 45,-136.474 45,-130.5881"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-130.249 45,-120.2491 41.5001,-130.2491 48.5001,-130.249"/>
+<text text-anchor="start" x="45" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _a&#45;&gt;_b -->
 <g id="edge4" class="edge">
 <title>_a&#45;&gt;_b</title>
-<path fill="none" stroke="#000000" d="M53,-221.8711C53,-216.4482 53,-210.3229 53,-204.2494"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-204.21 53,-194.21 49.5001,-204.21 56.5001,-204.21"/>
-<text text-anchor="start" x="53" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-221.8711C45,-216.4482 45,-210.3229 45,-204.2494"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-204.21 45,-194.21 41.5001,-204.21 48.5001,-204.21"/>
+<text text-anchor="start" x="45" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 71 - 71
test/test_files/semantics/big_step_maximality/test_ortho_syntactic.svg

@@ -4,25 +4,25 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="300pt" height="660pt"
- viewBox="0.00 0.00 300.00 660.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="268pt" height="660pt"
+ viewBox="0.00 0.00 268.00 660.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 656)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-656 296,-656 296,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-656 264,-656 264,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__p</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 272,-8 272,-8 278,-8 284,-14 284,-20 284,-20 284,-601 284,-601 284,-607 278,-613 272,-613 272,-613 20,-613 20,-613 14,-613 8,-607 8,-601 8,-601 8,-20 8,-20 8,-14 14,-8 20,-8"/>
-<text text-anchor="start" x="142.6646" y="-594.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 240,-8 240,-8 246,-8 252,-14 252,-20 252,-20 252,-601 252,-601 252,-607 246,-613 240,-613 240,-613 20,-613 20,-613 14,-613 8,-607 8,-601 8,-601 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="126.6646" y="-594.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__p_ortho1</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="154,-16 154,-575 276,-575 276,-16 154,-16"/>
-<text text-anchor="start" x="197.9936" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ortho1</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="138,-16 138,-575 244,-575 244,-16 138,-16"/>
+<text text-anchor="start" x="173.9936" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ortho1</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_ortho0</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-575 146,-575 146,-16 24,-16"/>
-<text text-anchor="start" x="67.9936" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ortho0</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-575 130,-575 130,-16 24,-16"/>
+<text text-anchor="start" x="59.9936" y="-556.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ortho0</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -41,137 +41,137 @@
 <!-- _p_ortho1_initial -->
 <g id="node4" class="node">
 <title>_p_ortho1_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="215" cy="-531.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="191" cy="-531.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_ortho1_e -->
 <g id="node8" class="node">
 <title>_p_ortho1_e</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="243,-444 187,-444 187,-408 243,-408 243,-444"/>
-<text text-anchor="start" x="211.6646" y="-422.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M199.3333,-409C199.3333,-409 230.6667,-409 230.6667,-409 236.3333,-409 242,-414.6667 242,-420.3333 242,-420.3333 242,-431.6667 242,-431.6667 242,-437.3333 236.3333,-443 230.6667,-443 230.6667,-443 199.3333,-443 199.3333,-443 193.6667,-443 188,-437.3333 188,-431.6667 188,-431.6667 188,-420.3333 188,-420.3333 188,-414.6667 193.6667,-409 199.3333,-409"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="219,-444 163,-444 163,-408 219,-408 219,-444"/>
+<text text-anchor="start" x="187.6646" y="-422.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M175.3333,-409C175.3333,-409 206.6667,-409 206.6667,-409 212.3333,-409 218,-414.6667 218,-420.3333 218,-420.3333 218,-431.6667 218,-431.6667 218,-437.3333 212.3333,-443 206.6667,-443 206.6667,-443 175.3333,-443 175.3333,-443 169.6667,-443 164,-437.3333 164,-431.6667 164,-431.6667 164,-420.3333 164,-420.3333 164,-414.6667 169.6667,-409 175.3333,-409"/>
 </g>
 <!-- _p_ortho1_initial&#45;&gt;_p_ortho1_e -->
 <g id="edge2" class="edge">
 <title>_p_ortho1_initial&#45;&gt;_p_ortho1_e</title>
-<path fill="none" stroke="#000000" d="M215,-525.8288C215,-521.1736 215,-514.4097 215,-508.5 215,-508.5 215,-508.5 215,-461.5 215,-459.1079 215,-456.6252 215,-454.1342"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-454.0597 215,-444.0598 211.5001,-454.0598 218.5001,-454.0597"/>
-<text text-anchor="middle" x="216.3895" y="-482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M191,-525.8288C191,-521.1736 191,-514.4097 191,-508.5 191,-508.5 191,-508.5 191,-461.5 191,-459.1079 191,-456.6252 191,-454.1342"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-454.0597 191,-444.0598 187.5001,-454.0598 194.5001,-454.0597"/>
+<text text-anchor="middle" x="192.3895" y="-482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_ortho1_h -->
 <g id="node5" class="node">
 <title>_p_ortho1_h</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="268,-70 162,-70 162,-24 268,-24 268,-70"/>
-<text text-anchor="start" x="204.995" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">h ✓</text>
-<text text-anchor="start" x="167.5022" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_h</text>
-<polygon fill="#000000" stroke="#000000" points="162,-47 162,-47 268,-47 268,-47 162,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M175,-25C175,-25 255,-25 255,-25 261,-25 267,-31 267,-37 267,-37 267,-57 267,-57 267,-63 261,-69 255,-69 255,-69 175,-69 175,-69 169,-69 163,-63 163,-57 163,-57 163,-37 163,-37 163,-31 169,-25 175,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="236,-70 146,-70 146,-24 236,-24 236,-70"/>
+<text text-anchor="start" x="180.995" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">h ✓</text>
+<text text-anchor="start" x="151.8404" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_h</text>
+<polygon fill="#000000" stroke="#000000" points="146,-47 146,-47 236,-47 236,-47 146,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M159,-25C159,-25 223,-25 223,-25 229,-25 235,-31 235,-37 235,-37 235,-57 235,-57 235,-63 229,-69 223,-69 223,-69 159,-69 159,-69 153,-69 147,-63 147,-57 147,-57 147,-37 147,-37 147,-31 153,-25 159,-25"/>
 </g>
 <!-- _p_ortho1_g -->
 <g id="node6" class="node">
 <title>_p_ortho1_g</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="268,-198 162,-198 162,-152 268,-152 268,-198"/>
-<text text-anchor="start" x="204.995" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">g ✓</text>
-<text text-anchor="start" x="167.5022" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_g</text>
-<polygon fill="#000000" stroke="#000000" points="162,-175 162,-175 268,-175 268,-175 162,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M175,-153C175,-153 255,-153 255,-153 261,-153 267,-159 267,-165 267,-165 267,-185 267,-185 267,-191 261,-197 255,-197 255,-197 175,-197 175,-197 169,-197 163,-191 163,-185 163,-185 163,-165 163,-165 163,-159 169,-153 175,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="236,-198 146,-198 146,-152 236,-152 236,-198"/>
+<text text-anchor="start" x="180.995" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">g ✓</text>
+<text text-anchor="start" x="151.8404" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_g</text>
+<polygon fill="#000000" stroke="#000000" points="146,-175 146,-175 236,-175 236,-175 146,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M159,-153C159,-153 223,-153 223,-153 229,-153 235,-159 235,-165 235,-165 235,-185 235,-185 235,-191 229,-197 223,-197 223,-197 159,-197 159,-197 153,-197 147,-191 147,-185 147,-185 147,-165 147,-165 147,-159 153,-153 159,-153"/>
 </g>
 <!-- _p_ortho1_g&#45;&gt;_p_ortho1_h -->
 <g id="edge3" class="edge">
 <title>_p_ortho1_g&#45;&gt;_p_ortho1_h</title>
-<path fill="none" stroke="#000000" d="M215,-151.8694C215,-146.1895 215,-140.125 215,-134.5 215,-134.5 215,-134.5 215,-87.5 215,-85.127 215,-82.6757 215,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-80.1306 215,-70.1306 211.5001,-80.1306 218.5001,-80.1306"/>
-<text text-anchor="start" x="215" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M191,-151.8694C191,-146.1895 191,-140.125 191,-134.5 191,-134.5 191,-134.5 191,-87.5 191,-85.127 191,-82.6757 191,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-80.1306 191,-70.1306 187.5001,-80.1306 194.5001,-80.1306"/>
+<text text-anchor="start" x="191" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _p_ortho1_f -->
 <g id="node7" class="node">
 <title>_p_ortho1_f</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="266.5,-326 163.5,-326 163.5,-280 266.5,-280 266.5,-326"/>
-<text text-anchor="start" x="213.8326" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">f</text>
-<text text-anchor="start" x="169.6702" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_f</text>
-<polygon fill="#000000" stroke="#000000" points="164,-303 164,-303 267,-303 267,-303 164,-303"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M176.5,-281C176.5,-281 253.5,-281 253.5,-281 259.5,-281 265.5,-287 265.5,-293 265.5,-293 265.5,-313 265.5,-313 265.5,-319 259.5,-325 253.5,-325 253.5,-325 176.5,-325 176.5,-325 170.5,-325 164.5,-319 164.5,-313 164.5,-313 164.5,-293 164.5,-293 164.5,-287 170.5,-281 176.5,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="234,-326 148,-326 148,-280 234,-280 234,-326"/>
+<text text-anchor="start" x="189.3326" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">f</text>
+<text text-anchor="start" x="153.5084" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_f</text>
+<polygon fill="#000000" stroke="#000000" points="148,-303 148,-303 234,-303 234,-303 148,-303"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M161,-281C161,-281 221,-281 221,-281 227,-281 233,-287 233,-293 233,-293 233,-313 233,-313 233,-319 227,-325 221,-325 221,-325 161,-325 161,-325 155,-325 149,-319 149,-313 149,-313 149,-293 149,-293 149,-287 155,-281 161,-281"/>
 </g>
 <!-- _p_ortho1_f&#45;&gt;_p_ortho1_g -->
 <g id="edge4" class="edge">
 <title>_p_ortho1_f&#45;&gt;_p_ortho1_g</title>
-<path fill="none" stroke="#000000" d="M215,-279.8694C215,-274.1895 215,-268.125 215,-262.5 215,-262.5 215,-262.5 215,-215.5 215,-213.127 215,-210.6757 215,-208.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-208.1306 215,-198.1306 211.5001,-208.1306 218.5001,-208.1306"/>
-<text text-anchor="start" x="215" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M191,-279.8694C191,-274.1895 191,-268.125 191,-262.5 191,-262.5 191,-262.5 191,-215.5 191,-213.127 191,-210.6757 191,-208.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-208.1306 191,-198.1306 187.5001,-208.1306 194.5001,-208.1306"/>
+<text text-anchor="start" x="191" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _p_ortho1_e&#45;&gt;_p_ortho1_f -->
 <g id="edge5" class="edge">
 <title>_p_ortho1_e&#45;&gt;_p_ortho1_f</title>
-<path fill="none" stroke="#000000" d="M215,-407.9402C215,-402.3497 215,-396.1701 215,-390.5 215,-390.5 215,-390.5 215,-343.5 215,-341.127 215,-338.6757 215,-336.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-336.1306 215,-326.1306 211.5001,-336.1306 218.5001,-336.1306"/>
-<text text-anchor="start" x="215" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M191,-407.9402C191,-402.3497 191,-396.1701 191,-390.5 191,-390.5 191,-390.5 191,-343.5 191,-341.127 191,-338.6757 191,-336.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-336.1306 191,-326.1306 187.5001,-336.1306 194.5001,-336.1306"/>
+<text text-anchor="start" x="191" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _p_ortho0 -->
 <!-- _p_ortho0_initial -->
 <g id="node10" class="node">
 <title>_p_ortho0_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="85" cy="-531.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="77" cy="-531.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_ortho0_a -->
 <g id="node14" class="node">
 <title>_p_ortho0_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="113,-444 57,-444 57,-408 113,-408 113,-444"/>
-<text text-anchor="start" x="81.6646" y="-422.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M69.3333,-409C69.3333,-409 100.6667,-409 100.6667,-409 106.3333,-409 112,-414.6667 112,-420.3333 112,-420.3333 112,-431.6667 112,-431.6667 112,-437.3333 106.3333,-443 100.6667,-443 100.6667,-443 69.3333,-443 69.3333,-443 63.6667,-443 58,-437.3333 58,-431.6667 58,-431.6667 58,-420.3333 58,-420.3333 58,-414.6667 63.6667,-409 69.3333,-409"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="105,-444 49,-444 49,-408 105,-408 105,-444"/>
+<text text-anchor="start" x="73.6646" y="-422.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M61.3333,-409C61.3333,-409 92.6667,-409 92.6667,-409 98.3333,-409 104,-414.6667 104,-420.3333 104,-420.3333 104,-431.6667 104,-431.6667 104,-437.3333 98.3333,-443 92.6667,-443 92.6667,-443 61.3333,-443 61.3333,-443 55.6667,-443 50,-437.3333 50,-431.6667 50,-431.6667 50,-420.3333 50,-420.3333 50,-414.6667 55.6667,-409 61.3333,-409"/>
 </g>
 <!-- _p_ortho0_initial&#45;&gt;_p_ortho0_a -->
 <g id="edge6" class="edge">
 <title>_p_ortho0_initial&#45;&gt;_p_ortho0_a</title>
-<path fill="none" stroke="#000000" d="M85,-525.8288C85,-521.1736 85,-514.4097 85,-508.5 85,-508.5 85,-508.5 85,-461.5 85,-459.1079 85,-456.6252 85,-454.1342"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-454.0597 85,-444.0598 81.5001,-454.0598 88.5001,-454.0597"/>
-<text text-anchor="middle" x="86.3895" y="-482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M77,-525.8288C77,-521.1736 77,-514.4097 77,-508.5 77,-508.5 77,-508.5 77,-461.5 77,-459.1079 77,-456.6252 77,-454.1342"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-454.0597 77,-444.0598 73.5001,-454.0598 80.5001,-454.0597"/>
+<text text-anchor="middle" x="78.3895" y="-482" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_ortho0_d -->
 <g id="node11" class="node">
 <title>_p_ortho0_d</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-70 32,-70 32,-24 138,-24 138,-70"/>
-<text text-anchor="start" x="74.995" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d ✓</text>
-<text text-anchor="start" x="37.5022" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_d</text>
-<polygon fill="#000000" stroke="#000000" points="32,-47 32,-47 138,-47 138,-47 32,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-25C45,-25 125,-25 125,-25 131,-25 137,-31 137,-37 137,-37 137,-57 137,-57 137,-63 131,-69 125,-69 125,-69 45,-69 45,-69 39,-69 33,-63 33,-57 33,-57 33,-37 33,-37 33,-31 39,-25 45,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="122,-70 32,-70 32,-24 122,-24 122,-70"/>
+<text text-anchor="start" x="66.995" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d ✓</text>
+<text text-anchor="start" x="37.8404" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_d</text>
+<polygon fill="#000000" stroke="#000000" points="32,-47 32,-47 122,-47 122,-47 32,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-25C45,-25 109,-25 109,-25 115,-25 121,-31 121,-37 121,-37 121,-57 121,-57 121,-63 115,-69 109,-69 109,-69 45,-69 45,-69 39,-69 33,-63 33,-57 33,-57 33,-37 33,-37 33,-31 39,-25 45,-25"/>
 </g>
 <!-- _p_ortho0_c -->
 <g id="node12" class="node">
 <title>_p_ortho0_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-198 32,-198 32,-152 138,-152 138,-198"/>
-<text text-anchor="start" x="82" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="37.8376" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="32,-175 32,-175 138,-175 138,-175 32,-175"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-153C45,-153 125,-153 125,-153 131,-153 137,-159 137,-165 137,-165 137,-185 137,-185 137,-191 131,-197 125,-197 125,-197 45,-197 45,-197 39,-197 33,-191 33,-185 33,-185 33,-165 33,-165 33,-159 39,-153 45,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.5,-198 32.5,-198 32.5,-152 121.5,-152 121.5,-198"/>
+<text text-anchor="start" x="74.5" y="-181.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="38.6758" y="-161.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="33,-175 33,-175 122,-175 122,-175 33,-175"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.5,-153C45.5,-153 108.5,-153 108.5,-153 114.5,-153 120.5,-159 120.5,-165 120.5,-165 120.5,-185 120.5,-185 120.5,-191 114.5,-197 108.5,-197 108.5,-197 45.5,-197 45.5,-197 39.5,-197 33.5,-191 33.5,-185 33.5,-185 33.5,-165 33.5,-165 33.5,-159 39.5,-153 45.5,-153"/>
 </g>
 <!-- _p_ortho0_c&#45;&gt;_p_ortho0_d -->
 <g id="edge7" class="edge">
 <title>_p_ortho0_c&#45;&gt;_p_ortho0_d</title>
-<path fill="none" stroke="#000000" d="M85,-151.8694C85,-146.1895 85,-140.125 85,-134.5 85,-134.5 85,-134.5 85,-87.5 85,-85.127 85,-82.6757 85,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-80.1306 85,-70.1306 81.5001,-80.1306 88.5001,-80.1306"/>
-<text text-anchor="start" x="85" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-151.8694C77,-146.1895 77,-140.125 77,-134.5 77,-134.5 77,-134.5 77,-87.5 77,-85.127 77,-82.6757 77,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-80.1306 77,-70.1306 73.5001,-80.1306 80.5001,-80.1306"/>
+<text text-anchor="start" x="77" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _p_ortho0_b -->
 <g id="node13" class="node">
 <title>_p_ortho0_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-326 32,-326 32,-280 138,-280 138,-326"/>
-<text text-anchor="start" x="74.995" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b ✓</text>
-<text text-anchor="start" x="37.5022" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="32,-303 32,-303 138,-303 138,-303 32,-303"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-281C45,-281 125,-281 125,-281 131,-281 137,-287 137,-293 137,-293 137,-313 137,-313 137,-319 131,-325 125,-325 125,-325 45,-325 45,-325 39,-325 33,-319 33,-313 33,-313 33,-293 33,-293 33,-287 39,-281 45,-281"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="122,-326 32,-326 32,-280 122,-280 122,-326"/>
+<text text-anchor="start" x="66.995" y="-309.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b ✓</text>
+<text text-anchor="start" x="37.8404" y="-289.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="32,-303 32,-303 122,-303 122,-303 32,-303"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-281C45,-281 109,-281 109,-281 115,-281 121,-287 121,-293 121,-293 121,-313 121,-313 121,-319 115,-325 109,-325 109,-325 45,-325 45,-325 39,-325 33,-319 33,-313 33,-313 33,-293 33,-293 33,-287 39,-281 45,-281"/>
 </g>
 <!-- _p_ortho0_b&#45;&gt;_p_ortho0_c -->
 <g id="edge8" class="edge">
 <title>_p_ortho0_b&#45;&gt;_p_ortho0_c</title>
-<path fill="none" stroke="#000000" d="M85,-279.8694C85,-274.1895 85,-268.125 85,-262.5 85,-262.5 85,-262.5 85,-215.5 85,-213.127 85,-210.6757 85,-208.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-208.1306 85,-198.1306 81.5001,-208.1306 88.5001,-208.1306"/>
-<text text-anchor="start" x="85" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-279.8694C77,-274.1895 77,-268.125 77,-262.5 77,-262.5 77,-262.5 77,-215.5 77,-213.127 77,-210.6757 77,-208.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-208.1306 77,-198.1306 73.5001,-208.1306 80.5001,-208.1306"/>
+<text text-anchor="start" x="77" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 <!-- _p_ortho0_a&#45;&gt;_p_ortho0_b -->
 <g id="edge9" class="edge">
 <title>_p_ortho0_a&#45;&gt;_p_ortho0_b</title>
-<path fill="none" stroke="#000000" d="M85,-407.9402C85,-402.3497 85,-396.1701 85,-390.5 85,-390.5 85,-390.5 85,-343.5 85,-341.127 85,-338.6757 85,-336.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-336.1306 85,-326.1306 81.5001,-336.1306 88.5001,-336.1306"/>
-<text text-anchor="start" x="85" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-407.9402C77,-402.3497 77,-396.1701 77,-390.5 77,-390.5 77,-390.5 77,-343.5 77,-341.127 77,-338.6757 77,-336.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-336.1306 77,-326.1306 73.5001,-336.1306 80.5001,-336.1306"/>
+<text text-anchor="start" x="77" y="-364" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 26 - 26
test/test_files/semantics/event_lifeline/statechart_flat.svg

@@ -4,61 +4,61 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="114pt" height="231pt"
- viewBox="0.00 0.00 114.00 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="98pt" height="231pt"
+ viewBox="0.00 0.00 98.00 231.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 227)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 110,-227 110,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-227 94,-227 94,4 -4,4"/>
 <!-- __initial -->
 <g id="node1" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="53" cy="-217.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="45" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _a -->
 <g id="node4" class="node">
 <title>_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="81,-184 25,-184 25,-148 81,-148 81,-184"/>
-<text text-anchor="start" x="49.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M37.3333,-149C37.3333,-149 68.6667,-149 68.6667,-149 74.3333,-149 80,-154.6667 80,-160.3333 80,-160.3333 80,-171.6667 80,-171.6667 80,-177.3333 74.3333,-183 68.6667,-183 68.6667,-183 37.3333,-183 37.3333,-183 31.6667,-183 26,-177.3333 26,-171.6667 26,-171.6667 26,-160.3333 26,-160.3333 26,-154.6667 31.6667,-149 37.3333,-149"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="73,-184 17,-184 17,-148 73,-148 73,-184"/>
+<text text-anchor="start" x="41.6646" y="-162.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M29.3333,-149C29.3333,-149 60.6667,-149 60.6667,-149 66.3333,-149 72,-154.6667 72,-160.3333 72,-160.3333 72,-171.6667 72,-171.6667 72,-177.3333 66.3333,-183 60.6667,-183 60.6667,-183 29.3333,-183 29.3333,-183 23.6667,-183 18,-177.3333 18,-171.6667 18,-171.6667 18,-160.3333 18,-160.3333 18,-154.6667 23.6667,-149 29.3333,-149"/>
 </g>
 <!-- __initial&#45;&gt;_a -->
 <g id="edge1" class="edge">
 <title>__initial&#45;&gt;_a</title>
-<path fill="none" stroke="#000000" d="M53,-211.9886C53,-207.6293 53,-201.1793 53,-194.4801"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-194.0122 53,-184.0122 49.5001,-194.0122 56.5001,-194.0122"/>
-<text text-anchor="middle" x="54.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M45,-211.9886C45,-207.6293 45,-201.1793 45,-194.4801"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-194.0122 45,-184.0122 41.5001,-194.0122 48.5001,-194.0122"/>
+<text text-anchor="middle" x="46.3895" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _c -->
 <g id="node2" class="node">
 <title>_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-46 0,-46 0,0 106,0 106,-46"/>
-<text text-anchor="start" x="50" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="5.8376" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="0,-23 0,-23 106,-23 106,-23 0,-23"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-1C13,-1 93,-1 93,-1 99,-1 105,-7 105,-13 105,-13 105,-33 105,-33 105,-39 99,-45 93,-45 93,-45 13,-45 13,-45 7,-45 1,-39 1,-33 1,-33 1,-13 1,-13 1,-7 7,-1 13,-1"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="89.5,-46 .5,-46 .5,0 89.5,0 89.5,-46"/>
+<text text-anchor="start" x="42.5" y="-29.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="6.6758" y="-9.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="1,-23 1,-23 90,-23 90,-23 1,-23"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13.5,-1C13.5,-1 76.5,-1 76.5,-1 82.5,-1 88.5,-7 88.5,-13 88.5,-13 88.5,-33 88.5,-33 88.5,-39 82.5,-45 76.5,-45 76.5,-45 13.5,-45 13.5,-45 7.5,-45 1.5,-39 1.5,-33 1.5,-33 1.5,-13 1.5,-13 1.5,-7 7.5,-1 13.5,-1"/>
 </g>
 <!-- _b -->
 <g id="node3" class="node">
 <title>_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="106,-120 0,-120 0,-74 106,-74 106,-120"/>
-<text text-anchor="start" x="49.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="5.5022" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 106,-97 106,-97 0,-97"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 93,-75 93,-75 99,-75 105,-81 105,-87 105,-87 105,-107 105,-107 105,-113 99,-119 93,-119 93,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="90,-120 0,-120 0,-74 90,-74 90,-120"/>
+<text text-anchor="start" x="41.6646" y="-103.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
+<text text-anchor="start" x="5.8404" y="-83.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="0,-97 0,-97 90,-97 90,-97 0,-97"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M13,-75C13,-75 77,-75 77,-75 83,-75 89,-81 89,-87 89,-87 89,-107 89,-107 89,-113 83,-119 77,-119 77,-119 13,-119 13,-119 7,-119 1,-113 1,-107 1,-107 1,-87 1,-87 1,-81 7,-75 13,-75"/>
 </g>
 <!-- _b&#45;&gt;_c -->
 <g id="edge2" class="edge">
 <title>_b&#45;&gt;_c</title>
-<path fill="none" stroke="#000000" d="M53,-73.9916C53,-68.476 53,-62.474 53,-56.5881"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-56.249 53,-46.2491 49.5001,-56.2491 56.5001,-56.249"/>
-<text text-anchor="start" x="53" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-73.9916C45,-68.476 45,-62.474 45,-56.5881"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-56.249 45,-46.2491 41.5001,-56.2491 48.5001,-56.249"/>
+<text text-anchor="start" x="45" y="-57" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
 </g>
 <!-- _a&#45;&gt;_b -->
 <g id="edge3" class="edge">
 <title>_a&#45;&gt;_b</title>
-<path fill="none" stroke="#000000" d="M53,-147.8711C53,-142.4482 53,-136.3229 53,-130.2494"/>
-<polygon fill="#000000" stroke="#000000" points="56.5001,-130.21 53,-120.21 49.5001,-130.21 56.5001,-130.21"/>
-<text text-anchor="start" x="53" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e^f &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M45,-147.8711C45,-142.4482 45,-136.3229 45,-130.2494"/>
+<polygon fill="#000000" stroke="#000000" points="48.5001,-130.21 45,-120.21 41.5001,-130.21 48.5001,-130.21"/>
+<text text-anchor="start" x="45" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e^f &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 47 - 47
test/test_files/semantics/event_lifeline/statechart_ortho.svg

@@ -4,25 +4,25 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="300pt" height="540pt"
- viewBox="0.00 0.00 300.00 540.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="268pt" height="540pt"
+ viewBox="0.00 0.00 268.00 540.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 536)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-536 296,-536 296,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-536 264,-536 264,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__p</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 272,-8 272,-8 278,-8 284,-14 284,-20 284,-20 284,-481 284,-481 284,-487 278,-493 272,-493 272,-493 20,-493 20,-493 14,-493 8,-487 8,-481 8,-481 8,-20 8,-20 8,-14 14,-8 20,-8"/>
-<text text-anchor="start" x="142.6646" y="-474.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 240,-8 240,-8 246,-8 252,-14 252,-20 252,-20 252,-481 252,-481 252,-487 246,-493 240,-493 240,-493 20,-493 20,-493 14,-493 8,-487 8,-481 8,-481 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="126.6646" y="-474.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__p_o1</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="154,-152 154,-455 276,-455 276,-152 154,-152"/>
-<text text-anchor="start" x="208.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="138,-152 138,-455 244,-455 244,-152 138,-152"/>
+<text text-anchor="start" x="184.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_o0</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-455 146,-455 146,-16 24,-16"/>
-<text text-anchor="start" x="78.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-455 130,-455 130,-16 24,-16"/>
+<text text-anchor="start" x="70.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -41,89 +41,89 @@
 <!-- _p_o1_initial -->
 <g id="node4" class="node">
 <title>_p_o1_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="215" cy="-411.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="191" cy="-411.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_o1_d -->
 <g id="node6" class="node">
 <title>_p_o1_d</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="243,-324 187,-324 187,-288 243,-288 243,-324"/>
-<text text-anchor="start" x="211.6646" y="-302.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M199.3333,-289C199.3333,-289 230.6667,-289 230.6667,-289 236.3333,-289 242,-294.6667 242,-300.3333 242,-300.3333 242,-311.6667 242,-311.6667 242,-317.3333 236.3333,-323 230.6667,-323 230.6667,-323 199.3333,-323 199.3333,-323 193.6667,-323 188,-317.3333 188,-311.6667 188,-311.6667 188,-300.3333 188,-300.3333 188,-294.6667 193.6667,-289 199.3333,-289"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="219,-324 163,-324 163,-288 219,-288 219,-324"/>
+<text text-anchor="start" x="187.6646" y="-302.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">d</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M175.3333,-289C175.3333,-289 206.6667,-289 206.6667,-289 212.3333,-289 218,-294.6667 218,-300.3333 218,-300.3333 218,-311.6667 218,-311.6667 218,-317.3333 212.3333,-323 206.6667,-323 206.6667,-323 175.3333,-323 175.3333,-323 169.6667,-323 164,-317.3333 164,-311.6667 164,-311.6667 164,-300.3333 164,-300.3333 164,-294.6667 169.6667,-289 175.3333,-289"/>
 </g>
 <!-- _p_o1_initial&#45;&gt;_p_o1_d -->
 <g id="edge2" class="edge">
 <title>_p_o1_initial&#45;&gt;_p_o1_d</title>
-<path fill="none" stroke="#000000" d="M215,-405.8288C215,-401.1736 215,-394.4097 215,-388.5 215,-388.5 215,-388.5 215,-341.5 215,-339.1079 215,-336.6252 215,-334.1342"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-334.0597 215,-324.0598 211.5001,-334.0598 218.5001,-334.0597"/>
-<text text-anchor="middle" x="216.3895" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M191,-405.8288C191,-401.1736 191,-394.4097 191,-388.5 191,-388.5 191,-388.5 191,-341.5 191,-339.1079 191,-336.6252 191,-334.1342"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-334.0597 191,-324.0598 187.5001,-334.0598 194.5001,-334.0597"/>
+<text text-anchor="middle" x="192.3895" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o1_e -->
 <g id="node5" class="node">
 <title>_p_o1_e</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="268,-206 162,-206 162,-160 268,-160 268,-206"/>
-<text text-anchor="start" x="211.6646" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
-<text text-anchor="start" x="167.5022" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_e</text>
-<polygon fill="#000000" stroke="#000000" points="162,-183 162,-183 268,-183 268,-183 162,-183"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M175,-161C175,-161 255,-161 255,-161 261,-161 267,-167 267,-173 267,-173 267,-193 267,-193 267,-199 261,-205 255,-205 255,-205 175,-205 175,-205 169,-205 163,-199 163,-193 163,-193 163,-173 163,-173 163,-167 169,-161 175,-161"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="236,-206 146,-206 146,-160 236,-160 236,-206"/>
+<text text-anchor="start" x="187.6646" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">e</text>
+<text text-anchor="start" x="151.8404" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_e</text>
+<polygon fill="#000000" stroke="#000000" points="146,-183 146,-183 236,-183 236,-183 146,-183"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M159,-161C159,-161 223,-161 223,-161 229,-161 235,-167 235,-173 235,-173 235,-193 235,-193 235,-199 229,-205 223,-205 223,-205 159,-205 159,-205 153,-205 147,-199 147,-193 147,-193 147,-173 147,-173 147,-167 153,-161 159,-161"/>
 </g>
 <!-- _p_o1_d&#45;&gt;_p_o1_e -->
 <g id="edge3" class="edge">
 <title>_p_o1_d&#45;&gt;_p_o1_e</title>
-<path fill="none" stroke="#000000" d="M215,-287.9402C215,-282.3497 215,-276.1701 215,-270.5 215,-270.5 215,-270.5 215,-223.5 215,-221.127 215,-218.6757 215,-216.2081"/>
-<polygon fill="#000000" stroke="#000000" points="218.5001,-216.1306 215,-206.1306 211.5001,-216.1306 218.5001,-216.1306"/>
-<text text-anchor="start" x="215" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M191,-287.9402C191,-282.3497 191,-276.1701 191,-270.5 191,-270.5 191,-270.5 191,-223.5 191,-221.127 191,-218.6757 191,-216.2081"/>
+<polygon fill="#000000" stroke="#000000" points="194.5001,-216.1306 191,-206.1306 187.5001,-216.1306 194.5001,-216.1306"/>
+<text text-anchor="start" x="191" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
 </g>
 <!-- _p_o0 -->
 <!-- _p_o0_initial -->
 <g id="node8" class="node">
 <title>_p_o0_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="85" cy="-411.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="77" cy="-411.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_o0_a -->
 <g id="node11" class="node">
 <title>_p_o0_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="113,-324 57,-324 57,-288 113,-288 113,-324"/>
-<text text-anchor="start" x="81.6646" y="-302.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M69.3333,-289C69.3333,-289 100.6667,-289 100.6667,-289 106.3333,-289 112,-294.6667 112,-300.3333 112,-300.3333 112,-311.6667 112,-311.6667 112,-317.3333 106.3333,-323 100.6667,-323 100.6667,-323 69.3333,-323 69.3333,-323 63.6667,-323 58,-317.3333 58,-311.6667 58,-311.6667 58,-300.3333 58,-300.3333 58,-294.6667 63.6667,-289 69.3333,-289"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="105,-324 49,-324 49,-288 105,-288 105,-324"/>
+<text text-anchor="start" x="73.6646" y="-302.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M61.3333,-289C61.3333,-289 92.6667,-289 92.6667,-289 98.3333,-289 104,-294.6667 104,-300.3333 104,-300.3333 104,-311.6667 104,-311.6667 104,-317.3333 98.3333,-323 92.6667,-323 92.6667,-323 61.3333,-323 61.3333,-323 55.6667,-323 50,-317.3333 50,-311.6667 50,-311.6667 50,-300.3333 50,-300.3333 50,-294.6667 55.6667,-289 61.3333,-289"/>
 </g>
 <!-- _p_o0_initial&#45;&gt;_p_o0_a -->
 <g id="edge4" class="edge">
 <title>_p_o0_initial&#45;&gt;_p_o0_a</title>
-<path fill="none" stroke="#000000" d="M85,-405.8288C85,-401.1736 85,-394.4097 85,-388.5 85,-388.5 85,-388.5 85,-341.5 85,-339.1079 85,-336.6252 85,-334.1342"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-334.0597 85,-324.0598 81.5001,-334.0598 88.5001,-334.0597"/>
-<text text-anchor="middle" x="86.3895" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M77,-405.8288C77,-401.1736 77,-394.4097 77,-388.5 77,-388.5 77,-388.5 77,-341.5 77,-339.1079 77,-336.6252 77,-334.1342"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-334.0597 77,-324.0598 73.5001,-334.0598 80.5001,-334.0597"/>
+<text text-anchor="middle" x="78.3895" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o0_c -->
 <g id="node9" class="node">
 <title>_p_o0_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-70 32,-70 32,-24 138,-24 138,-70"/>
-<text text-anchor="start" x="82" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="37.8376" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_c</text>
-<polygon fill="#000000" stroke="#000000" points="32,-47 32,-47 138,-47 138,-47 32,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-25C45,-25 125,-25 125,-25 131,-25 137,-31 137,-37 137,-37 137,-57 137,-57 137,-63 131,-69 125,-69 125,-69 45,-69 45,-69 39,-69 33,-63 33,-57 33,-57 33,-37 33,-37 33,-31 39,-25 45,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="121.5,-70 32.5,-70 32.5,-24 121.5,-24 121.5,-70"/>
+<text text-anchor="start" x="74.5" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
+<text text-anchor="start" x="38.6758" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_c</text>
+<polygon fill="#000000" stroke="#000000" points="33,-47 33,-47 122,-47 122,-47 33,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45.5,-25C45.5,-25 108.5,-25 108.5,-25 114.5,-25 120.5,-31 120.5,-37 120.5,-37 120.5,-57 120.5,-57 120.5,-63 114.5,-69 108.5,-69 108.5,-69 45.5,-69 45.5,-69 39.5,-69 33.5,-63 33.5,-57 33.5,-57 33.5,-37 33.5,-37 33.5,-31 39.5,-25 45.5,-25"/>
 </g>
 <!-- _p_o0_b -->
 <g id="node10" class="node">
 <title>_p_o0_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="138,-206 32,-206 32,-160 138,-160 138,-206"/>
-<text text-anchor="start" x="81.6646" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="37.5022" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.in_b</text>
-<polygon fill="#000000" stroke="#000000" points="32,-183 32,-183 138,-183 138,-183 32,-183"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M45,-161C45,-161 125,-161 125,-161 131,-161 137,-167 137,-173 137,-173 137,-193 137,-193 137,-199 131,-205 125,-205 125,-205 45,-205 45,-205 39,-205 33,-199 33,-193 33,-193 33,-173 33,-173 33,-167 39,-161 45,-161"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="122,-206 32,-206 32,-160 122,-160 122,-206"/>
+<text text-anchor="start" x="73.6646" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
+<text text-anchor="start" x="37.8404" y="-169.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.in_b</text>
+<polygon fill="#000000" stroke="#000000" points="32,-183 32,-183 122,-183 122,-183 32,-183"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M45,-161C45,-161 109,-161 109,-161 115,-161 121,-167 121,-173 121,-173 121,-193 121,-193 121,-199 115,-205 109,-205 109,-205 45,-205 45,-205 39,-205 33,-199 33,-193 33,-193 33,-173 33,-173 33,-167 39,-161 45,-161"/>
 </g>
 <!-- _p_o0_b&#45;&gt;_p_o0_c -->
 <g id="edge5" class="edge">
 <title>_p_o0_b&#45;&gt;_p_o0_c</title>
-<path fill="none" stroke="#000000" d="M85,-159.8105C85,-151.7932 85,-142.7517 85,-134.5 85,-134.5 85,-134.5 85,-87.5 85,-85.127 85,-82.6757 85,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-80.1306 85,-70.1306 81.5001,-80.1306 88.5001,-80.1306"/>
-<text text-anchor="start" x="85" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-159.8105C77,-151.7932 77,-142.7517 77,-134.5 77,-134.5 77,-134.5 77,-87.5 77,-85.127 77,-82.6757 77,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-80.1306 77,-70.1306 73.5001,-80.1306 80.5001,-80.1306"/>
+<text text-anchor="start" x="77" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
 </g>
 <!-- _p_o0_a&#45;&gt;_p_o0_b -->
 <g id="edge6" class="edge">
 <title>_p_o0_a&#45;&gt;_p_o0_b</title>
-<path fill="none" stroke="#000000" d="M85,-287.9402C85,-282.3497 85,-276.1701 85,-270.5 85,-270.5 85,-270.5 85,-223.5 85,-221.127 85,-218.6757 85,-216.2081"/>
-<polygon fill="#000000" stroke="#000000" points="88.5001,-216.1306 85,-206.1306 81.5001,-216.1306 88.5001,-216.1306"/>
-<text text-anchor="start" x="85" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e^f &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M77,-287.9402C77,-282.3497 77,-276.1701 77,-270.5 77,-270.5 77,-270.5 77,-223.5 77,-221.127 77,-218.6757 77,-216.2081"/>
+<polygon fill="#000000" stroke="#000000" points="80.5001,-216.1306 77,-206.1306 73.5001,-216.1306 80.5001,-216.1306"/>
+<text text-anchor="start" x="77" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">e^f &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 22 - 22
test/test_files/semantics/memory_protocol/statechart_enabledness.svg

@@ -4,20 +4,20 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="507pt" height="412pt"
- viewBox="0.00 0.00 507.00 412.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="491pt" height="412pt"
+ viewBox="0.00 0.00 491.00 412.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 408)">
 <title>state transitions</title>
-<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-408 503,-408 503,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-408 487,-408 487,4 -4,4"/>
 <g id="clust1" class="cluster">
 <title>cluster__p</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 479,-8 479,-8 485,-8 491,-14 491,-20 491,-20 491,-353 491,-353 491,-359 485,-365 479,-365 479,-365 20,-365 20,-365 14,-365 8,-359 8,-353 8,-353 8,-20 8,-20 8,-14 14,-8 20,-8"/>
-<text text-anchor="start" x="246.1646" y="-346.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 463,-8 463,-8 469,-8 475,-14 475,-20 475,-20 475,-353 475,-353 475,-359 469,-365 463,-365 463,-365 20,-365 20,-365 14,-365 8,-359 8,-353 8,-353 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="238.1646" y="-346.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__p_status</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="357,-16 357,-327 483,-327 483,-16 357,-16"/>
-<text text-anchor="start" x="403.9944" y="-308.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">status</text>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="357,-16 357,-327 467,-327 467,-16 357,-16"/>
+<text text-anchor="start" x="395.9944" y="-308.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">status</text>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_increment</title>
@@ -41,37 +41,37 @@
 <!-- _p_status_initial -->
 <g id="node4" class="node">
 <title>_p_status_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="420" cy="-283.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="412" cy="-283.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_status_counting -->
 <g id="node6" class="node">
 <title>_p_status_counting</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="453.5,-196 386.5,-196 386.5,-160 453.5,-160 453.5,-196"/>
-<text text-anchor="start" x="397.8242" y="-174.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">counting</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M398.8333,-161C398.8333,-161 441.1667,-161 441.1667,-161 446.8333,-161 452.5,-166.6667 452.5,-172.3333 452.5,-172.3333 452.5,-183.6667 452.5,-183.6667 452.5,-189.3333 446.8333,-195 441.1667,-195 441.1667,-195 398.8333,-195 398.8333,-195 393.1667,-195 387.5,-189.3333 387.5,-183.6667 387.5,-183.6667 387.5,-172.3333 387.5,-172.3333 387.5,-166.6667 393.1667,-161 398.8333,-161"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="445.5,-196 378.5,-196 378.5,-160 445.5,-160 445.5,-196"/>
+<text text-anchor="start" x="389.8242" y="-174.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">counting</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M390.8333,-161C390.8333,-161 433.1667,-161 433.1667,-161 438.8333,-161 444.5,-166.6667 444.5,-172.3333 444.5,-172.3333 444.5,-183.6667 444.5,-183.6667 444.5,-189.3333 438.8333,-195 433.1667,-195 433.1667,-195 390.8333,-195 390.8333,-195 385.1667,-195 379.5,-189.3333 379.5,-183.6667 379.5,-183.6667 379.5,-172.3333 379.5,-172.3333 379.5,-166.6667 385.1667,-161 390.8333,-161"/>
 </g>
 <!-- _p_status_initial&#45;&gt;_p_status_counting -->
 <g id="edge2" class="edge">
 <title>_p_status_initial&#45;&gt;_p_status_counting</title>
-<path fill="none" stroke="#000000" d="M420,-277.8288C420,-273.1736 420,-266.4097 420,-260.5 420,-260.5 420,-260.5 420,-213.5 420,-211.1079 420,-208.6252 420,-206.1342"/>
-<polygon fill="#000000" stroke="#000000" points="423.5001,-206.0597 420,-196.0598 416.5001,-206.0598 423.5001,-206.0597"/>
-<text text-anchor="middle" x="421.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M412,-277.8288C412,-273.1736 412,-266.4097 412,-260.5 412,-260.5 412,-260.5 412,-213.5 412,-211.1079 412,-208.6252 412,-206.1342"/>
+<polygon fill="#000000" stroke="#000000" points="415.5001,-206.0597 412,-196.0598 408.5001,-206.0598 415.5001,-206.0597"/>
+<text text-anchor="middle" x="413.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_status_done -->
 <g id="node5" class="node">
 <title>_p_status_done</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="475.5,-70 364.5,-70 364.5,-24 475.5,-24 475.5,-70"/>
-<text text-anchor="start" x="407.1584" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
-<text text-anchor="start" x="370.9982" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">onentry/ ^out.done</text>
-<polygon fill="#000000" stroke="#000000" points="365,-47 365,-47 476,-47 476,-47 365,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M377.5,-25C377.5,-25 462.5,-25 462.5,-25 468.5,-25 474.5,-31 474.5,-37 474.5,-37 474.5,-57 474.5,-57 474.5,-63 468.5,-69 462.5,-69 462.5,-69 377.5,-69 377.5,-69 371.5,-69 365.5,-63 365.5,-57 365.5,-57 365.5,-37 365.5,-37 365.5,-31 371.5,-25 377.5,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="459,-70 365,-70 365,-24 459,-24 459,-70"/>
+<text text-anchor="start" x="398.6584" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
+<text text-anchor="start" x="370.8364" y="-33.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">entry ^out.done</text>
+<polygon fill="#000000" stroke="#000000" points="365,-47 365,-47 459,-47 459,-47 365,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M378,-25C378,-25 446,-25 446,-25 452,-25 458,-31 458,-37 458,-37 458,-57 458,-57 458,-63 452,-69 446,-69 446,-69 378,-69 378,-69 372,-69 366,-63 366,-57 366,-57 366,-37 366,-37 366,-31 372,-25 378,-25"/>
 </g>
 <!-- _p_status_counting&#45;&gt;_p_status_done -->
 <g id="edge3" class="edge">
 <title>_p_status_counting&#45;&gt;_p_status_done</title>
-<path fill="none" stroke="#000000" d="M420,-159.7983C420,-152.007 420,-142.8073 420,-134.5 420,-134.5 420,-134.5 420,-87.5 420,-85.127 420,-82.6757 420,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="423.5001,-80.1306 420,-70.1306 416.5001,-80.1306 423.5001,-80.1306"/>
-<text text-anchor="start" x="420" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[i == 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M412,-159.7983C412,-152.007 412,-142.8073 412,-134.5 412,-134.5 412,-134.5 412,-87.5 412,-85.127 412,-82.6757 412,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="415.5001,-80.1306 412,-70.1306 408.5001,-80.1306 415.5001,-80.1306"/>
+<text text-anchor="start" x="412" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[i == 2] &#160;&#160;</text>
 </g>
 <!-- _p_increment -->
 <!-- _p_increment_initial -->