2016/01/17

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))))

© 2022 wat-aro