В настоящее время я изучаю Пролог и хочу создать специальное правило c, которое будет проверять, может ли человек смотреть фильм. Условием для истины должен быть возраст человека, равный возрасту, необходимому для фильма.
Итак, у меня есть что-то вроде этого:
person("John",19).
person("Kate",14).
person("Carl",8).
film("Shining",18,"Horror").
film("Little Agents",13,"Family").
film("Frozen",7,"Animation").
can_borrow(film(_,Age1,_),person(_,Age2)):-Age2>=Age1.
И если я спрашиваю, то есть
?- can_borrow(film("Shining",18,"Horror"),person("John",19)).
Это работает и возвращает true.
Но когда я прошу показать мне все возможные комбинации (все фильмы, которые может посмотреть каждый человек)
?- can_borrow(X,Y).
У меня возникает ошибка:
ERROR: Arguments are not sufficiently instantiated
Как правильно написать правило, чтобы оно работало так, как я написал выше?
Заранее спасибо.