
2026/02/21 8:02
**λProlog:高階論理におけるロジックプログラミング**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
本文は、より高次の直観主義論理に基づくロジックプログラミング言語 λProlog の発展と現在の状態を追跡し、直接的な高次抽象構文(HOAS)へのサポートを先駆けたものです。
- 元々の実装は 1988 年に分散 Prolog バージョンとして書かれました。
- 現代の実装には ELPI (v 3.4.5、2025年12月11日リリース) と Teyjus (v 2.1.1、2023年2月8日リリース)、両方とも OCaml で書かれています。Teyjus は実行時型の使用から計算を分離し、統合(unification)を高次パターンフラグメントに限定しています。
- Makam は λProlog の洗練版で、Antonis Stampoulis によって OCaml で一から実装されました。
- 対話型定理証明器 Abella は λProlog の概念を継承し、λ‑tree 構文(HOAS)、∇‐量化子とノミナル変数、および二層論理アプローチをサポートしています。実装に貢献した人物には Kaustuv Chaudhuri、Andrew Gacek、Yuting Wang が含まれます。
- 教育リソースは、Zakaria Chihani のビデオチュートリアル、Alwen Tiu(2009 年)のコース資料、Amy Felty(1997 年)のチュートリアル、Olivier Ridoux のフランス語書籍(1998 年)、John Hannan の PLILP チュートリアル(1998 年)など多岐にわたります。
- λProlog 論文の参考文献は 1985‑2000 年をカバーし、理論・設計・応用・実装について扱っています。
- ソース資料への最新更新は 2025年12月12日であり、ELPI は OCaml→JavaScript コンパイラ(例:オンライン MLTS)を介してウェブブラウザ上で動作できます。
この要約は、新たな解釈を加えることなくすべての重要ポイントを反映しています。
本文
λProlog:高階論理によるロジックプログラミング
λProlog は、Church のシンプル・タイプ理論(Simple Theory of Types)に倣った高階直観主義論理を基盤とするロジックプログラミング言語です。
その堅牢な論理的基盤は以下の概念を直接サポートします。
- モジュラー構成が論理的に保証されたモジュール化
- 抽象データ型(abstract datatype)
- 高階プログラミング
- λ‑ツリー構文(λ-tree syntax)による束縛変数の扱い
実装は単純タイプ付き λ‑項と(部分的に)高階統一をサポートしているため、λProlog は「高階抽象構文」(HOAS)を直接扱う世界初の言語となりました。
元々 1980 年代後半に設計され、最初の分散版は 1988 年 Prolog に登場しましたが、新しい実装や応用(特にメタプログラミング領域)が継続的に開発・研究されています。
現在の実装
| 実装 | 作者 | バージョン | 発表日 | 言語 | 特徴 |
|---|---|---|---|---|---|
| ELPI(埋め込み可能 λProlog インタプリタ) | Enrico Tassi ら | 3.4.5 | 2025‑12‑11 | OCaml | 単純タイプ付き λ‑項、 高階統一をサポート。Coq‑ELPI プラグインにより Coq 内で実行可能。 |
| Teyjus | Gopalan Nadathur ら | 2.1.1 | 2023‑02‑08 | OCaml | 計算を分離、効率的なランタイム型利用、 高階パターンフラグメントへの制限。 |
| Makam | Antonis Stampoulis | – | – | OCaml | λProlog の改良版。ゼロから実装。 |
Enrico の ELPI チュートリアルと Teyjus の ALP ニュースレター(2010年3月)を参照ください。
言語ドキュメント
書籍
- Programming with Higher‑Order Logic (Dale Miller & Gopalan Nadathur, 2012) – CUP、Amazon.com、Amazon.fr、eBook で入手可能。
- Proof Theory and Logic Programming: Computation as Proof Search(Dale Miller)– λProlog の証明理論と線形ロジック拡張を詳述。
チュートリアル・講座
- Zakaria Chihani の YouTube シリーズで λProlog と高階論理プログラミングを紹介。
- Alwen Tiu の Programming in Higher‑Order Logic コース資料(2009)。
- Amy Felty の 1997 年チュートリアル「λProlog and its Applications to Theorem Proving」。
- Olivier Ridoux のフランス語書籍 Lambda-Prolog de A à Z… ou presque(163 ページ、1998年)。
- John Hannan の 1998 PLILP Conference チュートリアルで λProlog によるプログラム解析を解説。
文献集
1985〜2000 年の λProlog の理論・設計・応用・実装に関する包括的文献集がオンラインで公開されています。
関連定理証明器
Abella – 述語推論(inductive/coinductive)と関係を活用した対話型証明器。
主な特徴:
- λ‑ツリー構文(HOAS)への直接サポート。
- ∇-量化子と名義変数。
- 二層ロジック:計算を行う仕様ロジック(λProlog の部分集合)と証明用の推論ロジック。
Abella による π‑calculus の形式化は特に洗練されています。主要貢献者には Kaustuv Chaudhuri、Andrew Gacek、Yuting Wang が含まれます。
サンプルコード
例は以下で入手可能です:
- Teyjus 配布物内
- Programming with Higher‑Order Logic から抽出
- 小規模サンプルプログラム集
ELPI は OCaml で書かれており、JavaScript にコンパイルできるため、Web ブラウザ上で λProlog プログラムを実行することも可能です。オンライン MLTS 実装の例をご覧ください。
最終更新日: 2025‑12‑12