Ответ в теме: Задача о волке, козе и капусте

      Комментарии к записи Ответ в теме: Задача о волке, козе и капусте отключены
#1849

Edge — это не правило, его не надо определять. В статье написано откуда появляются дуги — их добавляет функция proliferate. Более детально это описано в статье, посвященной обходам графа на Prolog.
Дуга добавляется при помощи стандартного предиката assert, но чтобы этот предикат мог сработать, она предварительно должна быть объявлена динамической.
:- dynamic edge/2.

Добавьте это в самое начало программы. Без такого объявления машина логического вывода пробует найти функцию edge, которой не существует (об этом и написано в сообщении компилятора).