changeset 2:2e752ec70578

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 11 May 2015 21:31:34 +0900
parents 755cf49d4bcc
children 259facc91c65
files fig/Duality.graffle fig/Duality.svg fig/IdDataGear.graffle fig/IdDataGear.svg fig/codeGear.graffle fig/codeGear.svg fig/dataGear.graffle fig/dataGear.svg fig/dataGearComposition.graffle fig/dataGearComposition.svg gears.ind
diffstat 11 files changed, 189 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
Binary file fig/Duality.graffle has changed
--- a/fig/Duality.svg	Mon May 11 17:12:14 2015 +0900
+++ b/fig/Duality.svg	Mon May 11 21:31:34 2015 +0900
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="68 25 267 512" width="267pt" height="512pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-10 01:31:03 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Hiragino Kaku Gothic ProN" font-size="16" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuProN-W3"/></font-face-src></font-face><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="16" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="756" height="553.00002"/><g><title>Layer 1</title><circle cx="126" cy="207" r="27.000043" fill="white"/><circle cx="126" cy="207" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 203)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" fill="black" x="1.6935" y="7" textLength="29.813">DataGear</tspan></text><circle cx="126" cy="387" r="27.000043" fill="white"/><circle cx="126" cy="387" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 383)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.6935" y="7" textLength="29.813">DataGear</tspan></text><circle cx="297" cy="207" r="27.000043" fill="white"/><circle cx="297" cy="207" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.4 203)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.6935" y="7" textLength="29.813">DataGear</tspan></text><line x1="144.59634" y1="367.4249" x2="271.58504" y2="233.75259" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(174.46094 284.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".428" y="7" textLength="32.144">CodeGear</tspan></text><line x1="126" y1="359.99999" x2="126" y2="243.90001" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(82.5625 287)" fill="black"><tspan font-family="Hiragino Kaku Gothic ProN" font-size="16" font-weight="400" x=".06" y="15" textLength="16">η</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="16.06" y="15" textLength="16.88">(a)</tspan></text><text transform="translate(222.5625 315)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><line x1="153.00001" y1="207" x2="260.09999" y2="207" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(190.66406 180)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".396" y="15" textLength="30.208">U(f*)</tspan></text><text transform="translate(104 504)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".384" y="15" textLength="79.232">f = U(f*)η(a)</tspan></text><circle cx="126" cy="63" r="27.000043" fill="white"/><circle cx="126" cy="63" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 59)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan></text><circle cx="297" cy="63" r="27.000043" fill="white"/><circle cx="297" cy="63" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.4 59)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan></text><line x1="153.00001" y1="63" x2="260.09999" y2="63" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(184.96094 50.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(192.5625 72)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".316" y="15" textLength="10.368">f*</tspan></text><text transform="translate(113 90)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".468" y="15" textLength="26.064">F(a)</tspan></text><text transform="translate(292.5 90)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text><text transform="translate(107.5 153)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".192" y="15" textLength="37.616">UF(a)</tspan></text><text transform="translate(282.5 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".336" y="15" textLength="29.328">U(b)</tspan></text><text transform="translate(122 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(282.5 153)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".336" y="15" textLength="29.328">U(b)</tspan></text><text transform="translate(104 450)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".156" y="15" textLength="56.624">η(a) : a  </tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="56.78" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="72.78" y="15" textLength="42.064"> UF(a)</tspan></text><text transform="translate(107 477)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".092" y="15" textLength="27.552">U:C</tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="27.644" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="43.644" y="15" textLength="11.264">D</tspan></text><text transform="translate(187 477)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".052" y="15" textLength="29.344">F: D</tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="29.396" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="45.396" y="15" textLength="11.552">C</tspan></text></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="68 25 267 512" width="267pt" height="512pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:22:53 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Hiragino Kaku Gothic ProN" font-size="16" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuProN-W3"/></font-face-src></font-face><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="16" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="756" height="553.00002"/><g><title>Layer 1</title><circle cx="126" cy="207" r="27.000043" fill="white"/><circle cx="126" cy="207" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 203)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" fill="black" x="9.2745" y="7" textLength="14.651">Data</tspan></text><circle cx="126" cy="387" r="27.000043" fill="white"/><circle cx="126" cy="387" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 383)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="9.2745" y="7" textLength="14.651">Data</tspan></text><circle cx="297" cy="207" r="27.000043" fill="white"/><circle cx="297" cy="207" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.4 203)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="9.2745" y="7" textLength="14.651">Data</tspan></text><line x1="144.59634" y1="367.4249" x2="271.58504" y2="233.75259" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(182.46094 284.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".009" y="7" textLength="16.982">Code</tspan></text><line x1="126" y1="359.99999" x2="126" y2="243.90001" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(82.5625 287)" fill="black"><tspan font-family="Hiragino Kaku Gothic ProN" font-size="16" font-weight="400" x=".06" y="15" textLength="16">η</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="16.06" y="15" textLength="16.88">(a)</tspan></text><text transform="translate(222.5625 315)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><line x1="153.00001" y1="207" x2="260.09999" y2="207" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(190.66406 180)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".396" y="15" textLength="30.208">U(f*)</tspan></text><text transform="translate(104 504)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".384" y="15" textLength="79.232">f = U(f*)η(a)</tspan></text><circle cx="126" cy="63" r="27.000043" fill="white"/><circle cx="126" cy="63" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(109.4 59)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan></text><circle cx="297" cy="63" r="27.000043" fill="white"/><circle cx="297" cy="63" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.4 59)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan></text><line x1="153.00001" y1="63" x2="260.09999" y2="63" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(192.46094 50.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".1745" y="7" textLength="14.651">Data</tspan></text><text transform="translate(192.5625 72)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".316" y="15" textLength="10.368">f*</tspan></text><text transform="translate(113 90)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".468" y="15" textLength="26.064">F(a)</tspan></text><text transform="translate(292.5 90)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text><text transform="translate(107.5 153)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".192" y="15" textLength="37.616">UF(a)</tspan></text><text transform="translate(282.5 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".336" y="15" textLength="29.328">U(b)</tspan></text><text transform="translate(122 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(282.5 153)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".336" y="15" textLength="29.328">U(b)</tspan></text><text transform="translate(104 450)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".156" y="15" textLength="56.624">η(a) : a  </tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="56.78" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="72.78" y="15" textLength="42.064"> UF(a)</tspan></text><text transform="translate(107 477)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".092" y="15" textLength="27.264">U:D</tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="27.356" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="43.356" y="15" textLength="11.552">C</tspan></text><text transform="translate(187 477)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".052" y="15" textLength="29.632">F: C</tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="29.684" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="45.684" y="15" textLength="11.264">D</tspan></text></g></g></svg>
Binary file fig/IdDataGear.graffle has changed
--- a/fig/IdDataGear.svg	Mon May 11 17:12:14 2015 +0900
+++ b/fig/IdDataGear.svg	Mon May 11 21:31:34 2015 +0900
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="169 386 190 124" width="190pt" height="124pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 02:32:50 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="207" cy="441" r="27.000043" fill="white"/><circle cx="207" cy="441" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(190.4 433)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.466" y="15" textLength="30.268">oupput=a</tspan></text><path d="M 229.82941 455.42682 C 242.15764 462.10468 257.82042 468.83872 272.49414 470.06153 C 303.09108 472.61127 308.05737 470.20208 315 450 C 321.94263 429.79792 319.9477 405.62225 297 398.75293 C 275.67477 392.3693 261.59755 410.83108 239.25098 423.07897" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(265.96094 428.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(231.5625 477)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".212" y="15" textLength="32.288">f o (r</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="32.212" y="15" textLength="80.576">everse-of f)</tspan></text><text transform="translate(203 468)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="169 386 270 178" width="270pt" height="178pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:27:18 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="207" cy="441" r="27.000043" fill="white"/><circle cx="207" cy="441" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(190.4 433)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.466" y="15" textLength="30.268">oupput=a</tspan></text><path d="M 229.82941 455.42682 C 242.15764 462.10468 257.82042 468.83872 272.49414 470.06153 C 303.09108 472.61127 308.05737 470.20208 315 450 C 321.94263 429.79792 319.9477 405.62225 297 398.75293 C 275.67477 392.3693 261.59755 410.83108 239.25098 423.07897" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(273.46094 428.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".1745" y="7" textLength="14.651">Data</tspan></text><text transform="translate(209.0625 495)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".424" y="15" textLength="32.288">f o (r</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="32.424" y="15" textLength="125.152">everse-of f) = id a</tspan></text><text transform="translate(203 468)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(206.0625 531)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".48" y="15" textLength="17.488">id’</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="16.784" y="15" textLength="124.592">s continuation = r</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="141.088" y="15" textLength="76.432">everse-of f</tspan></text></g></g></svg>
Binary file fig/codeGear.graffle has changed
--- a/fig/codeGear.svg	Mon May 11 17:12:14 2015 +0900
+++ b/fig/codeGear.svg	Mon May 11 21:31:34 2015 +0900
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 261 247 102" width="247pt" height="102pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-10 01:28:32 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="144" cy="303" r="27.000043" fill="white"/><circle cx="144" cy="303" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 299)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.6935" y="7" textLength="29.813">DataGear</tspan></text><circle cx="315" cy="303" r="27.000043" fill="white"/><circle cx="315" cy="303" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 299)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.6935" y="7" textLength="29.813">DataGear</tspan></text><line x1="171.00001" y1="303" x2="278.09999" y2="303" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(212.66406 276)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 330)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".356" y="15" textLength="8.288">x</tspan></text><text transform="translate(312 330)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="0" y="15" textLength="8">y</tspan></text><text transform="translate(202.5 311)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".928" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".2735" y="15" textLength="4.403">fr</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.5505" y="15" textLength="29.176">om x to y</tspan></text></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 261 247 134" width="247pt" height="134pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:25:07 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="16" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Hiragino Kaku Gothic ProN" font-size="16" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuProN-W3"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="144" cy="303" r="27.000043" fill="white"/><circle cx="144" cy="303" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 299)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="9.2745" y="7" textLength="14.651">Data</tspan></text><circle cx="315" cy="303" r="27.000043" fill="white"/><circle cx="315" cy="303" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 299)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="9.2745" y="7" textLength="14.651">Data</tspan></text><line x1="171.00001" y1="303" x2="278.09999" y2="303" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(212.66406 276)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 330)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".356" y="15" textLength="8.288">x</tspan></text><text transform="translate(312 330)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="0" y="15" textLength="8">y</tspan></text><text transform="translate(202.5 311)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.509" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".2735" y="15" textLength="4.403">fr</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.5505" y="15" textLength="29.176">om x to y</tspan></text><text transform="translate(191.66406 356)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".212" y="15" textLength="35.264">f : x  </tspan><tspan font-family="Lucida Grande" font-size="16" font-weight="500" x="35.476" y="15" textLength="16">→</tspan><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x="51.476" y="15" textLength="4.448"> </tspan><tspan font-family="Hiragino Kaku Gothic ProN" font-size="16" font-weight="400" x="55.924" y="15" textLength="8.864">y</tspan></text></g></g></svg>
Binary file fig/dataGear.graffle has changed
--- a/fig/dataGear.svg	Mon May 11 17:12:14 2015 +0900
+++ b/fig/dataGear.svg	Mon May 11 21:31:34 2015 +0900
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 268 247 98" width="247pt" height="98pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 02:26:38 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="144" cy="306" r="27.000043" fill="white"/><circle cx="144" cy="306" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 298)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.466" y="15" textLength="30.268">oupput=a</tspan></text><circle cx="315" cy="306" r="27.000043" fill="white"/><circle cx="315" cy="306" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 298)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.5775" y="15" textLength="24.045">input=b</tspan></text><line x1="171.00001" y1="306" x2="278.09999" y2="306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202.96094 293.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(213.5625 315)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 333)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(310.5 333)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 268 247 98" width="247pt" height="98pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:23:44 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576.00002" height="733"/><g><title>Layer 1</title><circle cx="144" cy="306" r="27.000043" fill="white"/><circle cx="144" cy="306" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 298)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="2.3095" y="15" textLength="28.581">oupput=f</tspan></text><circle cx="315" cy="306" r="27.000043" fill="white"/><circle cx="315" cy="306" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 298)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="5.617" y="15" textLength="21.966">input=f</tspan></text><line x1="171.00001" y1="306" x2="278.09999" y2="306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(210.46094 293.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".1745" y="7" textLength="14.651">Data</tspan></text><text transform="translate(213.5625 315)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 333)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(310.5 333)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text></g></g></svg>
Binary file fig/dataGearComposition.graffle has changed
--- a/fig/dataGearComposition.svg	Mon May 11 17:12:14 2015 +0900
+++ b/fig/dataGearComposition.svg	Mon May 11 21:31:34 2015 +0900
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 376 391 206" width="391pt" height="206pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:10:52 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><font-face font-family="Hiragino Kaku Gothic ProN" font-size="16" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuProN-W3"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="756" height="1106.00005"/><g><title>Layer 1</title><circle cx="144" cy="414" r="27.000043" fill="white"/><circle cx="144" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 406)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.466" y="15" textLength="30.268">oupput=a</tspan></text><circle cx="315" cy="414" r="27.000043" fill="white"/><circle cx="315" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 406)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.5775" y="15" textLength="24.045">input=b</tspan></text><line x1="171.00001" y1="414" x2="278.09999" y2="414" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202.96094 401.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(213.5625 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(310.5 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text><circle cx="459" cy="414" r="27.000043" fill="white"/><circle cx="459" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(442.4 406)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.7735" y="15" textLength="23.653">input=c</tspan></text><line x1="342.00001" y1="414" x2="422.09999" y2="414" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(372 401.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(382 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".408" y="15" textLength="9.184">g</tspan></text><text transform="translate(453.5 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">c</tspan></text><circle cx="144" cy="513" r="27.000043" fill="white"/><circle cx="144" cy="513" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 505)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="1.466" y="15" textLength="30.268">oupput=a</tspan></text><text transform="translate(265.96094 491.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(261.5625 521)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".116" y="15" textLength="9.184">f </tspan><tspan font-family="Hiragino Kaku Gothic ProN" font-size="16" font-weight="400" x="9.3" y="15" textLength="25.584">o g</tspan></text><text transform="translate(140 540)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><circle cx="459" cy="513" r="27.000043" fill="white"/><circle cx="459" cy="513" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(442.4 505)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".528" y="7" textLength="32.144">CodeGear</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.7735" y="15" textLength="23.653">input=c</tspan></text><text transform="translate(453.5 540)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">c</tspan></text><line x1="171.00001" y1="513" x2="422.09999" y2="513" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(264.5625 549)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".34" y="15" textLength="136.32">with continuation b</tspan></text></g></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="106 376 391 206" width="391pt" height="206pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.2.1 <dc:date>2015-05-11 08:21:28 +0000</dc:date></metadata><defs><font-face font-family="Helvetica Neue" font-size="7" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica Neue" font-size="16" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.99585" descent="-212.99744" font-weight="500"><font-face-src><font-face-name name="HelveticaNeue"/></font-face-src></font-face><font-face font-family="Hiragino Kaku Gothic ProN" font-size="16" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuProN-W3"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="756" height="1106.00005"/><g><title>Layer 1</title><circle cx="144" cy="414" r="27.000043" fill="white"/><circle cx="144" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 406)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="2.3095" y="15" textLength="28.581">oupput=f</tspan></text><circle cx="315" cy="414" r="27.000043" fill="white"/><circle cx="315" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(298.4 402)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="5.617" y="15" textLength="21.966">input=f</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="2.3095" y="23" textLength="28.581">output=g</tspan></text><line x1="171.00001" y1="414" x2="278.09999" y2="414" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(210.46094 401.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".1745" y="7" textLength="14.651">Data</tspan></text><text transform="translate(213.5625 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".132" y="15" textLength="4.736">f</tspan></text><text transform="translate(140 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><text transform="translate(310.5 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".256" y="15" textLength="9.488">b</tspan></text><circle cx="459" cy="414" r="27.000043" fill="white"/><circle cx="459" cy="414" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(442.4 406)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.644" y="15" textLength="23.912">input=g</tspan></text><line x1="342.00001" y1="414" x2="422.09999" y2="414" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(379.5 401.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".1745" y="7" textLength="14.651">Data</tspan></text><text transform="translate(382 423)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".408" y="15" textLength="9.184">g</tspan></text><text transform="translate(453.5 441)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">c</tspan></text><circle cx="144" cy="513" r="27.000043" fill="white"/><circle cx="144" cy="513" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.4 505)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="2.3095" y="15" textLength="28.581">oupput=f</tspan></text><text transform="translate(265.96094 491.5)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x=".0935" y="7" textLength="29.813">DataGear</tspan></text><text transform="translate(243.5625 521)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".116" y="15" textLength="9.184">f </tspan><tspan font-family="Hiragino Kaku Gothic ProN" font-size="16" font-weight="400" x="9.3" y="15" textLength="25.584">o g</tspan></text><text transform="translate(140 540)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">a</tspan></text><circle cx="459" cy="513" r="27.000043" fill="white"/><circle cx="459" cy="513" r="27.000043" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(442.4 505)" fill="black"><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="8.109" y="7" textLength="16.982">Code</tspan><tspan font-family="Helvetica Neue" font-size="7" font-weight="500" x="4.644" y="15" textLength="23.912">input=g</tspan></text><text transform="translate(453.5 540)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".204" y="15" textLength="8.592">c</tspan></text><line x1="171.00001" y1="513" x2="422.09999" y2="513" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(264.5625 549)" fill="black"><tspan font-family="Helvetica Neue" font-size="16" font-weight="500" x=".34" y="15" textLength="136.32">with continuation b</tspan></text></g></g></svg>
--- a/gears.ind	Mon May 11 17:12:14 2015 +0900
+++ b/gears.ind	Mon May 11 21:31:34 2015 +0900
@@ -5,19 +5,192 @@
 --Reliable computation and predictablity
 
 Various softwares are used in real world. Each of them have to work in a reliable way. A peice of devie contains
-millons of lines of code. These programs are written in C, Haskell and so on. The unit of computation of
-conventional programming language is of course a function call.
-To assure its reliability, the computation of a function should be predictable, but unfortunately
-a function may call another functions and it comes back to the original function. 
-Proof theory such as Hoare Logic or model checking method is used to make the prediction, such as
-zero divide is never occured in a function.
+millons of lines of code. These programs are written in C, Haskell and so on. 
+To assure its reliability, the computation of a function should be predictable.
+The correctness of the predecion should be assured by measurements, model checkings or proofs.
+
+% The unit of computation of conventional programming language is of course a function call.
+% a function may call another functions and it comes back to the original function. 
+% Proof theory such as Hoare Logic or model checking method is used to make the prediction, such as
+% zero divide is never occured in a function.
 
 We propose new unit of computation, data segments and code segments. Computations in these segments are finite and
-predictable. We sometimes call these gears. A set of gears make programming system. This unit is larger then
-an machine instruction and smaller than a function call. Data segments and code segments are connected by
-meta data segments and meta code segments. The idea is construct system as a set of predictable unit of
-computation.
+predictable. We sometimes call these gears. 
+
+A set of gears makes a programming system. 
+
+% This unit is larger then an machine instruction and smaller than a function call. 
+
+Data segments and code segments are connected by meta data segments and meta code segments. 
+The idea is construct system as a set of predictable unit of computation.
 
 --Definition of data segment and code segment
 
-We implment our Gears language in LLVM\cite{LLVM}, 
+Actually we implment our Gears language in LLVM\cite{LLVM}, but we can think both code and data are System F\cite{}  term. As usuall, Types are
+defined starting from type variables X,Y,Z and is generated by two operations:
+
+    1. if U and V are types, then U → V is a type.
+    2. if V i a type, and X a type variable, then ΠX.V is a type.
+
+Terms are constructed by six schemes
+
+    1. variable: $x^T, y^T, z^T,...$ of type $T$,
+    2. application: $tu$ ov type $V$, where $t$ is of type $U→V$ and $u$ is of type $U$,
+    3. λ-abstraction: $λx^U.v$ of type $U→V$, where $x^U$ is a variable of type $U$ and $v$ is of type $V$,
+    4. universal abstraction: if $v$ is a term type V, then we can form $ΛX.v$ of type $ΠX.V$, so long as the variable $X$ is not free in the type of a free variable of $v$.
+    5. universal application: if $t$ is a term of type $ΠX.V$ and $U$ is a type, then %tU$ is a tem of type $V[U/X]$.
+
+and usuall conversions,
+
+    1.  (λx.v)u 〜> v[u/x]
+    2.  (ΛX.v)U 〜> v[U/X]
+
+Code segments of type $C$ accepts data segments of type $I$ and generates data segments of type $O$. 
+
+    C : I → O
+
+Domain of C is I and codemain of C is O.
+
+--Meta computation of Gears
+
+Computation of a code is limited in the inputs and the outputs and it makes the compuation of the code predictable, but its data are
+ususally connected to other data. The code has its continuation also. These connections are out of the scope of the code.
+We think these connections are made by a meta computation, such as monads\cite{}. A monad is a data structure with monad laws and
+after an execution of a code, monad's join code is called to handle meta data structure. With monad $T$, 
+
+    C' : I → T O
+
+is a meta compuation. $C$ has one to one correcpondence with $C'$.
+
+Parallel execution or IO handling are represented as a monad in our scheme. 
+
+--A cateogy of codes 
+
+Types of code segments and  data segments narually compose a category of function and types. Codes and data are interconnected one by one.
+
+    Object : f, g, h  ...
+    Arrows : a, b, c  ...
+
+An arrow has its domain object and codomain object.
+
+There is compositon of arrows,
+
+    a o b
+
+and it satisfies the compisition law.
+
+    (a o b)  o c = a  o (b  o c )
+
+It also have identity arrow $id f$.
+
+    a o id (domain a) = a = id (domain a)  o a
+
+--A cateogy of data
+
+Is there any duality in codes and data? Ususall answer is no, since we cannot simply combine data segments and code segments cannot be objects
+of a category. Here we show a trivial extension of data segments which makes data of category from category of function and types.
+
+The problem of data segments compisition is that it forgets about later computation. We can simply store it as a continuation in the
+data segment. Data segments now have a continuation, which is a code segment. It is a part of meta computation. 
+
+Data category C is constructed from a category C. Objects of Data category C are arrows of category C. An arrow of Data category C from $a$ to $b$ is
+a data segment $f$ with continuation $n$,  $a'$ is a intermidiate data segment.
+
+    data(f,n)
+    f : codomain a  → a'
+    n : a'   → domain b
+
+If $f$ and $g$ has same codomain $b$, equality of $data(f,n)$ and $data(g,m)$ is defined as follows,
+
+    data(f,n) = data(g,m) iff b o n = b  o m
+
+where $b$ is a codomain of both $data(f,n)$ and $data(g,m)$.
+
+To make an identity arrow in the Data category, if $a$ is a codomain of $f$, we need a reverse arrow of $a$, $a'$.
+
+    data(f,(codomain f)')
+
+Compisition of arrows of Data category is defined as follows.
+
+    data(f,n)  ∙ data(g,m)  = data(f,n  o g  o m)
+
+It is easy to see its composition lows.
+
+    data(f,n)  ∙ ( data(g,m)   ∙ data(g,m)  ) =  (data(f,n)  ∙  data(g,m) )  ∙ data(g,m)  
+
+To check $data(f,a')$ is an identity,
+
+    data(f,(codomain f)') ∙ data(g,n) = data(g,n)
+
+it is true if and only if
+
+    codmain f  o ( (codmain f)'  o g )  o n = g  o n
+
+since $(codmain f)'$ is a reverse of $codomain f$, it holds. Right identity law holds the same way. 
+
+
+--A trivial duality of code and data
+
+Data category is a data segment with continuation, which is one step behind, so there is a trivial one to one corespondence. 
+It is also easy to show C and Data category C  is an adjuntion pair.
+
+Data segments in a Data category has an arrow in an original category C, so its corespondence is trivial. Acturally, we have a map F,
+
+    F : Obj C → Obj (DataCategory C)
+    F f =  data(f, id f)
+
+It has identity continuation, behave as a data segemtn with no continuation. Functor U : (DataCategory C) C is defined as follows
+
+    U f = codomain f
+    U data(f,n) =  b o n
+
+wehre $b$ is a codomain of $data(f,n)$.
+Object $f$ in Data Category C  is an allow of C and it has a codomain. Arrow $data(f,n)$ in Data Category C has
+original arrow $f$ and continuation $n$.
+
+With a mapping transformation $η$,
+
+    η : Obj C → Arrow C
+    η f = id f
+
+We can define a solution of universal mapping problem, 
+
+    * f =   b'  o f
+
+and
+
+    U ( *f )  o (η a) = f
+
+is directry checke and $*f$ is unique, that is 
+
+    if there is an arrow g $U g  o (η a) = f$ then $g = *f$.
+
+This is also trivial.
+
+--Comparison
+
+Meta compuation in Haskell\cite{} is defined as set of explict monads. In Gears, meta computation is unique among the system,
+which is something like operating system kernel or libraries.
+
+In Open CL\cite{} or Cuda\cite{}, there is a code segment which is called kernel. The kernel runs parallelly in a GPU. The kernel
+is very similar to our code segment.
+
+Object oriented languages, such as Smalltalk-80 or Java , has meta compuation as a virtual machines. It is very different from
+monad or meta computation of our Gears system. Data segment has no idenity such as Smalltalk's self, it can be copied easily,
+which is a very good property in a parallel compuation environment.
+
+Code segment can be seen as a kind of Typed assembly language, which has typed input and predictable behaviour.
+
+In old age, there is a software design method called data flow diagram. Category of code and data is very much like
+data flow diagram approach. It can be seen as a rivival of main frame technologies.
+
+
+--Conclusion
+
+As usual categorrical result, trivial duality of category and Data category means nothing itself.
+During the design of gears system, we see similarities of code segment and data segment. It has
+meta segments and contnuations. We think the duality gives us some guidance to design software
+system such as an operating system or libraries.
+
+We have implemented Gears system on top of LLVM\cite{} and hope it can be used as real sysetm description language.
+