annotate Paper/tex/spec/spec.tex @ 6:9ec2d2ac1309

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