• 検索結果がありません。

型理論に基づくプログラミング言語の 効率的な実装に関する研究

N/A
N/A
Protected

Academic year: 2021

シェア "型理論に基づくプログラミング言語の 効率的な実装に関する研究"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

Japan Advanced Institute of Science and Technology

JAIST Repository

https://dspace.jaist.ac.jp/

Title 型理論に基づくプログラミング言語の効率的な実装に

関する研究

Author(s) 挽地, 篤志

Citation

Issue Date 2002‑03

Type Thesis or Dissertation Text version author

URL http://hdl.handle.net/10119/1533 Rights

Description 大堀淳, 情報科学研究科, 修士

(2)

型理論に基づくプログラミング言語の 効率的な実装に関する研究

挽地篤志(010092)

北陸先端科学技術大学院大学 情報科学研究科 2002年2月15日

キーワード: type directed compiler, A-normal form, Logical Abstract Machine.

1 導入

従来、コンパイラの開発はad hocになされてきた。そのため、高級言語から低級言語 にコンパイルできたとしても、実行時に誤りを含む可能性があった。それに対して近年、

論理学とプログラミング言語の関係が分かってきた。論理学とプログラミング言語におけ る命題と型、証明とプログラムの間には関係がある。論理学においてPが命題Aの証明 であるなら 、プログラミング言語においてPは型Aの値を計算するプログラムであると 言える。本稿ではこの論理学とプログラミング言語の関係を用い、コンパイラの分析と実 装を行う。以下、既存の研究とその問題点、本研究の目的、本稿の構成について述べる。

2 既存の研究と問題点

コンパイラとは、ソース言語から中間言語を経て目的言語へと変換するプログラムのこ とを言う。

コンパイラの研究には 、中間言語にCPSを使ったコンパイラ[Appel et al.: 89]、A- normal formを使ったコンパイラ[Flanagan et al.: 93]がある。Appelは、中間言語にCPS を使ったコンパイラを設計した。CPSは継続(Continuation)と環境(Closure)を引数にと る中間言語である。CPSの欠点は 、継続を引数に取ることによってコード 量が増大する ことである。それに対し Flanaganは、中間言語にA-normal formを使ったコンパイラを 設計した。A-normal formは中間の値に名前を付けるという特徴を持つ中間言語である。

A-normal formの利点は、コード 量が増大しないということである。これらの研究により、

A-normal formはCPSよりも良い変換を与えることが分かった。しかしこれらのコンパ

イラは型無しの言語を対象にしているため、論理学との関係を適用することができない。

Copyright c2002 by Hikichi Atsushi

1

(3)

それに対して最近、型付きのコンパイラの研究がなされてきた。型付きのコンパイラの 研究には、型主導のコンパイルの研究[Morrisett et al.: 98]がある。Morrisettの研究は、

型付きCPSを使用している。しかし 、型付きA-normal formを使ったコンパイラの方が より良い変換をあたえることが分かっている。よって本稿では、型付きのA-normal form を用い、型を保存したコンパイラの設計と実装を行う。

論理学とプログラミング言語の間には以下のような関係がある。コンパイラのソース言 語に用いる型付きラムダ計算と、論理学における自然演繹(Natural Deduction)という体 系は同一のものとみなすことができる。型付きラムダ計算と自然演繹における、型と命 題、プログラムと証明は同じ性質を持つ。自然演繹においてPが命題Aの証明ならば 、型 付きλ計算においてPが型τの値を計算するプログラムである。これをカリー・ハワー ド 同型性質(Curry-Howard Isomorphism)[Curry:80][Howard:80][Gallier:93]と言う。

近年、この性質を用いることによって、プログラム変換を証明変換ととらえた分析がお こなわれてきた。型付きλ計算から型付きA-normal formへのプログラム変換は、自然 演繹からGenzen流のシーケント計算の一種であるGK[Kleene:52]への証明変換(これを NGと呼ぶ)と、GKからGKのサブシステムであるGKAへの証明変換(これをSと呼ぶ) の合成によって表される[ohori:99]。型付きA-normal fromは、GKをA-normal正規化し たGKAと一致する。

コンパイラは最終的に逐次シーケント計算(Sequential Sequent Calculus(SSC))[ohori:99]

と同じ性質を持つ論理抽象機械SLAMへプログラム変換を行う。型付きA-normal form からSLAMへのプログラム変換は、GKAから逐次シーケント計算への証明変換と同じで ある。しかし 、この証明変換はまだ定義されていない。

Natural Deduction

GK SSC

Typed Lambda Calculus

A-normal from

SLAM

Curry-Howard Isomorphism

Z NG

proof transformation

translate GKA S

A

1: コンパイルにおけるカリー・ハワード 同型対応

プログラミング言語と論理学の対応関係について、図1に表す。

2

(4)

3 目的

本研究の目的は、A-normal formの論理学的解釈を基礎に、A-normal formを中間言語 とする型主導コンパイル方式を研究することである。実際には以下の3点を行う。まず 既存の型理論の研究のコンパイラへの応用可能性を吟味する。次にA-normal formから SLAMへのプログラム変換における型の保存を証明する。最期に理論に基づいて実装を 行なう。

3

参照

関連したドキュメント

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

・Squamous cell carcinoma 8070 とその亜型/変異型 注3: 以下のような状況にて腫瘤の組織型が異なると

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配

脱型時期などの違いが強度発現に大きな差を及ぼすと

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

本プログラム受講生が新しい価値観を持つことができ、自身の今後進むべき道の一助になることを心から願って

今回、新たな制度ができることをきっかけに、ステークホルダー別に寄せられている声を分析