Definitions in Nonstrict Positive Free Logic

Raymond D. Gumb and Karel Lambert

Abstract

Every ``practical'' programming language supplies the programmer with at least one nonstrict construct, such as the ALGOL60 arithmetic `if-then-else' and the LISP `cond'. Many programming languages also enable the user to define nonstrict functions. In some languages, this is accomplished through lazy evaluation of procedure parameters, as realized, for example, by the call-by-name devices of ALGOL60 and SIMULA67 and the call-by-need mechanism of haskell. In other languages, such as Common LISP, a macro definition facility can serve a similar purpose. Programming languages that provide a mechanism for the user to define nonstrict functions are nonstrict languages, and we call the natural underlying logic of these languages nonstrict positive free logic. In this paper, we present the definition theory of nonstrict positive free logic. Suitable transformations of sentences in standard logic into sentences in nonstrict positive free logic preserve many properties of definitions in standard logic.


Publications Home PageHome Page CSLI Home Page Stanford Home Page
pubs@roslin.stanford.edu
Date last updated: January 30, 1996