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.