view spec.tex @ 0:519fc33a5d61

epoc
author okud
date Fri, 11 Sep 2020 16:07:19 +0900
parents
children
line wrap: on
line source

\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 のコードを載せるi。
    \lstinputlisting[label=agda-mdg, caption= Agda における Meta DataGear] {./src/agda-mdg.agda.replaced}

	whileTestState で Meta DataGear を識別するためのデータを分け、
	whileTestStatePでそれぞれの Meta DataGear を返している。
	ここでは = の後ろの (vari env ≡ 0) (varn env ≡
	c10 env)/ などのデータを Meta DataGear として扱う。
	aa