システム情報科学I

Prolog処理系の使い方

2006年度冬学期 月曜2限 担当: 増原英彦


以下では SWI-Prolog という Prolog 言語の実行方法を説明します。 ここでは教育用計算機システムのiMac環境で実行することを前提にしています。
  1. Emacsなどのエディタを使ってプログラムを作成します。内容は例えば以下のようにしておき、ファイル名は「test.pl」とでもしておきます。
    p(0,X,X).
    p(s(X),Y,s(Z)) :- p(X,Y,Z).
  2. 「Terminal」アプリケーションを起動し、 /home08/masuhara/local/bin/swiprolog と入力します。
  3. ?-と表示されたらconsult('test.pl').と入力します。test.plの内容が読み込まれます。
  4. 続けて?-と表示されたらp(s(s(0)),s(s(s(0))),X).のように入力すると、2+3の結果Xを求めて表示します。
  5. 結果が表示された所で;をタイプすると、さらに別の答を探します。これ以上答がなくなった場合にはNoと表示されます。
ux104$ /home08/masuhara/local/bin/swipl
Welcome to SWI-Prolog (Multi-threaded, Version 5.4.5)
Copyright (c) 1990-2003 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
1 ?- consult('test.pl').
Warning: (/home08/masuhara/test.pl:11):
Singleton variables: [X]
% test.pl compiled 0.00 sec, 1,196 bytes
Yes
2 ?- p(s(s(0)),s(s(s(0))),X).
X = s(s(s(s(s(0)))))

より詳しい情報は以下のようなページから入手できるかも知れない:

プログラムの例
bird(woodstock).Woodstockは鳥だ。
cantfly(X):-penguin(X).ペンギンは飛べない。
landbird(X):-bird(X),cantfly(X).鳥なのに飛べないのは「飛べない鳥」だ。
bird(X):-penguin(X).ペンギンは鳥だ。
penguin(pingu).ピングーはペンギンだ。
このとき「飛べない鳥」を探すにはlandbird(X).と質問すればよい。

考えてみよう


Hidehiko Masuhara, January 2007