Include jan's comments until polymorphism section
authorChristiaan Baaij <baaijcpr@wlan229131.mobiel.utwente.nl>
Thu, 11 Mar 2010 17:21:35 +0000 (18:21 +0100)
committerChristiaan Baaij <baaijcpr@wlan229131.mobiel.utwente.nl>
Thu, 11 Mar 2010 17:21:35 +0000 (18:21 +0100)
counter.svg
cλash.lhs
mac-nocurry.svg

index 16d2edf..19050b2 100644 (file)
@@ -10,7 +10,7 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="172.75"
+   width="168.75"
    height="142.6393"
    id="svg2"
    version="1.1"
@@ -23,9 +23,9 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="2.5858452"
-     inkscape:cx="69.577315"
-     inkscape:cy="49.983004"
+     inkscape:zoom="4"
+     inkscape:cx="40.360778"
+     inkscape:cy="80.566278"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      inkscape:window-maximized="0"
      inkscape:snap-center="false">
     <inkscape:grid
-       type="xygrid"
-       id="grid2818"
-       empspacing="5"
-       visible="true"
+       snapvisiblegridlinesonly="true"
        enabled="true"
-       snapvisiblegridlinesonly="true" />
+       visible="true"
+       empspacing="5"
+       id="grid2818"
+       type="xygrid" />
   </sodipodi:namedview>
   <defs
      id="defs4">
     <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
+       style="overflow:visible"
        id="Arrow1Mend"
-       style="overflow:visible">
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
       <path
-         id="path3732"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
          style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path3732" />
     </marker>
     <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0"
-       refX="0"
+       style="overflow:visible"
        id="Arrow1Send"
-       style="overflow:visible">
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Send">
       <path
-         id="path3738"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
          style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         id="path3738" />
     </marker>
     <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       id="perspective10"
        inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-    <inkscape:perspective
-       id="perspective3098"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
        inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_x="0 : 526.18109 : 1"
        sodipodi:type="inkscape:persp3d" />
     <inkscape:perspective
-       id="perspective3128"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
        inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3098" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
        inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective3128" />
   </defs>
   <metadata
      id="metadata7">
     </rdf:RDF>
   </metadata>
   <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
+     transform="translate(-371.86,-539.3795)"
      id="layer1"
-     transform="translate(-367.86,-539.3795)">
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1">
     <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+       transform="translate(368.36,548.2495)"
+       y="0.1834718"
+       x="44.344795"
+       height="133.08583"
+       width="115.70211"
        id="rect6192"
-       width="121.45211"
-       height="133.58583"
-       x="38.594795"
-       y="-0.3165282"
-       transform="translate(368.36,548.2495)" />
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
     <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="m 368.86,585.7295 82,0"
+       sodipodi:nodetypes="cc"
        id="path2940"
-       sodipodi:nodetypes="cc" />
+       d="m 372.36,585.7295 78.5,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
     <g
-       transform="translate(-75.428753,-10)"
-       id="g5140">
+       id="g5140"
+       transform="translate(-75.428753,-10)">
       <g
-         transform="translate(118.2,-6.1899623)"
-         id="g4445">
+         id="g4445"
+         transform="translate(118.2,-6.1899623)">
         <path
-           sodipodi:type="arc"
-           style="fill:#ffffff;stroke:#000000"
-           id="path3641"
-           sodipodi:cx="40"
-           sodipodi:cy="26.984081"
-           sodipodi:rx="10"
-           sodipodi:ry="10"
+           transform="translate(379,551.3654)"
            d="m 50,26.984081 c 0,5.522848 -4.477153,10 -10,10 -5.522847,0 -10,-4.477152 -10,-10 0,-5.522847 4.477153,-10 10,-10 5.522847,0 10,4.477153 10,10 z"
-           transform="translate(379,551.3654)" />
+           sodipodi:ry="10"
+           sodipodi:rx="10"
+           sodipodi:cy="26.984081"
+           sodipodi:cx="40"
+           id="path3641"
+           style="fill:#ffffff;stroke:#000000"
+           sodipodi:type="arc" />
         <g
-           id="g3067"
-           transform="matrix(1,0,0,-1,191.89,1238.2695)"
-           xml:space="preserve"
-           stroke-miterlimit="10.433"
-           font-style="normal"
-           font-variant="normal"
-           font-weight="normal"
-           font-stretch="normal"
-           font-size-adjust="none"
-           letter-spacing="normal"
-           word-spacing="normal"
-           ns0:text="$\\mathbf{+}$\n\n"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
            ns0:preamble=""
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+           ns0:text="$\\mathbf{+}$\n\n"
+           word-spacing="normal"
+           letter-spacing="normal"
+           font-size-adjust="none"
+           font-stretch="normal"
+           font-weight="normal"
+           font-variant="normal"
+           font-style="normal"
+           stroke-miterlimit="10.433"
+           xml:space="preserve"
+           transform="matrix(1,0,0,-1,191.89,1238.2695)"
+           id="g3067">
 <path
-   style="fill:#000000;stroke-width:0"
+   id="path3069"
    d="m 227.51,659.52 h 2.78 c 0.14,0 0.33,0 0.33,0.2 0,0.2 -0.19,0.2 -0.33,0.2 h -2.78 v 2.79 c 0,0.14 0,0.33 -0.2,0.33 -0.2,0 -0.2,-0.19 -0.2,-0.33 v -2.79 h -2.79 c -0.14,0 -0.33,0 -0.33,-0.2 0,-0.2 0.19,-0.2 0.33,-0.2 h 2.79 v -2.79 c 0,-0.14 0,-0.32 0.2,-0.32 0.2,0 0.2,0.18 0.2,0.32 z"
-   id="path3069" />
+   style="fill:#000000;stroke-width:0" />
 </g>      </g>
     </g>
     <path
-       sodipodi:type="arc"
-       style="fill:#ffffff;stroke:#000000"
-       id="path4429"
-       sodipodi:cx="40"
-       sodipodi:cy="26.984081"
-       sodipodi:rx="10"
-       sodipodi:ry="10"
+       transform="translate(421.77125,587.51042)"
        d="m 50,26.984081 c 0,5.522848 -4.477153,10 -10,10 -5.522847,0 -10,-4.477152 -10,-10 0,-5.522847 4.477153,-10 10,-10 5.522847,0 10,4.477153 10,10 z"
-       transform="translate(421.77125,587.51042)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#ffffff;stroke:#000000"
-       id="path4581"
-       sodipodi:cx="40"
-       sodipodi:cy="26.984081"
-       sodipodi:rx="10"
        sodipodi:ry="10"
+       sodipodi:rx="10"
+       sodipodi:cy="26.984081"
+       sodipodi:cx="40"
+       id="path4429"
+       style="fill:#ffffff;stroke:#000000"
+       sodipodi:type="arc" />
+    <path
+       transform="translate(421.77125,563.74542)"
        d="m 50,26.984081 c 0,5.522848 -4.477153,10 -10,10 -5.522847,0 -10,-4.477152 -10,-10 0,-5.522847 4.477153,-10 10,-10 5.522847,0 10,4.477153 10,10 z"
-       transform="translate(421.77125,563.74542)" />
+       sodipodi:ry="10"
+       sodipodi:rx="10"
+       sodipodi:cy="26.984081"
+       sodipodi:cx="40"
+       id="path4581"
+       style="fill:#ffffff;stroke:#000000"
+       sodipodi:type="arc" />
     <path
-       id="path5134"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
        d="m 488.02,578.19451 10,-5 0,-10 -10,-5 0,20 z"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+       id="path5134" />
     <path
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
-       d="m 431.2,585.15952 0.16,-28.2 19.8,0"
+       sodipodi:nodetypes="ccc"
        id="path5138"
-       sodipodi:nodetypes="ccc" />
+       d="m 429.2,585.15952 0.16,-28.2 21.8,0"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
     <path
-       sodipodi:nodetypes="cc"
-       id="path5148"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
        d="m 474.36,573.65952 12,0"
+       id="path5148"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g5245"
+       transform="matrix(1,0,0,-1,245.53,1233.8495)"
+       xml:space="preserve"
+       stroke-miterlimit="10.433"
+       font-style="normal"
+       font-variant="normal"
+       font-weight="normal"
+       font-stretch="normal"
+       font-size-adjust="none"
+       letter-spacing="normal"
+       word-spacing="normal"
+       ns0:text="$0$\n\n\n\n\n"
+       ns0:preamble=""
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+<path
+   style="fill:#000000;stroke-width:0"
+   d="m 228.01,660.42 0,0.15 0,0.15 0,0.15 -0.01,0.15 -0.01,0.15 -0.01,0.14 -0.01,0.15 -0.02,0.15 -0.03,0.15 -0.02,0.14 -0.04,0.15 -0.03,0.14 -0.05,0.14 -0.05,0.14 -0.05,0.14 -0.03,0.07 -0.03,0.07 c -0.46,0.96 -1.28,1.12 -1.7,1.12 -0.6,0 -1.32,-0.26 -1.73,-1.19 -0.32,-0.69 -0.37,-1.46 -0.37,-2.26 0,-0.75 0.04,-1.64 0.45,-2.4 0.43,-0.81 1.16,-1.01 1.64,-1.01 v 0.22 c -0.39,0 -0.97,0.25 -1.15,1.21 -0.11,0.6 -0.11,1.51 -0.11,2.1 0,0.64 0,1.3 0.08,1.83 0.19,1.19 0.93,1.28 1.18,1.28 0.33,0 0.99,-0.18 1.18,-1.17 0.1,-0.56 0.1,-1.31 0.1,-1.94 0,-0.75 0,-1.43 -0.11,-2.06 -0.15,-0.95 -0.72,-1.25 -1.17,-1.25 h 0 v -0.22 c 0.54,0 1.3,0.21 1.74,1.16 0.31,0.69 0.36,1.46 0.36,2.25 z"
+   id="path5247" />
+</g>    <path
+       sodipodi:nodetypes="cc"
+       id="path5338"
+       d="m 471.36,562.65952 15,0"
        style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path5378"
+       d="m 471.36,590.65952 23,0 0,-13"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
+    <path
+       id="path5402"
+       d="m 488.02,634.62457 10,5 0,10 -10,5 0,-20 z"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path5404"
+       d="m 420.86,616.0188 0.16,35.04072 64.9,0"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
+       d="m 429.34,610.5188 0,22.84072 21.98,0"
+       id="path5406"
+       sodipodi:nodetypes="ccc" />
     <g
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
        font-style="normal"
        stroke-miterlimit="10.433"
        xml:space="preserve"
-       transform="matrix(1,0,0,-1,245.53,1233.8495)"
-       id="g5245">
-<path
-   id="path5247"
-   d="m 228.01,660.42 0,0.15 0,0.15 0,0.15 -0.01,0.15 -0.01,0.15 -0.01,0.14 -0.01,0.15 -0.02,0.15 -0.03,0.15 -0.02,0.14 -0.04,0.15 -0.03,0.14 -0.05,0.14 -0.05,0.14 -0.05,0.14 -0.03,0.07 -0.03,0.07 c -0.46,0.96 -1.28,1.12 -1.7,1.12 -0.6,0 -1.32,-0.26 -1.73,-1.19 -0.32,-0.69 -0.37,-1.46 -0.37,-2.26 0,-0.75 0.04,-1.64 0.45,-2.4 0.43,-0.81 1.16,-1.01 1.64,-1.01 v 0.22 c -0.39,0 -0.97,0.25 -1.15,1.21 -0.11,0.6 -0.11,1.51 -0.11,2.1 0,0.64 0,1.3 0.08,1.83 0.19,1.19 0.93,1.28 1.18,1.28 0.33,0 0.99,-0.18 1.18,-1.17 0.1,-0.56 0.1,-1.31 0.1,-1.94 0,-0.75 0,-1.43 -0.11,-2.06 -0.15,-0.95 -0.72,-1.25 -1.17,-1.25 h 0 v -0.22 c 0.54,0 1.3,0.21 1.74,1.16 0.31,0.69 0.36,1.46 0.36,2.25 z"
-   style="fill:#000000;stroke-width:0" />
+       transform="translate(247.35,-29.030423)"
+       id="g5410">
+
 </g>    <path
        style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="m 471.36,562.65952 15,0"
-       id="path5338"
+       d="m 471.58,638.65962 14.6,0"
+       id="path5414"
        sodipodi:nodetypes="cc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-       id="path5351"
-       sodipodi:cx="35.355339"
-       sodipodi:cy="33.558914"
-       sodipodi:rx="0.79549515"
-       sodipodi:ry="0.79549515"
-       d="m 36.150834,33.558914 c 0,0.43934 -0.356155,0.795495 -0.795495,0.795495 -0.43934,0 -0.795495,-0.356155 -0.795495,-0.795495 0,-0.43934 0.356155,-0.795495 0.795495,-0.795495 0.43934,0 0.795495,0.356155 0.795495,0.795495 z"
-       transform="matrix(1.44,0,0,1.44,370.16475,537.40097)" />
     <path
        style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
-       d="m 471.36,590.65952 23,0 0,-13"
-       id="path5378"
+       d="m 471.18,614.15956 23,0 0,21.40024"
+       id="path5420"
        sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 488.02,634.62457 10,5 0,10 -10,5 0,-20 z"
-       id="path5402" />
     <path
        style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
-       d="m 431.02,595.65956 0,55.39996 55.4,0"
-       id="path5404"
+       d="m 429.2,585.90952 0.16,23.5 22.1,0"
+       id="path5424"
        sodipodi:nodetypes="ccc" />
     <path
-       sodipodi:nodetypes="ccc"
-       id="path5406"
-       d="m 411.02,585.65956 0,47.69996 40.3,0"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
-    <g
-       id="g5410"
-       transform="translate(247.35,-29.030423)"
-       xml:space="preserve"
-       stroke-miterlimit="10.433"
-       font-style="normal"
-       font-variant="normal"
-       font-weight="normal"
-       font-stretch="normal"
-       font-size-adjust="none"
-       letter-spacing="normal"
-       word-spacing="normal"
-       ns0:text="$0$\n\n\n\n\n"
-       ns0:preamble=""
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
-
-</g>    <path
-       sodipodi:nodetypes="cc"
-       id="path5414"
-       d="m 471.58,638.65962 14.6,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
-    <path
-       sodipodi:nodetypes="ccc"
-       id="path5420"
-       d="m 471.18,614.15956 23,0 0,21.40024"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
-    <path
-       sodipodi:nodetypes="ccc"
-       id="path5424"
-       d="m 421.2,585.90952 0.16,23.5 30.1,0"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5426"
+       sodipodi:cx="35.355339"
+       sodipodi:cy="33.558914"
+       sodipodi:rx="0.79549515"
+       sodipodi:ry="0.79549515"
+       d="m 36.150834,33.558914 a 0.79549515,0.79549515 0 1 1 -1.59099,0 0.79549515,0.79549515 0 1 1 1.59099,0 z"
+       transform="matrix(1.44,0,0,-1.44,378.44482,657.58212)" />
     <path
-       transform="matrix(1.44,0,0,-1.44,359.94482,633.982)"
-       d="m 36.150834,33.558914 c 0,0.43934 -0.356155,0.795495 -0.795495,0.795495 -0.43934,0 -0.795495,-0.356155 -0.795495,-0.795495 0,-0.43934 0.356155,-0.795495 0.795495,-0.795495 0.43934,0 0.795495,0.356155 0.795495,0.795495 z"
+       transform="matrix(1.44,0,0,-1.44,378.15782,633.9195)"
+       d="m 36.150834,33.558914 a 0.79549515,0.79549515 0 1 1 -1.59099,0 0.79549515,0.79549515 0 1 1 1.59099,0 z"
        sodipodi:ry="0.79549515"
        sodipodi:rx="0.79549515"
        sodipodi:cy="33.558914"
        sodipodi:cx="35.355339"
-       id="path5426"
+       id="path5428"
        style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
        sodipodi:type="arc" />
     <path
        sodipodi:type="arc"
        style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-       id="path5428"
+       id="path5430"
        sodipodi:cx="35.355339"
        sodipodi:cy="33.558914"
        sodipodi:rx="0.79549515"
        sodipodi:ry="0.79549515"
        d="m 36.150834,33.558914 c 0,0.43934 -0.356155,0.795495 -0.795495,0.795495 -0.43934,0 -0.795495,-0.356155 -0.795495,-0.795495 0,-0.43934 0.356155,-0.795495 0.795495,-0.795495 0.43934,0 0.795495,0.356155 0.795495,0.795495 z"
-       transform="matrix(1.44,0,0,-1.44,380.15782,633.9195)" />
-    <path
-       transform="matrix(1.44,0,0,-1.44,379.95782,644.107)"
-       d="m 36.150834,33.558914 c 0,0.43934 -0.356155,0.795495 -0.795495,0.795495 -0.43934,0 -0.795495,-0.356155 -0.795495,-0.795495 0,-0.43934 0.356155,-0.795495 0.795495,-0.795495 0.43934,0 0.795495,0.356155 0.795495,0.795495 z"
-       sodipodi:ry="0.79549515"
-       sodipodi:rx="0.79549515"
-       sodipodi:cy="33.558914"
-       sodipodi:cx="35.355339"
-       id="path5430"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-       sodipodi:type="arc" />
+       transform="matrix(1.44,0,0,-1.44,369.95782,671.10712)" />
     <path
-       sodipodi:nodetypes="ccc"
-       id="path5432"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
        d="m 471.66,666.15952 47.7,0 0,-54.5"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
+       id="path5432"
+       sodipodi:nodetypes="ccc" />
     <path
-       id="path5434"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
        d="m 514.36,592.40953 10,5 0,10 -10,5 0,-20 z"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+       id="path5434" />
     <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
-       d="m 130,95.810023 5,0 0,-36.400004 0,0 9,0"
-       id="path5438"
+       sodipodi:nodetypes="ccccc"
        transform="translate(368.36,548.2495)"
-       sodipodi:nodetypes="ccccc" />
+       id="path5438"
+       d="m 130,95.810023 5,0 0,-36.400004 0,0 9,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" />
     <path
-       sodipodi:nodetypes="ccccc"
-       id="path6184"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)"
        d="m 498.36,567.90952 5,0 0,29 0,0 9,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" />
+       id="path6184"
+       sodipodi:nodetypes="ccccc" />
     <path
-       sodipodi:nodetypes="cc"
-       id="path6186"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
        d="m 524.36,602.65952 15,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+       id="path6186"
+       sodipodi:nodetypes="cc" />
     <g
-       id="g2899"
-       transform="translate(-12.228753,133.38002)">
+       transform="translate(-12.228753,133.38002)"
+       id="g2899">
       <path
-         sodipodi:type="arc"
-         style="fill:#ffffff;stroke:#000000"
-         id="path2901"
-         sodipodi:cx="40"
-         sodipodi:cy="26.984081"
-         sodipodi:rx="10"
-         sodipodi:ry="10"
+         transform="translate(434,506.3654)"
          d="m 50,26.984081 c 0,5.522848 -4.477153,10 -10,10 -5.522847,0 -10,-4.477152 -10,-10 0,-5.522847 4.477153,-10 10,-10 5.522847,0 10,4.477153 10,10 z"
-         transform="translate(434,506.3654)" />
+         sodipodi:ry="10"
+         sodipodi:rx="10"
+         sodipodi:cy="26.984081"
+         sodipodi:cx="40"
+         id="path2901"
+         style="fill:#ffffff;stroke:#000000"
+         sodipodi:type="arc" />
       <g
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         ns0:preamble=""
-         ns0:text="$\\equiv$\n\n\n\n\n"
-         word-spacing="normal"
-         letter-spacing="normal"
-         font-size-adjust="none"
-         font-stretch="normal"
-         font-weight="normal"
-         font-variant="normal"
-         font-style="normal"
-         stroke-miterlimit="10.433"
-         xml:space="preserve"
+         id="g2903"
          transform="matrix(1,0,0,-1,246.72,1192.8695)"
-         id="g2903">
+         xml:space="preserve"
+         stroke-miterlimit="10.433"
+         font-style="normal"
+         font-variant="normal"
+         font-weight="normal"
+         font-stretch="normal"
+         font-size-adjust="none"
+         letter-spacing="normal"
+         word-spacing="normal"
+         ns0:text="$\\equiv$\n\n\n\n\n"
+         ns0:preamble=""
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
 <path
-   style="fill:#000000;stroke-width:0"
+   d="m 230.27,661.46 0.03,0 0.03,0 0.03,0 0.02,0 0.01,0 0.02,0 0.02,0 0.01,0.01 0.01,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.01,0.01 0.01,0 0.02,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0.01,0 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 c 0,0.19 -0.18,0.19 -0.35,0.19 h -5.95 c -0.17,0 -0.35,0 -0.35,-0.19 0,-0.2 0.2,-0.2 0.36,-0.2 z"
    id="path2905"
-   d="m 230.27,661.46 0.03,0 0.03,0 0.03,0 0.02,0 0.01,0 0.02,0 0.02,0 0.01,0.01 0.01,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.01,0.01 0.01,0 0.02,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0.01,0 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 c 0,0.19 -0.18,0.19 -0.35,0.19 h -5.95 c -0.17,0 -0.35,0 -0.35,-0.19 0,-0.2 0.2,-0.2 0.36,-0.2 z" />
+   style="fill:#000000;stroke-width:0" />
 <path
-   style="fill:#000000;stroke-width:0"
+   d="m 230.28,657.59 0.03,0 0.03,0 0.03,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0.01 0.01,0 0.01,0.01 0.02,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0,0.01 0,0.01 0.01,0 0,0.01 0,0 0,0.01 0.01,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0,0.01 c 0,0.2 -0.19,0.2 -0.36,0.2 h -5.93 c -0.16,0 -0.36,0 -0.36,-0.2 0,-0.2 0.18,-0.2 0.35,-0.2 z"
    id="path2907"
-   d="m 230.28,657.59 0.03,0 0.03,0 0.03,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0.01 0.01,0 0.01,0.01 0.02,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0,0.01 0,0.01 0.01,0 0,0.01 0,0 0,0.01 0.01,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0,0.01 c 0,0.2 -0.19,0.2 -0.36,0.2 h -5.93 c -0.16,0 -0.36,0 -0.36,-0.2 0,-0.2 0.18,-0.2 0.35,-0.2 z" />
+   style="fill:#000000;stroke-width:0" />
 <path
-   style="fill:#000000;stroke-width:0"
+   d="m 230.28,659.52 0.03,0 0.03,0 0.03,0.01 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.01,0 0.01,0.01 0.02,0 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0.01 0.01,0.01 0,0 0,0.01 0.01,0 0,0.01 0,0.01 0,0 0.01,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 c 0,0.2 -0.18,0.2 -0.35,0.2 h -5.95 c -0.17,0 -0.35,0 -0.35,-0.2 0,-0.2 0.18,-0.2 0.35,-0.2 z"
    id="path2909"
-   d="m 230.28,659.52 0.03,0 0.03,0 0.03,0.01 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.01,0 0.01,0.01 0.02,0 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0.01 0.01,0.01 0,0 0,0.01 0.01,0 0,0.01 0,0.01 0,0 0.01,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 c 0,0.2 -0.18,0.2 -0.35,0.2 h -5.95 c -0.17,0 -0.35,0 -0.35,-0.2 0,-0.2 0.18,-0.2 0.35,-0.2 z" />
+   style="fill:#000000;stroke-width:0" />
 </g>    </g>
     <path
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
-       d="m 368.36,660.85952 83.7,0"
+       sodipodi:nodetypes="cc"
        id="path2911"
-       sodipodi:nodetypes="cc" />
+       d="m 372.36,660.85952 79.7,0"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
     <path
-       sodipodi:nodetypes="cc"
-       id="path2913"
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
        d="m 440.76,671.95952 11,0"
-       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)" />
+       id="path2913"
+       sodipodi:nodetypes="cc" />
     <g
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       ns0:preamble=""
-       ns0:text="$\\mathit{direction}$\n\n\n"
-       word-spacing="normal"
-       letter-spacing="normal"
-       font-size-adjust="none"
-       font-stretch="normal"
-       font-weight="normal"
-       font-variant="normal"
-       font-style="normal"
-       stroke-miterlimit="10.433"
+       id="g3006"
+       transform="matrix(1,0,0,-1,149.405,1316.4088)"
        xml:space="preserve"
-       transform="matrix(1,0,0,-1,143.905,1316.4088)"
-       id="g3006">
+       stroke-miterlimit="10.433"
+       font-style="normal"
+       font-variant="normal"
+       font-weight="normal"
+       font-stretch="normal"
+       font-size-adjust="none"
+       letter-spacing="normal"
+       word-spacing="normal"
+       ns0:text="$\\mathit{direction}$\n\n\n"
+       ns0:preamble=""
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
 <path
-   id="path3008"
+   style="fill:#000000;stroke-width:0"
    d="m 228.98,663.9 0,0 0,0 0.01,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0.01 0,0 0.01,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.13,-0.01 -0.16,-0.02 l -0.98,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.47,0 0.49,-0.07 0.49,-0.17 0,-0.03 -0.02,-0.16 -0.02,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.84,0.58 v -0.22 c 0.08,0 0.31,-0.01 0.49,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.08,-0.31 -0.69,-1.11 -1.24,-1.11 -0.46,0 -0.54,0.59 -0.54,0.89 0,0.5 0.3,1.66 0.48,2.08 0.25,0.61 0.71,1.11 1.12,1.11 v 0.22 c -1.11,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.2,-1.55 0.36,0 0.8,0.21 1.2,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.36,0 0.57,0.25 0.72,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.32,-1.19 -0.66,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3008" />
 <path
-   id="path3010"
+   style="fill:#000000;stroke-width:0"
    d="m 231.82,658.66 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 -0.01,0.01 0,0 0,0 0,0 0,0.01 0,0 -0.01,0 0,0.01 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0 0,0.01 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.02,0 c -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.08,-0.29 -0.35,-1.25 -0.92,-1.25 -0.08,0 -0.22,0.01 -0.22,0.28 0,0.26 0.13,0.59 0.26,0.96 l 0.64,1.7 c 0.09,0.29 0.11,0.37 0.11,0.56 0,0.55 -0.37,0.8 -0.74,0.8 -0.94,0 -1.28,-1.49 -1.28,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.09,0.33 0.35,1.26 0.93,1.26 0.11,0 0.22,-0.05 0.22,-0.28 0,-0.24 -0.11,-0.53 -0.18,-0.72 l -0.3,-0.83 c -0.13,-0.32 -0.25,-0.65 -0.37,-0.98 -0.14,-0.38 -0.18,-0.49 -0.18,-0.69 0,-0.39 0.24,-0.8 0.76,-0.8 0.93,0 1.26,1.5 1.26,1.54 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3010" />
 <path
-   id="path3012"
+   style="fill:#000000;stroke-width:0"
    d="m 231.77,663.44 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 -0.01,0.02 0,0.02 -0.01,0.02 0,0.02 -0.01,0.02 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.01,0.01 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.01,0.01 -0.02,0.01 -0.01,0 -0.01,0.01 -0.02,0.01 -0.01,0.01 -0.02,0 -0.01,0.01 -0.01,0 -0.02,0.01 -0.01,0 -0.02,0 -0.01,0 -0.02,0.01 -0.01,0 -0.01,0 -0.02,0 c -0.2,0 -0.47,-0.2 -0.47,-0.48 0,-0.25 0.19,-0.33 0.33,-0.33 0.2,0 0.48,0.19 0.48,0.48 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3012" />
 <path
-   id="path3014"
+   style="fill:#000000;stroke-width:0"
    d="m 234.15,660.1 0,0 0,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0.01,0.01 0,0.02 0.01,0.01 0,0.02 0.01,0.02 0.01,0.01 0.02,0.05 0.02,0.04 0.02,0.05 0.02,0.05 0.03,0.05 0.03,0.06 0.04,0.06 0.03,0.06 0.04,0.06 0.04,0.06 0.04,0.06 0.05,0.06 0.04,0.06 0.05,0.06 0.06,0.05 0.05,0.06 0.06,0.05 0.06,0.05 0.06,0.04 0.06,0.04 0.04,0.02 0.03,0.01 0.04,0.02 0.03,0.01 0.04,0.01 0.03,0.02 0.04,0 0.04,0.01 0.04,0.01 0.03,0 0.04,0.01 0.04,0 c 0.05,0 0.33,0 0.53,-0.14 -0.35,-0.11 -0.38,-0.43 -0.38,-0.48 0,-0.13 0.09,-0.32 0.35,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.52 -0.65,0.63 -0.98,0.63 -0.68,0 -1.04,-0.5 -1.2,-0.72 -0.11,0.53 -0.5,0.72 -0.83,0.72 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.02,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.3,0 0.37,0.29 0.39,0.37 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3014" />
 <path
-   id="path3016"
+   style="fill:#000000;stroke-width:0"
    d="m 237.66,659.53 0.03,0 0.03,0 0.03,0 0.03,0.01 0.04,0 0.04,0 0.04,0 0.04,0 0.04,0 0.05,0.01 0.04,0 0.05,0 0.09,0.01 0.1,0.01 0.1,0.02 0.1,0.01 0.1,0.02 0.11,0.02 0.1,0.02 0.09,0.03 0.05,0.01 0.05,0.02 0.05,0.02 0.04,0.01 c 0.79,0.32 0.79,0.97 0.79,1.04 0,0.46 -0.37,0.85 -1.01,0.85 v -0.22 c 0.4,0 0.63,-0.27 0.63,-0.61 0,-1.06 -1.64,-1.06 -1.97,-1.06 h -0.21 c 0.43,1.64 1.45,1.67 1.55,1.67 v 0.22 c -1.04,0 -2.47,-1.01 -2.47,-2.77 0,-0.9 0.48,-1.75 1.43,-1.75 1.27,0 2.1,1 2.1,1.15 0,0.05 -0.08,0.16 -0.16,0.16 -0.04,0 -0.05,-0.01 -0.13,-0.11 -0.74,-0.94 -1.63,-0.98 -1.8,-0.98 -0.64,0 -0.75,0.71 -0.75,1.1 0,0.38 0.1,0.83 0.17,1.09 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3016" />
 <path
-   id="path3018"
+   style="fill:#000000;stroke-width:0"
    d="m 243.68,660.99 -0.02,-0.01 -0.02,0 -0.03,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.02,-0.01 -0.01,0 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.02 -0.01,-0.02 -0.02,-0.02 -0.01,-0.02 -0.01,-0.02 -0.02,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 0,-0.01 0,-0.02 0,-0.01 -0.01,-0.01 0,-0.02 0,0 0,-0.01 0,0 0,-0.01 0,0 0,0 c 0,-0.16 0.11,-0.32 0.34,-0.32 0.27,0 0.51,0.22 0.51,0.6 0,0.49 -0.43,0.86 -1.07,0.86 -1.23,0 -2.52,-1.42 -2.52,-2.87 0,-0.99 0.59,-1.65 1.47,-1.65 1.27,0 2.1,1 2.1,1.15 0,0.05 -0.08,0.16 -0.16,0.16 -0.04,0 -0.05,-0.01 -0.13,-0.11 -0.74,-0.94 -1.62,-0.98 -1.79,-0.98 -0.54,0 -0.79,0.45 -0.79,1.03 0,0.53 0.27,1.57 0.53,2.05 0.36,0.65 0.86,1 1.3,1 0.11,0 0.56,-0.02 0.71,-0.43 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3018" />
 <path
-   id="path3020"
+   style="fill:#000000;stroke-width:0"
    d="m 246.52,661.22 h 0.85 c 0.17,0 0.28,0 0.28,0.19 0,0.12 -0.09,0.12 -0.25,0.12 h -0.8 l 0.37,1.47 c 0.04,0.14 0.04,0.16 0.04,0.21 0,0.21 -0.17,0.26 -0.27,0.26 -0.25,0 -0.35,-0.21 -0.39,-0.36 l -0.39,-1.58 h -0.84 c -0.17,0 -0.28,0 -0.28,-0.19 0,-0.12 0.09,-0.12 0.25,-0.12 h 0.79 l -0.72,-2.86 c -0.01,-0.04 -0.04,-0.2 -0.04,-0.34 0,-0.5 0.32,-0.9 0.84,-0.9 1.01,0 1.52,1.49 1.52,1.54 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.12,-0.01 -0.2,-0.19 -0.18,-0.48 -0.58,-1.23 -1.15,-1.23 -0.27,0 -0.27,0.25 -0.27,0.41 0,0.07 0,0.23 0.07,0.51 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3020" />
 <path
-   id="path3022"
+   style="fill:#000000;stroke-width:0"
    d="m 250.54,658.66 -0.01,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 -0.01,0 0,0 0,0 0,0.01 0,0 -0.01,0 0,0.01 0,0 -0.01,0.01 0,0 -0.01,0 0,0 -0.01,0.01 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.02,0 -0.01,0 -0.01,0 c -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.08,-0.29 -0.35,-1.25 -0.93,-1.25 -0.08,0 -0.22,0.01 -0.22,0.28 0,0.26 0.13,0.59 0.26,0.96 l 0.64,1.7 c 0.1,0.29 0.12,0.37 0.12,0.56 0,0.55 -0.38,0.8 -0.75,0.8 -0.94,0 -1.28,-1.49 -1.28,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.09,0.33 0.35,1.26 0.93,1.26 0.11,0 0.22,-0.05 0.22,-0.28 0,-0.24 -0.11,-0.53 -0.18,-0.72 l -0.3,-0.83 c -0.13,-0.32 -0.25,-0.65 -0.37,-0.98 -0.14,-0.38 -0.18,-0.49 -0.18,-0.69 0,-0.39 0.24,-0.8 0.76,-0.8 0.94,0 1.27,1.5 1.27,1.54 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3022" />
 <path
-   id="path3024"
+   style="fill:#000000;stroke-width:0"
    d="m 250.49,663.44 -0.01,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.02 -0.01,0.02 0,0.02 -0.01,0.02 -0.01,0.02 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.01,0.01 -0.01,0.01 -0.01,0.02 -0.01,0.01 -0.01,0.01 -0.01,0.01 -0.02,0 -0.01,0.01 -0.01,0.01 -0.02,0.01 -0.01,0 -0.02,0.01 -0.01,0 -0.02,0.01 -0.01,0 -0.01,0 -0.02,0 -0.01,0.01 -0.02,0 -0.01,0 -0.01,0 c -0.21,0 -0.48,-0.2 -0.48,-0.48 0,-0.25 0.2,-0.33 0.34,-0.33 0.2,0 0.48,0.19 0.48,0.48 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3024" />
 <path
-   id="path3026"
+   style="fill:#000000;stroke-width:0"
    d="m 255.37,660 0,0.09 -0.01,0.09 -0.01,0.08 -0.01,0.08 -0.01,0.09 -0.02,0.07 -0.02,0.08 -0.03,0.08 -0.02,0.07 -0.03,0.07 -0.04,0.07 -0.03,0.07 -0.04,0.06 -0.04,0.06 -0.05,0.06 -0.04,0.05 -0.05,0.06 -0.05,0.05 -0.06,0.04 -0.05,0.05 -0.06,0.04 -0.06,0.04 -0.07,0.03 -0.06,0.03 -0.07,0.03 -0.07,0.03 -0.07,0.02 -0.07,0.01 -0.08,0.02 -0.08,0.01 -0.08,0 -0.08,0.01 c -1.23,0 -2.52,-1.42 -2.52,-2.87 0,-1.03 0.63,-1.65 1.46,-1.65 v 0.22 c -0.39,0 -0.76,0.31 -0.76,1.03 0,0.5 0.26,1.6 0.58,2.14 0.37,0.61 0.84,0.91 1.23,0.91 0.49,0 0.77,-0.44 0.77,-1.03 0,-0.43 -0.22,-1.45 -0.54,-2.05 -0.29,-0.55 -0.79,-1 -1.28,-1 h 0 v -0.22 c 1.23,0 2.52,1.42 2.52,2.88 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3026" />
 <path
-   id="path3028"
+   style="fill:#000000;stroke-width:0"
    d="m 257.68,658.98 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 c 0.13,0.51 0.13,0.52 0.3,0.81 0.14,0.24 0.59,0.99 1.34,0.99 0.44,0 0.46,-0.45 0.46,-0.66 0,-0.62 -0.43,-1.8 -0.58,-2.2 -0.12,-0.34 -0.15,-0.43 -0.15,-0.64 0,-0.44 0.27,-0.8 0.75,-0.8 0.93,0 1.27,1.49 1.27,1.54 0,0.1 -0.08,0.1 -0.15,0.1 -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.08,-0.27 -0.35,-1.25 -0.93,-1.25 -0.21,0 -0.22,0.15 -0.22,0.29 0,0.25 0.1,0.51 0.18,0.75 0.2,0.53 0.61,1.64 0.61,2.22 0,0.82 -0.55,1.04 -1.03,1.04 -0.82,0 -1.3,-0.6 -1.43,-0.79 -0.07,0.49 -0.41,0.79 -0.84,0.79 -0.36,0 -0.55,-0.23 -0.71,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.17,0.7 0.36,1.19 0.67,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.02,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.09,-0.26 0.28,-0.26 0.12,0 0.29,0.07 0.36,0.26 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3028" />
 </g>    <g
-       id="g3230"
-       transform="matrix(1,0,0,-1,202.995,1331.6142)"
-       xml:space="preserve"
-       stroke-miterlimit="10.433"
-       font-style="normal"
-       font-variant="normal"
-       font-weight="normal"
-       font-stretch="normal"
-       font-size-adjust="none"
-       letter-spacing="normal"
-       word-spacing="normal"
-       ns0:text="$\\mathit{Up}$\n\n\n\n\n\n\n\n\n"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+       ns0:text="$\\mathit{Up}$\n\n\n\n\n\n\n\n\n"
+       word-spacing="normal"
+       letter-spacing="normal"
+       font-size-adjust="none"
+       font-stretch="normal"
+       font-weight="normal"
+       font-variant="normal"
+       font-style="normal"
+       stroke-miterlimit="10.433"
+       xml:space="preserve"
+       transform="matrix(1,0,0,-1,202.995,1331.6142)"
+       id="g3230">
 <path
-   d="m 230.76,663.05 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.02 0.01,0.03 0.01,0.02 0.01,0.03 0.01,0.02 0.03,0.05 0.02,0.04 0.03,0.04 0.03,0.03 0.03,0.04 0.03,0.03 0.03,0.03 0.04,0.02 0.03,0.03 0.04,0.02 0.03,0.02 0.04,0.01 0.04,0.02 0.03,0.01 0.04,0.02 0.04,0.01 0.03,0.01 0.04,0 0.04,0.01 0.03,0.01 0.04,0 0.03,0.01 0.04,0 0.03,0 0.03,0 0.03,0.01 0.03,0 0.03,0 c 0.03,0 0.15,0.01 0.15,0.18 0,0.08 -0.04,0.13 -0.13,0.13 -0.3,0 -0.63,-0.03 -0.94,-0.03 -0.31,0 -0.64,0.03 -0.95,0.03 -0.05,0 -0.18,0 -0.18,-0.19 0,-0.11 0.09,-0.12 0.18,-0.12 0.52,-0.02 0.6,-0.22 0.6,-0.43 0,-0.09 -0.02,-0.16 -0.04,-0.24 l -0.89,-3.55 c -0.32,-1.28 -1.37,-2.19 -2.31,-2.19 -0.52,0 -1.07,0.34 -1.07,1.25 0,0.22 0.05,0.53 0.1,0.76 l 1,4 c 0.08,0.32 0.16,0.4 0.78,0.4 0.21,0 0.3,0 0.3,0.18 0,0.11 -0.07,0.13 -0.14,0.13 -0.37,0 -0.78,-0.03 -1.17,-0.03 -0.4,0 -0.81,0.03 -1.2,0.03 -0.06,0 -0.19,0 -0.19,-0.19 0,-0.12 0.08,-0.12 0.27,-0.12 0.31,0 0.58,0 0.58,-0.17 0,-0.03 0,-0.05 -0.04,-0.19 l -0.96,-3.85 c -0.07,-0.31 -0.07,-0.53 -0.07,-0.63 0,-1.2 0.83,-1.88 1.77,-1.88 1.26,0 2.37,1.3 2.64,2.39 z"
+   style="fill:#000000;stroke-width:0"
    id="path3232"
-   style="fill:#000000;stroke-width:0" />
+   d="m 230.76,663.05 0.01,0.03 0.01,0.03 0.01,0.03 0.01,0.02 0.01,0.03 0.01,0.02 0.01,0.03 0.01,0.02 0.03,0.05 0.02,0.04 0.03,0.04 0.03,0.03 0.03,0.04 0.03,0.03 0.03,0.03 0.04,0.02 0.03,0.03 0.04,0.02 0.03,0.02 0.04,0.01 0.04,0.02 0.03,0.01 0.04,0.02 0.04,0.01 0.03,0.01 0.04,0 0.04,0.01 0.03,0.01 0.04,0 0.03,0.01 0.04,0 0.03,0 0.03,0 0.03,0.01 0.03,0 0.03,0 c 0.03,0 0.15,0.01 0.15,0.18 0,0.08 -0.04,0.13 -0.13,0.13 -0.3,0 -0.63,-0.03 -0.94,-0.03 -0.31,0 -0.64,0.03 -0.95,0.03 -0.05,0 -0.18,0 -0.18,-0.19 0,-0.11 0.09,-0.12 0.18,-0.12 0.52,-0.02 0.6,-0.22 0.6,-0.43 0,-0.09 -0.02,-0.16 -0.04,-0.24 l -0.89,-3.55 c -0.32,-1.28 -1.37,-2.19 -2.31,-2.19 -0.52,0 -1.07,0.34 -1.07,1.25 0,0.22 0.05,0.53 0.1,0.76 l 1,4 c 0.08,0.32 0.16,0.4 0.78,0.4 0.21,0 0.3,0 0.3,0.18 0,0.11 -0.07,0.13 -0.14,0.13 -0.37,0 -0.78,-0.03 -1.17,-0.03 -0.4,0 -0.81,0.03 -1.2,0.03 -0.06,0 -0.19,0 -0.19,-0.19 0,-0.12 0.08,-0.12 0.27,-0.12 0.31,0 0.58,0 0.58,-0.17 0,-0.03 0,-0.05 -0.04,-0.19 l -0.96,-3.85 c -0.07,-0.31 -0.07,-0.53 -0.07,-0.63 0,-1.2 0.83,-1.88 1.77,-1.88 1.26,0 2.37,1.3 2.64,2.39 z" />
 <path
-   d="m 231.73,655.96 -0.01,-0.03 0,-0.03 -0.01,-0.02 -0.01,-0.03 -0.01,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.03,-0.01 -0.02,0 -0.03,0 -0.03,0 -0.02,-0.01 -0.03,0 -0.04,0 -0.03,0 -0.04,0 c -0.09,0 -0.21,0 -0.21,-0.19 0,-0.07 0.05,-0.12 0.12,-0.12 0.27,0 0.56,0.03 0.84,0.03 0.32,0 0.66,-0.03 0.97,-0.03 0.06,0 0.19,0 0.19,0.19 0,0.12 -0.1,0.12 -0.24,0.12 -0.51,0 -0.51,0.06 -0.51,0.16 0,0.06 0.07,0.32 0.11,0.48 l 0.36,1.45 c 0.07,-0.17 0.32,-0.58 0.83,-0.58 l -0.01,0.22 c -0.57,0 -0.67,0.85 -0.67,0.93 0,0.03 0.01,0.06 0.03,0.14 l 0.47,1.88 c 0.08,0.34 0.69,1.13 1.24,1.13 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.55,-0.95 -1.06,-0.95 l 0.01,-0.22 c 1.09,0 2.28,1.48 2.28,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.49,0 -0.92,-0.36 -1.21,-0.7 -0.11,0.58 -0.56,0.7 -0.81,0.7 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.06 0,-0.22 -0.07,-0.5 z"
+   style="fill:#000000;stroke-width:0"
    id="path3234"
-   style="fill:#000000;stroke-width:0" />
+   d="m 231.73,655.96 -0.01,-0.03 0,-0.03 -0.01,-0.02 -0.01,-0.03 -0.01,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.03,-0.01 -0.02,0 -0.03,0 -0.03,0 -0.02,-0.01 -0.03,0 -0.04,0 -0.03,0 -0.04,0 c -0.09,0 -0.21,0 -0.21,-0.19 0,-0.07 0.05,-0.12 0.12,-0.12 0.27,0 0.56,0.03 0.84,0.03 0.32,0 0.66,-0.03 0.97,-0.03 0.06,0 0.19,0 0.19,0.19 0,0.12 -0.1,0.12 -0.24,0.12 -0.51,0 -0.51,0.06 -0.51,0.16 0,0.06 0.07,0.32 0.11,0.48 l 0.36,1.45 c 0.07,-0.17 0.32,-0.58 0.83,-0.58 l -0.01,0.22 c -0.57,0 -0.67,0.85 -0.67,0.93 0,0.03 0.01,0.06 0.03,0.14 l 0.47,1.88 c 0.08,0.34 0.69,1.13 1.24,1.13 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.55,-0.95 -1.06,-0.95 l 0.01,-0.22 c 1.09,0 2.28,1.48 2.28,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.49,0 -0.92,-0.36 -1.21,-0.7 -0.11,0.58 -0.56,0.7 -0.81,0.7 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.06 0,-0.22 -0.07,-0.5 z" />
 </g>    <g
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
-       ns0:text="$\\mathit{wrap}$\n\n"
+       ns0:text="$\\mathit{x}$\n\n"
        word-spacing="normal"
        letter-spacing="normal"
        font-size-adjust="none"
        font-style="normal"
        stroke-miterlimit="10.433"
        xml:space="preserve"
-       transform="matrix(1,0,0,-1,152.685,1249.9995)"
-       id="g3434">
-<path
-   id="path3436"
-   d="m 227.22,658.91 -0.01,-0.03 0,-0.03 -0.01,-0.02 -0.01,-0.03 0,-0.02 0,-0.02 -0.01,-0.03 0,-0.02 -0.01,-0.02 0,-0.03 0,-0.02 -0.01,-0.02 0,-0.02 0,-0.02 -0.01,-0.04 0,-0.04 0,-0.04 -0.01,-0.03 0,-0.03 0,-0.04 0,-0.03 0,-0.02 0,-0.03 c 0,-0.11 -0.31,-0.94 -0.84,-0.94 -0.7,0 -0.7,0.74 -0.7,0.87 0,0.54 0.26,1.27 0.57,2.09 0.07,0.19 0.12,0.34 0.12,0.53 0,0.5 -0.33,0.81 -0.75,0.81 -0.93,0 -1.28,-1.48 -1.28,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.08,0.31 0.35,1.26 0.92,1.26 0.11,0 0.22,-0.03 0.22,-0.29 0,-0.24 -0.1,-0.51 -0.24,-0.9 -0.49,-1.35 -0.49,-1.61 -0.49,-1.88 0,-0.34 0.08,-0.68 0.34,-0.92 0.31,-0.28 0.76,-0.31 0.93,-0.31 0.32,0 0.67,0.13 0.97,0.64 0.15,-0.37 0.55,-0.64 1.13,-0.64 0.6,0 1.02,0.41 1.32,1.12 0.3,0.68 0.69,2.21 0.69,2.74 0,0.35 -0.12,0.66 -0.41,0.66 -0.23,0 -0.48,-0.23 -0.48,-0.46 0,-0.13 0.07,-0.2 0.13,-0.27 0.24,-0.26 0.27,-0.58 0.27,-0.79 0,-0.4 -0.32,-1.44 -0.49,-1.85 -0.22,-0.52 -0.54,-0.93 -1,-0.93 -0.49,0 -0.65,0.41 -0.65,0.83 0,0.09 0.01,0.33 0.12,0.77 l 0.41,1.67 c 0.06,0.22 0.16,0.62 0.16,0.66 0,0.11 -0.08,0.26 -0.28,0.26 -0.28,0 -0.35,-0.27 -0.37,-0.35 z"
-   style="fill:#000000;stroke-width:0" />
-<path
-   id="path3438"
-   d="m 232.62,660.1 0,0 0,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0.01,0.01 0,0.02 0.01,0.01 0,0.02 0.01,0.02 0.01,0.01 0.02,0.05 0.02,0.04 0.02,0.05 0.02,0.05 0.03,0.05 0.03,0.06 0.04,0.06 0.03,0.06 0.04,0.06 0.04,0.06 0.04,0.06 0.05,0.06 0.04,0.06 0.05,0.06 0.06,0.05 0.05,0.06 0.06,0.05 0.06,0.05 0.06,0.04 0.06,0.04 0.04,0.02 0.03,0.01 0.04,0.02 0.03,0.01 0.04,0.01 0.03,0.02 0.04,0 0.04,0.01 0.04,0.01 0.03,0 0.04,0.01 0.04,0 c 0.05,0 0.33,0 0.53,-0.14 -0.35,-0.11 -0.38,-0.43 -0.38,-0.48 0,-0.13 0.09,-0.32 0.35,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.52 -0.65,0.63 -0.98,0.63 -0.68,0 -1.04,-0.5 -1.2,-0.72 -0.11,0.53 -0.5,0.72 -0.83,0.72 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.02,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.3,0 0.37,0.29 0.39,0.37 z"
-   style="fill:#000000;stroke-width:0" />
+       transform="matrix(1,0,0,-1,166,1240.6404)"
+       id="content">
 <path
-   id="path3440"
-   d="m 237.22,657.82 0.01,-0.04 0.02,-0.05 0.01,-0.04 0.01,-0.04 0.02,-0.04 0.02,-0.04 0.02,-0.03 0.02,-0.03 0.02,-0.04 0.02,-0.03 0.03,-0.03 0.02,-0.03 0.03,-0.02 0.02,-0.03 0.03,-0.02 0.03,-0.02 0.02,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.02 0.03,-0.01 0.03,-0.01 0.04,-0.02 0.03,-0.01 0.03,-0.01 0.03,0 0.04,-0.01 0.03,-0.01 0.03,0 0.03,0 0.04,-0.01 0.03,0 c 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.29,0.96 0.29,0.98 0,0.1 -0.08,0.1 -0.14,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.23 0.07,0.51 l 0.68,2.71 c 0.04,0.14 0.04,0.16 0.04,0.21 0,0.21 -0.17,0.26 -0.27,0.26 -0.32,0 -0.39,-0.34 -0.4,-0.39 -0.19,0.43 -0.51,0.59 -0.83,0.59 v -0.22 c 0.44,0 0.69,-0.52 0.69,-0.94 0,-0.02 -0.01,-0.07 -0.03,-0.13 h 0 l -0.47,-1.88 c -0.08,-0.32 -0.7,-1.13 -1.24,-1.13 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.7,1.11 1.11,1.11 v 0.22 c -1.1,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.35,0 0.79,0.21 1.19,0.7 z"
-   style="fill:#000000;stroke-width:0" />
-<path
-   id="path3442"
-   d="m 239.73,655.96 0,-0.03 -0.01,-0.03 -0.01,-0.02 -0.01,-0.03 0,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.03,-0.01 -0.02,0 -0.03,0 -0.02,0 -0.03,-0.01 -0.03,0 -0.03,0 -0.04,0 -0.03,0 c -0.09,0 -0.21,0 -0.21,-0.19 0,-0.07 0.05,-0.12 0.12,-0.12 0.27,0 0.55,0.03 0.83,0.03 0.32,0 0.66,-0.03 0.97,-0.03 0.06,0 0.19,0 0.19,0.19 0,0.12 -0.1,0.12 -0.24,0.12 -0.51,0 -0.51,0.06 -0.51,0.16 0,0.06 0.07,0.32 0.11,0.48 l 0.36,1.45 c 0.07,-0.17 0.32,-0.58 0.84,-0.58 l -0.01,0.22 c -0.58,0 -0.68,0.85 -0.68,0.93 0,0.03 0.01,0.06 0.03,0.14 l 0.47,1.88 c 0.08,0.34 0.69,1.13 1.24,1.13 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.54,-0.95 -1.05,-0.95 l 0.01,-0.22 c 1.08,0 2.27,1.48 2.27,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.48,0 -0.91,-0.36 -1.2,-0.7 -0.12,0.58 -0.57,0.7 -0.82,0.7 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.06 0,-0.22 -0.07,-0.5 z"
-   style="fill:#000000;stroke-width:0" />
+   style="fill:#000000;stroke-width:0"
+   id="path3649"
+   d="m 228.15,661.28 -0.01,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,0 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.02,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 0,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,0 0,-0.01 0,0 0,0 0,0 0,0 c 0,-0.13 0.09,-0.32 0.34,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.51 -0.58,0.63 -0.86,0.63 -0.55,0 -0.88,-0.49 -0.98,-0.68 -0.22,0.6 -0.71,0.68 -0.96,0.68 -0.99,0 -1.53,-1.31 -1.53,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.13,0.01 0.18,0.17 0.27,0.86 0.79,1.25 1.18,1.25 0.29,0 0.48,-0.23 0.48,-0.63 0,-0.24 -0.12,-0.73 -0.21,-1.1 -0.11,-0.41 -0.12,-0.45 -0.23,-0.9 -0.16,-0.65 -0.36,-1.45 -0.96,-1.45 -0.03,0 -0.27,0 -0.44,0.14 0.3,0.08 0.39,0.33 0.39,0.48 0,0.26 -0.21,0.32 -0.34,0.32 -0.25,0 -0.5,-0.21 -0.5,-0.54 0,-0.39 0.42,-0.62 0.88,-0.62 0.48,0 0.8,0.38 0.97,0.68 0.2,-0.57 0.69,-0.68 0.95,-0.68 1.03,0 1.53,1.34 1.53,1.54 0,0.1 -0.08,0.1 -0.14,0.1 -0.13,0 -0.14,-0.01 -0.19,-0.17 -0.26,-0.86 -0.76,-1.25 -1.18,-1.25 -0.2,0 -0.47,0.12 -0.47,0.64 0,0.24 0.11,0.67 0.19,1.01 0.11,0.41 0.26,1.03 0.34,1.36 0.14,0.52 0.41,1.07 0.88,1.07 0.03,0 0.27,0 0.43,-0.14 z" />
 </g>    <g
-       id="content"
-       transform="matrix(1,0,0,-1,160.5,1240.6404)"
+       id="g3850"
+       transform="matrix(1,0,0,-1,225.38585,1202.9395)"
        xml:space="preserve"
        stroke-miterlimit="10.433"
        font-style="normal"
        font-size-adjust="none"
        letter-spacing="normal"
        word-spacing="normal"
-       ns0:text="$\\mathit{x}$\n\n"
+       ns0:text="$\\mathbf{counter}$\n\n\n"
        ns0:preamble=""
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
 <path
-   d="m 228.15,661.28 -0.01,-0.01 -0.02,0 -0.02,-0.01 -0.02,0 -0.01,-0.01 -0.02,-0.01 -0.01,0 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,0 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.01 -0.02,-0.01 -0.01,-0.01 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.02,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 -0.01,-0.02 0,-0.02 -0.01,-0.02 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,0 0,-0.01 0,0 0,0 0,0 0,0 c 0,-0.13 0.09,-0.32 0.34,-0.32 0.18,0 0.49,0.14 0.49,0.53 0,0.51 -0.58,0.63 -0.86,0.63 -0.55,0 -0.88,-0.49 -0.98,-0.68 -0.22,0.6 -0.71,0.68 -0.96,0.68 -0.99,0 -1.53,-1.31 -1.53,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.13,0.01 0.18,0.17 0.27,0.86 0.79,1.25 1.18,1.25 0.29,0 0.48,-0.23 0.48,-0.63 0,-0.24 -0.12,-0.73 -0.21,-1.1 -0.11,-0.41 -0.12,-0.45 -0.23,-0.9 -0.16,-0.65 -0.36,-1.45 -0.96,-1.45 -0.03,0 -0.27,0 -0.44,0.14 0.3,0.08 0.39,0.33 0.39,0.48 0,0.26 -0.21,0.32 -0.34,0.32 -0.25,0 -0.5,-0.21 -0.5,-0.54 0,-0.39 0.42,-0.62 0.88,-0.62 0.48,0 0.8,0.38 0.97,0.68 0.2,-0.57 0.69,-0.68 0.95,-0.68 1.03,0 1.53,1.34 1.53,1.54 0,0.1 -0.08,0.1 -0.14,0.1 -0.13,0 -0.14,-0.01 -0.19,-0.17 -0.26,-0.86 -0.76,-1.25 -1.18,-1.25 -0.2,0 -0.47,0.12 -0.47,0.64 0,0.24 0.11,0.67 0.19,1.01 0.11,0.41 0.26,1.03 0.34,1.36 0.14,0.52 0.41,1.07 0.88,1.07 0.03,0 0.27,0 0.43,-0.14 z"
-   id="path3649"
-   style="fill:#000000;stroke-width:0" />
-</g>    <g
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       ns0:preamble=""
-       ns0:text="$\\mathbf{counter}$\n\n\n"
-       word-spacing="normal"
-       letter-spacing="normal"
-       font-size-adjust="none"
-       font-stretch="normal"
-       font-weight="normal"
-       font-variant="normal"
-       font-style="normal"
-       stroke-miterlimit="10.433"
-       xml:space="preserve"
-       transform="matrix(1,0,0,-1,225.38585,1202.9395)"
-       id="g3850">
-<path
-   id="path3852"
+   style="fill:#000000;stroke-width:0"
    d="m 227.02,661.29 -0.02,-0.02 -0.01,-0.01 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.02,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 -0.01,-0.01 0,-0.02 -0.01,-0.01 -0.01,-0.02 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.02 -0.01,-0.01 0,-0.02 0,-0.01 0,-0.01 -0.01,-0.02 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 0,-0.01 c 0,-0.44 0.35,-0.63 0.62,-0.63 0.31,0 0.63,0.21 0.63,0.63 0,0.86 -1.16,0.92 -1.74,0.92 -1.78,0 -2.52,-1.15 -2.52,-2.31 0,-1.32 0.94,-2.27 2.47,-2.27 1.62,0 1.92,1.16 1.92,1.23 0,0.14 -0.15,0.14 -0.24,0.14 -0.18,0 -0.19,-0.02 -0.24,-0.15 -0.26,-0.63 -0.74,-0.82 -1.25,-0.82 -1.38,0 -1.38,1.47 -1.38,1.92 0,0.56 0,1.86 1.28,1.86 0.35,0 0.52,-0.03 0.65,-0.06 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3852" />
 <path
-   id="path3854"
+   style="fill:#000000;stroke-width:0"
    d="m 233.93,659.4 -0.01,0.13 -0.01,0.12 -0.01,0.12 -0.02,0.12 -0.02,0.11 -0.03,0.12 -0.03,0.11 -0.04,0.1 -0.05,0.11 -0.05,0.1 -0.05,0.1 -0.06,0.09 -0.06,0.09 -0.07,0.09 -0.08,0.09 -0.08,0.08 -0.08,0.07 -0.09,0.07 -0.09,0.07 -0.1,0.07 -0.1,0.06 -0.11,0.05 -0.11,0.05 -0.11,0.05 -0.12,0.04 -0.13,0.03 -0.13,0.03 -0.13,0.03 -0.14,0.02 -0.14,0.01 -0.15,0.01 -0.15,0.01 v -0.36 c 0.42,0 0.84,-0.16 1.06,-0.51 0.21,-0.34 0.21,-0.89 0.21,-1.37 0,-0.86 0,-1.94 -1.27,-1.94 h 0 c -1.26,0 -1.26,1.08 -1.26,1.94 0,0.45 0,0.96 0.17,1.3 0.19,0.37 0.61,0.58 1.09,0.58 v 0.36 c -1.63,0 -2.54,-1.02 -2.54,-2.35 0,-1.23 0.88,-2.23 2.54,-2.23 1.68,0 2.55,1.01 2.55,2.23 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3854" />
 <path
-   id="path3856"
+   style="fill:#000000;stroke-width:0"
    d="m 238.62,657.95 v -0.78 l 1.76,0.06 v 0.47 c -0.62,0 -0.68,0 -0.68,0.39 v 3.63 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -1.9 c 0,-0.82 -0.51,-1.35 -1.24,-1.35 -0.76,0 -0.79,0.25 -0.79,0.79 v 3.4 l -1.83,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -2.32 c 0,-1.07 0.81,-1.29 1.79,-1.29 0.26,0 0.98,0 1.44,0.78 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3856" />
 <path
-   id="path3858"
+   style="fill:#000000;stroke-width:0"
    d="m 241.75,660.78 v -3.08 h -0.69 v -0.47 c 0.28,0.01 0.88,0.03 1.26,0.03 0.39,0 0.97,-0.02 1.25,-0.03 v 0.47 h -0.68 v 2.08 c 0,1.09 0.85,1.58 1.48,1.58 0.34,0 0.55,-0.21 0.55,-0.97 v -2.69 h -0.69 v -0.47 c 0.28,0.01 0.88,0.03 1.26,0.03 0.39,0 0.97,-0.02 1.25,-0.03 v 0.47 h -0.69 v 2.58 c 0,1.05 -0.53,1.44 -1.53,1.44 -0.96,0 -1.48,-0.57 -1.74,-1.08 v 1.08 l -1.72,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3858" />
 <path
-   id="path3860"
+   style="fill:#000000;stroke-width:0"
    d="m 247.69,661.19 v -2.73 c 0,-1.07 0.87,-1.29 1.58,-1.29 0.75,0 1.2,0.57 1.2,1.3 V 659 h -0.46 v -0.51 c 0,-0.68 -0.32,-0.92 -0.6,-0.92 -0.58,0 -0.58,0.64 -0.58,0.87 v 2.75 h 1.45 v 0.47 h -1.45 v 1.9 h -0.47 c -0.01,-1 -0.5,-1.98 -1.48,-2.01 v -0.36 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3860" />
 <path
-   id="path3862"
+   style="fill:#000000;stroke-width:0"
    d="m 255.73,659.4 0.02,0 0.01,0 0.02,0 0.02,0 0.02,0.01 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0 0.01,0.01 0.01,0 0.02,0.01 0.01,0 0.01,0.01 0.01,0 0,0.01 0.01,0.01 0.01,0.01 0.01,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0.01 0,0.02 0,0.01 0,0.01 0,0.01 0,0.01 c 0,0.31 -0.06,1.04 -0.55,1.54 -0.37,0.36 -0.9,0.54 -1.59,0.54 -1.59,0 -2.46,-1.03 -2.46,-2.28 0,-1.33 1,-2.3 2.6,-2.3 1.58,0 2,1.06 2,1.23 0,0.18 -0.19,0.18 -0.24,0.18 -0.16,0 -0.18,-0.05 -0.24,-0.21 -0.21,-0.48 -0.78,-0.8 -1.43,-0.8 -1.4,0 -1.41,1.33 -1.41,1.83 v 0.33 c 0.02,0.39 0.03,0.81 0.24,1.14 0.25,0.4 0.65,0.52 0.94,0.52 1.17,0 1.19,-1.31 1.2,-1.66 h -2.38 v -0.33 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3862" />
 <path
-   id="path3864"
+   style="fill:#000000;stroke-width:0"
    d="m 258.39,660.59 v 1.13 l -1.65,-0.08 v -0.47 c 0.62,0 0.69,0 0.69,-0.39 v -3.08 h -0.69 v -0.47 c 0.35,0.01 0.8,0.03 1.26,0.03 0.38,0 1.01,0 1.37,-0.03 v 0.47 h -0.86 v 1.74 c 0,0.7 0.24,1.92 1.24,1.92 -0.01,-0.01 -0.19,-0.17 -0.19,-0.46 0,-0.41 0.32,-0.61 0.61,-0.61 0.29,0 0.61,0.21 0.61,0.61 0,0.53 -0.54,0.82 -1.06,0.82 -0.7,0 -1.1,-0.5 -1.33,-1.13 z"
-   style="fill:#000000;stroke-width:0" />
+   id="path3864" />
 </g>    <g
-       id="g4073"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       ns0:preamble=""
+       ns0:text="$&lt;$\n\n\n\n\n\n"
+       word-spacing="normal"
+       letter-spacing="normal"
+       font-size-adjust="none"
+       font-stretch="normal"
+       font-weight="normal"
+       font-variant="normal"
+       font-style="normal"
+       stroke-miterlimit="10.433"
+       xml:space="preserve"
        transform="matrix(1,0,0,-1,234.46625,1250.2495)"
+       id="g4073">
+<path
+   id="path4075"
+   d="m 230.16,662.19 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0,0.01 0.01,0 0.01,0.01 0.01,0.01 0,0 0.01,0.01 0.01,0 0,0.01 0.01,0.01 0,0 0.01,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0,0.01 c 0,0.11 -0.09,0.2 -0.2,0.2 -0.03,0 -0.05,0 -0.18,-0.07 l -5.52,-2.6 c -0.11,-0.05 -0.19,-0.1 -0.19,-0.22 0,-0.12 0.08,-0.17 0.19,-0.22 l 5.52,-2.6 c 0.13,-0.07 0.15,-0.07 0.18,-0.07 0.11,0 0.2,0.09 0.2,0.2 0,0.11 -0.07,0.16 -0.19,0.22 l -5.23,2.47 z"
+   style="fill:#000000;stroke-width:0" />
+</g>    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="m 372.36,623.0188 48.5,0 0,-27 30.14218,0.0209"
+       id="path4960"
+       sodipodi:nodetypes="cccc" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path4962"
+       d="m 439.56,567.65952 12,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+    <g
+       id="g5070"
+       transform="matrix(1,0,0,-1,210.73,1227.8495)"
        xml:space="preserve"
        stroke-miterlimit="10.433"
        font-style="normal"
        font-size-adjust="none"
        letter-spacing="normal"
        word-spacing="normal"
-       ns0:text="$&lt;$\n\n\n\n\n\n"
+       ns0:text="$1$\n\n\n\n\n\n"
        ns0:preamble=""
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
 <path
    style="fill:#000000;stroke-width:0"
-   d="m 230.16,662.19 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0,0.01 0.01,0 0.01,0.01 0.01,0.01 0,0 0.01,0.01 0.01,0 0,0.01 0.01,0.01 0,0 0.01,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0 0.01,0.01 0,0.01 0,0.01 0,0.01 c 0,0.11 -0.09,0.2 -0.2,0.2 -0.03,0 -0.05,0 -0.18,-0.07 l -5.52,-2.6 c -0.11,-0.05 -0.19,-0.1 -0.19,-0.22 0,-0.12 0.08,-0.17 0.19,-0.22 l 5.52,-2.6 c 0.13,-0.07 0.15,-0.07 0.18,-0.07 0.11,0 0.2,0.09 0.2,0.2 0,0.11 -0.07,0.16 -0.19,0.22 l -5.23,2.47 z"
-   id="path4075" />
-</g>    <path
-       sodipodi:nodetypes="cc"
-       id="path4960"
-       d="m 368.46,595.62952 82.3,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="m 439.56,567.65952 12,0"
-       id="path4962"
-       sodipodi:nodetypes="cc" />
-    <g
+   d="m 226.36,663.61 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0 -0.01,0.01 0,0.02 0,0.01 0,0.01 -0.01,0 0,0.01 -0.01,0.01 0,0 -0.01,0.01 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 c -0.62,-0.64 -1.49,-0.64 -1.81,-0.64 v -0.31 c 0.2,0 0.79,0 1.3,0.26 v -5.16 c 0,-0.36 -0.03,-0.48 -0.92,-0.48 h -0.32 v -0.31 c 0.35,0.03 1.21,0.03 1.61,0.03 0.4,0 1.27,0 1.62,-0.03 v 0.31 h -0.32 c -0.9,0 -0.93,0.11 -0.93,0.48 z"
+   id="path5072" />
+</g>    <g
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
-       ns0:text="$1$\n\n\n\n\n\n"
+       ns0:text="$&gt;$\n\n\n\n\n\n"
        word-spacing="normal"
        letter-spacing="normal"
        font-size-adjust="none"
        font-style="normal"
        stroke-miterlimit="10.433"
        xml:space="preserve"
-       transform="matrix(1,0,0,-1,210.73,1227.8495)"
-       id="g5070">
-<path
-   id="path5072"
-   d="m 226.36,663.61 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0 -0.01,0.01 0,0.02 0,0.01 0,0.01 -0.01,0 0,0.01 -0.01,0.01 0,0 -0.01,0.01 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 c -0.62,-0.64 -1.49,-0.64 -1.81,-0.64 v -0.31 c 0.2,0 0.79,0 1.3,0.26 v -5.16 c 0,-0.36 -0.03,-0.48 -0.92,-0.48 h -0.32 v -0.31 c 0.35,0.03 1.21,0.03 1.61,0.03 0.4,0 1.27,0 1.62,-0.03 v 0.31 h -0.32 c -0.9,0 -0.93,0.11 -0.93,0.48 z"
-   style="fill:#000000;stroke-width:0" />
-</g>    <g
-       id="g5280"
        transform="matrix(1,0,0,-1,234.46625,1274.2145)"
-       xml:space="preserve"
-       stroke-miterlimit="10.433"
-       font-style="normal"
-       font-variant="normal"
-       font-weight="normal"
-       font-stretch="normal"
-       font-size-adjust="none"
-       letter-spacing="normal"
-       word-spacing="normal"
-       ns0:text="$&gt;$\n\n\n\n\n\n"
-       ns0:preamble=""
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+       id="g5280">
 <path
-   style="fill:#000000;stroke-width:0"
+   id="path5282"
    d="m 230.16,659.5 0.02,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0,0.01 0.01,0 0.01,0.01 0.01,0 0.01,0.01 0.01,0 0,0.01 0.01,0.01 0.01,0 0,0.01 0.01,0 0.01,0.01 0,0.01 0.01,0 0,0.01 0.01,0.01 0,0.01 0,0.01 0.01,0 0,0.01 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 c 0,0.12 -0.08,0.17 -0.19,0.22 l -5.52,2.6 c -0.13,0.07 -0.15,0.07 -0.18,0.07 -0.11,0 -0.2,-0.09 -0.2,-0.2 0,-0.09 0.05,-0.15 0.19,-0.22 l 5.23,-2.47 -5.23,-2.47 c -0.14,-0.07 -0.19,-0.13 -0.19,-0.22 0,-0.11 0.09,-0.2 0.2,-0.2 0.03,0 0.05,0 0.18,0.07 z"
-   id="path5282" />
+   style="fill:#000000;stroke-width:0" />
 </g>    <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="m 439.06,619.65952 12,0"
+       sodipodi:nodetypes="cc"
        id="path5383"
-       sodipodi:nodetypes="cc" />
+       d="m 439.06,619.65952 12,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
     <g
-       id="g5385"
-       transform="matrix(1,0,0,-1,210.23,1279.8495)"
-       xml:space="preserve"
-       stroke-miterlimit="10.433"
-       font-style="normal"
-       font-variant="normal"
-       font-weight="normal"
-       font-stretch="normal"
-       font-size-adjust="none"
-       letter-spacing="normal"
-       word-spacing="normal"
-       ns0:text="$0$\n\n\n\n\n"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+       ns0:text="$0$\n\n\n\n\n"
+       word-spacing="normal"
+       letter-spacing="normal"
+       font-size-adjust="none"
+       font-stretch="normal"
+       font-weight="normal"
+       font-variant="normal"
+       font-style="normal"
+       stroke-miterlimit="10.433"
+       xml:space="preserve"
+       transform="matrix(1,0,0,-1,210.23,1279.8495)"
+       id="g5385">
 <path
-   style="fill:#000000;stroke-width:0"
+   id="path5387"
    d="m 228.01,660.42 0,0.15 0,0.15 0,0.15 -0.01,0.15 -0.01,0.15 -0.01,0.14 -0.01,0.15 -0.02,0.15 -0.03,0.15 -0.02,0.14 -0.04,0.15 -0.03,0.14 -0.05,0.14 -0.05,0.14 -0.05,0.14 -0.03,0.07 -0.03,0.07 c -0.46,0.96 -1.28,1.12 -1.7,1.12 -0.6,0 -1.32,-0.26 -1.73,-1.19 -0.32,-0.69 -0.37,-1.46 -0.37,-2.26 0,-0.75 0.04,-1.64 0.45,-2.4 0.43,-0.81 1.16,-1.01 1.64,-1.01 v 0.22 c -0.39,0 -0.97,0.25 -1.15,1.21 -0.11,0.6 -0.11,1.51 -0.11,2.1 0,0.64 0,1.3 0.08,1.83 0.19,1.19 0.93,1.28 1.18,1.28 0.33,0 0.99,-0.18 1.18,-1.17 0.1,-0.56 0.1,-1.31 0.1,-1.94 0,-0.75 0,-1.43 -0.11,-2.06 -0.15,-0.95 -0.72,-1.25 -1.17,-1.25 h 0 v -0.22 c 0.54,0 1.3,0.21 1.74,1.16 0.31,0.69 0.36,1.46 0.36,2.25 z"
-   id="path5387" />
+   style="fill:#000000;stroke-width:0" />
 </g>    <path
-       sodipodi:nodetypes="cc"
-       id="path5389"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
        d="m 439.56,643.75956 12,0"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+       id="path5389"
+       sodipodi:nodetypes="cc" />
     <g
-       id="g5391"
-       transform="matrix(1,0,0,-1,210.73,1303.9495)"
-       xml:space="preserve"
-       stroke-miterlimit="10.433"
-       font-style="normal"
-       font-variant="normal"
-       font-weight="normal"
-       font-stretch="normal"
-       font-size-adjust="none"
-       letter-spacing="normal"
-       word-spacing="normal"
-       ns0:text="$1$\n\n\n\n\n\n"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
        ns0:preamble=""
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+       ns0:text="$1$\n\n\n\n\n\n"
+       word-spacing="normal"
+       letter-spacing="normal"
+       font-size-adjust="none"
+       font-stretch="normal"
+       font-weight="normal"
+       font-variant="normal"
+       font-style="normal"
+       stroke-miterlimit="10.433"
+       xml:space="preserve"
+       transform="matrix(1,0,0,-1,210.73,1303.9495)"
+       id="g5391">
 <path
-   style="fill:#000000;stroke-width:0"
+   id="path5393"
    d="m 226.36,663.61 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0 -0.01,0.01 0,0.02 0,0.01 0,0.01 -0.01,0 0,0.01 -0.01,0.01 0,0 -0.01,0.01 -0.01,0 0,0.01 -0.01,0 -0.01,0 0,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 0,0 -0.01,0 0,0 -0.01,0 -0.01,0.01 -0.01,0 0,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 -0.01,0 c -0.62,-0.64 -1.49,-0.64 -1.81,-0.64 v -0.31 c 0.2,0 0.79,0 1.3,0.26 v -5.16 c 0,-0.36 -0.03,-0.48 -0.92,-0.48 h -0.32 v -0.31 c 0.35,0.03 1.21,0.03 1.61,0.03 0.4,0 1.27,0 1.62,-0.03 v 0.31 h -0.32 c -0.9,0 -0.93,0.11 -0.93,0.48 z"
-   id="path5393" />
+   style="fill:#000000;stroke-width:0" />
 </g>    <g
-       id="g5602"
-       transform="translate(0,2)">
+       transform="translate(0,2)"
+       id="g5602">
       <path
-         sodipodi:type="arc"
-         style="fill:#ffffff;stroke:#000000"
-         id="path5384"
-         sodipodi:cx="40"
-         sodipodi:cy="26.984081"
-         sodipodi:rx="10"
-         sodipodi:ry="10"
+         transform="matrix(1,0,0,-1,421.77125,663.6437)"
          d="m 50,26.984081 c 0,5.522848 -4.477153,10 -10,10 -5.522847,0 -10,-4.477152 -10,-10 0,-5.522847 4.477153,-10 10,-10 5.522847,0 10,4.477153 10,10 z"
-         transform="matrix(1,0,0,-1,421.77125,663.6437)" />
+         sodipodi:ry="10"
+         sodipodi:rx="10"
+         sodipodi:cy="26.984081"
+         sodipodi:cx="40"
+         id="path5384"
+         style="fill:#ffffff;stroke:#000000"
+         sodipodi:type="arc" />
       <g
-         id="g5500"
-         transform="translate(234.46625,-23.060381)"
-         xml:space="preserve"
-         stroke-miterlimit="10.433"
-         font-style="normal"
-         font-variant="normal"
-         font-weight="normal"
-         font-stretch="normal"
-         font-size-adjust="none"
-         letter-spacing="normal"
-         word-spacing="normal"
-         ns0:text="$\\mathbf{-}$\n\n\n"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
          ns0:preamble=""
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0">
+         ns0:text="$\\mathbf{-}$\n\n\n"
+         word-spacing="normal"
+         letter-spacing="normal"
+         font-size-adjust="none"
+         font-stretch="normal"
+         font-weight="normal"
+         font-variant="normal"
+         font-style="normal"
+         stroke-miterlimit="10.433"
+         xml:space="preserve"
+         transform="translate(234.46625,-23.060381)"
+         id="g5500">
 <path
-   style="fill:#000000;stroke-width:0"
+   id="path5502"
    d="m 230,659.52 0.03,0 0.03,0 0.03,0.01 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0 0.01,0 0.02,0.01 0.01,0 0.01,0 0.02,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0 0.01,0.01 0.01,0.01 0.01,0.01 0.01,0.01 0,0 0,0.01 0.01,0 0,0.01 0,0.01 0,0 0.01,0.01 0,0.01 0,0 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0 0,0.01 0,0.01 c 0,0.2 -0.18,0.2 -0.35,0.2 h -5.39 c -0.17,0 -0.35,0 -0.35,-0.2 0,-0.2 0.18,-0.2 0.35,-0.2 z"
-   id="path5502" />
+   style="fill:#000000;stroke-width:0" />
 </g>    </g>
-  </g>
+    <g
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       ns0:preamble=""
+       ns0:text="$\\mathit{bound}$\n\n\n"
+       word-spacing="normal"
+       letter-spacing="normal"
+       font-size-adjust="none"
+       font-stretch="normal"
+       font-weight="normal"
+       font-variant="normal"
+       font-style="normal"
+       stroke-miterlimit="10.433"
+       xml:space="preserve"
+       transform="matrix(1,0,0,-1,155.42,1278.7415)"
+       id="g3013">
+<path
+   id="path3015"
+   d="m 226.45,663.9 0,0 0,0 0,0.01 0.01,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0 0,0 0.01,0.01 0,0 0,0.01 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.13,-0.01 -0.16,-0.02 l -0.98,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.47,0 0.49,-0.07 0.49,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.98,-3.94 c -0.01,-0.03 -0.11,-0.43 -0.11,-0.81 0,-0.84 0.42,-1.52 1.14,-1.52 v 0.22 c -0.24,0 -0.57,0.21 -0.57,0.96 0,0.44 0.09,0.79 0.37,1.92 0.07,0.24 0.07,0.26 0.22,0.46 0.29,0.4 0.67,0.74 1.05,0.74 0.45,0 0.55,-0.57 0.55,-0.89 0,-0.42 -0.27,-1.6 -0.56,-2.24 -0.12,-0.25 -0.55,-0.95 -1.06,-0.95 h 0 v -0.22 c 1.12,0 2.29,1.5 2.29,2.96 0,1.07 -0.6,1.56 -1.2,1.56 -0.38,0 -0.72,-0.21 -1.06,-0.53 z"
+   style="fill:#000000;stroke-width:0" />
+<path
+   id="path3017"
+   d="m 232.58,660 -0.01,0.09 0,0.09 -0.01,0.08 -0.01,0.08 -0.02,0.09 -0.01,0.07 -0.03,0.08 -0.02,0.08 -0.03,0.07 -0.03,0.07 -0.03,0.07 -0.04,0.07 -0.03,0.06 -0.05,0.06 -0.04,0.06 -0.05,0.05 -0.05,0.06 -0.05,0.05 -0.05,0.04 -0.06,0.05 -0.06,0.04 -0.06,0.04 -0.06,0.03 -0.07,0.03 -0.06,0.03 -0.07,0.03 -0.07,0.02 -0.08,0.01 -0.07,0.02 -0.08,0.01 -0.08,0 -0.08,0.01 c -1.23,0 -2.52,-1.42 -2.52,-2.87 0,-1.03 0.63,-1.65 1.45,-1.65 v 0.22 c -0.38,0 -0.75,0.31 -0.75,1.03 0,0.5 0.26,1.6 0.58,2.14 0.36,0.61 0.84,0.91 1.23,0.91 0.49,0 0.77,-0.44 0.77,-1.03 0,-0.43 -0.22,-1.45 -0.54,-2.05 -0.29,-0.55 -0.8,-1 -1.29,-1 h 0 v -0.22 c 1.24,0 2.53,1.42 2.53,2.88 z"
+   style="fill:#000000;stroke-width:0" />
+<path
+   id="path3019"
+   d="m 237.71,661.13 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0.01 0,0 0,0.01 0,0 0,0.01 0,0 0.01,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0,0 0,0.01 c 0,0.11 -0.08,0.26 -0.28,0.26 -0.3,0 -0.37,-0.29 -0.39,-0.37 l -0.73,-2.91 c -0.05,-0.18 -0.05,-0.2 -0.14,-0.33 -0.19,-0.28 -0.47,-0.58 -0.91,-0.58 -0.45,0 -0.54,0.44 -0.54,0.77 0,0.61 0.33,1.5 0.58,2.18 0.08,0.21 0.13,0.35 0.13,0.54 0,0.5 -0.33,0.81 -0.76,0.81 -0.93,0 -1.28,-1.48 -1.28,-1.54 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.02 0.18,0.16 0.08,0.31 0.35,1.26 0.93,1.26 0.11,0 0.22,-0.03 0.22,-0.29 0,-0.24 -0.1,-0.51 -0.24,-0.9 -0.26,-0.7 -0.52,-1.43 -0.52,-1.95 0,-0.87 0.58,-1.16 1.12,-1.16 0.53,0 0.86,0.3 1.1,0.6 0.18,-0.54 0.61,-0.6 0.8,-0.6 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.23 0.07,0.51 z"
+   style="fill:#000000;stroke-width:0" />
+<path
+   id="path3021"
+   d="m 240.24,658.98 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 0.02,0.08 c 0.12,0.51 0.12,0.52 0.3,0.81 0.13,0.24 0.58,0.99 1.34,0.99 0.44,0 0.46,-0.45 0.46,-0.66 0,-0.62 -0.44,-1.8 -0.58,-2.2 -0.13,-0.34 -0.16,-0.43 -0.16,-0.64 0,-0.44 0.28,-0.8 0.76,-0.8 0.92,0 1.26,1.49 1.26,1.54 0,0.1 -0.08,0.1 -0.15,0.1 -0.13,0 -0.13,-0.02 -0.17,-0.17 -0.08,-0.27 -0.34,-1.25 -0.92,-1.25 -0.21,0 -0.22,0.15 -0.22,0.29 0,0.25 0.1,0.51 0.18,0.75 0.2,0.53 0.61,1.64 0.61,2.22 0,0.82 -0.55,1.04 -1.04,1.04 -0.82,0 -1.3,-0.6 -1.42,-0.79 -0.08,0.49 -0.41,0.79 -0.84,0.79 -0.36,0 -0.56,-0.23 -0.72,-0.53 -0.19,-0.4 -0.32,-0.99 -0.32,-1.01 0,-0.1 0.1,-0.1 0.15,-0.1 0.13,0 0.14,0.01 0.19,0.23 0.18,0.7 0.37,1.19 0.68,1.19 0.26,0 0.26,-0.29 0.26,-0.4 0,-0.16 -0.03,-0.35 -0.07,-0.51 l -0.75,-2.99 c -0.02,-0.06 -0.03,-0.11 -0.03,-0.14 0,-0.11 0.08,-0.26 0.28,-0.26 0.12,0 0.29,0.07 0.36,0.26 z"
+   style="fill:#000000;stroke-width:0" />
+<path
+   id="path3023"
+   d="m 249.1,663.9 0,0 0,0 0,0.01 0,0 0,0 0,0.01 0,0 0.01,0.01 0,0 0,0.01 0,0.01 0,0.01 0.01,0.01 0,0.01 0,0 0,0 0,0.01 0,0 0,0.01 0,0 0,0.01 0.01,0 0,0 0,0.01 0,0 0,0 0,0 0,0.01 c 0,0.09 -0.06,0.12 -0.14,0.12 -0.03,0 -0.13,-0.01 -0.16,-0.02 l -0.99,-0.08 c -0.12,-0.01 -0.23,-0.02 -0.23,-0.21 0,-0.11 0.1,-0.11 0.24,-0.11 0.48,0 0.5,-0.07 0.5,-0.17 0,-0.03 -0.03,-0.16 -0.03,-0.17 l -0.58,-2.33 c -0.15,0.31 -0.42,0.58 -0.84,0.58 v -0.22 c 0.09,0 0.31,-0.01 0.49,-0.29 0.1,-0.16 0.2,-0.45 0.2,-0.64 0,-0.03 -0.01,-0.07 -0.03,-0.13 l -0.48,-1.91 c -0.07,-0.31 -0.68,-1.11 -1.23,-1.11 -0.47,0 -0.55,0.59 -0.55,0.89 0,0.5 0.31,1.66 0.49,2.08 0.25,0.61 0.71,1.11 1.11,1.11 v 0.22 c -1.1,0 -2.28,-1.52 -2.28,-2.97 0,-0.85 0.46,-1.55 1.21,-1.55 0.36,0 0.8,0.21 1.19,0.7 0.11,-0.49 0.48,-0.7 0.83,-0.7 0.37,0 0.58,0.25 0.73,0.56 0.18,0.38 0.3,0.96 0.3,0.98 0,0.1 -0.08,0.1 -0.15,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.23 -0.14,-0.56 -0.33,-1.19 -0.67,-1.19 -0.26,0 -0.26,0.27 -0.26,0.41 0,0.07 0,0.22 0.06,0.46 z"
+   style="fill:#000000;stroke-width:0" />
+</g>  </g>
 </svg>
index 313f8d9..6ec0a29 100644 (file)
@@ -472,9 +472,8 @@ natural way than possible in a traditional hardware description language.
 
 Circuit descriptions can be translated to synthesizable VHDL using the 
 prototype \CLaSH\ compiler. As the circuit descriptions, simulation code, and 
-test input are also valid Haskell, complete simulations can be compiled as an 
-executable binary by a Haskell compiler allowing high-speed simulation and 
-analysis.
+test input are also valid Haskell, complete simulations can be done by a 
+Haskell compiler allowing high-speed simulation and analysis.
 
 % \CLaSH\ supports stateful descriptions by explicitly making the current 
 % state an argument of the function, and the updated state part of the result. 
@@ -522,7 +521,7 @@ functions and functional languages are very good at describing and composing
 these functions.
 
 In an attempt to ease the prototyping process of the language, such as 
-creating all the required tooling, like parsers and type-checkers, many 
+creating all the required tooling like parsers and type-checkers, many 
 functional \acrop{HDL} \cite{Hydra,Hawk1,Lava,Wired} are embedded as a domain 
 specific language (\acro{DSL}) within the functional language Haskell 
 \cite{Haskell}. This means that a developer is given a library of Haskell 
@@ -530,22 +529,23 @@ functions and types that together form the language primitives of the
 \acro{DSL}. The primitive functions used to describe a circuit do not actually 
 process any signals, they instead compose a large domain-specific graph 
 (which is usually hidden from the designer). This graph is then further 
-processed by an embedded circuit compiler which can perform for example 
-simulation or synthesis. As Haskell's choice elements (\hs{case}-expressions, 
-pattern-matching etc.) are evaluated at the time the domain-specific graph is 
+processed by an embedded circuit compiler which can perform e.g. simulation or 
+synthesis. As Haskell's choice elements (\hs{case}-expressions, 
+pattern-matching, etc.) are evaluated at the time the domain-specific graph is 
 being build, they are no longer visible to the embedded compiler that 
 processes the datatype. Consequently, it is impossible to capture Haskell's 
 choice elements within a circuit description when taking the embedded language 
 approach. This does not mean that circuits specified in an embedded language 
 can not contain choice, just that choice elements only exists as functions, 
-e.g. a multiplexer function, and not as language elements.
+e.g. a multiplexer function, and not as syntactic elements of the language 
+itself.
 
 The approach taken in this research is to use (a subset of) the Haskell 
 language \emph{itself} for the purpose of describing hardware. By taking this 
 approach, this research \emph{can} capture certain language constructs, like 
 all of Haskell's choice elements, within circuit descriptions. The more 
-advanced features of Haskel, such as polymorphic typing and higher-order 
-function, are also supported.
+advanced features of Haskell, such as polymorphic typing and higher-order 
+functions, are also supported.
 
 % supporting polymorphism, higher-order functions and such an extensive array 
 % of choice-elements, combined with a very concise way of specifying circuits 
@@ -556,15 +556,18 @@ function, are also supported.
 % Haskell Compiler (\GHC)~\cite{ghc}.
 
 Where descriptions in a conventional \acro{HDL} have an explicit clock for the 
-purposes state and synchronicity, the clock is implicit for the descriptions and research presented in this paper. A circuit designer describes the behavior of the hardware between clock cycles. Many functional \acrop{HDL} model signals as a stream of all values over time; state is then modeled as a delay on this stream of values. Descriptions presented in this research make the current state an additional input and the updated state a part of their output. This abstraction of state and time limits the descriptions to synchronous hardware, there is however room within the language to eventually add a different abstraction mechanism that will allow for the modeling of asynchronous systems.
-
-Like the traditional \acrop{HDL}, descriptions made in a functional \acro{HDL} 
-must eventually be converted into a netlist. This research also features a 
-prototype translator, which has the same name as the language: 
-\CLaSH\footnote{\CLaSHtiny: \acrotiny{CAES} Language for Synchronous Hardware} 
-(pronounced: clash). This compiler converts the Haskell code to equivalently 
-behaving synthesizable \VHDL\ code, ready to be converted to an actual netlist 
-format by an (optimizing) \VHDL\ synthesis tool.
+purposes state and synchronicity, the clock is implicit for the descriptions 
+and research presented in this paper. A circuit designer describes the 
+behavior of the hardware between clock cycles. Many functional \acrop{HDL} 
+model signals as a stream of all values over time; state is then modeled as a 
+delay on this stream of values. Descriptions presented in this research make 
+the current state an additional input and the updated state a part of their 
+output. This abstraction of state and time limits the descriptions to 
+synchronous hardware, there is however room within the language to eventually 
+add a different abstraction mechanism that will allow for the modeling of 
+asynchronous systems.
+
+Likewise as with the traditional \acrop{HDL}, descriptions made in a functional \acro{HDL} must eventually be converted into a netlist. This research also features a prototype compiler, which has the same name as the language: \CLaSH\footnote{\CLaSHtiny: \acrotiny{CAES} Language for Synchronous Hardware, where \acrotiny{CAES} is the acronyom of our chair.} (pronounced: clash). This compiler converts the Haskell code to equivalently behaving synthesizable \VHDL\ code, ready to be converted to an actual netlist format by an (optimizing) \VHDL\ synthesis tool.
 
 To the best knowledge of the authors, \CLaSH\ is the only (functional) 
 \acro{HDL} that allows circuit specification to be written in a very concise 
@@ -572,7 +575,7 @@ way and at the same time support such advanced features as polymorphic typing,
 user-defined higher-order functions and pattern matching.
 
 \section{Hardware description in Haskell}
-The following section describes the basic language elements of \CLaSH\ and the 
+This section describes the basic language elements of \CLaSH\ and the 
 extensiveness of the support of these elements within the \CLaSH\ compiler. In 
 various subsections, the relation between the language elements and their 
 eventual netlist representation is also highlighted. 
@@ -599,7 +602,7 @@ eventual netlist representation is also highlighted.
     % to understand and possibly hand-optimize the resulting \VHDL\ output of 
     % the \CLaSH\ compiler.
 
-    The short example (\ref{code:mac}) seen below gives a demonstration of 
+    The short example below (\ref{code:mac}) gives a demonstration of 
     the conciseness that can be achieved with \CLaSH\ when compared with 
     other (more traditional) \acrop{HDL}. The example is a combinational 
     multiply-accumulate circuit that works for \emph{any} word length (this 
@@ -629,8 +632,8 @@ eventual netlist representation is also highlighted.
     The use of a composite result value is demonstrated in the next example 
     (\ref{code:mac-composite}), where the multiply-accumulate circuit not only 
     returns the accumulation result, but also the intermediate multiplication 
-    result. Its corresponding netlist can be seen in 
-    \Cref{img:mac-comb-composite}.
+    result (see \Cref{img:mac-comb-composite}, where the double arrow suggests 
+    the composite output).
     
     \hspace{-1.7em}
     \begin{minipage}{0.93\linewidth}
@@ -663,7 +666,7 @@ eventual netlist representation is also highlighted.
     \hs{case} expressions). When transforming a \CLaSH\ description to a   
     netlist, a \hs{case} expression is translated to a multiplexer. The 
     control value of the \hs{case} expression is fed into a number of 
-    comparators and their combined output forms the selection port of the 
+    comparators, and their combined output forms the selection port of the 
     multiplexer. The result of each alternative in the \hs{case} expression is 
     linked to the corresponding input port of the multiplexer.
     % A \hs{case} expression can in turn simply be translated to a conditional 
@@ -676,9 +679,9 @@ eventual netlist representation is also highlighted.
     % sum two values when they are equal or non-equal (depending on the given 
     % predicate, the \hs{pred} variable) and return 0 otherwise. 
     
-    An code example (\ref{code:counter1}) that uses a \hs{case} expression and 
+    A code example (\ref{code:counter1}) that uses a \hs{case} expression and 
     \hs{if-then-else} expressions is shown below. The function counts up or 
-    down depending on the \hs{direction} variable, and has a \hs{wrap
+    down depending on the \hs{direction} variable, and has a \hs{bound
     variable that determines both the upper bound and wrap-around point of the 
     counter. The \hs{direction} variable is of the following, user-defined, 
     enumeration datatype:
@@ -690,18 +693,18 @@ eventual netlist representation is also highlighted.
     The naive netlist corresponding to this example is depicted in 
     \Cref{img:counter}. Note that the \hs{direction} variable is only
     compared to \hs{Up}, as an inequality immediately implies that 
-    \hs{direction} is \hs{Down}.
+    \hs{direction} is \hs{Down} (as derived by the compiler).
 
     \hspace{-1.7em}
     \begin{minipage}{0.93\linewidth}
     \begin{code}    
-    counter direction wrap x = case direction of
-        Up    -> if   x < wrap  then 
-                      x + 1     else 
+    counter bound direction x = case direction of
+        Up    -> if   x < bound   then 
+                      x + 1       else 
                       0
-        Down  -> if   x > 0   then 
-                      x - 1   else 
-                      wrap
+        Down  -> if   x > 0       then 
+                      x - 1       else 
+                      bound
     \end{code}
     \end{minipage}
     \begin{minipage}{0.07\linewidth}
@@ -756,16 +759,17 @@ eventual netlist representation is also highlighted.
     precedes the assignment operator (\hs{=}). The \hs{otherwise} guards 
     always evaluate to \hs{true}.
     
-    The version using pattern matching and guards corresponds to the same 
-    naive netlist representation (\Cref{img:counter}) as the earlier example.
+    The second version corresponds to the same naive netlist representation 
+    (\Cref{img:counter}) as the earlier example.
     
     \hspace{-1.7em}
     \begin{minipage}{0.93\linewidth}
     \begin{code}
-    counter Up    wrap x  | x < wrap    = x + 1
-                          | otherwise   = 0
-    counter Down  wrap x  | x > 0       = x - 1
-                          | otherwise   = wrap
+    counter bound Up    x  | x < bound  = x + 1
+                           | otherwise  = 0
+                           
+    counter bound Down  x  | x > 0      = x - 1
+                           | otherwise  = bound
     \end{code}
     \end{minipage}
     \begin{minipage}{0.07\linewidth}
@@ -782,21 +786,20 @@ eventual netlist representation is also highlighted.
 
   \subsection{Types}
     Haskell is a statically-typed language, meaning that the type of a 
-    variable or function is determined at compile-time. Not all of Haskell's 
-    typing constructs have a clear translation to hardware, this section will 
-    therefore only deal with the types that do have a clear correspondence 
-    to hardware. The translatable types are divided into two categories: 
-    \emph{built-in} types and \emph{user-defined} types. Built-in types are 
-    those types for which a fixed translation is defined within the \CLaSH\ 
-    compiler. The \CLaSH\ compiler has generic translation rules to
+    variable or function is determined at compile-time. Not all of 
+    Haskell's typing constructs have a clear translation to hardware, this 
+    section therefor only deals with the types that do have a clear 
+    correspondence to hardware. The translatable types are divided into two 
+    categories: \emph{built-in} types and \emph{user-defined} types. Built-in 
+    types are those types for which a fixed translation is defined within the 
+    \CLaSH\ compiler. The \CLaSH\ compiler has generic translation rules to
     translate the user-defined types, which are described later on.
 
     The \CLaSH\ compiler is able to infer unspecified (polymorphic) types,
     meaning that a developer does not have to annotate every function with a 
-    type signature. % (even if it is good practice to do so).
-    Given that the top-level entity of a circuit design is annotated with 
-    concrete/monomorphic types, the \CLaSH\ compiler can specialize 
-    polymorphic functions to functions with concrete types.
+    type signature. Given that the top-level entity of a circuit design is 
+    annotated with specific types, the \CLaSH\ compiler can specialize 
+    polymorphic functions to functions with specific types.
   
     % Translation of two most basic functional concepts has been
     % discussed: function application and choice. Before looking further
@@ -828,10 +831,9 @@ eventual netlist representation is also highlighted.
         % type (where a value of \hs{True} corresponds to a value of 
         % \hs{High}). 
         Supporting the Bool type is required in order to support the
-        \hs{if-then-else} expression, which requires a \hs{Bool} value for 
-        the condition.
+        \hs{if-then-else} expression.
       \item[\bf{Signed}, \bf{Unsigned}]
-        these are types to represent integers and both are parametrizable in 
+        these are types to represent integers, and both are parametrizable in 
         their size. The overflow behavior of the numeric operators defined for 
         these types is \emph{wrap-around}.
         % , so you can define an unsigned word of 32 bits wide as follows:
@@ -847,14 +849,14 @@ eventual netlist representation is also highlighted.
         % types are translated to the \VHDL\ \texttt{unsigned} and 
         % \texttt{signed} respectively.
       \item[\bf{Vector}]
-        this is a vector type that can contain elements of any other type and
-        has a static length. The \hs{Vector} type constructor takes two type 
-        arguments: the length of the vector and the type of the elements 
-        contained in it. The short-hand notation used for the vector type in  
-        the rest of paper is: \hs{[a|n]}, where \hs{a} is the element 
-        type, and \hs{n} is the length of the vector. Note that this is
-        a notation used in this paper only, vectors are slightly more
-        verbose in real \CLaSH\ descriptions.
+        this type can contain elements of any type and has a static length. 
+        The \hs{Vector} type constructor takes two arguments: the length of 
+        the vector and the type of the elements contained in it. The 
+        short-hand notation used for the vector type in the rest of paper is: 
+        \hs{[a|n]}, where \hs{a} is the element type, and \hs{n} is the length 
+        of the vector. 
+        % Note that this is a notation used in this paper only, vectors are 
+        % slightly more verbose in real \CLaSH\ descriptions.
         % The state type of an 8 element register bank would then for example 
         % be:
 
@@ -870,11 +872,12 @@ eventual netlist representation is also highlighted.
         % vector is translated to a \VHDL\ array type.
       \item[\bf{Index}]
         the main purpose of the \hs{Index} type is to be used as an index into 
-        a \hs{Vector}, and has no specified bit-size, but a specified upper 
-        bound. This means that its range is not limited to powers of two, but 
-        can be any number. An \hs{Index} only has an upper bound, its lower 
-        bound is implicitly zero. If a value of this type exceeds either 
-        bounds, an error will be thrown at \emph{simulation}-time. 
+        a \hs{Vector}, and has an integer range from zero to a specified upper 
+        bound.
+        % This means that its range is not limited to powers of two, but 
+        % can be any number.  
+        If a value of this type exceeds either bounds, an error will be thrown 
+        during simulation. 
 
         % \comment{TODO: Perhaps remove this example?} To define an index for 
         % the 8 element vector above, we would do:
@@ -900,9 +903,9 @@ eventual netlist representation is also highlighted.
     % Haskell. As it is currently unclear how these advanced type constructs 
     % correspond to hardware, they are for now unsupported by the \CLaSH\ 
     % compiler.
-    A completely new type is introduced by an algebraic datatype declaration 
-    which is defined using the \hs{data} keyword. Type synonyms can be 
-    introduced using the \hs{type} keyword.
+    A designer may define a completely new type by an algebraic datatype 
+    declaration using the \hs{data} keyword. Type synonyms can be introduced 
+    using the \hs{type} keyword.
     % Only an algebraic datatype declaration actually introduces a
     % completely new type. Type synonyms and type renaming only define new 
     % names for existing types, where synonyms are completely interchangeable 
@@ -913,24 +916,24 @@ eventual netlist representation is also highlighted.
     Algebraic datatypes can be categorized as follows:
     \begin{xlist}
       \item[\bf{Single constructor}]
-        Algebraic datatypes with a single constructor with one or more
-        fields allow values to be packed together in a record-like structure. 
-        Haskell's built-in tuple types are also defined as single constructor 
-        algebraic types (using a bit of syntactic sugar). An example of a 
-        single constructor type with multiple fields is the following pair of 
+        datatypes with a single constructor with one or more fields allow 
+        values to be packed together in a record-like structure. Haskell's 
+        built-in tuple types are also defined as single constructor algebraic 
+        types (using a bit of syntactic sugar). An example of a  single 
+        constructor type with multiple fields is the following pair of 
         integers:
         \begin{code}
         data IntPair = IntPair Int Int
         \end{code}
         % These types are translated to \VHDL\ record types, with one field 
         % for every field in the constructor.
-      \item[\bf{No fields}]
-        Algebraic datatypes with multiple constructors, but without any
-        fields are essentially enumeration types. Note that Haskell's 
-        \hs{Bool} type is also defined as an enumeration type, but that there 
-        is a fixed translation for that type within the \CLaSH\ compiler. An 
-        example of an enumeration type definition is the definition for a 
-        traffic light:
+      \item[\bf{Multiple constructors, No fields}]
+        datatypes with multiple constructors, but without any
+        fields are essentially enumeration types. 
+        % Note that Haskell's \hs{Bool} type is also defined as an enumeration 
+        % type, but that there is a fixed translation for that type within the 
+        % \CLaSH\ compiler. 
+        An example of an enumeration type definition is:
         \begin{code}
         data TrafficLight = Red | Orange | Green
         \end{code}
@@ -939,19 +942,18 @@ eventual netlist representation is also highlighted.
         % constructors to be translated to the corresponding enumeration 
         % value.
       \item[\bf{Multiple constructors with fields}]
-        Algebraic datatypes with multiple constructors, where at least
+        datatypes with multiple constructors, where at least
         one of these constructors has one or more fields are currently not 
-        supported. Additional research is required to allow for the overlap of
-        the fields belonging to the different constructors.
+        supported. Additional research is required to optimize the overlap of
+        fields belonging to the different constructors.
     \end{xlist}
 
   \subsection{Polymorphism}\label{sec:polymorhpism}
     A powerful feature of most (functional) programming languages is 
     polymorphism, it allows a function to handle values of different data 
-    types in a uniform way. Haskell supports \emph{parametric 
-    polymorphism}~\cite{polymorphism}, meaning functions can be written 
-    without mention of any specific type and can be used transparently with 
-    any number of new types.
+    types in a uniform way. Haskell supports \emph{parametric polymorphism}, 
+    meaning that functions can be written without mentioning specific types, 
+    and they can be used for arbitrary types.
 
     As an example of a parametric polymorphic function, consider the type of 
     the following \hs{first} function, which returns the first element of a 
@@ -962,7 +964,7 @@ eventual netlist representation is also highlighted.
     first :: (a,b) -> a
     \end{code}
 
-    This type is parameterized in both \hs{a} and \hs{b}, which can both 
+    This type is parameterized in \hs{a} and \hs{b}, which can both 
     represent any type at all (as long as that type is supported by the 
     \CLaSH\ compiler). This means that \hs{first} works for any tuple, 
     regardless of what elements it contains. This kind of polymorphism is 
@@ -972,60 +974,76 @@ eventual netlist representation is also highlighted.
     important role in most higher order functions, as will be shown in the 
     next section.
 
-    Another type of polymorphism is \emph{ad-hoc 
-    polymorphism}~\cite{polymorphism}, which refers to polymorphic 
-    functions which can be applied to arguments of different types, but which 
-    behave differently depending on the type of the argument to which they are 
-    applied. In Haskell, ad-hoc polymorphism is achieved through the use of 
-    \emph{type classes}, where a class definition provides the general 
-    interface of a function, and class \emph{instances} define the 
-    functionality for the specific types. An example of such a type class is 
-    the \hs{Num} class, which contains all of Haskell's numerical operations. 
-    A designer can make use of this ad-hoc polymorphism by adding a 
-    \emph{constraint} to a parametrically polymorphic type variable. Such a 
-    constraint indicates that the type variable can only be instantiated to a 
-    type whose members supports the overloaded functions associated with the 
-    type class. 
+    % Another type of polymorphism is \emph{ad-hoc 
+    % polymorphism}~\cite{polymorphism}, which refers to polymorphic 
+    % functions which can be applied to arguments of different types, but 
+    % which behave differently depending on the type of the argument to which 
+    % they are applied. In Haskell, ad-hoc polymorphism is achieved through 
+    % the use of \emph{type classes}, where a class definition provides the 
+    % general interface of a function, and class \emph{instances} define the 
+    % functionality for the specific types. An example of such a type class is 
+    % the \hs{Num} class, which contains all of Haskell's numerical 
+    % operations. A designer can make use of this ad-hoc polymorphism by 
+    % adding a \emph{constraint} to a parametrically polymorphic type 
+    % variable. Such a constraint indicates that the type variable can only be 
+    % instantiated to a type whose members supports the overloaded functions 
+    % associated with the type class. 
+    
+    Another type of polymorphism is \emph{ad-hoc polymorphism}, which refers
+    to function that can be applied to arguments of a limited set to types.
+    Furthermore, how such functions work may depend on the type of their
+    arguments. For example, addition only works for numeric types, and it 
+    works differently for e.g. integers and complex numbers.
+    
+    In Haskell, ad-hoc polymorphism is achieved through the use of \emph{type
+    classes}, where a class definition provides the general interface of a 
+    function, and class \emph{instances} define the functionality for the 
+    specific types. For example, all numeric types are gathered in the 
+    \hs{Num} class, and the type of \emph{addition} is expressed by prefixing
+    by prefixing the type signature with a constraint on the type parameter:
     
-    An example of a type signature that includes such a constraint if the 
-    signature of the \hs{sum} function, which sums the values in a vector:
     \begin{code}
-    sum :: Num a => [a|n] -> a
+    (+) :: Num a => a -> a -> a
     \end{code}
-
-    This type is again parameterized by \hs{a}, but it can only contain
-    types that are \emph{instances} of the \emph{type class} \hs{Num}, so that  
-    the compiler knows that the addition (+) operator is defined for that 
-    type.
     
-    A place where class constraints also play a role is in the size and range 
-    parameters of the \hs{Vector} and numeric types. The reason being that 
-    these parameters have to be limited to types that can represent 
-    \emph{natural} numbers. The complete type of for example the \hs{Vector} 
-    type is:
-    \begin{code}
-    Natural n => Vector n a
-    \end{code}    
+    % An example of a type signature that includes such a constraint if the 
+    % signature of the \hs{sum} function, which sums the values in a vector:
+    % \begin{code}
+    % sum :: Num a => [a|n] -> a
+    % \end{code}
+    % 
+    % This type is again parameterized by \hs{a}, but it can only contain
+    % types that are \emph{instances} of the \emph{type class} \hs{Num}, so 
+    % that the compiler knows that the addition (+) operator is defined for 
+    % that type.
+    
+    % A place where class constraints also play a role is in the size and 
+    % range parameters of the \hs{Vector} and numeric types. The reason being 
+    % that these parameters have to be limited to types that can represent 
+    % \emph{natural} numbers. The complete type of for example the \hs{Vector} 
+    % type is:
+    % \begin{code}
+    % Natural n => Vector n a
+    % \end{code}    
     
     % \CLaSH's built-in numerical types are also instances of the \hs{Num} 
     % class. 
     % so we can use the addition operator (and thus the \hs{sum}
     % function) with \hs{Signed} as well as with \hs{Unsigned}.
 
-    \CLaSH\ supports both parametric polymorphism and ad-hoc polymorphism. Any 
-    function defined can have any number of unconstrained type parameters. A
-    circuit designer can also specify his own type classes and corresponding 
+    \CLaSH\ supports both parametric polymorphism and ad-hoc polymorphism. A
+    circuit designer can specify his own type classes and corresponding 
     instances. The \CLaSH\ compiler will infer the type of every polymorphic 
     argument depending on how the function is applied. There is however one 
     constraint: the top level function that is being translated can not have 
-    any polymorphic arguments. The arguments of the top-level can not be 
-    polymorphic as the function is never applied and consequently there is no 
-    way to determine the actual types for the type parameters. 
+    polymorphic arguments. The arguments of the top-level can not be 
+    polymorphic as there would be no way to infer the specific types of 
+    the arguments. 
     
     With regard to the built-in types, it should be noted that members of 
     some of the standard Haskell type classes are supported as built-in 
     functions. These include: the numerial operators of \hs{Num}, the equality 
-    operators of \hs{Eq}, and the comparison/order operators of \hs{Ord}.
+    operators of \hs{Eq}, and the comparison (order) operators of \hs{Ord}.
 
   \subsection{Higher-order functions \& values}
     Another powerful abstraction mechanism in functional languages, is
@@ -1400,6 +1418,13 @@ horizontal wires in \Cref{img:highordcpu}. These data sources offer the
 previous output of every function unit, along with the single data input of 
 the \acro{CPU} and two fixed initialization values.
 
+\begin{figure}
+\centerline{\includegraphics{highordcpu.svg}}
+\caption{CPU with higher-order Function Units}
+\label{img:highordcpu}
+\vspace{-1.5em}
+\end{figure}
+
 Each of the function units has both its operands connected to all data
 sources, and can be programmed to select any data source for either
 operand. In addition, the leftmost function unit has an additional
@@ -1510,13 +1535,6 @@ aspects of HML, such as higher-order functions are however not supported by
 the \VHDL\ translator~\cite{HML3}. The \CLaSH\ compiler on the other hand can 
 correctly translate all of the language constructs mentioned in this paper.
 
-\begin{figure}
-\centerline{\includegraphics{highordcpu.svg}}
-\caption{CPU with higher-order Function Units}
-\label{img:highordcpu}
-\vspace{-1.5em}
-\end{figure}
-
 Like the research presented in this paper, many functional hardware 
 description languages have some sort of foundation in the functional 
 programming language Haskell. Hawk~\cite{Hawk1} is a hardware modeling 
index a0ecc74..f0da35b 100644 (file)
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="131.25"
+   width="130.3"
    height="68.14473"
    id="svg2"
    version="1.1"
    inkscape:version="0.47 r22583"
-   sodipodi:docname="mac.svg">
+   sodipodi:docname="mac-nocurry.svg">
   <sodipodi:namedview
      id="base"
      pagecolor="#ffffff"
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="4"
-     inkscape:cx="64.577756"
-     inkscape:cy="37.105291"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="77.999839"
+     inkscape:cy="5.2319952"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      inkscape:snap-grids="true"
      inkscape:window-width="1091"
      inkscape:window-height="838"
-     inkscape:window-x="30"
-     inkscape:window-y="154"
+     inkscape:window-x="207"
+     inkscape:window-y="153"
      inkscape:window-maximized="0">
     <inkscape:grid
        type="xygrid"
   </sodipodi:namedview>
   <defs
      id="defs4">
+    <marker
+       inkscape:stockid="DiamondMend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondMend"
+       style="overflow:visible">
+      <path
+         id="path3764"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.4,0,0,0.4,-2.6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondLend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondLend"
+       style="overflow:visible">
+      <path
+         id="path3761"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,-5.6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondL"
+       style="overflow:visible">
+      <path
+         id="path3743"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="scale(0.8,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondM"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondM"
+       style="overflow:visible">
+      <path
+         id="path3746"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="scale(0.4,0.4)" />
+    </marker>
     <marker
        inkscape:stockid="TriangleOutM"
        orient="auto"
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
     <rect
        style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
        id="rect2925"
-       width="100.64346"
+       width="102.94156"
        height="61.256287"
        x="394.5"
        y="562.75385" />
        id="path2944"
        sodipodi:nodetypes="cc" />
     <path
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
-       d="m 484,604.06917 25,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
+       d="m 484,603.76913 23,0"
        id="path2946"
        sodipodi:nodetypes="cc" />
     <path
    d="m 226.99,660.11 0.11,0.11 0.1,0.12 0.11,0.11 0.09,0.12 0.05,0.05 0.05,0.06 0.04,0.06 0.04,0.05 0.05,0.06 0.04,0.05 0.04,0.06 0.03,0.05 0.04,0.05 0.03,0.05 0.03,0.04 0.03,0.05 0.03,0.04 0.03,0.04 0.02,0.04 0.02,0.04 0.02,0.03 0.02,0.03 0.01,0.03 0.01,0.02 0.01,0.02 0.01,0.02 0,0.02 0,0.01 c 0,0.1 -0.07,0.1 -0.13,0.1 -0.12,0 -0.13,-0.01 -0.19,-0.13 -0.33,-0.57 -0.46,-0.62 -0.62,-0.62 -0.18,0 -0.28,0.1 -0.47,0.36 -0.12,0.16 -0.29,0.39 -0.61,0.39 -0.73,0 -1.16,-0.94 -1.16,-1.14 0,-0.09 0.07,-0.11 0.15,-0.11 0.12,0 0.13,0.02 0.18,0.14 0.08,0.22 0.36,0.47 0.73,0.47 0.2,0 0.38,-0.08 0.6,-0.18 0.33,-0.15 0.44,-0.15 0.59,-0.15 -0.15,-0.17 -0.24,-0.28 -0.4,-0.44 l -1.63,-1.62 c -0.56,-0.55 -1.04,-1.29 -1.04,-1.39 0,-0.1 0.09,-0.1 0.15,-0.1 0.11,0 0.12,0.02 0.16,0.09 0.14,0.21 0.41,0.66 0.79,0.66 0.22,0 0.3,-0.11 0.47,-0.36 0.16,-0.2 0.31,-0.39 0.62,-0.39 0.97,0 1.51,1.3 1.51,1.54 0,0.1 -0.12,0.1 -0.15,0.1 -0.12,0 -0.13,-0.03 -0.17,-0.16 -0.18,-0.5 -0.66,-0.84 -1.09,-0.84 -0.2,0 -0.36,0.07 -0.56,0.16 -0.29,0.13 -0.41,0.17 -0.61,0.17 -0.05,0 -0.13,0 -0.18,-0.01 0.07,0.08 0.28,0.33 0.55,0.61 z"
    style="fill:#000000;stroke-width:0" />
 </g>    <path
-       sodipodi:nodetypes="ccc"
+       sodipodi:nodetypes="cccc"
        id="path3257"
-       d="m 443.7,583.34917 46,0 0,16.1"
-       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)" />
+       d="m 443.7,583.34917 46.3,0.16096 0,18.3 17,0"
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
     <path
        sodipodi:type="arc"
        style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
        d="m 93.161316,18.274765 c 0,0.829864 -0.672738,1.502602 -1.502602,1.502602 -0.829864,0 -1.502602,-0.672738 -1.502602,-1.502602 0,-0.829864 0.672738,-1.502602 1.502602,-1.502602 0.829864,0 1.502602,0.672738 1.502602,1.502602 z"
        transform="matrix(0.93153813,0,0,0.93153813,358.08191,566.35403)" />
     <path
-       transform="matrix(0.93153813,0,0,0.93153813,404.30691,586.85403)"
-       d="m 93.161316,18.274765 c 0,0.829864 -0.672738,1.502602 -1.502602,1.502602 -0.829864,0 -1.502602,-0.672738 -1.502602,-1.502602 0,-0.829864 0.672738,-1.502602 1.502602,-1.502602 0.829864,0 1.502602,0.672738 1.502602,1.502602 z"
-       sodipodi:ry="1.5026019"
-       sodipodi:rx="1.5026019"
-       sodipodi:cy="18.274765"
-       sodipodi:cx="91.658714"
-       id="path5257"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-       sodipodi:type="arc" />
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 503.1,599.41013 5.5,3.4 -5.5,3.5"
+       id="path4090"
+       sodipodi:nodetypes="ccc" />
   </g>
 </svg>