インターネット&PC120%活用:PC活用編



Prologの入手

1 Prologコンパイラの入手

Prologはめちゃくちゃ面白い人工知能言語です。フリーのコンパイラ、インタプリタもたくさんあります。
以下に、よく名前をきく代表的なPrologをあげましたが、これ以外にもたくさんあります。
Prologも様々な処理系が存在します。

(表1)

SICStus Prolog 商用Prologコンパイラ。ネイティブコンパイル可 (SparcとMC68020)
GNU Prolog フリーPrologコンパイラ, Daniel Diaz氏が開発, Cのコード生成可能。使用者多く参考になるページが
多数あり。
SWI-Prolog フリーPrologコンパイラ。日本でも使用者多い。Windowsネイティブ環境用の他、Cygwin用、Linux用あり。
Windows用はインストールは超簡単。おじさんは、Cygwin用は正常に動作できていない。
Lambda Prolog 高階論理型言語。
LLP 線形論理型言語LLPのコンパイラ。神戸大学で開発され、Prologもそのまま実行可
BinProlog 商用Prologコンパイラ, BinNet Corporation が開発。
Ciao Prolog Prologコンパイラ, スペインのCLIP Labが開発。フリーのバージョンあり。Windows用もある。
K-Prolog 商用Prologコンパイラ。日本のISACが開発
B-Prolog Prologコンパイラ, Neng-Fa Zhou)氏が開発。 制約論理プログラミング可。フリー?
Visual Prolog GUIプログラムもできるVisual Prolog。Personal Editionはフリー。
Strawberry Prolog フリーPrologコンパイラ, Dimiter Dimitrov Dobrev氏が開発


2 SWI-Prolog
Windows用のPrologとして、SWI-Prologはインストールも簡単だし、使い方も簡単なので、Prolog初心者にはお奨めの
ひとつです。SWI-Prologは、処理系で言うとエジンバラPrologという種類です。

http://www.swi-prolog.org/ から、Windows用のものをダウンロードして下さい。自己解凍式のEXEファイルに
なっているので、あとは解凍するだけで、インストール完了です。(超簡単)
デフォルトインストールで、「スタート」−「プログラム」にSWI-prologが登録されます。実行ファイルはplwin.exeです。

では、ためしに使ってみましょう。まずは、さざえさん一家の親子関係を題材にさせてもらいましょう。
テキストファイルで、以下のようなプログラムを作り、sazae.swi (またはsazae.pl)というファイル名で保存して下さい。
文の最後のピリオドを忘れないで下さい。
これは、”さざえ”は”たら”の親である、という意味のPrologプログラムです。拡張子は.plがProlog用としては一般的ですが
おじさんは、Perl用に.plを使いますので、.swiにしています。
parent(sazae,tara).

Prologを起動したら、[File]-[Consult] とクリックして、先ほど作ったsazae0.swiを読み込んでください。
読み込みが完了すると、以下のように
% c:/Program Files/pl/src/sazae0.swi compiled ............
という表示がされます。

SWI-prologは
1 ?-
と表示してコマンド待ち状態になっていると思いますので、続けて
parent(sazae,tara).
と質問して下さい。これは、さざえはたらの親かという質問です。
sazae0.swi で「さざえはたらのおやである」、という事実を記述してありますので、PrologはYesと答えを返します。
面白い言語でしょう、Prologは。

続けて、parent(X,tara). と聞いてみましょう。これは、たらの親は誰(変数X)?という質問です。Prologでは、変数は大文字
にします。
X = sazae たらの親はさざえであるという答えが返ってきました。

それでは、もうひとつ、parent(X,Y). と聞いてみましょう。今度は、親も子供も変数ですので、親子関係にある親と子供は
誰?(X,Y)という質問です。
X = sazae Y =tara という答えが返ってきました。

どうですか、なんか面白そうな言語でしょう。

  (図1)


3 Visual Prolog

Visual PrologはGUIなプログラムの開発も可能なPrologです。Personal Editionが、ダウンロード可能です。(上記表1
のサイト案内参照)
2004年1月の時点で、最新ノバージョンは6.1ですが、おじさんが使用しているのはVer5.2なので、ここではVer5.2で説明
します。(Ver6.1は仕様がかなり変更になっているようです。Ver5.2もまだダウンロードできるようです。)

インストールは、自己解凍形式のEXEファイルをクリックするだけなので、これも超簡単です。
では、Visual Prolog(Ver 5.2)を使ってみましょう。またまた、さざえさん一家の家族関係をネタにさせてもらいます。
起動したら、[Project]-[New Project]とクリックして下さい。
下の図1のように、Application Expertの画面が立ち上がります。
[General]タブのProject Name に"sazae"と打ち込んで下さい。
[Target]タブでは、以下の通り選択して下さい。
Platform: Win32
UI Strategy: Easywin
Target Type: exe

 (図2)


以上の設定がすんだら、[Create]ボタンをクリックして下さい。
下の図3のようなProject Windowが表示されます。
ここで、sazae.pro(これが、ソースファイルになる)を選択して[Edit]ボタンを押して下さい。
ソースの編集画面が開きますので、以下のように記述して下さい。
(とりあえずここでは内容ははわからなくてもO.K.です。ま、単純なさざえさん一家の関係なんで
なんとなくわかると思いますが)


predicates
nondeterm parent(symbol,symbol)
son(symbol,symbol) -nondeterm(o,o)
nondeterm grandchild(symbol,symbol)
male(symbol)
female(symbol)

clauses
parent(namihei, sazae).
parent(fune,sazae).
parent(namihei,katuo).
parent(namihei,wakame).
parent(sazae,tara).
male(tara).
male(katuo).
male(namihei).
female(fune).
female(sazae).
female(wakame).
son(X,Y):-parent(X,Y),male(Y).
grandchild(X,Z):-parent(X,Y),parent(Y,Z).

goal
grandchild(X, Y),
male(X),male(Y),
write("Grand father:",X, " Grandchild&boy:",Y).

 (図3)

sazae.proのコードの記述ができたら、[Project]-[Test Goal] とクリックして下さい。このコードをコンパイルする前に
試しに実行することができます。Unregisterd Personal Edition という画面が開きますので、[Continue Evaluation]
を押して下さい。Attention!!というダイアログが表示され、「これはPersonal Editionなので他人には配布しないこと」
というような注意が表示されますが、ここでも、[OK]ボタンを押すと、コードが試しに実行されます。
sazae.proの場合は、
Grand father: namihei Grandchild&boy: tara .........
と表示されるなずです。

これで、コードのバグを確認し、よければ正式にコンパイルしましょう。
[Project]-[Build]を押します。無事コンパイル完了すれば、sazae.exeができます。これで無事完了です。
sazae.exeを実行してみて下さい。下の図4のような表示がされるはすです。


 (図4)


4 終わりに
prologて結構はまりそうなプログラム言語ではないでしょうか。
今回はコードについては特に説明しませんでしたが、次回以降、コードの記述方法について触れて
いきたいと思います。


TopPage


inserted by FC2 system