Mercurial > hg > Papers > 2018 > nozomi-master
changeset 59:5450e7ae5fa5
Mini fixes
author | atton <atton@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 01 Feb 2017 15:27:15 +0900 |
parents | 68bf744d726e |
children | ecd3a1e40921 |
files | paper/cbc-type.tex paper/escape_agda.rb paper/src/CodeSegment.agda paper/src/CodeSegments.agda |
diffstat | 4 files changed, 24 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/cbc-type.tex Wed Feb 01 14:52:01 2017 +0900 +++ b/paper/cbc-type.tex Wed Feb 01 15:27:15 2017 +0900 @@ -4,6 +4,7 @@ DataSegment と CodeSegment の定義、CodeSegment の接続と実行、メタ計算を定義し、 Agda 上で実行できることを確認する。 また、Agda上で定義した DataSegment とそれに付随する CodeSegment の持つ性質を Agda 上で証明していく。 +% {{{ DataSegment の定義 \section{DataSegment の定義} まず DataSegment から定義していく。 DataSegment はレコード型で表現できるため、Agda のレコードをそのまま利用できる。 @@ -12,7 +13,9 @@ cs1 は計算結果を格納する c という名前の変数のみを持つので、同様にds1もcのみを持つ。 \lstinputlisting[label=src:agda-ds, caption=Agda における DataSegment の定義] {src/DataSegment.agda} +% }}} +% {{{ CodeSegment の定義 \section{CodeSegment の定義} 次に CodeSegment を定義する。 CodeSegment は DataSegment を取って DataSegment を返すものである。 @@ -24,7 +27,7 @@ CodeSegment 型のコンストラクタには \verb/cs/ があり、Input DataSegment を取って Output DataSegment を返す関数を取る。 具体的なデータ型の定義はリスト ~\ref{src:agda-cs} のようになる。 -\lstinputlisting[label=src:agda-cs, caption= Agda における CodeSegment 型の定義] {src/CodeSegment.agda} +\lstinputlisting[label=src:agda-cs, caption= Agda における CodeSegment 型の定義] {src/CodeSegment.agda.replaced} この CodeSegment 型を用いて CodeSegment の処理本体を記述する。 @@ -44,7 +47,13 @@ 最後に計算をする cs0 へと軽量継続する main を定義する。 例として、 a の値を 100 とし、 b の値を50としている。 -正しく計算が行なえたら値150が得られるはずである。 + +cs0, cs1, cs2, main をAgda で定義するとリスト~\ref{src:agda-css}のようになる。 + +\lstinputlisting[label=src:agda-css, caption= Agda における CodeSegment の定義] {src/CodeSegments.agda} + +正しく計算が行なえたなら値150が得られるはずである。 +% }}} \section{ノーマルレベル計算の実行} \section{MetaDataSegment の定義}
--- a/paper/escape_agda.rb Wed Feb 01 14:52:01 2017 +0900 +++ b/paper/escape_agda.rb Wed Feb 01 15:27:15 2017 +0900 @@ -6,6 +6,7 @@ ReplaceTable = { '->' => 'rightarrow', + '⊔' => 'sqcup', '∷' => 'text{::}', '∙' => 'circ', '≡' => 'equiv',
--- a/paper/src/CodeSegment.agda Wed Feb 01 14:52:01 2017 +0900 +++ b/paper/src/CodeSegment.agda Wed Feb 01 15:27:15 2017 +0900 @@ -1,14 +1,2 @@ data CodeSegment {l1 l2 : Level} (I : Set l1) (O : Set l2) : Set (l ⊔ l1 ⊔ l2) where cs : (I -> O) -> CodeSegment I O - -cs2 : CodeSegment ds1 ds1 -cs2 = cs id - -cs1 : CodeSegment ds1 ds1 -cs1 = cs (\d -> goto cs2 d) - -cs0 : CodeSegment ds0 ds1 -cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)})) - -main : ds1 -main = goto cs0 (record {a = 100 ; b = 50})
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/CodeSegments.agda Wed Feb 01 15:27:15 2017 +0900 @@ -0,0 +1,12 @@ +cs2 : CodeSegment ds1 ds1 +cs2 = cs id + +cs1 : CodeSegment ds1 ds1 +cs1 = cs (\d -> goto cs2 d) + +cs0 : CodeSegment ds0 ds1 +cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)})) + +main : ds1 +main = goto cs0 (record {a = 100 ; b = 50}) +