Prolog 【Programmation en logique】
概要
Prolog(Programmation en logique)とは、代表的な論理型プログラミング言語の一つ。1972年に仏マルセイユ大学のアラン・カルメラウアー(Alain Colmerauer)氏とフィリップ・ルーセル(Pphilippe Roussel)氏が、自然言語の解析や定理の自動証明などを研究する過程で考案した。「述語論理」(一階述語論理)と呼ばれる論理形式を用いて物事の間の関係を「述語」として定義し、述語が満たすべき条件を規則として定義することによりプログラムを記述する。プログラムのほとんどが短い宣言の列挙であり、手続きなどは記述しないため、「宣言型プログラミング言語」に分類されることもある。
Prologは自然言語の処理や機械的な推論などに適しているため、古くからエキスパートシステムなどいわゆる人工知能システムの研究・開発などの分野で利用されてきた。1995年にはISO標準が策定され、様々な環境向けに処理系が開発されているが、汎用的なソフトウェア開発には適用しにくいため、限られた用途・分野で利用されている。
基本的な文法
Prologでは事物の持つ性質や、事物の間の関係を「事実」として定義する。「parent(john,mary).」(johnはmaryのparentである)「male(john).」(johnはmaleである)のように記述する。事実の宣言を集めたものを「データベース」という。
ある事実が他の事実に依拠して決まる場合は、これを「規則」として記述する。例えば、「father(X,Y) :- parent(X,Y), male(X).」という規則は、「Xがfatherであるとは、XがYのparentであり、かつ、Xがmaleであることを指す」と定義している。
Prologの処理系に事実と規則を記述したプログラムを与え、「質問」を実行すると、導かれる結論を返す。例えば、上記の事実と規則を宣言したプログラムに「?- father(john, mary).」という質問を与えると、「yes」と出力する。事実や規則に当てはまらない場合や「知らない」場合は「no」を出力する。
(2024.1.22更新)