Mercurial > hg > Papers > 2022 > soto-sigos
diff Paper/tex/spec/spec.tex @ 0:14a0e409d574
ADD fast commit
author | soto <soto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Apr 2022 23:13:44 +0900 |
parents | |
children | 9ec2d2ac1309 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/tex/spec/spec.tex Sun Apr 24 23:13:44 2022 +0900 @@ -0,0 +1,24 @@ +\section{検証手法} + 手法は模索中であり、先行研究と同じ手法を取ろうとしている。本章では先行研究で述べられている検証手法について説明する。 +\subsection{CbC記法で書くagda} + CbCプログラムの検証をするに当たり、agdaコードもCbC記法で記述を行う。つまり継続渡しを用いて記述する必要がある。 + 以下が例となるコードである。 + 前述した加算を行うコードと比較すると、不定の型 (t) により継続を行なっている部分が見える。 + これがAgdaで表現された CodeGear となる。 + +\subsection{agda による Meta Gears} + 通常の Meta Gears はノーマルレベルの CodeGear、 DataGear では扱えないメタレベルの計算を扱う単位である。 + Meta DataGear はメタ計算で使われる DataGear で、実行するメタ計算によって異なる。 + 今回はその Meta Gears をagdaによる検証の為に用いる。 + 検証での Meta Gears は DataGear が持つ同値関係や、 + 大小関係などの関係を表す DataGear がそれに当たると考えられる。 + Agda 上で Meta DataGear を持つことでデータ構造自体が関係を持つデータを作ることができる。 + 以下が While Program での制約条件をまとめたものになる。 + Agdaにおける Meta DataGear のコードを載せる。 + \lstinputlisting[label=pg:sample]{./src/agda-mdg.agda} + whileTestState で Meta DataGear を識別するためのデータを分け、 + whileTestStatePでそれぞれの Meta DataGear を返している。 + ここでは = の後ろの (vari env ≡ 0) (varn env ≡ + c10 env)/ などのデータを Meta DataGear として扱う。 + aa +