Definitions for "Lazy evaluation"
The technique of evaluating an expression at the last moment (and no expression is evaluated more than once) so as to avoid unnecessary effort or working with values that might have changed. Laziness is practically limited to the declarative programming paradigm. Laziness is a useful notion in large, complex agents systems where you wish to examine some constrained results without exercising (or even explicitly representing) the entire system.
NCL: The process whereby relational expressions are assigned a value as soon as it is possible to do so, without necessarily evaluating all of the components in the expression. For example, the expression (1 .lt. 3) .or. (2 .lt. 1) can be assigned the value True immediately after evaluating (1 .lt. 3) without having to evaluate (2 .lt. 1).
A method of evaluating a logical expression where evaluation halts after further evaluation could produce no change in the result. For example, when evaluating a string of sub-expressions linked by a logical AND, a lazy evaluator would halt after the first false sub-expression, because evaluation of subsequent sub-expressions would not change the result.