Aside: Instantiation Terminology
We say that a variable is
instantiated if it is bound to a value.
E.g.: X = 1
X = [a,b,c]
uninstantiated otherwise.
E.g.: X = Y (assuming Y is also uninstantiated)
An instantiated variable can be
partially instantiated if it is bound to a structure that
contains uninstantiated variables.
E.g.: X = [a,b,Y]
X = [Y|Z]
fully instantiated otherwise.
(or "ground") E.g.: X = [a,b,c]
X = 1
X = [d|f]
These terms are often used to specify the preconditions of a predicate.
E.g.:
% selectionsort(List,Sorted) holds if Sorted is List sorted.
% Precondition: List is a fully instantiated list of numbers.