An instantiation error is thrown if an argument is not sufficiently instantiated.
Critically, an instantiation error cannot be replaced by silent failure: Failing in such cases would mean that there is no solution, whereas an instantiation error means that an instance of the argument may participate in a solution.
This is in contrast to—for example—domain error, which can be replaced by silent failure without changing the declarative meaning of a program.