関数プログラム言語のコンパイラを、様々なプログラム変換を融合したものと考え、様々なプログラム変換の基礎理論及び実装の研究を行なった。 今年度は、特に、多相型関数プログラム言語で、データ型の実装にunboxed表現と呼ばれる効率的な表現を用いるために、Leroyによって提案されたプログラム変換について研究した。このプログラム変換は、Leroy及びAppelとShaoによって多くのプログラムに非常に有効なことが示されている。 本研究では、まず、このプログラム変換がプログラムの実行時間及び必要なメモリーの大きさに関するプログラムの複雑さ(complexity)を保存しないことを示した。このことは、このプログラム変換が、コンパイラで用いるには、不適当であることを意味している。 そこで、この問題を解決するために、本研究では、このプログラム変換の改良を提案し、その改良がプログラムの複雑さを保存することを証明した。この証明には、プログラム変換の正しさを証明するときに用いられるlogical relationsという手法を用いた。この研究で証明したように、プログラム変換がプログラムの複雑さを保存することを示す研究は、これまで、ほとんど行なわれてなく、この点が、この研究の特徴である。
|