Mercurial > hg > Papers > 2022 > soto-sigos
view 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 |
line wrap: on
line source
\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