Я предполагаю, что это взято из книги "Программирование в Прологе"?Это на самом деле довольно хорошо объяснено там.
То, что делает код, дает начальное местоположение, а пункт назначения дает вам маршрут, если он существует.Это будет помещено в Route.
rev, как определено в книге, инвертирует результаты, сохраненные в R, и помещает их в Route, в основном потому, что результат обратный.
Остальная часть кода ищет возможный маршрут от Start до Dest, проверяя, существует ли прямая связь (это то, что определяет a (X, Y)) между двумя местоположениями, или если вы можете добраться туда черезодно из мест, где есть прямая связь с.
Имея это и книгу в руках, вы сможете найти код.