Mercurial > hg > Papers > 2022 > soto-sigos
view Paper/tex/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{検証手法} 本章では検証する際の手法を説明する. CodeGear の引数となる DataGear が事前条件となり, それを検証する為のPre Conditionを検証する為の Meta Gearsが存在する. その後,さらに事後条件となる DetaGear も Meta Gears にて検証する. これらを用いて Hoare Logic によりプログラムの検証を行いたい. \subsection{CbC記法で書くagda} CbCプログラムの検証をするに当たり,AgdaコードもCbC記法で記述を行う.つまり継続渡しを用いて記述する必要がある. \coderef{agda-cg}が例となるコードである. \lstinputlisting[caption= Agdaでの CodeGear の例, label=agda-cg]{src/cbc-agda.agda} 前述した加算を行うコードと比較すると,不定の型 (t) により継続を行なっている部分が見える. これがAgdaで表現された CodeGear となる. \subsection{agda による Meta Gears} 通常の Meta Gears はノーマルレベルの CodeGear, DataGear では扱えないメタレベルの計算を扱う単位である. 今回はその Meta Gears をAgdaによる検証の為に用いる. \begin{itemize} \item Meta DataGear \mbox{}\\ Agda 上で Meta DataGear を持つことでデータ構造自体が関係を持つデータを作ることができる. これを用いることで,仕様となる制約条件を記述することができる. \item Meta CodeGear\mbox{}\\ Meta CodeGear は 通常の CodeGear では扱えないメタレベルの計算を扱う CodeGear である.Agda での Meta CodeGear は Meta DataGear を引数に取りそれらの関係を返 す CodeGear である.故に,Meta CodeGear は Agda で記述した CodeGear の検証そのものである \end{itemize}