2003/2/22
JASMIN02秋報告資料からの抜粋
7
付録A.Prologの構文、リスト、節など
•Prologでは述語を述語名とカッコで表し、カッコ内には引数を任意個数カンマで区切って設定できる。
•引数には個体記号、変数、リスト形式を使用できる。
•個体記号: 小文字で始める文字列。あるいは数字。その他の文字列は引用符‘’で囲えばよい。また「親(親(X))」(=Xの祖父)のように変数を含んだ関数の使用も許される。
•変数: 英大文字で始める。下線_で始めれば無名変数。
•リスト形式: 任意個のアトムの列)も使える。たとえば[a,b,c,d]はリストだが、左端と残りのペアを縦棒で区切って[a|Y] 、Y=[b,c,d]と単一化できる。
•事実は一つの述語で、ルールは頭部に述語、首記号:-で区切って右側に本体を書く。本体は任意個の述語をカンマで区切って書ける。
•本体の条件はカンマで区切られた連言を意味するが、セミコロン;で選言を表せる。例.英語科目:-英文法; 英会話.(⇒英語科目:-英文法.英語科目:- 英会話.のように2つの節に分けても良い。)
•なおカット!はそれ以降のゴール失敗のとき、バックトラックを!以前まで遡及させない。
•矢印‐>はIf-Then文として使える。
•節形式はリテラルの選言(「または」を意味する論理結合子(∨)で結ばれたリテラルの列)である。ホーン節(Horn clause)は肯定リテラルが一つだけ許されている節形式であり、以下のような冠頭標準形に対応する。リテラルは引数を特定した述語と考えてよいが、否定(\+)がつく場合を含む。
•ルール節 p(x):- q(x), r(x). の宣言的意味は「もしxがqとrという条件を同時に満たしているならば、pという条件も満たすはずである。」という主張に等しい。論理式では、 q∧r → p あるいはp∨ not q∨ not  r  という形式で表せる(ただし全称∀が全体につくので唯一の変数xは省略した)。 ∧(連言)、∨(選言)、not(否定)、→(条件)は標準的な論理学の約束にしたがう。