コンピュータサイエンスにおいて、プログラミング計算可能関数(PCF)、またはプログラミング計算可能関数、またはプログラミング計算可能関数用言語は、 1977年にゴードン・プロトキンによって導入された型付き関数型プログラミングに基づくプログラミング言語であり、ダナ・スコットによる以前の未発表資料に基づいている。[ 1 ]これは、型付きラムダ計算の拡張版、またはMLやHaskellなどの現代の型付き関数型言語の簡略版と考えることができる。
PCF の完全抽象モデルは、最初に Robin Milner によって提示されました。[ 2 ]しかし、Milnerのモデルは基本的に PCF の構文に基づいていたため、満足のいくものではないと考えられていました。[ 3 ]構文を使用しない最初の 2 つの完全抽象モデルは、1990 年代に定式化されました。これらのモデルは、ゲーム意味論[ 4 ] [ 5 ]と Kripke 論理関係に基づいています。[ 6 ]しばらくの間、これらのモデルはどちらも効果的に表現できないため、完全に満足のいくものではないと考えられていました。しかし、Ralph Loader は、PCF の有限断片におけるプログラム等価性の問題が決定できないため、効果的に表現できる完全抽象モデルは存在し得ないことを示しました。[ 7 ]
構文
PCFのデータ型は帰納的に次のように定義される。
- natは型です
- 型σとτに対して、関数型σ → τが存在する。
コンテキストとは、変数名 x と型 σのペアのリストであり、変数名が重複しないようにします。次に、以下の構文構造に対して、通常の方法でコンテキスト内の項の型判定を定義します。
- 変数 ( x : σがコンテキストΓの一部である場合、Γ ⊢ x : σ )
- ( σ → τ型の項をσ型の項に適用する)
- λ抽象化
- Y固定点コンビネータ(型σから型σの項を作成する)→ σ
- natと定数0に対する後継 ( succ ) および前任 ( pred ) 操作
- 型付けルール付きの条件式if :

- (ここでは、 nat s はブール値として解釈され、ゼロは真、その他の数値は偽を表すという慣例に従います。)
注記
- ↑「PCFは、スコットの計算可能関数の論理であるLCFに基づいた、計算可能関数のプログラミング言語です。」 [ 1 ]プログラミング計算可能関数は(ミッチェル1996)によって使用されています。
参考文献
- 1 2 Plotkin, Gordon D. (1977 年 12 月). "プログラミング言語としての LCF の考察" (PDF) . Theoretical Computer Science . 5 (3): 223– 255. doi : 10.1016/0304-3975(77)90044-5 .
- ↑ Milner, Robin (1977年2月). "型付きλ計算の完全抽象モデル" (PDF) . Theoretical Computer Science . 4 (1): 1– 22. doi : 10.1016/0304-3975(77)90053-6 . hdl : 20.500.11820/731c88c6-cdb1-4ea0-945e-f39d85de11f1 .
- ↑ Ong, C.-HL (1995). "操作的意味論と表示的意味論の対応関係: PCF の完全抽象化問題" . Abramsky, S.; Gabbay, D.; Maibau, TSE (編). Handbook of Logic in Computer Science . Oxford University Press. pp. 269–356 . 2006-01-07 のオリジナルからアーカイブ。2006-01-19に取得。
- 1 2 Hyland, JME; Ong, C.-HL (2000年12月15日). 「PCFの完全抽象化について」 . Information and Computation . 163 (2): 285–408 . doi : 10.1006/inco.2000.2917 .
- ↑ Abramsky, S.; Jagadeesan, R.; Malacaria, P. (2000年12月15日). "PCFのための完全な抽象化" . Information and Computation . 163 (2): 409– 470. doi : 10.1006/inco.2000.2930 .
- ↑ O'Hearn, PW; Riecke, JG (1995). "Kripke Logical Relations and PCF" . Information and Computation . 120 (1): 107– 116. doi : 10.1006/inco.1995.1103 .
- ↑ Loader, R. (2001). "有限PCFは決定不可能である" . Theoretical Computer Science . 266 ( 1–2 ): 341–364 . doi : 10.1016/S0304-3975(00)00194-8 .
外部リンク
- RealPCF入門
- PCF用の字句解析器と構文解析器はSMLで記述されている。