[Next]登録内容の照会 [Previous]暗黙的変換 [Up]PoPの使用方法 [Top]

事実や規則の登録

PoPは事実/規則データベースをメモリ上に持っています. Prologプログラムは,このデータベースに登録された事実/規則にしたがって評価,実行されます.

事実や規則をPoPに登録するには,assertzメソッドを使用します.
assertzは,このデータベースの末尾に事実/規則を追加するメソッドです. 後から登録されたものは,検索順序が後になります.
assertzの引数は,暗黙的にPoPオブジェクトに変換されます.

なお,使用者が事実/規則として登録した述語を使用者定義述語,PoPがあらかじめ持っている述語を組込み述語と呼びます.

事実

P0.
を登録するには,
pop.assertz(P0)
と呼び出します.

規則

P0 :- P1, P2, .. , Pn.
を登録するには,
pop.assertz(P0, P1, P2, .. , Pn)
あるいは,Clauseの生成と同様に
pop.assertz(P0, body=(P1, P2, .. , Pn))
pop.assertz(P0, body=[P1, P2, .. , Pn])
と呼び出します. 事実,規則にかかわらず,節を指定して
fact = Clause(P0)
rule = Clause(P0, P1, .. , Pn)
pop.assertz(clause=fact)
pop.assertz(clause=rule)
とすることもできます.

例えば,有名なプログラムのappend

append([], _X, _X).
append([_A | _X], _Y, [_A | _Z] :- append(_X, _Y, _Z).
は,以下のように登録します.
from PoP import *
pop = PoP()
Append = Atom('append')
A = Variable('A')
X = Variable('X')
Y = Variable('Y')
Z = Variable('Z')
pop.assertz(Append([], X, X))
pop.assertz(Append(List(A, tail=X), Y, List(A, tail=Z)),
  Append(X, Y, Z))

[Next]登録内容の照会 [Previous]暗黙的変換 [Up]PoPの使用方法 [Top]