Explorar el Código

Begin adding examples from Day & Atlee paper. Clearer error when <state> initial attribute is invalid. SVG renderer: workaround for order of orthogonal components.

Joeri Exelmans hace 5 años
padre
commit
0e4e6fdd0d

+ 4 - 1
src/sccd/parser/statechart_parser.py

@@ -198,7 +198,10 @@ class StateParser(ActionParser):
 
     initial = el.get("initial", None)
     if initial is not None:
-      state.default_state = state_children[initial]
+      try:
+        state.default_state = state_children[initial]
+      except KeyError as e:
+        raise Exception("initial=\"%s\": not a child." % (initial)) from e
     elif len(state.children) == 1:
       state.default_state = state.children[0]
     elif len(state.children) > 1:

+ 120 - 113
test/render.py

@@ -35,122 +35,129 @@ if __name__ == '__main__':
       exit()
 
     def process(src):
-      parser = StatechartParser(load_external = False)
-      parser.globals.push(Globals(fixed_delta = None))
-      parser.statecharts.push([])
-      parser.parse(src)
-      statecharts = parser.statecharts.pop()
-      if len(statecharts) != 1:
-        return # no statechart here :(
-
-      statechart = statecharts[0]
-      root = statechart.tree.root
-
-      target_path = lambda ext: os.path.join(args.output_dir, dropext(src)+ext)
-      smcat_target = target_path('.smcat')
-      svg_target = target_path('.svg')
-      
-      make_dirs(smcat_target)
-
-      f = open(smcat_target, 'w')
-      w = IndentingWriter(f)
-
-      def name_to_label(name):
-        label = name.split('/')[-1]
-        return label if len(label) else "root"
-      def name_to_name(name):
-        return name.replace('/','_')
-
-      # Used for drawing initial state
-      class PseudoState:
-        @dataclass
-        class Gen:
-          full_name: str
-        def __init__(self, name):
-          self.gen = PseudoState.Gen(name)
-      # Used for drawing initial state
-      class PseudoTransition:
-        def __init__(self, source, targets):
-          self.source = source
-          self.targets = targets
-          self.guard = None
-          self.trigger = None
-          self.actions = []
-
-      transitions = []
-
-      def write_state(s, hide=False):
-        if not hide:
-          w.write(name_to_name(s.gen.full_name))
-          w.extendWrite(' [label="')
-          w.extendWrite(name_to_label(s.gen.full_name))
-          w.extendWrite('"')
-          if isinstance(s, ParallelState):
-            w.extendWrite(' type=parallel')
-          elif isinstance(s, ShallowHistoryState):
-            w.extendWrite(' type=history')
-          elif isinstance(s, DeepHistoryState):
-            w.extendWrite(' type=deephistory')
-          else:
-            w.extendWrite(' type=regular')
-          w.extendWrite(']')
-        if s.enter or s.exit:
-          w.extendWrite(' :')
-          for a in s.enter:
-            w.write("onentry/ "+a.render())
-          for a in s.exit:
-            w.write("onexit/ "+a.render())
-          w.write()
-        if s.children:
-          if not hide:
-            w.extendWrite(' {')
-            w.indent()
-          if s.default_state:
-            w.write(name_to_name(s.gen.full_name)+'_initial [type=initial],')
-            transitions.append(PseudoTransition(source=PseudoState(s.gen.full_name+'/initial'), targets=[s.default_state]))
-          for i, c in enumerate(s.children):
-            write_state(c)
-            w.extendWrite(',' if i < len(s.children)-1 else ';')
+      try:
+        parser = StatechartParser(load_external = False)
+        parser.globals.push(Globals(fixed_delta = None))
+        parser.statecharts.push([])
+        parser.parse(src)
+        statecharts = parser.statecharts.pop()
+        if len(statecharts) != 1:
+          return # no statechart here :(
+
+        statechart = statecharts[0]
+        root = statechart.tree.root
+
+        target_path = lambda ext: os.path.join(args.output_dir, dropext(src)+ext)
+        smcat_target = target_path('.smcat')
+        svg_target = target_path('.svg')
+        
+        make_dirs(smcat_target)
+
+        f = open(smcat_target, 'w')
+        w = IndentingWriter(f)
+
+        def name_to_label(name):
+          label = name.split('/')[-1]
+          return label if len(label) else "root"
+        def name_to_name(name):
+          return name.replace('/','_')
+
+        # Used for drawing initial state
+        class PseudoState:
+          @dataclass
+          class Gen:
+            full_name: str
+          def __init__(self, name):
+            self.gen = PseudoState.Gen(name)
+        # Used for drawing initial state
+        class PseudoTransition:
+          def __init__(self, source, targets):
+            self.source = source
+            self.targets = targets
+            self.guard = None
+            self.trigger = None
+            self.actions = []
+
+        transitions = []
+
+        def write_state(s, hide=False):
           if not hide:
-            w.dedent()
-            w.write('}')
-        transitions.extend(s.transitions)
-
-      write_state(root, hide=True)
-
-      ctr = 0
-      for t in transitions:
-        label = ""
-        if t.trigger:
-          label += t.trigger.render()
-        if t.guard:
-          label += ' ['+t.guard.render()+']'
-        if t.actions:
-          label += ' '.join(a.render() for a in t.actions)
-
-        if len(t.targets) == 1:
-          w.write(name_to_name(t.source.gen.full_name) + ' -> ' + name_to_name(t.targets[0].gen.full_name))
-          if label:
-            w.extendWrite(': '+label)
-          w.extendWrite(';')
-        else:
-          w.write(name_to_name(t.source.gen.full_name) + ' -> ' + ']split'+str(ctr))
-          if label:
+            w.write(name_to_name(s.gen.full_name))
+            w.extendWrite(' [label="')
+            w.extendWrite(name_to_label(s.gen.full_name))
+            w.extendWrite('"')
+            if isinstance(s, ParallelState):
+              w.extendWrite(' type=parallel')
+            elif isinstance(s, ShallowHistoryState):
+              w.extendWrite(' type=history')
+            elif isinstance(s, DeepHistoryState):
+              w.extendWrite(' type=deephistory')
+            else:
+              w.extendWrite(' type=regular')
+            w.extendWrite(']')
+          if s.enter or s.exit:
+            w.extendWrite(' :')
+            for a in s.enter:
+              w.write("onentry/ "+a.render())
+            for a in s.exit:
+              w.write("onexit/ "+a.render())
+            w.write()
+          if s.children:
+            if not hide:
+              w.extendWrite(' {')
+              w.indent()
+            if s.default_state:
+              w.write(name_to_name(s.gen.full_name)+'_initial [type=initial],')
+              transitions.append(PseudoTransition(source=PseudoState(s.gen.full_name+'/initial'), targets=[s.default_state]))
+            s.children.reverse() # this appears to put orthogonal components in the right order :)
+            for i, c in enumerate(s.children):
+              write_state(c)
+              w.extendWrite(',' if i < len(s.children)-1 else ';')
+            if not hide:
+              w.dedent()
+              w.write('}')
+          transitions.extend(s.transitions)
+
+        write_state(root, hide=True)
+
+        ctr = 0
+        for t in transitions:
+          label = ""
+          if t.trigger:
+            label += t.trigger.render()
+          if t.guard:
+            label += ' ['+t.guard.render()+']'
+          if t.actions:
+            label += ' '.join(a.render() for a in t.actions)
+
+          if len(t.targets) == 1:
+            w.write(name_to_name(t.source.gen.full_name) + ' -> ' + name_to_name(t.targets[0].gen.full_name))
+            if label:
               w.extendWrite(': '+label)
-          w.extendWrite(';')
-          for tt in t.targets:
-            w.write(']split'+str(ctr) + ' -> ' + name_to_name(tt.gen.full_name))
             w.extendWrite(';')
-          ctr += 1
-
-      f.close()
-      if args.keep_smcat:
-        print("Wrote "+smcat_target)
-      if not args.no_svg:
-        subprocess.run(["state-machine-cat", smcat_target, "-o", svg_target])
-        print("Wrote "+svg_target)
-      if not args.keep_smcat:
-        os.remove(smcat_target)
+          else:
+            w.write(name_to_name(t.source.gen.full_name) + ' -> ' + ']split'+str(ctr))
+            if label:
+                w.extendWrite(': '+label)
+            w.extendWrite(';')
+            for tt in t.targets:
+              w.write(']split'+str(ctr) + ' -> ' + name_to_name(tt.gen.full_name))
+              w.extendWrite(';')
+            ctr += 1
+
+        f.close()
+        if args.keep_smcat:
+          print("Wrote "+smcat_target)
+        if not args.no_svg:
+          subprocess.run(["state-machine-cat", smcat_target, "-o", svg_target])
+          print("Wrote "+svg_target)
+        if not args.keep_smcat:
+          os.remove(smcat_target)
+          
+      except Exception as e:
+        # import traceback
+        # traceback.print_exception(type(e), e, None)
+        print(e,'\n')
 
     pool_size = min(args.pool_size, len(srcs))
     with multiprocessing.Pool(processes=pool_size) as pool:

+ 39 - 0
test/test_files/day_atlee/statechart_fig7_dialer.svg

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: state transitions Pages: 1 -->
+<svg width="228pt" height="83pt"
+ viewBox="0.00 0.00 227.70 83.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 79)">
+<title>state transitions</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-79 223.696,-79 223.696,4 -4,4"/>
+<!-- __initial -->
+<g id="node1" class="node">
+<title>__initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="28" cy="-69.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _D -->
+<g id="node2" class="node">
+<title>_D</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="56,-36 0,-36 0,0 56,0 56,-36"/>
+<text text-anchor="start" x="23.6686" y="-14.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">D</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M12.3333,-1C12.3333,-1 43.6667,-1 43.6667,-1 49.3333,-1 55,-6.6667 55,-12.3333 55,-12.3333 55,-23.6667 55,-23.6667 55,-29.3333 49.3333,-35 43.6667,-35 43.6667,-35 12.3333,-35 12.3333,-35 6.6667,-35 1,-29.3333 1,-23.6667 1,-23.6667 1,-12.3333 1,-12.3333 1,-6.6667 6.6667,-1 12.3333,-1"/>
+</g>
+<!-- __initial&#45;&gt;_D -->
+<g id="edge1" class="edge">
+<title>__initial&#45;&gt;_D</title>
+<path fill="none" stroke="#000000" d="M28,-63.9886C28,-59.6293 28,-53.1793 28,-46.4801"/>
+<polygon fill="#000000" stroke="#000000" points="31.5001,-46.0122 28,-36.0122 24.5001,-46.0122 31.5001,-46.0122"/>
+<text text-anchor="middle" x="29.3895" y="-47" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _D&#45;&gt;_D -->
+<g id="edge2" class="edge">
+<title>_D&#45;&gt;_D</title>
+<path fill="none" stroke="#000000" d="M56.0183,-23.9381C67.888,-24.3856 78,-22.4063 78,-18 78,-14.9707 73.2205,-13.0885 66.3762,-12.3533"/>
+<polygon fill="#000000" stroke="#000000" points="66.1128,-8.8446 56.0183,-12.0619 65.9158,-15.8419 66.1128,-8.8446"/>
+<text text-anchor="start" x="78" y="-15" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.dial [c &lt; 10]/c += 1 &#160;^out.out &#160;&#160;</text>
+</g>
+</g>
+</svg>

+ 22 - 0
test/test_files/day_atlee/statechart_fig7_dialer.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+<statechart>
+  <semantics input_event_lifeline="whole"/>
+
+  <datamodel>
+    <var id="c" expr="0"/>
+  </datamodel>
+
+  <tree>
+    <state initial="D">
+      <state id="D">
+        <transition port="in" event="dial" cond="c &lt; 10" target=".">
+          <parameter name="d" />
+          <code> c += 1; </code>
+          <raise port="out" event="out">
+            <parameter expr="d"/>
+          </raise>
+        </transition>
+      </state>
+    </state>
+  </tree>
+</statechart>

+ 123 - 0
test/test_files/day_atlee/statechart_fig8_counter.svg

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: state transitions Pages: 1 -->
+<svg width="389pt" height="394pt"
+ viewBox="0.00 0.00 389.00 394.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 390)">
+<title>state transitions</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-390 385,-390 385,4 -4,4"/>
+<g id="clust1" class="cluster">
+<title>cluster__Counter</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M20,-8C20,-8 361,-8 361,-8 367,-8 373,-14 373,-20 373,-20 373,-335 373,-335 373,-341 367,-347 361,-347 361,-347 20,-347 20,-347 14,-347 8,-341 8,-335 8,-335 8,-20 8,-20 8,-14 14,-8 20,-8"/>
+<text text-anchor="start" x="169.1622" y="-328.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Counter</text>
+</g>
+<g id="clust2" class="cluster">
+<title>cluster__Counter_Bit_2</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="196,-16 196,-309 365,-309 365,-16 196,-16"/>
+<text text-anchor="start" x="267.329" y="-290.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_2</text>
+</g>
+<g id="clust3" class="cluster">
+<title>cluster__Counter_Bit_1</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-309 188,-309 188,-16 24,-16"/>
+<text text-anchor="start" x="92.829" y="-290.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_1</text>
+</g>
+<!-- __initial -->
+<g id="node1" class="node">
+<title>__initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="16" cy="-380.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _Counter -->
+<!-- __initial&#45;&gt;_Counter -->
+<g id="edge1" class="edge">
+<title>__initial&#45;&gt;_Counter</title>
+<path fill="none" stroke="#000000" d="M16,-374.9533C16,-370.7779 16,-364.5043 16,-357.0332"/>
+<polygon fill="#000000" stroke="#000000" points="19.5001,-356.9971 16,-346.9971 12.5001,-356.9972 19.5001,-356.9971"/>
+<text text-anchor="middle" x="17.3895" y="-358" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _Counter_Bit_2 -->
+<!-- _Counter_Bit_2_initial -->
+<g id="node4" class="node">
+<title>_Counter_Bit_2_initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="256" cy="-265.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _Counter_Bit_2_Bit_21 -->
+<g id="node6" class="node">
+<title>_Counter_Bit_2_Bit_21</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="284,-178 228,-178 228,-142 284,-142 284,-178"/>
+<text text-anchor="start" x="238.9936" y="-156.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_21</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M240.3333,-143C240.3333,-143 271.6667,-143 271.6667,-143 277.3333,-143 283,-148.6667 283,-154.3333 283,-154.3333 283,-165.6667 283,-165.6667 283,-171.3333 277.3333,-177 271.6667,-177 271.6667,-177 240.3333,-177 240.3333,-177 234.6667,-177 229,-171.3333 229,-165.6667 229,-165.6667 229,-154.3333 229,-154.3333 229,-148.6667 234.6667,-143 240.3333,-143"/>
+</g>
+<!-- _Counter_Bit_2_initial&#45;&gt;_Counter_Bit_2_Bit_21 -->
+<g id="edge2" class="edge">
+<title>_Counter_Bit_2_initial&#45;&gt;_Counter_Bit_2_Bit_21</title>
+<path fill="none" stroke="#000000" d="M256,-259.8288C256,-255.1736 256,-248.4097 256,-242.5 256,-242.5 256,-242.5 256,-195.5 256,-193.1079 256,-190.6252 256,-188.1342"/>
+<polygon fill="#000000" stroke="#000000" points="259.5001,-188.0597 256,-178.0598 252.5001,-188.0598 259.5001,-188.0597"/>
+<text text-anchor="middle" x="257.3895" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _Counter_Bit_2_Bit_22 -->
+<g id="node5" class="node">
+<title>_Counter_Bit_2_Bit_22</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="309,-60 253,-60 253,-24 309,-24 309,-60"/>
+<text text-anchor="start" x="263.9936" y="-38.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_22</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M265.3333,-25C265.3333,-25 296.6667,-25 296.6667,-25 302.3333,-25 308,-30.6667 308,-36.3333 308,-36.3333 308,-47.6667 308,-47.6667 308,-53.3333 302.3333,-59 296.6667,-59 296.6667,-59 265.3333,-59 265.3333,-59 259.6667,-59 254,-53.3333 254,-47.6667 254,-47.6667 254,-36.3333 254,-36.3333 254,-30.6667 259.6667,-25 265.3333,-25"/>
+</g>
+<!-- _Counter_Bit_2_Bit_22&#45;&gt;_Counter_Bit_2_Bit_21 -->
+<g id="edge3" class="edge">
+<title>_Counter_Bit_2_Bit_22&#45;&gt;_Counter_Bit_2_Bit_21</title>
+<path fill="none" stroke="#000000" d="M252.8555,-49.0879C239.3237,-54.3567 226,-63.1802 226,-77.5 226,-124.5 226,-124.5 226,-124.5 226,-127.5259 226.6437,-130.4271 227.7426,-133.1752"/>
+<polygon fill="#000000" stroke="#000000" points="224.8185,-135.1048 232.958,-141.8871 230.8245,-131.5093 224.8185,-135.1048"/>
+<text text-anchor="start" x="226" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tk1^out.done &#160;&#160;</text>
+</g>
+<!-- _Counter_Bit_2_Bit_21&#45;&gt;_Counter_Bit_2_Bit_22 -->
+<g id="edge4" class="edge">
+<title>_Counter_Bit_2_Bit_21&#45;&gt;_Counter_Bit_2_Bit_22</title>
+<path fill="none" stroke="#000000" d="M284.0749,-152.9703C306.7818,-146.4366 335,-136.0029 335,-124.5 335,-124.5 335,-124.5 335,-77.5 335,-66.9572 327.7242,-59.3711 318.514,-53.9915"/>
+<polygon fill="#000000" stroke="#000000" points="319.788,-50.7189 309.2652,-49.4854 316.722,-57.0118 319.788,-50.7189"/>
+<text text-anchor="start" x="335" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tk1 &#160;&#160;</text>
+</g>
+<!-- _Counter_Bit_1 -->
+<!-- _Counter_Bit_1_initial -->
+<g id="node8" class="node">
+<title>_Counter_Bit_1_initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="83" cy="-265.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _Counter_Bit_1_Bit_11 -->
+<g id="node10" class="node">
+<title>_Counter_Bit_1_Bit_11</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="111,-178 55,-178 55,-142 111,-142 111,-178"/>
+<text text-anchor="start" x="65.9936" y="-156.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_11</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M67.3333,-143C67.3333,-143 98.6667,-143 98.6667,-143 104.3333,-143 110,-148.6667 110,-154.3333 110,-154.3333 110,-165.6667 110,-165.6667 110,-171.3333 104.3333,-177 98.6667,-177 98.6667,-177 67.3333,-177 67.3333,-177 61.6667,-177 56,-171.3333 56,-165.6667 56,-165.6667 56,-154.3333 56,-154.3333 56,-148.6667 61.6667,-143 67.3333,-143"/>
+</g>
+<!-- _Counter_Bit_1_initial&#45;&gt;_Counter_Bit_1_Bit_11 -->
+<g id="edge5" class="edge">
+<title>_Counter_Bit_1_initial&#45;&gt;_Counter_Bit_1_Bit_11</title>
+<path fill="none" stroke="#000000" d="M83,-259.8288C83,-255.1736 83,-248.4097 83,-242.5 83,-242.5 83,-242.5 83,-195.5 83,-193.1079 83,-190.6252 83,-188.1342"/>
+<polygon fill="#000000" stroke="#000000" points="86.5001,-188.0597 83,-178.0598 79.5001,-188.0598 86.5001,-188.0597"/>
+<text text-anchor="middle" x="84.3895" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _Counter_Bit_1_Bit_12 -->
+<g id="node9" class="node">
+<title>_Counter_Bit_1_Bit_12</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="132,-60 76,-60 76,-24 132,-24 132,-60"/>
+<text text-anchor="start" x="86.9936" y="-38.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">Bit_12</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M88.3333,-25C88.3333,-25 119.6667,-25 119.6667,-25 125.3333,-25 131,-30.6667 131,-36.3333 131,-36.3333 131,-47.6667 131,-47.6667 131,-53.3333 125.3333,-59 119.6667,-59 119.6667,-59 88.3333,-59 88.3333,-59 82.6667,-59 77,-53.3333 77,-47.6667 77,-47.6667 77,-36.3333 77,-36.3333 77,-30.6667 82.6667,-25 88.3333,-25"/>
+</g>
+<!-- _Counter_Bit_1_Bit_12&#45;&gt;_Counter_Bit_1_Bit_11 -->
+<g id="edge6" class="edge">
+<title>_Counter_Bit_1_Bit_12&#45;&gt;_Counter_Bit_1_Bit_11</title>
+<path fill="none" stroke="#000000" d="M75.7853,-51.016C64.4439,-56.5586 54,-65.0442 54,-77.5 54,-124.5 54,-124.5 54,-124.5 54,-127.4843 54.6223,-130.3561 55.6845,-133.0842"/>
+<polygon fill="#000000" stroke="#000000" points="52.6759,-134.8731 60.7261,-141.7613 58.7285,-131.3564 52.6759,-134.8731"/>
+<text text-anchor="start" x="54" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.tk0^tk1 &#160;&#160;</text>
+</g>
+<!-- _Counter_Bit_1_Bit_11&#45;&gt;_Counter_Bit_1_Bit_12 -->
+<g id="edge7" class="edge">
+<title>_Counter_Bit_1_Bit_11&#45;&gt;_Counter_Bit_1_Bit_12</title>
+<path fill="none" stroke="#000000" d="M111.3209,-155.7321C128.837,-151.3027 148,-142.3727 148,-124.5 148,-124.5 148,-124.5 148,-77.5 148,-70.6416 144.7219,-64.8825 139.9553,-60.1334"/>
+<polygon fill="#000000" stroke="#000000" points="142.1174,-57.3809 132.115,-53.8878 137.7559,-62.8561 142.1174,-57.3809"/>
+<text text-anchor="start" x="148" y="-98" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.tk0 &#160;&#160;</text>
+</g>
+</g>
+</svg>

+ 36 - 0
test/test_files/day_atlee/statechart_fig8_counter.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" ?>
+<statechart>
+  <semantics />
+
+  <datamodel>
+    <var id="c" expr="0"/>
+  </datamodel>
+
+  <tree>
+    <state>
+      <parallel id="Counter">
+        <state id="Bit_1" initial="Bit_11">
+          <state id="Bit_11">
+            <transition port="in" event="tk0" target="../Bit_12"/>
+          </state>
+          <state id="Bit_12">
+            <transition port="in" event="tk0" target="../Bit_11">
+              <raise event="tk1"/>
+            </transition>
+          </state>
+        </state>
+
+        <state id="Bit_2" initial="Bit_21">
+          <state id="Bit_21">
+            <transition event="tk1" target="../Bit_22"/>
+          </state>
+          <state id="Bit_22">
+            <transition event="tk1" target="../Bit_21">
+              <raise port="out" event="done"/>
+            </transition>
+          </state>
+        </state>
+      </parallel>
+    </state>
+  </tree>
+</statechart>

+ 46 - 0
test/test_files/day_atlee/test_01_dialer_takemany.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+<test>
+  <statechart src="statechart_fig7_dialer.xml">
+    <override_semantics big_step_maximality="take_many"/>
+  </statechart>
+
+  <input>
+    <input_event port="in" name="dial" time="0 d">
+    </input_event>
+  </input>
+
+  <output>
+    <big_step>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+    </big_step>
+  </output>
+</test>

+ 19 - 0
test/test_files/day_atlee/test_01_dialer_takeone.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" ?>
+<test>
+  <statechart src="statechart_fig7_dialer.xml">
+    <override_semantics big_step_maximality="take_one"/>
+  </statechart>
+
+  <input>
+    <input_event port="in" name="dial" time="0 d">
+    </input_event>
+  </input>
+
+  <output>
+    <big_step>
+      <event port="out" name="out">
+        <!-- <parameter /> -->
+      </event>
+    </big_step>
+  </output>
+</test>

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

@@ -15,7 +15,7 @@
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="117" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _s1 -->
-<g id="node2" class="node">
+<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>
@@ -28,8 +28,26 @@
 <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>
 </g>
-<!-- _s2 -->
+<!-- _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"/>
+</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"/>
+</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>
@@ -37,44 +55,26 @@
 <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"/>
 </g>
-<!-- _s1&#45;&gt;_s2 -->
+<!-- _s2&#45;&gt;_s4 -->
 <g id="edge2" 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="86" y="-131" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(100 ms) &#160;&#160;</text>
-</g>
-<!-- _s3 -->
-<g id="node4" 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"/>
+<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>
 </g>
 <!-- _s1&#45;&gt;_s3 -->
-<g id="edge3" class="edge">
+<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>
 </g>
-<!-- _s4 -->
-<g id="node5" 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"/>
-</g>
-<!-- _s2&#45;&gt;_s4 -->
-<g id="edge4" 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>
+<!-- _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>
 </g>
 </g>
 </svg>

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

@@ -15,14 +15,14 @@
 <text text-anchor="start" x="256.1646" y="-338.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">p</text>
 </g>
 <g id="clust2" class="cluster">
-<title>cluster__p_o0</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="138,-16 138,-319 503,-319 503,-16 138,-16"/>
-<text text-anchor="start" x="314.3292" y="-300.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
+<title>cluster__p_o1</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="397,-21 397,-319 503,-319 503,-21 397,-21"/>
+<text text-anchor="start" x="443.8292" y="-300.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
 </g>
 <g id="clust3" class="cluster">
-<title>cluster__p_o1</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-21 24,-319 130,-319 130,-21 24,-21"/>
-<text text-anchor="start" x="70.8292" y="-300.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
+<title>cluster__p_o0</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-319 389,-319 389,-16 24,-16"/>
+<text text-anchor="start" x="200.3292" y="-300.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -37,98 +37,98 @@
 <polygon fill="#000000" stroke="#000000" points="19.5001,-366.9971 16,-356.9971 12.5001,-366.9972 19.5001,-366.9971"/>
 <text text-anchor="middle" x="17.3895" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
+<!-- _p_o1 -->
+<!-- _p_o1_initial -->
+<g id="node4" class="node">
+<title>_p_o1_initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="433" cy="-275.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _p_o1_x -->
+<g id="node6" class="node">
+<title>_p_o1_x</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="461,-188 405,-188 405,-152 461,-152 461,-188"/>
+<text text-anchor="start" x="430" y="-166.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">x</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M417.3333,-153C417.3333,-153 448.6667,-153 448.6667,-153 454.3333,-153 460,-158.6667 460,-164.3333 460,-164.3333 460,-175.6667 460,-175.6667 460,-181.3333 454.3333,-187 448.6667,-187 448.6667,-187 417.3333,-187 417.3333,-187 411.6667,-187 406,-181.3333 406,-175.6667 406,-175.6667 406,-164.3333 406,-164.3333 406,-158.6667 411.6667,-153 417.3333,-153"/>
+</g>
+<!-- _p_o1_initial&#45;&gt;_p_o1_x -->
+<g id="edge2" class="edge">
+<title>_p_o1_initial&#45;&gt;_p_o1_x</title>
+<path fill="none" stroke="#000000" d="M433,-269.8288C433,-265.1736 433,-258.4097 433,-252.5 433,-252.5 433,-252.5 433,-205.5 433,-203.1079 433,-200.6252 433,-198.1342"/>
+<polygon fill="#000000" stroke="#000000" points="436.5001,-198.0597 433,-188.0598 429.5001,-198.0598 436.5001,-198.0597"/>
+<text text-anchor="middle" x="434.3895" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _p_o1_y -->
+<g id="node5" class="node">
+<title>_p_o1_y</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="461,-65 405,-65 405,-29 461,-29 461,-65"/>
+<text text-anchor="start" x="430" y="-43.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">y</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M417.3333,-30C417.3333,-30 448.6667,-30 448.6667,-30 454.3333,-30 460,-35.6667 460,-41.3333 460,-41.3333 460,-52.6667 460,-52.6667 460,-58.3333 454.3333,-64 448.6667,-64 448.6667,-64 417.3333,-64 417.3333,-64 411.6667,-64 406,-58.3333 406,-52.6667 406,-52.6667 406,-41.3333 406,-41.3333 406,-35.6667 411.6667,-30 417.3333,-30"/>
+</g>
+<!-- _p_o1_x&#45;&gt;_p_o1_y -->
+<g id="edge3" class="edge">
+<title>_p_o1_x&#45;&gt;_p_o1_y</title>
+<path fill="none" stroke="#000000" d="M428.7033,-151.6741C427.7416,-146.1833 427,-140.1255 427,-134.5 427,-134.5 427,-134.5 427,-87.5 427,-83.4573 427.2962,-79.2119 427.7569,-75.0534"/>
+<polygon fill="#000000" stroke="#000000" points="431.2353,-75.4511 429.1661,-65.0603 424.3039,-74.4736 431.2353,-75.4511"/>
+<text text-anchor="start" x="427" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(250 ms) &#160;&#160;</text>
+</g>
 <!-- _p_o0 -->
 <!-- _p_o0_initial -->
-<g id="node4" class="node">
+<g id="node8" class="node">
 <title>_p_o0_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="380" cy="-275.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="101" cy="-275.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_o0_a -->
-<g id="node5" class="node">
+<g id="node11" class="node">
 <title>_p_o0_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="408,-188 352,-188 352,-152 408,-152 408,-188"/>
-<text text-anchor="start" x="376.6646" y="-166.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M364.3333,-153C364.3333,-153 395.6667,-153 395.6667,-153 401.3333,-153 407,-158.6667 407,-164.3333 407,-164.3333 407,-175.6667 407,-175.6667 407,-181.3333 401.3333,-187 395.6667,-187 395.6667,-187 364.3333,-187 364.3333,-187 358.6667,-187 353,-181.3333 353,-175.6667 353,-175.6667 353,-164.3333 353,-164.3333 353,-158.6667 358.6667,-153 364.3333,-153"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="129,-188 73,-188 73,-152 129,-152 129,-188"/>
+<text text-anchor="start" x="97.6646" y="-166.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M85.3333,-153C85.3333,-153 116.6667,-153 116.6667,-153 122.3333,-153 128,-158.6667 128,-164.3333 128,-164.3333 128,-175.6667 128,-175.6667 128,-181.3333 122.3333,-187 116.6667,-187 116.6667,-187 85.3333,-187 85.3333,-187 79.6667,-187 74,-181.3333 74,-175.6667 74,-175.6667 74,-164.3333 74,-164.3333 74,-158.6667 79.6667,-153 85.3333,-153"/>
 </g>
 <!-- _p_o0_initial&#45;&gt;_p_o0_a -->
-<g id="edge2" class="edge">
+<g id="edge4" class="edge">
 <title>_p_o0_initial&#45;&gt;_p_o0_a</title>
-<path fill="none" stroke="#000000" d="M380,-269.8288C380,-265.1736 380,-258.4097 380,-252.5 380,-252.5 380,-252.5 380,-205.5 380,-203.1079 380,-200.6252 380,-198.1342"/>
-<polygon fill="#000000" stroke="#000000" points="383.5001,-198.0597 380,-188.0598 376.5001,-198.0598 383.5001,-198.0597"/>
-<text text-anchor="middle" x="381.3895" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-</g>
-<!-- _p_o0_b -->
-<g id="node6" class="node">
-<title>_p_o0_b</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="302,-70 196,-70 196,-24 302,-24 302,-70"/>
-<text text-anchor="start" x="245.6646" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">b</text>
-<text text-anchor="start" x="201.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="196,-47 196,-47 302,-47 302,-47 196,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M209,-25C209,-25 289,-25 289,-25 295,-25 301,-31 301,-37 301,-37 301,-57 301,-57 301,-63 295,-69 289,-69 289,-69 209,-69 209,-69 203,-69 197,-63 197,-57 197,-57 197,-37 197,-37 197,-31 203,-25 209,-25"/>
-</g>
-<!-- _p_o0_a&#45;&gt;_p_o0_b -->
-<g id="edge3" class="edge">
-<title>_p_o0_a&#45;&gt;_p_o0_b</title>
-<path fill="none" stroke="#000000" d="M351.848,-168.1724C294.1799,-164.0503 168,-152.9258 168,-134.5 168,-134.5 168,-134.5 168,-87.5 168,-74.97 175.85,-66.3164 186.6625,-60.3401"/>
-<polygon fill="#000000" stroke="#000000" points="188.2559,-63.4597 195.8756,-56.0982 185.3283,-57.1012 188.2559,-63.4597"/>
-<text text-anchor="start" x="168" 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>
+<path fill="none" stroke="#000000" d="M101,-269.8288C101,-265.1736 101,-258.4097 101,-252.5 101,-252.5 101,-252.5 101,-205.5 101,-203.1079 101,-200.6252 101,-198.1342"/>
+<polygon fill="#000000" stroke="#000000" points="104.5001,-198.0597 101,-188.0598 97.5001,-198.0598 104.5001,-198.0597"/>
+<text text-anchor="middle" x="102.3895" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_o0_c -->
-<g id="node7" class="node">
+<g id="node9" class="node">
 <title>_p_o0_c</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="480,-70 374,-70 374,-24 480,-24 480,-70"/>
-<text text-anchor="start" x="424" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="379.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="374,-47 374,-47 480,-47 480,-47 374,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M387,-25C387,-25 467,-25 467,-25 473,-25 479,-31 479,-37 479,-37 479,-57 479,-57 479,-63 473,-69 467,-69 467,-69 387,-69 387,-69 381,-69 375,-63 375,-57 375,-57 375,-37 375,-37 375,-31 381,-25 387,-25"/>
+<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"/>
 </g>
-<!-- _p_o0_a&#45;&gt;_p_o0_c -->
-<g id="edge4" class="edge">
-<title>_p_o0_a&#45;&gt;_p_o0_c</title>
-<path fill="none" stroke="#000000" d="M408.1541,-159.659C418.1638,-154.0322 427,-145.8506 427,-134.5 427,-134.5 427,-134.5 427,-87.5 427,-85.127 427,-82.6757 427,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="430.5001,-80.1306 427,-70.1306 423.5001,-80.1306 430.5001,-80.1306"/>
-<text text-anchor="start" x="427" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(150 ms) &#160;&#160;</text>
+<!-- _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"/>
 </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="M302.2827,-58.5519C338.5508,-67.1869 380,-78.9301 380,-87.5 380,-134.5 380,-134.5 380,-134.5 380,-136.8921 380,-139.3748 380,-141.8658"/>
-<polygon fill="#000000" stroke="#000000" points="376.5001,-141.9402 380,-151.9402 383.5001,-141.9403 376.5001,-141.9402"/>
-<text text-anchor="middle" x="381.3895" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-</g>
-<!-- _p_o1 -->
-<!-- _p_o1_initial -->
-<g id="node9" class="node">
-<title>_p_o1_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="60" cy="-275.5" rx="5.5" ry="5.5"/>
+<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"/>
+<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>
-<!-- _p_o1_x -->
-<g id="node10" class="node">
-<title>_p_o1_x</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="88,-188 32,-188 32,-152 88,-152 88,-188"/>
-<text text-anchor="start" x="57" y="-166.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">x</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M44.3333,-153C44.3333,-153 75.6667,-153 75.6667,-153 81.3333,-153 87,-158.6667 87,-164.3333 87,-164.3333 87,-175.6667 87,-175.6667 87,-181.3333 81.3333,-187 75.6667,-187 75.6667,-187 44.3333,-187 44.3333,-187 38.6667,-187 33,-181.3333 33,-175.6667 33,-175.6667 33,-164.3333 33,-164.3333 33,-158.6667 38.6667,-153 44.3333,-153"/>
+<!-- _p_o0_a&#45;&gt;_p_o0_c -->
+<g id="edge7" class="edge">
+<title>_p_o0_a&#45;&gt;_p_o0_c</title>
+<path fill="none" stroke="#000000" d="M129.152,-168.1724C186.8201,-164.0503 313,-152.9258 313,-134.5 313,-134.5 313,-134.5 313,-87.5 313,-85.127 313,-82.6757 313,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="316.5001,-80.1306 313,-70.1306 309.5001,-80.1306 316.5001,-80.1306"/>
+<text text-anchor="start" x="313" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(150 ms) &#160;&#160;</text>
 </g>
-<!-- _p_o1_initial&#45;&gt;_p_o1_x -->
+<!-- _p_o0_a&#45;&gt;_p_o0_b -->
 <g id="edge6" class="edge">
-<title>_p_o1_initial&#45;&gt;_p_o1_x</title>
-<path fill="none" stroke="#000000" d="M60,-269.8288C60,-265.1736 60,-258.4097 60,-252.5 60,-252.5 60,-252.5 60,-205.5 60,-203.1079 60,-200.6252 60,-198.1342"/>
-<polygon fill="#000000" stroke="#000000" points="63.5001,-198.0597 60,-188.0598 56.5001,-198.0598 63.5001,-198.0597"/>
-<text text-anchor="middle" x="61.3895" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-</g>
-<!-- _p_o1_y -->
-<g id="node11" class="node">
-<title>_p_o1_y</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="88,-65 32,-65 32,-29 88,-29 88,-65"/>
-<text text-anchor="start" x="57" y="-43.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">y</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M44.3333,-30C44.3333,-30 75.6667,-30 75.6667,-30 81.3333,-30 87,-35.6667 87,-41.3333 87,-41.3333 87,-52.6667 87,-52.6667 87,-58.3333 81.3333,-64 75.6667,-64 75.6667,-64 44.3333,-64 44.3333,-64 38.6667,-64 33,-58.3333 33,-52.6667 33,-52.6667 33,-41.3333 33,-41.3333 33,-35.6667 38.6667,-30 44.3333,-30"/>
-</g>
-<!-- _p_o1_x&#45;&gt;_p_o1_y -->
-<g id="edge7" class="edge">
-<title>_p_o1_x&#45;&gt;_p_o1_y</title>
-<path fill="none" stroke="#000000" d="M55.7033,-151.6741C54.7416,-146.1833 54,-140.1255 54,-134.5 54,-134.5 54,-134.5 54,-87.5 54,-83.4573 54.2962,-79.2119 54.7569,-75.0534"/>
-<polygon fill="#000000" stroke="#000000" points="58.2353,-75.4511 56.1661,-65.0603 51.3039,-74.4736 58.2353,-75.4511"/>
-<text text-anchor="start" x="54" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">after(250 ms) &#160;&#160;</text>
+<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"/>
+<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>
 </svg>

+ 2 - 2
test/test_files/features/datamodel/test_cond.svg

@@ -15,7 +15,7 @@
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="28" cy="-133.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _start -->
-<g id="node2" class="node">
+<g id="node3" class="node">
 <title>_start</title>
 <polygon fill="transparent" stroke="transparent" stroke-width="2" points="56,-100 0,-100 0,-64 56,-64 56,-100"/>
 <text text-anchor="start" x="16.3324" y="-78.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">start</text>
@@ -29,7 +29,7 @@
 <text text-anchor="middle" x="29.3895" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _done -->
-<g id="node3" class="node">
+<g id="node2" class="node">
 <title>_done</title>
 <polygon fill="transparent" stroke="transparent" stroke-width="2" points="56,-36 0,-36 0,0 56,0 56,-36"/>
 <text text-anchor="start" x="14.6584" y="-14.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>

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

@@ -15,7 +15,7 @@
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="55.5" cy="-143.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _counting -->
-<g id="node2" class="node">
+<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>
@@ -28,22 +28,8 @@
 <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>
 </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">in.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.2372,-97.443C112.4222,-99.0331 135.453,-97.2188 135.453,-92 135.453,-87.5559 118.752,-85.5806 99.4768,-86.074"/>
-<polygon fill="#000000" stroke="#000000" points="99.0611,-82.5896 89.2372,-86.557 99.391,-89.5818 99.0611,-82.5896"/>
-<text text-anchor="start" x="135.453" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x &lt; 3]/x += 1 &#160;^out.inc &#160;&#160;</text>
-</g>
 <!-- _done -->
-<g id="node3" class="node">
+<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>
@@ -58,5 +44,19 @@
 <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>
 </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">in.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.2372,-97.443C112.4222,-99.0331 135.453,-97.2188 135.453,-92 135.453,-87.5559 118.752,-85.5806 99.4768,-86.074"/>
+<polygon fill="#000000" stroke="#000000" points="99.0611,-82.5896 89.2372,-86.557 99.391,-89.5818 99.0611,-82.5896"/>
+<text text-anchor="start" x="135.453" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[x &lt; 3]/x += 1 &#160;^out.inc &#160;&#160;</text>
+</g>
 </g>
 </svg>

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

@@ -4,45 +4,45 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: state transitions Pages: 1 -->
-<svg width="242pt" height="1824pt"
- viewBox="0.00 0.00 242.00 1824.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="241pt" height="1824pt"
+ viewBox="0.00 0.00 241.00 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 238,-1820 238,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1820 237,-1820 237,4 -4,4"/>
 <g id="clust1" class="cluster">
-<title>cluster__comparisons</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M112.5,-1310C112.5,-1310 180.5,-1310 180.5,-1310 186.5,-1310 192.5,-1316 192.5,-1322 192.5,-1322 192.5,-1765 192.5,-1765 192.5,-1771 186.5,-1777 180.5,-1777 180.5,-1777 112.5,-1777 112.5,-1777 106.5,-1777 100.5,-1771 100.5,-1765 100.5,-1765 100.5,-1322 100.5,-1322 100.5,-1316 106.5,-1310 112.5,-1310"/>
-<text text-anchor="start" x="112.4968" y="-1758.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
+<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>
 </g>
 <g id="clust2" class="cluster">
 <title>cluster__arithmetic</title>
-<path fill="none" stroke="#000000" stroke-width="2" d="M74.5,-651C74.5,-651 179.5,-651 179.5,-651 185.5,-651 191.5,-657 191.5,-663 191.5,-663 191.5,-1270 191.5,-1270 191.5,-1276 185.5,-1282 179.5,-1282 179.5,-1282 74.5,-1282 74.5,-1282 68.5,-1282 62.5,-1276 62.5,-1270 62.5,-1270 62.5,-663 62.5,-663 62.5,-657 68.5,-651 74.5,-651"/>
-<text text-anchor="start" x="101.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="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>
 </g>
 <g id="clust3" 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>
+<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>
 </g>
-<!-- self_tr__comparisons__comparisons_8 -->
+<!-- self_tr__comparisons__comparisons_23 -->
 <!-- _comparisons -->
-<!-- self_tr__comparisons__comparisons_8&#45;&gt;_comparisons -->
-<g id="edge9" class="edge">
-<title>self_tr__comparisons__comparisons_8:w&#45;&gt;_comparisons</title>
-<path fill="none" stroke="#000000" d="M157.5,-1810.5C150.9413,-1810.5 152.0017,-1799.902 155.9308,-1786.5696"/>
-<polygon fill="#000000" stroke="#000000" points="159.2788,-1787.5917 159.0508,-1776.9993 152.6236,-1785.422 159.2788,-1787.5917"/>
+<!-- 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"/>
 </g>
 <!-- __initial -->
 <g id="node2" class="node">
 <title>__initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="228.5" cy="-1810.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="227.5" 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="M225.4624,-1805.9139C220.1039,-1797.8236 208.5513,-1780.3814 198.1272,-1764.643"/>
-<polygon fill="#000000" stroke="#000000" points="200.9386,-1762.5493 192.4986,-1756.1449 195.1026,-1766.4148 200.9386,-1762.5493"/>
-<text text-anchor="middle" x="219.8895" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M224.4624,-1805.9139C219.1039,-1797.8236 207.5513,-1780.3814 197.1272,-1764.643"/>
+<polygon fill="#000000" stroke="#000000" points="199.9386,-1762.5493 191.4986,-1756.1449 194.1026,-1766.4148 199.9386,-1762.5493"/>
+<text text-anchor="middle" x="218.8895" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _final -->
 <g id="node3" class="node">
@@ -53,301 +53,301 @@
 <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"/>
 </g>
-<!-- _comparisons&#45;&gt;self_tr__comparisons__comparisons_8 -->
-<g id="edge8" class="edge">
-<title>_comparisons:e&#45;&gt;self_tr__comparisons__comparisons_8:e</title>
-<path fill="none" stroke="#000000" d="M179.3607,-1776.9997C174.1284,-1794.4465 165.5723,-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">in.e &#160;&#160;</text>
-</g>
-<!-- _comparisons_initial -->
+<!-- _boolean_logic -->
+<!-- _boolean_logic_initial -->
 <g id="node5" class="node">
-<title>_comparisons_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="139.5" cy="-1733.5" rx="5.5" ry="5.5"/>
+<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"/>
 </g>
-<!-- _comparisons_s1 -->
-<g id="node6" class="node">
-<title>_comparisons_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="167.5,-1682 111.5,-1682 111.5,-1646 167.5,-1646 167.5,-1682"/>
-<text text-anchor="start" x="133.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="M123.8333,-1647C123.8333,-1647 155.1667,-1647 155.1667,-1647 160.8333,-1647 166.5,-1652.6667 166.5,-1658.3333 166.5,-1658.3333 166.5,-1669.6667 166.5,-1669.6667 166.5,-1675.3333 160.8333,-1681 155.1667,-1681 155.1667,-1681 123.8333,-1681 123.8333,-1681 118.1667,-1681 112.5,-1675.3333 112.5,-1669.6667 112.5,-1669.6667 112.5,-1658.3333 112.5,-1658.3333 112.5,-1652.6667 118.1667,-1647 123.8333,-1647"/>
+<!-- _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"/>
 </g>
-<!-- _comparisons_initial&#45;&gt;_comparisons_s1 -->
+<!-- _boolean_logic_initial&#45;&gt;_boolean_logic_s1 -->
 <g id="edge2" class="edge">
-<title>_comparisons_initial&#45;&gt;_comparisons_s1</title>
-<path fill="none" stroke="#000000" d="M139.5,-1727.5745C139.5,-1719.7003 139.5,-1705.2498 139.5,-1692.1135"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1692.0109 139.5,-1682.011 136.0001,-1692.011 143.0001,-1692.0109"/>
-<text text-anchor="middle" x="140.8895" y="-1702" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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>
 </g>
-<!-- _comparisons_s2 -->
-<g id="node7" class="node">
-<title>_comparisons_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="167.5,-1600 111.5,-1600 111.5,-1564 167.5,-1564 167.5,-1600"/>
-<text text-anchor="start" x="133.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="M123.8333,-1565C123.8333,-1565 155.1667,-1565 155.1667,-1565 160.8333,-1565 166.5,-1570.6667 166.5,-1576.3333 166.5,-1576.3333 166.5,-1587.6667 166.5,-1587.6667 166.5,-1593.3333 160.8333,-1599 155.1667,-1599 155.1667,-1599 123.8333,-1599 123.8333,-1599 118.1667,-1599 112.5,-1593.3333 112.5,-1587.6667 112.5,-1587.6667 112.5,-1576.3333 112.5,-1576.3333 112.5,-1570.6667 118.1667,-1565 123.8333,-1565"/>
+<!-- _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"/>
 </g>
-<!-- _comparisons_s1&#45;&gt;_comparisons_s2 -->
+<!-- _boolean_logic_s6&#45;&gt;_final -->
 <g id="edge3" class="edge">
-<title>_comparisons_s1&#45;&gt;_comparisons_s2</title>
-<path fill="none" stroke="#000000" d="M139.5,-1645.8015C139.5,-1635.3976 139.5,-1622.1215 139.5,-1610.3768"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1610.1476 139.5,-1600.1476 136.0001,-1610.1476 143.0001,-1610.1476"/>
-<text text-anchor="start" x="139.5" y="-1620" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
+<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>
 </g>
-<!-- _comparisons_s3 -->
-<g id="node8" class="node">
-<title>_comparisons_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="167.5,-1518 111.5,-1518 111.5,-1482 167.5,-1482 167.5,-1518"/>
-<text text-anchor="start" x="133.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="M123.8333,-1483C123.8333,-1483 155.1667,-1483 155.1667,-1483 160.8333,-1483 166.5,-1488.6667 166.5,-1494.3333 166.5,-1494.3333 166.5,-1505.6667 166.5,-1505.6667 166.5,-1511.3333 160.8333,-1517 155.1667,-1517 155.1667,-1517 123.8333,-1517 123.8333,-1517 118.1667,-1517 112.5,-1511.3333 112.5,-1505.6667 112.5,-1505.6667 112.5,-1494.3333 112.5,-1494.3333 112.5,-1488.6667 118.1667,-1483 123.8333,-1483"/>
+<!-- _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"/>
 </g>
-<!-- _comparisons_s2&#45;&gt;_comparisons_s3 -->
+<!-- _boolean_logic_s5&#45;&gt;_boolean_logic_s6 -->
 <g id="edge4" class="edge">
-<title>_comparisons_s2&#45;&gt;_comparisons_s3</title>
-<path fill="none" stroke="#000000" d="M139.5,-1563.8015C139.5,-1553.3976 139.5,-1540.1215 139.5,-1528.3768"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1528.1476 139.5,-1518.1476 136.0001,-1528.1476 143.0001,-1528.1476"/>
-<text text-anchor="start" x="139.5" y="-1538" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
+<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>
 </g>
-<!-- _comparisons_s4 -->
-<g id="node9" class="node">
-<title>_comparisons_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="167.5,-1436 111.5,-1436 111.5,-1400 167.5,-1400 167.5,-1436"/>
-<text text-anchor="start" x="133.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="M123.8333,-1401C123.8333,-1401 155.1667,-1401 155.1667,-1401 160.8333,-1401 166.5,-1406.6667 166.5,-1412.3333 166.5,-1412.3333 166.5,-1423.6667 166.5,-1423.6667 166.5,-1429.3333 160.8333,-1435 155.1667,-1435 155.1667,-1435 123.8333,-1435 123.8333,-1435 118.1667,-1435 112.5,-1429.3333 112.5,-1423.6667 112.5,-1423.6667 112.5,-1412.3333 112.5,-1412.3333 112.5,-1406.6667 118.1667,-1401 123.8333,-1401"/>
+<!-- _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"/>
 </g>
-<!-- _comparisons_s3&#45;&gt;_comparisons_s4 -->
+<!-- _boolean_logic_s4&#45;&gt;_boolean_logic_s5 -->
 <g id="edge5" class="edge">
-<title>_comparisons_s3&#45;&gt;_comparisons_s4</title>
-<path fill="none" stroke="#000000" d="M139.5,-1481.8015C139.5,-1471.3976 139.5,-1458.1215 139.5,-1446.3768"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1446.1476 139.5,-1436.1476 136.0001,-1446.1476 143.0001,-1446.1476"/>
-<text text-anchor="start" x="139.5" y="-1456" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
+<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>
 </g>
-<!-- _comparisons_s5 -->
-<g id="node10" class="node">
-<title>_comparisons_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="167.5,-1354 111.5,-1354 111.5,-1318 167.5,-1318 167.5,-1354"/>
-<text text-anchor="start" x="133.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="M123.8333,-1319C123.8333,-1319 155.1667,-1319 155.1667,-1319 160.8333,-1319 166.5,-1324.6667 166.5,-1330.3333 166.5,-1330.3333 166.5,-1341.6667 166.5,-1341.6667 166.5,-1347.3333 160.8333,-1353 155.1667,-1353 155.1667,-1353 123.8333,-1353 123.8333,-1353 118.1667,-1353 112.5,-1347.3333 112.5,-1341.6667 112.5,-1341.6667 112.5,-1330.3333 112.5,-1330.3333 112.5,-1324.6667 118.1667,-1319 123.8333,-1319"/>
+<!-- _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"/>
 </g>
-<!-- _comparisons_s4&#45;&gt;_comparisons_s5 -->
+<!-- _boolean_logic_s3&#45;&gt;_boolean_logic_s4 -->
 <g id="edge6" class="edge">
-<title>_comparisons_s4&#45;&gt;_comparisons_s5</title>
-<path fill="none" stroke="#000000" d="M139.5,-1399.8015C139.5,-1389.3976 139.5,-1376.1215 139.5,-1364.3768"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1364.1476 139.5,-1354.1476 136.0001,-1364.1476 143.0001,-1364.1476"/>
-<text text-anchor="start" x="139.5" y="-1374" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
+<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>
 </g>
-<!-- _arithmetic -->
-<!-- _comparisons_s5&#45;&gt;_arithmetic -->
+<!-- _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"/>
+</g>
+<!-- _boolean_logic_s2&#45;&gt;_boolean_logic_s3 -->
 <g id="edge7" class="edge">
-<title>_comparisons_s5&#45;&gt;_arithmetic</title>
-<path fill="none" stroke="#000000" d="M139.5,-1317.661C139.5,-1310.2376 139.5,-1301.2479 139.5,-1292.0279"/>
-<polygon fill="#000000" stroke="#000000" points="143.0001,-1291.9962 139.5,-1281.9962 136.0001,-1291.9963 143.0001,-1291.9962"/>
-<text text-anchor="middle" x="140.8895" y="-1293" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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>
 </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>
+</g>
+<!-- _arithmetic -->
 <!-- _arithmetic_initial -->
-<g id="node12" class="node">
+<g id="node13" class="node">
 <title>_arithmetic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="98.5" cy="-1238.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="99.5" cy="-1238.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _arithmetic_s1 -->
-<g id="node13" class="node">
+<g id="node20" class="node">
 <title>_arithmetic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-1187 70.5,-1187 70.5,-1151 126.5,-1151 126.5,-1187"/>
-<text text-anchor="start" x="92.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="M82.8333,-1152C82.8333,-1152 114.1667,-1152 114.1667,-1152 119.8333,-1152 125.5,-1157.6667 125.5,-1163.3333 125.5,-1163.3333 125.5,-1174.6667 125.5,-1174.6667 125.5,-1180.3333 119.8333,-1186 114.1667,-1186 114.1667,-1186 82.8333,-1186 82.8333,-1186 77.1667,-1186 71.5,-1180.3333 71.5,-1174.6667 71.5,-1174.6667 71.5,-1163.3333 71.5,-1163.3333 71.5,-1157.6667 77.1667,-1152 82.8333,-1152"/>
+<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"/>
 </g>
 <!-- _arithmetic_initial&#45;&gt;_arithmetic_s1 -->
-<g id="edge10" class="edge">
+<g id="edge9" class="edge">
 <title>_arithmetic_initial&#45;&gt;_arithmetic_s1</title>
-<path fill="none" stroke="#000000" d="M98.5,-1232.5745C98.5,-1224.7003 98.5,-1210.2498 98.5,-1197.1135"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-1197.0109 98.5,-1187.011 95.0001,-1197.011 102.0001,-1197.0109"/>
-<text text-anchor="middle" x="99.8895" y="-1207" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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>
 </g>
-<!-- _arithmetic_s2 -->
+<!-- _arithmetic_s7 -->
 <g id="node14" class="node">
-<title>_arithmetic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-1105 70.5,-1105 70.5,-1069 126.5,-1069 126.5,-1105"/>
-<text text-anchor="start" x="92.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="M82.8333,-1070C82.8333,-1070 114.1667,-1070 114.1667,-1070 119.8333,-1070 125.5,-1075.6667 125.5,-1081.3333 125.5,-1081.3333 125.5,-1092.6667 125.5,-1092.6667 125.5,-1098.3333 119.8333,-1104 114.1667,-1104 114.1667,-1104 82.8333,-1104 82.8333,-1104 77.1667,-1104 71.5,-1098.3333 71.5,-1092.6667 71.5,-1092.6667 71.5,-1081.3333 71.5,-1081.3333 71.5,-1075.6667 77.1667,-1070 82.8333,-1070"/>
+<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"/>
 </g>
-<!-- _arithmetic_s1&#45;&gt;_arithmetic_s2 -->
-<g id="edge11" class="edge">
-<title>_arithmetic_s1&#45;&gt;_arithmetic_s2</title>
-<path fill="none" stroke="#000000" d="M98.5,-1150.8015C98.5,-1140.3976 98.5,-1127.1215 98.5,-1115.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-1115.1476 98.5,-1105.1476 95.0001,-1115.1476 102.0001,-1115.1476"/>
-<text text-anchor="start" x="98.5" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
+<!-- _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>
 </g>
-<!-- _arithmetic_s3 -->
+<!-- _arithmetic_s6 -->
 <g id="node15" class="node">
-<title>_arithmetic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-1023 70.5,-1023 70.5,-987 126.5,-987 126.5,-1023"/>
-<text text-anchor="start" x="92.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="M82.8333,-988C82.8333,-988 114.1667,-988 114.1667,-988 119.8333,-988 125.5,-993.6667 125.5,-999.3333 125.5,-999.3333 125.5,-1010.6667 125.5,-1010.6667 125.5,-1016.3333 119.8333,-1022 114.1667,-1022 114.1667,-1022 82.8333,-1022 82.8333,-1022 77.1667,-1022 71.5,-1016.3333 71.5,-1010.6667 71.5,-1010.6667 71.5,-999.3333 71.5,-999.3333 71.5,-993.6667 77.1667,-988 82.8333,-988"/>
+<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"/>
 </g>
-<!-- _arithmetic_s2&#45;&gt;_arithmetic_s3 -->
-<g id="edge12" class="edge">
-<title>_arithmetic_s2&#45;&gt;_arithmetic_s3</title>
-<path fill="none" stroke="#000000" d="M98.5,-1068.8015C98.5,-1058.3976 98.5,-1045.1215 98.5,-1033.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-1033.1476 98.5,-1023.1476 95.0001,-1033.1476 102.0001,-1033.1476"/>
-<text text-anchor="start" x="98.5" y="-1043" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
+<!-- _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>
 </g>
-<!-- _arithmetic_s4 -->
+<!-- _arithmetic_s5 -->
 <g id="node16" class="node">
-<title>_arithmetic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-941 70.5,-941 70.5,-905 126.5,-905 126.5,-941"/>
-<text text-anchor="start" x="92.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="M82.8333,-906C82.8333,-906 114.1667,-906 114.1667,-906 119.8333,-906 125.5,-911.6667 125.5,-917.3333 125.5,-917.3333 125.5,-928.6667 125.5,-928.6667 125.5,-934.3333 119.8333,-940 114.1667,-940 114.1667,-940 82.8333,-940 82.8333,-940 77.1667,-940 71.5,-934.3333 71.5,-928.6667 71.5,-928.6667 71.5,-917.3333 71.5,-917.3333 71.5,-911.6667 77.1667,-906 82.8333,-906"/>
+<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"/>
 </g>
-<!-- _arithmetic_s3&#45;&gt;_arithmetic_s4 -->
-<g id="edge13" class="edge">
-<title>_arithmetic_s3&#45;&gt;_arithmetic_s4</title>
-<path fill="none" stroke="#000000" d="M98.5,-986.8015C98.5,-976.3976 98.5,-963.1215 98.5,-951.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-951.1476 98.5,-941.1476 95.0001,-951.1476 102.0001,-951.1476"/>
-<text text-anchor="start" x="98.5" y="-961" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
+<!-- _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>
 </g>
-<!-- _arithmetic_s5 -->
+<!-- _arithmetic_s4 -->
 <g id="node17" class="node">
-<title>_arithmetic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-859 70.5,-859 70.5,-823 126.5,-823 126.5,-859"/>
-<text text-anchor="start" x="92.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="M82.8333,-824C82.8333,-824 114.1667,-824 114.1667,-824 119.8333,-824 125.5,-829.6667 125.5,-835.3333 125.5,-835.3333 125.5,-846.6667 125.5,-846.6667 125.5,-852.3333 119.8333,-858 114.1667,-858 114.1667,-858 82.8333,-858 82.8333,-858 77.1667,-858 71.5,-852.3333 71.5,-846.6667 71.5,-846.6667 71.5,-835.3333 71.5,-835.3333 71.5,-829.6667 77.1667,-824 82.8333,-824"/>
+<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"/>
 </g>
 <!-- _arithmetic_s4&#45;&gt;_arithmetic_s5 -->
-<g id="edge14" class="edge">
+<g id="edge13" class="edge">
 <title>_arithmetic_s4&#45;&gt;_arithmetic_s5</title>
-<path fill="none" stroke="#000000" d="M98.5,-904.8015C98.5,-894.3976 98.5,-881.1215 98.5,-869.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-869.1476 98.5,-859.1476 95.0001,-869.1476 102.0001,-869.1476"/>
-<text text-anchor="start" x="98.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="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>
 </g>
-<!-- _arithmetic_s6 -->
+<!-- _arithmetic_s3 -->
 <g id="node18" class="node">
-<title>_arithmetic_s6</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-777 70.5,-777 70.5,-741 126.5,-741 126.5,-777"/>
-<text text-anchor="start" x="92.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="M82.8333,-742C82.8333,-742 114.1667,-742 114.1667,-742 119.8333,-742 125.5,-747.6667 125.5,-753.3333 125.5,-753.3333 125.5,-764.6667 125.5,-764.6667 125.5,-770.3333 119.8333,-776 114.1667,-776 114.1667,-776 82.8333,-776 82.8333,-776 77.1667,-776 71.5,-770.3333 71.5,-764.6667 71.5,-764.6667 71.5,-753.3333 71.5,-753.3333 71.5,-747.6667 77.1667,-742 82.8333,-742"/>
+<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"/>
 </g>
-<!-- _arithmetic_s5&#45;&gt;_arithmetic_s6 -->
-<g id="edge15" class="edge">
-<title>_arithmetic_s5&#45;&gt;_arithmetic_s6</title>
-<path fill="none" stroke="#000000" d="M98.5,-822.8015C98.5,-812.3976 98.5,-799.1215 98.5,-787.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-787.1476 98.5,-777.1476 95.0001,-787.1476 102.0001,-787.1476"/>
-<text text-anchor="start" x="98.5" y="-797" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
+<!-- _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>
 </g>
-<!-- _arithmetic_s7 -->
+<!-- _arithmetic_s2 -->
 <g id="node19" class="node">
-<title>_arithmetic_s7</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="126.5,-695 70.5,-695 70.5,-659 126.5,-659 126.5,-695"/>
-<text text-anchor="start" x="92.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="M82.8333,-660C82.8333,-660 114.1667,-660 114.1667,-660 119.8333,-660 125.5,-665.6667 125.5,-671.3333 125.5,-671.3333 125.5,-682.6667 125.5,-682.6667 125.5,-688.3333 119.8333,-694 114.1667,-694 114.1667,-694 82.8333,-694 82.8333,-694 77.1667,-694 71.5,-688.3333 71.5,-682.6667 71.5,-682.6667 71.5,-671.3333 71.5,-671.3333 71.5,-665.6667 77.1667,-660 82.8333,-660"/>
+<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"/>
 </g>
-<!-- _arithmetic_s6&#45;&gt;_arithmetic_s7 -->
-<g id="edge16" class="edge">
-<title>_arithmetic_s6&#45;&gt;_arithmetic_s7</title>
-<path fill="none" stroke="#000000" d="M98.5,-740.8015C98.5,-730.3976 98.5,-717.1215 98.5,-705.3768"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-705.1476 98.5,-695.1476 95.0001,-705.1476 102.0001,-705.1476"/>
-<text text-anchor="start" x="98.5" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
+<!-- _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>
 </g>
-<!-- _boolean_logic -->
-<!-- _arithmetic_s7&#45;&gt;_boolean_logic -->
-<g id="edge17" class="edge">
-<title>_arithmetic_s7&#45;&gt;_boolean_logic</title>
-<path fill="none" stroke="#000000" d="M98.5,-658.661C98.5,-651.2376 98.5,-642.2479 98.5,-633.0279"/>
-<polygon fill="#000000" stroke="#000000" points="102.0001,-632.9962 98.5,-622.9962 95.0001,-632.9963 102.0001,-632.9962"/>
-<text text-anchor="middle" x="99.8895" y="-634" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<!-- _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>
 </g>
-<!-- _boolean_logic_initial -->
-<g id="node21" 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"/>
+<!-- _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="M172.3257,-1776.9997C167.6714,-1794.4465 161.5237,-1810.5 157.5,-1810.5"/>
+<text text-anchor="start" x="169.5" y="-1788" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e &#160;&#160;</text>
 </g>
-<!-- _boolean_logic_s1 -->
+<!-- _comparisons_initial -->
 <g id="node22" 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"/>
+<title>_comparisons_initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="138.5" cy="-1733.5" rx="5.5" ry="5.5"/>
 </g>
-<!-- _boolean_logic_initial&#45;&gt;_boolean_logic_s1 -->
-<g id="edge18" 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>
+<!-- _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"/>
 </g>
-<!-- _boolean_logic_s2 -->
+<!-- _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>
+</g>
+<!-- _comparisons_s5 -->
 <g id="node23" 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"/>
+<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"/>
 </g>
-<!-- _boolean_logic_s1&#45;&gt;_boolean_logic_s2 -->
-<g id="edge19" 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>
+<!-- _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>
 </g>
-<!-- _boolean_logic_s3 -->
+<!-- _comparisons_s4 -->
 <g id="node24" 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"/>
+<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"/>
 </g>
-<!-- _boolean_logic_s2&#45;&gt;_boolean_logic_s3 -->
-<g id="edge20" 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>
+<!-- _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>
 </g>
-<!-- _boolean_logic_s4 -->
+<!-- _comparisons_s3 -->
 <g id="node25" 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"/>
+<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"/>
 </g>
-<!-- _boolean_logic_s3&#45;&gt;_boolean_logic_s4 -->
-<g id="edge21" 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>
+<!-- _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>
 </g>
-<!-- _boolean_logic_s5 -->
+<!-- _comparisons_s2 -->
 <g id="node26" 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"/>
-</g>
-<!-- _boolean_logic_s4&#45;&gt;_boolean_logic_s5 -->
-<g id="edge22" 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>
-</g>
-<!-- _boolean_logic_s6 -->
-<g id="node27" 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"/>
+<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"/>
 </g>
-<!-- _boolean_logic_s5&#45;&gt;_boolean_logic_s6 -->
-<g id="edge23" 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>
+<!-- _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>
 </g>
-<!-- _boolean_logic_s6&#45;&gt;_final -->
-<g id="edge24" 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>
+<!-- _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>
 </g>
 </g>
 </svg>

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

@@ -15,19 +15,19 @@
 <text text-anchor="start" x="252.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_comparisons</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="362.1698,-288 362.1698,-945 474.1698,-945 474.1698,-288 362.1698,-288"/>
-<text text-anchor="start" x="384.1666" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">comparisons</text>
+<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>
 </g>
 <g id="clust3" class="cluster">
 <title>cluster__p_arithmetic</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="225.1698,-16 225.1698,-945 354.1698,-945 354.1698,-16 225.1698,-16"/>
-<text text-anchor="start" x="264.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="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>
 </g>
 <g id="clust4" class="cluster">
-<title>cluster__p_boolean_logic</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="46.1698,-152 46.1698,-945 217.1698,-945 217.1698,-152 46.1698,-152"/>
-<text text-anchor="start" x="94.657" y="-926.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">boolean_logic</text>
+<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>
 </g>
 <!-- self_tr__p__p_20 -->
 <!-- _p -->
@@ -55,281 +55,281 @@
 <path fill="none" stroke="#000000" d="M30.1729,-977.8467C26.101,-999.1056 21.6882,-1016.5 19.1698,-1016.5"/>
 <text text-anchor="start" x="28.1698" y="-994" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e &#160;&#160;</text>
 </g>
-<!-- _p_comparisons -->
-<!-- _p_comparisons_initial -->
+<!-- _p_boolean_logic -->
+<!-- _p_boolean_logic_initial -->
 <g id="node5" class="node">
-<title>_p_comparisons_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="418.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<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"/>
 </g>
-<!-- _p_comparisons_s1 -->
-<g id="node6" class="node">
-<title>_p_comparisons_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="446.1698,-814 390.1698,-814 390.1698,-778 446.1698,-778 446.1698,-814"/>
-<text text-anchor="start" x="411.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="M402.5031,-779C402.5031,-779 433.8364,-779 433.8364,-779 439.5031,-779 445.1698,-784.6667 445.1698,-790.3333 445.1698,-790.3333 445.1698,-801.6667 445.1698,-801.6667 445.1698,-807.3333 439.5031,-813 433.8364,-813 433.8364,-813 402.5031,-813 402.5031,-813 396.8364,-813 391.1698,-807.3333 391.1698,-801.6667 391.1698,-801.6667 391.1698,-790.3333 391.1698,-790.3333 391.1698,-784.6667 396.8364,-779 402.5031,-779"/>
+<!-- _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"/>
 </g>
-<!-- _p_comparisons_initial&#45;&gt;_p_comparisons_s1 -->
+<!-- _p_boolean_logic_initial&#45;&gt;_p_boolean_logic_s1 -->
 <g id="edge2" class="edge">
-<title>_p_comparisons_initial&#45;&gt;_p_comparisons_s1</title>
-<path fill="none" stroke="#000000" d="M418.1698,-895.8288C418.1698,-891.1736 418.1698,-884.4097 418.1698,-878.5 418.1698,-878.5 418.1698,-878.5 418.1698,-831.5 418.1698,-829.1079 418.1698,-826.6252 418.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="421.6699,-824.0597 418.1698,-814.0598 414.6699,-824.0598 421.6699,-824.0597"/>
-<text text-anchor="middle" x="419.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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>
 </g>
-<!-- _p_comparisons_s2 -->
+<!-- _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"/>
+</g>
+<!-- _p_boolean_logic_s5 -->
 <g id="node7" class="node">
-<title>_p_comparisons_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="446.1698,-696 390.1698,-696 390.1698,-660 446.1698,-660 446.1698,-696"/>
-<text text-anchor="start" x="411.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="M402.5031,-661C402.5031,-661 433.8364,-661 433.8364,-661 439.5031,-661 445.1698,-666.6667 445.1698,-672.3333 445.1698,-672.3333 445.1698,-683.6667 445.1698,-683.6667 445.1698,-689.3333 439.5031,-695 433.8364,-695 433.8364,-695 402.5031,-695 402.5031,-695 396.8364,-695 391.1698,-689.3333 391.1698,-683.6667 391.1698,-683.6667 391.1698,-672.3333 391.1698,-672.3333 391.1698,-666.6667 396.8364,-661 402.5031,-661"/>
+<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"/>
 </g>
-<!-- _p_comparisons_s1&#45;&gt;_p_comparisons_s2 -->
+<!-- _p_boolean_logic_s5&#45;&gt;_p_boolean_logic_ok -->
 <g id="edge3" class="edge">
-<title>_p_comparisons_s1&#45;&gt;_p_comparisons_s2</title>
-<path fill="none" stroke="#000000" d="M418.1698,-777.9402C418.1698,-772.3497 418.1698,-766.1701 418.1698,-760.5 418.1698,-760.5 418.1698,-760.5 418.1698,-713.5 418.1698,-711.1079 418.1698,-708.6252 418.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="421.6699,-706.0597 418.1698,-696.0598 414.6699,-706.0598 421.6699,-706.0597"/>
-<text text-anchor="start" x="418.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 == 1] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_comparisons_s3 -->
+<!-- _p_boolean_logic_s4 -->
 <g id="node8" class="node">
-<title>_p_comparisons_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="446.1698,-578 390.1698,-578 390.1698,-542 446.1698,-542 446.1698,-578"/>
-<text text-anchor="start" x="411.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="M402.5031,-543C402.5031,-543 433.8364,-543 433.8364,-543 439.5031,-543 445.1698,-548.6667 445.1698,-554.3333 445.1698,-554.3333 445.1698,-565.6667 445.1698,-565.6667 445.1698,-571.3333 439.5031,-577 433.8364,-577 433.8364,-577 402.5031,-577 402.5031,-577 396.8364,-577 391.1698,-571.3333 391.1698,-565.6667 391.1698,-565.6667 391.1698,-554.3333 391.1698,-554.3333 391.1698,-548.6667 396.8364,-543 402.5031,-543"/>
+<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"/>
 </g>
-<!-- _p_comparisons_s2&#45;&gt;_p_comparisons_s3 -->
+<!-- _p_boolean_logic_s4&#45;&gt;_p_boolean_logic_s5 -->
 <g id="edge4" class="edge">
-<title>_p_comparisons_s2&#45;&gt;_p_comparisons_s3</title>
-<path fill="none" stroke="#000000" d="M418.1698,-659.9402C418.1698,-654.3497 418.1698,-648.1701 418.1698,-642.5 418.1698,-642.5 418.1698,-642.5 418.1698,-595.5 418.1698,-593.1079 418.1698,-590.6252 418.1698,-588.1342"/>
-<polygon fill="#000000" stroke="#000000" points="421.6699,-588.0597 418.1698,-578.0598 414.6699,-588.0598 421.6699,-588.0597"/>
-<text text-anchor="start" x="418.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 != 2] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_comparisons_s4 -->
+<!-- _p_boolean_logic_s3 -->
 <g id="node9" class="node">
-<title>_p_comparisons_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="446.1698,-460 390.1698,-460 390.1698,-424 446.1698,-424 446.1698,-460"/>
-<text text-anchor="start" x="411.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="M402.5031,-425C402.5031,-425 433.8364,-425 433.8364,-425 439.5031,-425 445.1698,-430.6667 445.1698,-436.3333 445.1698,-436.3333 445.1698,-447.6667 445.1698,-447.6667 445.1698,-453.3333 439.5031,-459 433.8364,-459 433.8364,-459 402.5031,-459 402.5031,-459 396.8364,-459 391.1698,-453.3333 391.1698,-447.6667 391.1698,-447.6667 391.1698,-436.3333 391.1698,-436.3333 391.1698,-430.6667 396.8364,-425 402.5031,-425"/>
+<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"/>
 </g>
-<!-- _p_comparisons_s3&#45;&gt;_p_comparisons_s4 -->
+<!-- _p_boolean_logic_s3&#45;&gt;_p_boolean_logic_s4 -->
 <g id="edge5" class="edge">
-<title>_p_comparisons_s3&#45;&gt;_p_comparisons_s4</title>
-<path fill="none" stroke="#000000" d="M418.1698,-541.9402C418.1698,-536.3497 418.1698,-530.1701 418.1698,-524.5 418.1698,-524.5 418.1698,-524.5 418.1698,-477.5 418.1698,-475.1079 418.1698,-472.6252 418.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="421.6699,-470.0597 418.1698,-460.0598 414.6699,-470.0598 421.6699,-470.0597"/>
-<text text-anchor="start" x="418.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 &lt; 2] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_comparisons_ok -->
+<!-- _p_boolean_logic_s2 -->
 <g id="node10" class="node">
-<title>_p_comparisons_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="466.1698,-342 370.1698,-342 370.1698,-296 466.1698,-296 466.1698,-342"/>
-<text text-anchor="start" x="411.8344" y="-325.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="375.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="370.1698,-319 370.1698,-319 466.1698,-319 466.1698,-319 370.1698,-319"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M383.1698,-297C383.1698,-297 453.1698,-297 453.1698,-297 459.1698,-297 465.1698,-303 465.1698,-309 465.1698,-309 465.1698,-329 465.1698,-329 465.1698,-335 459.1698,-341 453.1698,-341 453.1698,-341 383.1698,-341 383.1698,-341 377.1698,-341 371.1698,-335 371.1698,-329 371.1698,-329 371.1698,-309 371.1698,-309 371.1698,-303 377.1698,-297 383.1698,-297"/>
+<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"/>
 </g>
-<!-- _p_comparisons_s4&#45;&gt;_p_comparisons_ok -->
+<!-- _p_boolean_logic_s2&#45;&gt;_p_boolean_logic_s3 -->
 <g id="edge6" class="edge">
-<title>_p_comparisons_s4&#45;&gt;_p_comparisons_ok</title>
-<path fill="none" stroke="#000000" d="M418.1698,-423.9402C418.1698,-418.3497 418.1698,-412.1701 418.1698,-406.5 418.1698,-406.5 418.1698,-406.5 418.1698,-359.5 418.1698,-357.127 418.1698,-354.6757 418.1698,-352.2081"/>
-<polygon fill="#000000" stroke="#000000" points="421.6699,-352.1306 418.1698,-342.1306 414.6699,-352.1306 421.6699,-352.1306"/>
-<text text-anchor="start" x="418.1698" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 &gt; 1] &#160;&#160;</text>
+<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>
+</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>
 </g>
 <!-- _p_arithmetic -->
 <!-- _p_arithmetic_initial -->
-<g id="node12" class="node">
+<g id="node13" class="node">
 <title>_p_arithmetic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="261.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="202.1698" cy="-901.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_arithmetic_s1 -->
-<g id="node13" class="node">
+<g id="node20" class="node">
 <title>_p_arithmetic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="289.1698,-814 233.1698,-814 233.1698,-778 289.1698,-778 289.1698,-814"/>
-<text text-anchor="start" x="254.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="M245.5031,-779C245.5031,-779 276.8364,-779 276.8364,-779 282.5031,-779 288.1698,-784.6667 288.1698,-790.3333 288.1698,-790.3333 288.1698,-801.6667 288.1698,-801.6667 288.1698,-807.3333 282.5031,-813 276.8364,-813 276.8364,-813 245.5031,-813 245.5031,-813 239.8364,-813 234.1698,-807.3333 234.1698,-801.6667 234.1698,-801.6667 234.1698,-790.3333 234.1698,-790.3333 234.1698,-784.6667 239.8364,-779 245.5031,-779"/>
+<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"/>
 </g>
 <!-- _p_arithmetic_initial&#45;&gt;_p_arithmetic_s1 -->
-<g id="edge7" class="edge">
+<g id="edge8" class="edge">
 <title>_p_arithmetic_initial&#45;&gt;_p_arithmetic_s1</title>
-<path fill="none" stroke="#000000" d="M261.1698,-895.8288C261.1698,-891.1736 261.1698,-884.4097 261.1698,-878.5 261.1698,-878.5 261.1698,-878.5 261.1698,-831.5 261.1698,-829.1079 261.1698,-826.6252 261.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="264.6699,-824.0597 261.1698,-814.0598 257.6699,-824.0598 264.6699,-824.0597"/>
-<text text-anchor="middle" x="262.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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>
 </g>
-<!-- _p_arithmetic_s2 -->
+<!-- _p_arithmetic_ok -->
 <g id="node14" class="node">
-<title>_p_arithmetic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="289.1698,-696 233.1698,-696 233.1698,-660 289.1698,-660 289.1698,-696"/>
-<text text-anchor="start" x="254.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="M245.5031,-661C245.5031,-661 276.8364,-661 276.8364,-661 282.5031,-661 288.1698,-666.6667 288.1698,-672.3333 288.1698,-672.3333 288.1698,-683.6667 288.1698,-683.6667 288.1698,-689.3333 282.5031,-695 276.8364,-695 276.8364,-695 245.5031,-695 245.5031,-695 239.8364,-695 234.1698,-689.3333 234.1698,-683.6667 234.1698,-683.6667 234.1698,-672.3333 234.1698,-672.3333 234.1698,-666.6667 239.8364,-661 245.5031,-661"/>
-</g>
-<!-- _p_arithmetic_s1&#45;&gt;_p_arithmetic_s2 -->
-<g id="edge8" class="edge">
-<title>_p_arithmetic_s1&#45;&gt;_p_arithmetic_s2</title>
-<path fill="none" stroke="#000000" d="M261.1698,-777.9402C261.1698,-772.3497 261.1698,-766.1701 261.1698,-760.5 261.1698,-760.5 261.1698,-760.5 261.1698,-713.5 261.1698,-711.1079 261.1698,-708.6252 261.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="264.6699,-706.0597 261.1698,-696.0598 257.6699,-706.0598 264.6699,-706.0597"/>
-<text text-anchor="start" x="261.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[1 + 1 == 2] &#160;&#160;</text>
+<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"/>
 </g>
-<!-- _p_arithmetic_s3 -->
+<!-- _p_arithmetic_s6 -->
 <g id="node15" class="node">
-<title>_p_arithmetic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="289.1698,-578 233.1698,-578 233.1698,-542 289.1698,-542 289.1698,-578"/>
-<text text-anchor="start" x="254.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="M245.5031,-543C245.5031,-543 276.8364,-543 276.8364,-543 282.5031,-543 288.1698,-548.6667 288.1698,-554.3333 288.1698,-554.3333 288.1698,-565.6667 288.1698,-565.6667 288.1698,-571.3333 282.5031,-577 276.8364,-577 276.8364,-577 245.5031,-577 245.5031,-577 239.8364,-577 234.1698,-571.3333 234.1698,-565.6667 234.1698,-565.6667 234.1698,-554.3333 234.1698,-554.3333 234.1698,-548.6667 239.8364,-543 245.5031,-543"/>
+<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"/>
 </g>
-<!-- _p_arithmetic_s2&#45;&gt;_p_arithmetic_s3 -->
+<!-- _p_arithmetic_s6&#45;&gt;_p_arithmetic_ok -->
 <g id="edge9" class="edge">
-<title>_p_arithmetic_s2&#45;&gt;_p_arithmetic_s3</title>
-<path fill="none" stroke="#000000" d="M257.5892,-659.6439C256.7878,-654.1523 256.1698,-648.1016 256.1698,-642.5 256.1698,-642.5 256.1698,-642.5 256.1698,-595.5 256.1698,-593.2243 256.2718,-590.8746 256.4466,-588.5183"/>
-<polygon fill="#000000" stroke="#000000" points="259.9499,-588.6846 257.5892,-578.3561 252.9937,-587.9024 259.9499,-588.6846"/>
-<text text-anchor="start" x="256.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[42 == 52 &#45; 11 + 1] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_arithmetic_s4 -->
+<!-- _p_arithmetic_s5 -->
 <g id="node16" class="node">
-<title>_p_arithmetic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="289.1698,-460 233.1698,-460 233.1698,-424 289.1698,-424 289.1698,-460"/>
-<text text-anchor="start" x="254.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="M245.5031,-425C245.5031,-425 276.8364,-425 276.8364,-425 282.5031,-425 288.1698,-430.6667 288.1698,-436.3333 288.1698,-436.3333 288.1698,-447.6667 288.1698,-447.6667 288.1698,-453.3333 282.5031,-459 276.8364,-459 276.8364,-459 245.5031,-459 245.5031,-459 239.8364,-459 234.1698,-453.3333 234.1698,-447.6667 234.1698,-447.6667 234.1698,-436.3333 234.1698,-436.3333 234.1698,-430.6667 239.8364,-425 245.5031,-425"/>
+<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"/>
 </g>
-<!-- _p_arithmetic_s3&#45;&gt;_p_arithmetic_s4 -->
+<!-- _p_arithmetic_s5&#45;&gt;_p_arithmetic_s6 -->
 <g id="edge10" class="edge">
-<title>_p_arithmetic_s3&#45;&gt;_p_arithmetic_s4</title>
-<path fill="none" stroke="#000000" d="M261.1698,-541.9402C261.1698,-536.3497 261.1698,-530.1701 261.1698,-524.5 261.1698,-524.5 261.1698,-524.5 261.1698,-477.5 261.1698,-475.1079 261.1698,-472.6252 261.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="264.6699,-470.0597 261.1698,-460.0598 257.6699,-470.0598 264.6699,-470.0597"/>
-<text text-anchor="start" x="261.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[2 * 3 == 6] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_arithmetic_s5 -->
+<!-- _p_arithmetic_s4 -->
 <g id="node17" class="node">
-<title>_p_arithmetic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="289.1698,-337 233.1698,-337 233.1698,-301 289.1698,-301 289.1698,-337"/>
-<text text-anchor="start" x="254.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="M245.5031,-302C245.5031,-302 276.8364,-302 276.8364,-302 282.5031,-302 288.1698,-307.6667 288.1698,-313.3333 288.1698,-313.3333 288.1698,-324.6667 288.1698,-324.6667 288.1698,-330.3333 282.5031,-336 276.8364,-336 276.8364,-336 245.5031,-336 245.5031,-336 239.8364,-336 234.1698,-330.3333 234.1698,-324.6667 234.1698,-324.6667 234.1698,-313.3333 234.1698,-313.3333 234.1698,-307.6667 239.8364,-302 245.5031,-302"/>
+<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"/>
 </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="M261.1698,-423.9402C261.1698,-418.3497 261.1698,-412.1701 261.1698,-406.5 261.1698,-406.5 261.1698,-406.5 261.1698,-359.5 261.1698,-355.6152 261.1698,-351.5209 261.1698,-347.4883"/>
-<polygon fill="#000000" stroke="#000000" points="264.6699,-347.1447 261.1698,-337.1447 257.6699,-347.1448 264.6699,-347.1447"/>
-<text text-anchor="start" x="261.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="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>
 </g>
-<!-- _p_arithmetic_s6 -->
+<!-- _p_arithmetic_s3 -->
 <g id="node18" class="node">
-<title>_p_arithmetic_s6</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="299.1698,-201 243.1698,-201 243.1698,-165 299.1698,-165 299.1698,-201"/>
-<text text-anchor="start" x="264.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="M255.5031,-166C255.5031,-166 286.8364,-166 286.8364,-166 292.5031,-166 298.1698,-171.6667 298.1698,-177.3333 298.1698,-177.3333 298.1698,-188.6667 298.1698,-188.6667 298.1698,-194.3333 292.5031,-200 286.8364,-200 286.8364,-200 255.5031,-200 255.5031,-200 249.8364,-200 244.1698,-194.3333 244.1698,-188.6667 244.1698,-188.6667 244.1698,-177.3333 244.1698,-177.3333 244.1698,-171.6667 249.8364,-166 255.5031,-166"/>
+<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"/>
 </g>
-<!-- _p_arithmetic_s5&#45;&gt;_p_arithmetic_s6 -->
+<!-- _p_arithmetic_s3&#45;&gt;_p_arithmetic_s4 -->
 <g id="edge12" class="edge">
-<title>_p_arithmetic_s5&#45;&gt;_p_arithmetic_s6</title>
-<path fill="none" stroke="#000000" d="M257.8189,-300.6417C256.4446,-291.5981 255.1698,-280.5115 255.1698,-270.5 255.1698,-270.5 255.1698,-270.5 255.1698,-223.5 255.1698,-219.3656 255.8999,-215.1494 257.0483,-211.075"/>
-<polygon fill="#000000" stroke="#000000" points="260.4507,-211.9605 260.5866,-201.3665 253.8739,-209.5635 260.4507,-211.9605"/>
-<text text-anchor="start" x="255.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[256 == 2 ** 2 ** 3] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_arithmetic_ok -->
+<!-- _p_arithmetic_s2 -->
 <g id="node19" class="node">
-<title>_p_arithmetic_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="329.1698,-70 233.1698,-70 233.1698,-24 329.1698,-24 329.1698,-70"/>
-<text text-anchor="start" x="274.8344" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="238.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="233.1698,-47 233.1698,-47 329.1698,-47 329.1698,-47 233.1698,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M246.1698,-25C246.1698,-25 316.1698,-25 316.1698,-25 322.1698,-25 328.1698,-31 328.1698,-37 328.1698,-37 328.1698,-57 328.1698,-57 328.1698,-63 322.1698,-69 316.1698,-69 316.1698,-69 246.1698,-69 246.1698,-69 240.1698,-69 234.1698,-63 234.1698,-57 234.1698,-57 234.1698,-37 234.1698,-37 234.1698,-31 240.1698,-25 246.1698,-25"/>
+<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"/>
 </g>
-<!-- _p_arithmetic_s6&#45;&gt;_p_arithmetic_ok -->
+<!-- _p_arithmetic_s2&#45;&gt;_p_arithmetic_s3 -->
 <g id="edge13" class="edge">
-<title>_p_arithmetic_s6&#45;&gt;_p_arithmetic_ok</title>
-<path fill="none" stroke="#000000" d="M273.9621,-164.6215C275.1075,-155.5732 276.1698,-144.4884 276.1698,-134.5 276.1698,-134.5 276.1698,-134.5 276.1698,-87.5 276.1698,-85.1089 276.2567,-82.6444 276.4076,-80.1674"/>
-<polygon fill="#000000" stroke="#000000" points="279.9056,-80.3469 277.3294,-70.0701 272.9346,-79.7104 279.9056,-80.3469"/>
-<text text-anchor="start" x="276.1698" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[5 % 2 == 1] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_boolean_logic -->
-<!-- _p_boolean_logic_initial -->
-<g id="node21" class="node">
-<title>_p_boolean_logic_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="82.1698" cy="-901.5" rx="5.5" ry="5.5"/>
+<!-- _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>
 </g>
-<!-- _p_boolean_logic_s1 -->
+<!-- _p_comparisons -->
+<!-- _p_comparisons_initial -->
 <g id="node22" class="node">
-<title>_p_boolean_logic_s1</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="110.1698,-814 54.1698,-814 54.1698,-778 110.1698,-778 110.1698,-814"/>
-<text text-anchor="start" x="75.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="M66.5031,-779C66.5031,-779 97.8364,-779 97.8364,-779 103.5031,-779 109.1698,-784.6667 109.1698,-790.3333 109.1698,-790.3333 109.1698,-801.6667 109.1698,-801.6667 109.1698,-807.3333 103.5031,-813 97.8364,-813 97.8364,-813 66.5031,-813 66.5031,-813 60.8364,-813 55.1698,-807.3333 55.1698,-801.6667 55.1698,-801.6667 55.1698,-790.3333 55.1698,-790.3333 55.1698,-784.6667 60.8364,-779 66.5031,-779"/>
-</g>
-<!-- _p_boolean_logic_initial&#45;&gt;_p_boolean_logic_s1 -->
-<g id="edge14" class="edge">
-<title>_p_boolean_logic_initial&#45;&gt;_p_boolean_logic_s1</title>
-<path fill="none" stroke="#000000" d="M82.1698,-895.8288C82.1698,-891.1736 82.1698,-884.4097 82.1698,-878.5 82.1698,-878.5 82.1698,-878.5 82.1698,-831.5 82.1698,-829.1079 82.1698,-826.6252 82.1698,-824.1342"/>
-<polygon fill="#000000" stroke="#000000" points="85.6699,-824.0597 82.1698,-814.0598 78.6699,-824.0598 85.6699,-824.0597"/>
-<text text-anchor="middle" x="83.5593" y="-852" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<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"/>
 </g>
-<!-- _p_boolean_logic_s2 -->
-<g id="node23" class="node">
-<title>_p_boolean_logic_s2</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="110.1698,-696 54.1698,-696 54.1698,-660 110.1698,-660 110.1698,-696"/>
-<text text-anchor="start" x="75.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="M66.5031,-661C66.5031,-661 97.8364,-661 97.8364,-661 103.5031,-661 109.1698,-666.6667 109.1698,-672.3333 109.1698,-672.3333 109.1698,-683.6667 109.1698,-683.6667 109.1698,-689.3333 103.5031,-695 97.8364,-695 97.8364,-695 66.5031,-695 66.5031,-695 60.8364,-695 55.1698,-689.3333 55.1698,-683.6667 55.1698,-683.6667 55.1698,-672.3333 55.1698,-672.3333 55.1698,-666.6667 60.8364,-661 66.5031,-661"/>
+<!-- _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"/>
 </g>
-<!-- _p_boolean_logic_s1&#45;&gt;_p_boolean_logic_s2 -->
+<!-- _p_comparisons_initial&#45;&gt;_p_comparisons_s1 -->
 <g id="edge15" class="edge">
-<title>_p_boolean_logic_s1&#45;&gt;_p_boolean_logic_s2</title>
-<path fill="none" stroke="#000000" d="M82.1698,-777.9402C82.1698,-772.3497 82.1698,-766.1701 82.1698,-760.5 82.1698,-760.5 82.1698,-760.5 82.1698,-713.5 82.1698,-711.1079 82.1698,-708.6252 82.1698,-706.1342"/>
-<polygon fill="#000000" stroke="#000000" points="85.6699,-706.0597 82.1698,-696.0598 78.6699,-706.0598 85.6699,-706.0597"/>
-<text text-anchor="start" x="82.1698" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_boolean_logic_s3 -->
+<!-- _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"/>
+</g>
+<!-- _p_comparisons_s4 -->
 <g id="node24" class="node">
-<title>_p_boolean_logic_s3</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="110.1698,-578 54.1698,-578 54.1698,-542 110.1698,-542 110.1698,-578"/>
-<text text-anchor="start" x="75.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="M66.5031,-543C66.5031,-543 97.8364,-543 97.8364,-543 103.5031,-543 109.1698,-548.6667 109.1698,-554.3333 109.1698,-554.3333 109.1698,-565.6667 109.1698,-565.6667 109.1698,-571.3333 103.5031,-577 97.8364,-577 97.8364,-577 66.5031,-577 66.5031,-577 60.8364,-577 55.1698,-571.3333 55.1698,-565.6667 55.1698,-565.6667 55.1698,-554.3333 55.1698,-554.3333 55.1698,-548.6667 60.8364,-543 66.5031,-543"/>
+<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"/>
 </g>
-<!-- _p_boolean_logic_s2&#45;&gt;_p_boolean_logic_s3 -->
+<!-- _p_comparisons_s4&#45;&gt;_p_comparisons_ok -->
 <g id="edge16" class="edge">
-<title>_p_boolean_logic_s2&#45;&gt;_p_boolean_logic_s3</title>
-<path fill="none" stroke="#000000" d="M82.1698,-659.9402C82.1698,-654.3497 82.1698,-648.1701 82.1698,-642.5 82.1698,-642.5 82.1698,-642.5 82.1698,-595.5 82.1698,-593.1079 82.1698,-590.6252 82.1698,-588.1342"/>
-<polygon fill="#000000" stroke="#000000" points="85.6699,-588.0597 82.1698,-578.0598 78.6699,-588.0598 85.6699,-588.0597"/>
-<text text-anchor="start" x="82.1698" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[false or true] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_boolean_logic_s4 -->
+<!-- _p_comparisons_s3 -->
 <g id="node25" class="node">
-<title>_p_boolean_logic_s4</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="110.1698,-460 54.1698,-460 54.1698,-424 110.1698,-424 110.1698,-460"/>
-<text text-anchor="start" x="75.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="M66.5031,-425C66.5031,-425 97.8364,-425 97.8364,-425 103.5031,-425 109.1698,-430.6667 109.1698,-436.3333 109.1698,-436.3333 109.1698,-447.6667 109.1698,-447.6667 109.1698,-453.3333 103.5031,-459 97.8364,-459 97.8364,-459 66.5031,-459 66.5031,-459 60.8364,-459 55.1698,-453.3333 55.1698,-447.6667 55.1698,-447.6667 55.1698,-436.3333 55.1698,-436.3333 55.1698,-430.6667 60.8364,-425 66.5031,-425"/>
+<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"/>
 </g>
-<!-- _p_boolean_logic_s3&#45;&gt;_p_boolean_logic_s4 -->
+<!-- _p_comparisons_s3&#45;&gt;_p_comparisons_s4 -->
 <g id="edge17" class="edge">
-<title>_p_boolean_logic_s3&#45;&gt;_p_boolean_logic_s4</title>
-<path fill="none" stroke="#000000" d="M82.1698,-541.9402C82.1698,-536.3497 82.1698,-530.1701 82.1698,-524.5 82.1698,-524.5 82.1698,-524.5 82.1698,-477.5 82.1698,-475.1079 82.1698,-472.6252 82.1698,-470.1342"/>
-<polygon fill="#000000" stroke="#000000" points="85.6699,-470.0597 82.1698,-460.0598 78.6699,-470.0598 85.6699,-470.0597"/>
-<text text-anchor="start" x="82.1698" y="-498" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[true and not false] &#160;&#160;</text>
+<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>
 </g>
-<!-- _p_boolean_logic_s5 -->
+<!-- _p_comparisons_s2 -->
 <g id="node26" class="node">
-<title>_p_boolean_logic_s5</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="110.1698,-337 54.1698,-337 54.1698,-301 110.1698,-301 110.1698,-337"/>
-<text text-anchor="start" x="75.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="M66.5031,-302C66.5031,-302 97.8364,-302 97.8364,-302 103.5031,-302 109.1698,-307.6667 109.1698,-313.3333 109.1698,-313.3333 109.1698,-324.6667 109.1698,-324.6667 109.1698,-330.3333 103.5031,-336 97.8364,-336 97.8364,-336 66.5031,-336 66.5031,-336 60.8364,-336 55.1698,-330.3333 55.1698,-324.6667 55.1698,-324.6667 55.1698,-313.3333 55.1698,-313.3333 55.1698,-307.6667 60.8364,-302 66.5031,-302"/>
+<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"/>
 </g>
-<!-- _p_boolean_logic_s4&#45;&gt;_p_boolean_logic_s5 -->
+<!-- _p_comparisons_s2&#45;&gt;_p_comparisons_s3 -->
 <g id="edge18" class="edge">
-<title>_p_boolean_logic_s4&#45;&gt;_p_boolean_logic_s5</title>
-<path fill="none" stroke="#000000" d="M77.8731,-423.6741C76.9113,-418.1833 76.1698,-412.1255 76.1698,-406.5 76.1698,-406.5 76.1698,-406.5 76.1698,-359.5 76.1698,-355.4573 76.4659,-351.2119 76.9266,-347.0534"/>
-<polygon fill="#000000" stroke="#000000" points="80.4051,-347.4511 78.3359,-337.0603 73.4737,-346.4736 80.4051,-347.4511"/>
-<text text-anchor="start" x="76.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_ok -->
-<g id="node27" class="node">
-<title>_p_boolean_logic_ok</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="150.1698,-206 54.1698,-206 54.1698,-160 150.1698,-160 150.1698,-206"/>
-<text text-anchor="start" x="95.8344" y="-189.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">ok</text>
-<text text-anchor="start" x="59.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="54.1698,-183 54.1698,-183 150.1698,-183 150.1698,-183 54.1698,-183"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M67.1698,-161C67.1698,-161 137.1698,-161 137.1698,-161 143.1698,-161 149.1698,-167 149.1698,-173 149.1698,-173 149.1698,-193 149.1698,-193 149.1698,-199 143.1698,-205 137.1698,-205 137.1698,-205 67.1698,-205 67.1698,-205 61.1698,-205 55.1698,-199 55.1698,-193 55.1698,-193 55.1698,-173 55.1698,-173 55.1698,-167 61.1698,-161 67.1698,-161"/>
+<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>
 </g>
-<!-- _p_boolean_logic_s5&#45;&gt;_p_boolean_logic_ok -->
+<!-- _p_comparisons_s1&#45;&gt;_p_comparisons_s2 -->
 <g id="edge19" class="edge">
-<title>_p_boolean_logic_s5&#45;&gt;_p_boolean_logic_ok</title>
-<path fill="none" stroke="#000000" d="M78.8189,-300.6417C77.4446,-291.5981 76.1698,-280.5115 76.1698,-270.5 76.1698,-270.5 76.1698,-270.5 76.1698,-223.5 76.1698,-220.868 76.5634,-218.2706 77.2539,-215.739"/>
-<polygon fill="#000000" stroke="#000000" points="80.5441,-216.9432 81.1828,-206.3677 74.0885,-214.2367 80.5441,-216.9432"/>
-<text text-anchor="start" x="76.1698" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[not (false or false and true)] &#160;&#160;</text>
+<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>
 </g>
 </g>
 </svg>

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

@@ -15,7 +15,7 @@
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="53" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _a -->
-<g id="node2" class="node">
+<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>
@@ -28,6 +28,15 @@
 <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>
 </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"/>
+</g>
 <!-- _b -->
 <g id="node3" class="node">
 <title>_b</title>
@@ -37,28 +46,19 @@
 <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"/>
 </g>
-<!-- _a&#45;&gt;_b -->
-<g id="edge2" 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">in.e &#160;&#160;</text>
-</g>
-<!-- _c -->
-<g id="node4" 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"/>
-</g>
 <!-- _b&#45;&gt;_c -->
-<g id="edge3" class="edge">
+<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>
 </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">in.e &#160;&#160;</text>
+</g>
 </g>
 </svg>

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

@@ -15,14 +15,14 @@
 <text text-anchor="start" x="142.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_o0</title>
+<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">o0</text>
+<text text-anchor="start" x="208.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_o1</title>
+<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">o1</text>
+<text text-anchor="start" x="78.8292" y="-428.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -37,109 +37,109 @@
 <polygon fill="#000000" stroke="#000000" points="19.5001,-494.9971 16,-484.9971 12.5001,-494.9972 19.5001,-494.9971"/>
 <text text-anchor="middle" x="17.3895" y="-496" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
-<!-- _p_o0 -->
-<!-- _p_o0_initial -->
+<!-- _p_o1 -->
+<!-- _p_o1_initial -->
 <g id="node4" class="node">
-<title>_p_o0_initial</title>
+<title>_p_o1_initial</title>
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="215" cy="-403.5" rx="5.5" ry="5.5"/>
 </g>
-<!-- _p_o0_a -->
-<g id="node5" class="node">
-<title>_p_o0_a</title>
+<!-- _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">a</text>
+<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"/>
 </g>
-<!-- _p_o0_initial&#45;&gt;_p_o0_a -->
+<!-- _p_o1_initial&#45;&gt;_p_o1_d -->
 <g id="edge2" class="edge">
-<title>_p_o0_initial&#45;&gt;_p_o0_a</title>
+<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>
 </g>
-<!-- _p_o0_b -->
+<!-- _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"/>
+</g>
+<!-- _p_o1_e -->
 <g id="node6" class="node">
-<title>_p_o0_b</title>
+<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">b</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_b</text>
+<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"/>
 </g>
-<!-- _p_o0_a&#45;&gt;_p_o0_b -->
+<!-- _p_o1_e&#45;&gt;_p_o1_f -->
 <g id="edge3" class="edge">
-<title>_p_o0_a&#45;&gt;_p_o0_b</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="start" x="215" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e &#160;&#160;</text>
-</g>
-<!-- _p_o0_c -->
-<g id="node7" class="node">
-<title>_p_o0_c</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="212" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="167.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="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"/>
-</g>
-<!-- _p_o0_b&#45;&gt;_p_o0_c -->
-<g id="edge4" class="edge">
-<title>_p_o0_b&#45;&gt;_p_o0_c</title>
+<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>
 </g>
-<!-- _p_o1 -->
-<!-- _p_o1_initial -->
+<!-- _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>
+</g>
+<!-- _p_o0 -->
+<!-- _p_o0_initial -->
 <g id="node9" class="node">
-<title>_p_o1_initial</title>
+<title>_p_o0_initial</title>
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="85" cy="-403.5" rx="5.5" ry="5.5"/>
 </g>
-<!-- _p_o1_d -->
-<g id="node10" class="node">
-<title>_p_o1_d</title>
+<!-- _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">d</text>
+<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"/>
 </g>
-<!-- _p_o1_initial&#45;&gt;_p_o1_d -->
+<!-- _p_o0_initial&#45;&gt;_p_o0_a -->
 <g id="edge5" class="edge">
-<title>_p_o1_initial&#45;&gt;_p_o1_d</title>
+<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>
 </g>
-<!-- _p_o1_e -->
+<!-- _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"/>
+</g>
+<!-- _p_o0_b -->
 <g id="node11" class="node">
-<title>_p_o1_e</title>
+<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">e</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_e</text>
+<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"/>
 </g>
-<!-- _p_o1_d&#45;&gt;_p_o1_e -->
+<!-- _p_o0_b&#45;&gt;_p_o0_c -->
 <g id="edge6" class="edge">
-<title>_p_o1_d&#45;&gt;_p_o1_e</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="middle" x="86.3895" y="-236" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-</g>
-<!-- _p_o1_f -->
-<g id="node12" class="node">
-<title>_p_o1_f</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="136.5,-70 33.5,-70 33.5,-24 136.5,-24 136.5,-70"/>
-<text text-anchor="start" x="83.8326" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">f</text>
-<text text-anchor="start" x="39.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="34,-47 34,-47 137,-47 137,-47 34,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M46.5,-25C46.5,-25 123.5,-25 123.5,-25 129.5,-25 135.5,-31 135.5,-37 135.5,-37 135.5,-57 135.5,-57 135.5,-63 129.5,-69 123.5,-69 123.5,-69 46.5,-69 46.5,-69 40.5,-69 34.5,-63 34.5,-57 34.5,-57 34.5,-37 34.5,-37 34.5,-31 40.5,-25 46.5,-25"/>
-</g>
-<!-- _p_o1_e&#45;&gt;_p_o1_f -->
-<g id="edge7" class="edge">
-<title>_p_o1_e&#45;&gt;_p_o1_f</title>
+<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>
 </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">in.e &#160;&#160;</text>
+</g>
 </g>
 </svg>

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

@@ -15,7 +15,7 @@
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="53" cy="-217.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _a -->
-<g id="node2" class="node">
+<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>
@@ -28,6 +28,15 @@
 <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>
 </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"/>
+</g>
 <!-- _b -->
 <g id="node3" class="node">
 <title>_b</title>
@@ -37,28 +46,19 @@
 <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"/>
 </g>
-<!-- _a&#45;&gt;_b -->
-<g id="edge2" 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">in.e^f &#160;&#160;</text>
-</g>
-<!-- _c -->
-<g id="node4" 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"/>
-</g>
 <!-- _b&#45;&gt;_c -->
-<g id="edge3" class="edge">
+<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>
 </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">in.e^f &#160;&#160;</text>
+</g>
 </g>
 </svg>

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

@@ -15,14 +15,14 @@
 <text text-anchor="start" x="142.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_o0</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="154,-16 154,-455 276,-455 276,-16 154,-16"/>
-<text text-anchor="start" x="208.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o0</text>
+<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>
 </g>
 <g id="clust3" class="cluster">
-<title>cluster__p_o1</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-152 24,-455 146,-455 146,-152 24,-152"/>
-<text text-anchor="start" x="78.8292" y="-436.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">o1</text>
+<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>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -37,93 +37,93 @@
 <polygon fill="#000000" stroke="#000000" points="19.5001,-502.9971 16,-492.9971 12.5001,-502.9972 19.5001,-502.9971"/>
 <text text-anchor="middle" x="17.3895" y="-504" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
-<!-- _p_o0 -->
-<!-- _p_o0_initial -->
+<!-- _p_o1 -->
+<!-- _p_o1_initial -->
 <g id="node4" class="node">
-<title>_p_o0_initial</title>
+<title>_p_o1_initial</title>
 <ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="215" cy="-411.5" rx="5.5" ry="5.5"/>
 </g>
-<!-- _p_o0_a -->
-<g id="node5" class="node">
-<title>_p_o0_a</title>
+<!-- _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">a</text>
+<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"/>
 </g>
-<!-- _p_o0_initial&#45;&gt;_p_o0_a -->
+<!-- _p_o1_initial&#45;&gt;_p_o1_d -->
 <g id="edge2" class="edge">
-<title>_p_o0_initial&#45;&gt;_p_o0_a</title>
+<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>
 </g>
-<!-- _p_o0_b -->
-<g id="node6" class="node">
-<title>_p_o0_b</title>
+<!-- _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">b</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_b</text>
+<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"/>
 </g>
-<!-- _p_o0_a&#45;&gt;_p_o0_b -->
+<!-- _p_o1_d&#45;&gt;_p_o1_e -->
 <g id="edge3" class="edge">
-<title>_p_o0_a&#45;&gt;_p_o0_b</title>
+<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">in.e^f &#160;&#160;</text>
-</g>
-<!-- _p_o0_c -->
-<g id="node7" class="node">
-<title>_p_o0_c</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="212" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">c</text>
-<text text-anchor="start" x="167.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="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"/>
-</g>
-<!-- _p_o0_b&#45;&gt;_p_o0_c -->
-<g id="edge4" class="edge">
-<title>_p_o0_b&#45;&gt;_p_o0_c</title>
-<path fill="none" stroke="#000000" d="M215,-159.8105C215,-151.7932 215,-142.7517 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">f &#160;&#160;</text>
+<text text-anchor="start" x="215" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">f &#160;&#160;</text>
 </g>
-<!-- _p_o1 -->
-<!-- _p_o1_initial -->
-<g id="node9" class="node">
-<title>_p_o1_initial</title>
+<!-- _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"/>
 </g>
-<!-- _p_o1_d -->
-<g id="node10" class="node">
-<title>_p_o1_d</title>
+<!-- _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">d</text>
+<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"/>
 </g>
-<!-- _p_o1_initial&#45;&gt;_p_o1_d -->
-<g id="edge5" class="edge">
-<title>_p_o1_initial&#45;&gt;_p_o1_d</title>
+<!-- _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>
 </g>
-<!-- _p_o1_e -->
-<g id="node11" class="node">
-<title>_p_o1_e</title>
+<!-- _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"/>
+</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">e</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_e</text>
+<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"/>
 </g>
-<!-- _p_o1_d&#45;&gt;_p_o1_e -->
+<!-- _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>
+</g>
+<!-- _p_o0_a&#45;&gt;_p_o0_b -->
 <g id="edge6" class="edge">
-<title>_p_o1_d&#45;&gt;_p_o1_e</title>
+<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">f &#160;&#160;</text>
+<text text-anchor="start" x="85" y="-244" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e^f &#160;&#160;</text>
 </g>
 </g>
 </svg>

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

@@ -15,14 +15,14 @@
 <text text-anchor="start" x="247.6646" 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_increment</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="158,-152 158,-327 486,-327 486,-152 158,-152"/>
-<text text-anchor="start" x="295.6648" y="-308.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">increment</text>
+<title>cluster__p_status</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="360,-16 360,-327 486,-327 486,-16 360,-16"/>
+<text text-anchor="start" x="406.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_status</title>
-<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-16 24,-327 150,-327 150,-16 24,-16"/>
-<text text-anchor="start" x="70.9944" y="-308.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">status</text>
+<title>cluster__p_increment</title>
+<polygon fill="none" stroke="#000000" stroke-dasharray="5,2" points="24,-152 24,-327 352,-327 352,-152 24,-152"/>
+<text text-anchor="start" x="161.6648" y="-308.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">increment</text>
 </g>
 <!-- __initial -->
 <g id="node1" class="node">
@@ -37,68 +37,68 @@
 <polygon fill="#000000" stroke="#000000" points="19.5001,-374.9971 16,-364.9971 12.5001,-374.9972 19.5001,-374.9971"/>
 <text text-anchor="middle" x="17.3895" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
-<!-- _p_increment -->
-<!-- _p_increment_initial -->
-<g id="node4" class="node">
-<title>_p_increment_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="194" cy="-283.5" rx="5.5" ry="5.5"/>
-</g>
-<!-- _p_increment_a -->
-<g id="node5" class="node">
-<title>_p_increment_a</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="222,-196 166,-196 166,-160 222,-160 222,-196"/>
-<text text-anchor="start" x="190.6646" y="-174.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
-<path fill="none" stroke="#000000" stroke-width="2" d="M178.3333,-161C178.3333,-161 209.6667,-161 209.6667,-161 215.3333,-161 221,-166.6667 221,-172.3333 221,-172.3333 221,-183.6667 221,-183.6667 221,-189.3333 215.3333,-195 209.6667,-195 209.6667,-195 178.3333,-195 178.3333,-195 172.6667,-195 167,-189.3333 167,-183.6667 167,-183.6667 167,-172.3333 167,-172.3333 167,-166.6667 172.6667,-161 178.3333,-161"/>
-</g>
-<!-- _p_increment_initial&#45;&gt;_p_increment_a -->
-<g id="edge2" class="edge">
-<title>_p_increment_initial&#45;&gt;_p_increment_a</title>
-<path fill="none" stroke="#000000" d="M194,-277.8288C194,-273.1736 194,-266.4097 194,-260.5 194,-260.5 194,-260.5 194,-213.5 194,-211.1079 194,-208.6252 194,-206.1342"/>
-<polygon fill="#000000" stroke="#000000" points="197.5001,-206.0597 194,-196.0598 190.5001,-206.0598 197.5001,-206.0597"/>
-<text text-anchor="middle" x="195.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
-</g>
-<!-- _p_increment_a&#45;&gt;_p_increment_a -->
-<g id="edge3" class="edge">
-<title>_p_increment_a&#45;&gt;_p_increment_a</title>
-<path fill="none" stroke="#000000" d="M222.0183,-182.8247C233.888,-183.1883 244,-181.5801 244,-178 244,-175.5387 239.2205,-174.0094 232.3762,-173.4121"/>
-<polygon fill="#000000" stroke="#000000" points="232.0957,-169.9049 222.0183,-173.1753 231.9356,-176.903 232.0957,-169.9049"/>
-<text text-anchor="start" x="244" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e [not INSTATE([&quot;/p/status/done&quot;])]^out.inc /i += 1 &#160;&#160;</text>
-</g>
 <!-- _p_status -->
 <!-- _p_status_initial -->
-<g id="node7" class="node">
+<g id="node4" class="node">
 <title>_p_status_initial</title>
-<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="87" cy="-283.5" rx="5.5" ry="5.5"/>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="423" cy="-283.5" rx="5.5" ry="5.5"/>
 </g>
 <!-- _p_status_counting -->
-<g id="node8" class="node">
+<g id="node6" class="node">
 <title>_p_status_counting</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="120.5,-196 53.5,-196 53.5,-160 120.5,-160 120.5,-196"/>
-<text text-anchor="start" x="64.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="M65.8333,-161C65.8333,-161 108.1667,-161 108.1667,-161 113.8333,-161 119.5,-166.6667 119.5,-172.3333 119.5,-172.3333 119.5,-183.6667 119.5,-183.6667 119.5,-189.3333 113.8333,-195 108.1667,-195 108.1667,-195 65.8333,-195 65.8333,-195 60.1667,-195 54.5,-189.3333 54.5,-183.6667 54.5,-183.6667 54.5,-172.3333 54.5,-172.3333 54.5,-166.6667 60.1667,-161 65.8333,-161"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="456.5,-196 389.5,-196 389.5,-160 456.5,-160 456.5,-196"/>
+<text text-anchor="start" x="400.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="M401.8333,-161C401.8333,-161 444.1667,-161 444.1667,-161 449.8333,-161 455.5,-166.6667 455.5,-172.3333 455.5,-172.3333 455.5,-183.6667 455.5,-183.6667 455.5,-189.3333 449.8333,-195 444.1667,-195 444.1667,-195 401.8333,-195 401.8333,-195 396.1667,-195 390.5,-189.3333 390.5,-183.6667 390.5,-183.6667 390.5,-172.3333 390.5,-172.3333 390.5,-166.6667 396.1667,-161 401.8333,-161"/>
 </g>
 <!-- _p_status_initial&#45;&gt;_p_status_counting -->
-<g id="edge4" class="edge">
+<g id="edge2" class="edge">
 <title>_p_status_initial&#45;&gt;_p_status_counting</title>
-<path fill="none" stroke="#000000" d="M87,-277.8288C87,-273.1736 87,-266.4097 87,-260.5 87,-260.5 87,-260.5 87,-213.5 87,-211.1079 87,-208.6252 87,-206.1342"/>
-<polygon fill="#000000" stroke="#000000" points="90.5001,-206.0597 87,-196.0598 83.5001,-206.0598 90.5001,-206.0597"/>
-<text text-anchor="middle" x="88.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+<path fill="none" stroke="#000000" d="M423,-277.8288C423,-273.1736 423,-266.4097 423,-260.5 423,-260.5 423,-260.5 423,-213.5 423,-211.1079 423,-208.6252 423,-206.1342"/>
+<polygon fill="#000000" stroke="#000000" points="426.5001,-206.0597 423,-196.0598 419.5001,-206.0598 426.5001,-206.0597"/>
+<text text-anchor="middle" x="424.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
 </g>
 <!-- _p_status_done -->
-<g id="node9" class="node">
+<g id="node5" class="node">
 <title>_p_status_done</title>
-<polygon fill="transparent" stroke="transparent" stroke-width="2" points="142.5,-70 31.5,-70 31.5,-24 142.5,-24 142.5,-70"/>
-<text text-anchor="start" x="74.1584" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
-<text text-anchor="start" x="37.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="32,-47 32,-47 143,-47 143,-47 32,-47"/>
-<path fill="none" stroke="#000000" stroke-width="2" d="M44.5,-25C44.5,-25 129.5,-25 129.5,-25 135.5,-25 141.5,-31 141.5,-37 141.5,-37 141.5,-57 141.5,-57 141.5,-63 135.5,-69 129.5,-69 129.5,-69 44.5,-69 44.5,-69 38.5,-69 32.5,-63 32.5,-57 32.5,-57 32.5,-37 32.5,-37 32.5,-31 38.5,-25 44.5,-25"/>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="478.5,-70 367.5,-70 367.5,-24 478.5,-24 478.5,-70"/>
+<text text-anchor="start" x="410.1584" y="-53.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">done</text>
+<text text-anchor="start" x="373.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="368,-47 368,-47 479,-47 479,-47 368,-47"/>
+<path fill="none" stroke="#000000" stroke-width="2" d="M380.5,-25C380.5,-25 465.5,-25 465.5,-25 471.5,-25 477.5,-31 477.5,-37 477.5,-37 477.5,-57 477.5,-57 477.5,-63 471.5,-69 465.5,-69 465.5,-69 380.5,-69 380.5,-69 374.5,-69 368.5,-63 368.5,-57 368.5,-57 368.5,-37 368.5,-37 368.5,-31 374.5,-25 380.5,-25"/>
 </g>
 <!-- _p_status_counting&#45;&gt;_p_status_done -->
-<g id="edge5" class="edge">
+<g id="edge3" class="edge">
 <title>_p_status_counting&#45;&gt;_p_status_done</title>
-<path fill="none" stroke="#000000" d="M87,-159.7983C87,-152.007 87,-142.8073 87,-134.5 87,-134.5 87,-134.5 87,-87.5 87,-85.127 87,-82.6757 87,-80.2081"/>
-<polygon fill="#000000" stroke="#000000" points="90.5001,-80.1306 87,-70.1306 83.5001,-80.1306 90.5001,-80.1306"/>
-<text text-anchor="start" x="87" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[i == 2] &#160;&#160;</text>
+<path fill="none" stroke="#000000" d="M423,-159.7983C423,-152.007 423,-142.8073 423,-134.5 423,-134.5 423,-134.5 423,-87.5 423,-85.127 423,-82.6757 423,-80.2081"/>
+<polygon fill="#000000" stroke="#000000" points="426.5001,-80.1306 423,-70.1306 419.5001,-80.1306 426.5001,-80.1306"/>
+<text text-anchor="start" x="423" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">[i == 2] &#160;&#160;</text>
+</g>
+<!-- _p_increment -->
+<!-- _p_increment_initial -->
+<g id="node8" class="node">
+<title>_p_increment_initial</title>
+<ellipse fill="#000000" stroke="#000000" stroke-width="2" cx="60" cy="-283.5" rx="5.5" ry="5.5"/>
+</g>
+<!-- _p_increment_a -->
+<g id="node9" class="node">
+<title>_p_increment_a</title>
+<polygon fill="transparent" stroke="transparent" stroke-width="2" points="88,-196 32,-196 32,-160 88,-160 88,-196"/>
+<text text-anchor="start" x="56.6646" y="-174.2" font-family="Helvetica,sans-Serif" font-size="12.00" fill="#000000">a</text>
+<path fill="none" stroke="#000000" stroke-width="2" d="M44.3333,-161C44.3333,-161 75.6667,-161 75.6667,-161 81.3333,-161 87,-166.6667 87,-172.3333 87,-172.3333 87,-183.6667 87,-183.6667 87,-189.3333 81.3333,-195 75.6667,-195 75.6667,-195 44.3333,-195 44.3333,-195 38.6667,-195 33,-189.3333 33,-183.6667 33,-183.6667 33,-172.3333 33,-172.3333 33,-166.6667 38.6667,-161 44.3333,-161"/>
+</g>
+<!-- _p_increment_initial&#45;&gt;_p_increment_a -->
+<g id="edge4" class="edge">
+<title>_p_increment_initial&#45;&gt;_p_increment_a</title>
+<path fill="none" stroke="#000000" d="M60,-277.8288C60,-273.1736 60,-266.4097 60,-260.5 60,-260.5 60,-260.5 60,-213.5 60,-211.1079 60,-208.6252 60,-206.1342"/>
+<polygon fill="#000000" stroke="#000000" points="63.5001,-206.0597 60,-196.0598 56.5001,-206.0598 63.5001,-206.0597"/>
+<text text-anchor="middle" x="61.3895" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000"> </text>
+</g>
+<!-- _p_increment_a&#45;&gt;_p_increment_a -->
+<g id="edge5" class="edge">
+<title>_p_increment_a&#45;&gt;_p_increment_a</title>
+<path fill="none" stroke="#000000" d="M88.0183,-182.8247C99.888,-183.1883 110,-181.5801 110,-178 110,-175.5387 105.2205,-174.0094 98.3762,-173.4121"/>
+<polygon fill="#000000" stroke="#000000" points="98.0957,-169.9049 88.0183,-173.1753 97.9356,-176.903 98.0957,-169.9049"/>
+<text text-anchor="start" x="110" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">in.e [not INSTATE([&quot;/p/status/done&quot;])]^out.inc /i += 1 &#160;&#160;</text>
 </g>
 </g>
 </svg>

+ 18 - 0
test/test_files/syntax/fail_wrong_initial.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" ?>
+<test>
+  <statechart>
+    <semantics/>
+    <datamodel/>
+
+    <tree>
+      <!-- initial doesn't exist -->
+      <state initial="c">
+        <state id="a"/>
+        <state id="b"/>
+      </state>
+    </tree>
+  </statechart>
+
+  <output>
+  </output>
+</test>