無限大な夢のあと

テニスとアニメが大好きな厨二病SEのブログ

Prolog入門 #1 #AIIT #インテリジェンス特論 #Prolog

この記事を読んだら知れること

  1. Web上での実行ツールの紹介(SWISH)
  2. MacでのPrologのダウンロード方法
  3. VSCodeでの環境構築
  4. SWI-Prologでのプログラムの実行方法
  5. 最初に見てみると良さそうな動画

記事の背景

以下のURLのAIITという社会人大学院に通っていて、授業の中でPrologを扱う回があり、初めてPrologを触るということで備忘録も含めて実行方法などをまとめます。
aiit.ac.jp

Web上での実行ツールの紹介(SWISH)

以下のWeb上のSWISHというツールで、Create a [Program]を選択するとプログラムを記述できるようになります。
SWISH -- SWI-Prolog for SHaring

Mac M1環境でのPrologのダウンロード方法

Prologはいろんな処理系があるらしいのですが、今回は SWI Prolog を使用します。

brew install swi-prolog

VSCodeでの環境構築

以下のプラグインVSCodeに入れると開発が楽になると思います。
marketplace.visualstudio.com

SWI-Prologでのプログラムの実行方法

簡単に試せる実行方法は2つあり、簡単に紹介します。
ルールの読み込みはファイル読み込みでの実行しかできないように見えますが、通常実行している途中でファイル読み込みもできます。

  1. 通常実行
 swipl # 
?-  write(hello).
hello
true.
# ファイル読み込みで、ファイル名の指定を行いそのファイル内のルールを読み込む
[square].
true.
?- square(2, 3).
false.

# control + D で終了
  1. ファイル読み込み(ルール読み込み)の実行
 swipl square.pl

?- square(2, 3).
false.

?- square(2, 4).
true.

?- square(X, 4).
ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR:   [11] 4 is _26776*_26778
ERROR:    [9] toplevel_call(user:user: ...) at /usr/local/Cellar/swi-prolog/9.0.4/libexec/lib/swipl/boot/toplevel.pl:1173
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.
?- square(3, Y).
Y = 9.

# control + D で終了

square.pl自体の中身はこちらです。

square(X, Y) :- Y is X * X.

最初に見てみると良さそうな動画

AIITのインテリジェンス特論という授業を紹介したいところですが、入学あるいは科目履修生にならないとこちらを参照できないため、YoutubePrologの紹介をしていた以下のYoutubeの動画が概要も含めてより掴みやすいと思ったので、紹介です。
www.youtube.com

こちらの大学の授業で取り扱われていそうですね。
人工知能の基礎(全15回)

参考ブログ

qiita.com