AbstractThe Logic of Partial TermsLPTis a strict negative free logic that provides an economical framework for developing many traditional mathematical theories having partial functions. In these traditional theories, all functions and predicates are strict. For example, if a unary function (predicate) is applied to an undefined argument, the result is undefined (respectively, false). On the other hand, every practical programming language incorporates at least one nonstrict or lazy construct, such as the if-then-else, but nonstrict functions cannot be either primitive or introduced in definitional extensions inLPT. Consequently, lazy programming language constructs do not fit the traditional mathematical mold inherent inLPT. A nonstrict (positive free) logic is required to handle nonstrict functions and predicates.Previously developed nonstrict logics are not fully satisfactory because they are verbose in describing strict functions (which predominate in many programming languages), and some logicians find their semantics philosophically unpalatable. The newly developed Lazy Logic of Partial TermsLLis as concise asLPTin describing strict functions and predicates, and strict and nonstrict functions and predicates can be introduced in definitional extensions of traditional mathematical theories.LLis “built on top of”LPT. and, likeLPT, admits only one domain in the semantics. In the semantics, for the case of a nonstrict unary functionhin an LL theoryT, we have ⊨Th(⊥) =y↔ ∀x(h(x) = y), where ⊥ is a canonical undefined term. Correspondingly, in the axiomatization, the “indifference” (to the value of the argument) axiomh(⊥) =y↔ ∀x(h(x) = y)guarantees a proper fit with the semantics. The price paid forLL's naturalness is that it is tailored for describing a specific area of computer science, program specification and verification, possibly limiting its role in explicating classical mathematical and philosophical subjects.