Mercurial > hg > Papers > 2020 > soto-midterm
view tex/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 | 27a6616b6683 |
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}