- 著者
-
南出 靖彦
- 出版者
- 筑波大学
- 雑誌
- 若手研究(B)
- 巻号頁・発行日
- 2001
関数型プログラミング言語のコンパイラで用いられるCPS変換の定理証明システムIsabelle/HOLによる検証について二つの拡張を行った.まず,CPS変換がプログラムの実行に必要な記憶領域の大きさを保存することを検証した.証明すべき性質はより複雑なものになり,証明の長さも2倍程度になった.しかし,変換で導入される変数の形式化などは,記憶領域を考慮しない場合の形式化をそのまま応用することができ,自動証明を多くの補題の証明に用いることができた.次に,変換の検証を自由変数に含む式に拡張した.前年度の検証では,扱うプログラムが閉じた式であることを仮定し,証明を単純化した.しかし,前年度の証明を再検討したところ,この制限は証明の単純化にあまり貢献していないことがわかった.そこで,本年度には,この制限を取り除いて検証を行い,この制限が本質的でないことを確認した.関数型プログラミング言語の末尾呼び出しを,Java仮想機械などの末尾呼び出しを直接サポートしていない環境で効率的に実装するためのプログラム変換を提案した.末尾呼び出しをサポートしない環境でも,特殊な関数呼び出しの仕組みを用いることで,末尾呼び出しが実現できるが,そのような方法はオーバーヘッドが大きい.提案した方法では,型推論を用いてプログラムの末尾呼び出しに関する性質を推論する.その型情報に基づき,末尾呼び出しの正当な実装が必要な関数に対してだけ,選択的に,非効率的な末尾呼び出しの実装を用いることで,オーバーヘッドを抑えている.