Описание тега instantiation-error

Ошибка создания экземпляра возникает в Прологе, когда аргумент недостаточно создан. Часто встречается с (is)/2 и встроенными функциями арифметического сравнения, такими как (>)/2 и (=:=)/2, которые все ожидают выражения без переменных.

"Конкретизация" ошибка возникает в прологе, когда аргумент недостаточно инстанцирован. Часто встречается с(is)/2 и встроенные средства арифметического сравнения, например (>)/2, (=:=)/2 что все ожидают полностью инстанцированных, основных терминов (т.е. без неустановленных логических переменных в них) в качестве аргументов.

Во многих случаях доступны более общие предикаты, которые работают также, если их аргументы не полностью инстанциированы. Например, многие системы Prolog поддерживают ограничения CLP(FD).(#=)/2 а также (#>)/2 которые можно использовать как чистые альтернативы.

Другой способ действий - отложить вызов до тех пор, пока не будут созданы экземпляры всех аргументов, с помощью таких инструментов, как freeze/2SWI Prolog (как видно, например, в этом ответе).