【演習問題3:パズル``猿とバナナ'' (TPTP/PLA003-1)】

true-->place(l0),place(l1),place(l2).
true-->can(monkey(l0,floor,nothing),ladder(l1,floor),
           bananas(l2,ceiling)).

can(monkey(A,floor,nothing),ladder(A,floor),B)
    -->can(monkey(A,ceiling,nothing),ladder(A,floor),B).
can(monkey(A,ceiling,nothing),ladder(A,floor),B)
    -->can(monkey(A,floor,nothing),ladder(A,floor),B).
can(monkey(A,floor,the_ladder),ladder(A,floor),B),place(C)
    -->can(monkey(C,floor,the_ladder),ladder(C,floor),B).
can(monkey(A,floor,the_bananas),B,bananas(A,floor)),place(C)
    -->can(monkey(C,floor,the_bananas),B,bananas(C,floor)).
can(monkey(A,floor,nothing),B,C),place(D)
    -->can(monkey(D,floor,nothing),B,C).
can(monkey(A,B,the_ladder),ladder(A,C),D)
    -->can(monkey(A,B,nothing),ladder(A,floor),D).
can(monkey(A,B,the_bananas),C,bananas(A,B))
    -->can(monkey(A,B,nothing),C,bananas(A,floor)).
can(monkey(A,B,nothing),C,bananas(A,B))
    -->can(monkey(A,B,the_bananas),C,bananas(A,B)).
can(monkey(A,B,nothing),ladder(A,B),C)
    -->can(monkey(A,B,the_ladder),ladder(A,B),C).

can(monkey(A,B,the_bananas),C,D)-->false.