HLDS: The "High Level Data Structure". See hlds.m. moduleinfo: Another name for the HLDS. LLDS: The "Low Level Data Structure". See llds.m. inst: instantiatedness. An inst holds three different sorts of information. It indicates whether a variable is free, partially bound, or ground. If a variable is bound, it may indicate which functor(s) the variable can be bound to. Also, an inst records whether a value is unique, or whether it may be aliased. liveness: this term is used to mean two quite different things! (1) There's a notion of liveness used in mode analysis: a variable is live if either it or an alias might be used later on in the computation. (2) There's a different notion of liveness used for code generation: a variable becomes live (is "born") when the register or stack slot holding the variable first acquires a value, and dies when that value will definitely not be needed again within this procedure. This notion is low-level because it could depend on the low-level representation details (in particular, `no_tag' representations ought to affect liveness). mode: this has two meanings: (1) a mapping from one instantiatedness to another (the mode of a single variable) (2) a mapping from an initial instantiatedness of a predicate's arguments to their final instantiatedness (the mode of a predicate) proc (procedure): a particular mode of a predicate. procinfo: the structure in HLDS which contains information about a procedure. predinfo: the structure in HLDS which contains information about a predicate. codeinfo: a structure used by codegen.m switch: a disjunction which does a case analysis on the toplevel functor of some variable. super-homogenous form (SHF): a simplified, flattened form of goals, where each unification is split into its component pieces; in particular, the arguments of each predicate call and functor must be distinct variables.