Ex. 4.63
(rule (grandson ?G ?S) (and (son ?F ?S) (son ?G ?F))) (rule (son ?M ?S) ;;; ← rule の名前と DBのレコードの名前が重なっていてもうまく処理されるみたい (and (wife ?M ?W) (son ?W ?S)))
実行する
;;; Query input: (grandson Cain ?) ;;; Query results: (grandson Cain Irad) ;;; Query input: (grandson Methushael ?) ;;; Query results: (grandson Methushael Jubal) (grandson Methushael Jabal)
DBのレコードから見つかる son も、rule で見つかる son もどちらも探してくれる。
rule の名前と DBのレコードの名前が重なった場合、質問システムは 「rule の結果」 or 「DBのレコード検索の結果」を返してくれるようだ。(or は和集合ということ)