SICP 問題 4.64
(rule (outranked-by ?staff-person ?boss) (or (supervisor ?staff-person ?boss) (and (outranked-by ?middle-manager ?boss) (supervisor ?staff-person ?middle-manager)))) (outranked-by (Bitdiddle Ben) ?who)
まずoutranked-byの?staff-personにBitdiddle Benが束縛される.
次に(supervisor ?staff-person ?boss)でBitdiddle Benの上司が?bossに束縛される.これを仮にAとする.
そしてoutranked-byが?bossがAとして?middle-managerを探す.※
ここから二周目.
supervisor行で?bossをAとして部下Bが?staff-personに束縛される.
andのoutranked-byで?bossをAとして?middle-managerを探す.
※印をつけたところ同じところを探し始めているのでここで無限ループに陥る.
正しいoutranked-byは以下の通り.
(rule (outranked-by ?staff-person ?boss) (or (supervisor ?staff-person ?boss) (and (supervisor ?staff-person ?middle-manager) (outranked-by ?middle-manager ?boss))))