annotate spec.tex @ 11:a8bc8c6b48bd default tip

fix
author soto@cr.ie.u-ryukyu.ac.jp
date Tue, 15 Sep 2020 07:06:29 +0900
parents 73127e0ab57c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
1 \subsection{CbC記法で書くagda}
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 CbCプログラムの検証をするに当たり、agdaコードもCbC記法で記述を行う。つまり継続渡しを用いて記述する必要がある。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
3 以下が例となるコードである。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
4 前述した加算を行うコードと比較すると、不定の型 (t) により継続を行なっている部分が見える。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 これがAgdaで表現された CodeGear となる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
6
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 \subsection{agda による Meta Gears}
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 通常の Meta Gears はノーマルレベルの CodeGear、 DataGear では扱えないメタレベルの計算を扱う単位である。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
9 Meta DataGear はメタ計算で使われる DataGear で、実行するメタ計算によって異なる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
10 今回はその Meta Gears をagdaによる検証の為に用いる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
11 検証での Meta Gears は DataGear が持つ同値関係や、
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 大小関係などの関係を表す DataGear がそれに当たると考えられる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 Agda 上で Meta DataGear を持つことでデータ構造自体が関係を持つデータを作ることができる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 以下が While Program での制約条件をまとめたものになる。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
15 Agdaにおける Meta DataGear のコードを載せるi。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
16 \lstinputlisting[label=agda-mdg, caption= Agda における Meta DataGear] {./src/agda-mdg.agda.replaced}
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
17
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 whileTestState で Meta DataGear を識別するためのデータを分け、
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 whileTestStatePでそれぞれの Meta DataGear を返している。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 ここでは = の後ろの (vari env ≡ 0) (varn env ≡
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
21 c10 env)/ などのデータを Meta DataGear として扱う。
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
22 aa
soto@cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
23