Mercurial > hg > Papers > 2015 > kono-lola
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
--- 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>
--- 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>
--- 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>
--- 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>
--- 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. +