問題4-55〜56

「4.4 論理型プログラミング」に入りました。宣言的(何である)知識を用いる数学的な方法でプログラムが登場します。その事例としてデータベースが取り上げられています。この節も、前の非決定性プログラミング/amb評価器と同様、最初に論理型プログラムの使い方から説明されています。「4.4.2 質問システムはどう働くのか」以降で、実装の詳細が述べられているようで、少し読みましたが、これまたamb評価器と同様、難しそうな気配を感じました。しかし、SQLのようなquery languageがどのように動くのかというのは、自分にとって非常に面白いテーマだと思っているので、しっかりと読み進めていきたいと思っています。
問題4-55。単純質問を書く練習です。

;a
(supervisor ?x (Bitdiddle Ben))

;b
(job ?x (accounting . ?type))

;c
(address ?x (Slumerville . ?district))

問題4-56。合成質問を書く練習です。

;a
(and (supervisor ?person (Bitdiddle Ben))
     (address ?person ?where))

;b
(or (salary (Bitdiddle Ben) ?ben-amount)
    (and (salary ?person ?amount)
         (lisp-value > ?ben-amount ?amount)))

;c
(or (and (not (job ?person (computer . ?type)))
         (supervisor ?x ?person))
    (job ?person ?job))