はじめに 1970年代にヨーロッパを主な舞台として生まれ育ったプログラミング言語Prolog(programming in logic)は、事実とルールから一種の自動推論を行う点に特徴があります。その基本的な動作は200行ほどのRubyプログラムで実現できます。ここでは、筆者がRubyで作成したProlog処理系を解説します。 Prologによる簡単なプログラム例を下記に示します。 これは「ソクラテスは人間(human)である」「プラトンは人間である」という事実と、「人間ならばいつか死ぬ(mortal)」というルールを書いたものです。mortal(X) :- human(X)は、変数Xが実際には何であったとしても、もしもhuman(X)が成り立つならば(つまりXが人間ならば)、mortal(X)が成り立つ(つまり、Xはいつか死ぬ)という意味です。 簡略化のため、本処理系ではRubyの構文要