Results 1 
4 of
4
From Total Equational to Partial First Order Logic
, 1998
"... The focus of this chapter is the incremental presentation of partial firstorder logic, seen as a powerful framework where the specification of most data types can be directly represented in the most natural way. Both model theory and logical deduction are described in full detail. Alternatives to pa ..."
Abstract

Cited by 19 (8 self)
 Add to MetaCart
The focus of this chapter is the incremental presentation of partial firstorder logic, seen as a powerful framework where the specification of most data types can be directly represented in the most natural way. Both model theory and logical deduction are described in full detail. Alternatives to partiality, like (variants of) error algebras and ordersortedness are also discussed, showing their uses and limitations. Moreover, both the total and the partial (positive) conditional fragment are investigated in detail, and in particular the existence of initial (free) models for such restricted logical paradigms is proved. Some more powerful algebraic frameworks are sketched at the end. Equational specifications introduced in last chapter, are a powerful tool to represent the most common data types used in programming languages and their semantics. Indeed, Bergstra and Tucker have shown in a series of papers (see [BT87] for a complete exposition of results) that a data type is semicompu...
A Free Logical Foundation for Nonstrict Functions
"... this paper, we sketch the definition theory for a nonstrict positive free logic in which there is exactly one error object err to which all terms without existential import can refer. Having exactly one error object identifies nontermination and all runtime errors. This is most natural in languages ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
this paper, we sketch the definition theory for a nonstrict positive free logic in which there is exactly one error object err to which all terms without existential import can refer. Having exactly one error object identifies nontermination and all runtime errors. This is most natural in languages such as Miranda and haskell in which execution is aborted immediately when an error is raised [16]. By using a free logic, we are able to state the axioms of a mathematical theory without cluttering the axiomatization with error conditions, as would be required using restricted quantification in standard logic. For example, Peano's axiom:
Reflecting Demand in Programming Logics: a case study for Haskell
"... Abstract. Haskell is a functional programming language whose evaluation is lazy by default. However, Haskell also provides pattern matching facilities which add a modicum of eagerness to its otherwise lazy default evaluation. This mixed or “nonstrict ” semantics can be quite difficult to reason wit ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Haskell is a functional programming language whose evaluation is lazy by default. However, Haskell also provides pattern matching facilities which add a modicum of eagerness to its otherwise lazy default evaluation. This mixed or “nonstrict ” semantics can be quite difficult to reason with. This paper introduces a programming logic, Plogic, which neatly formalizes the mixed evaluation in Haskell patternmatching as a logic, thereby simplifying the task of specifying and verifying Haskell programs. In Plogic, aspects of demand are reflected or represented within both the predicate language and its model theory, allowing for expressive and comprehensible program verification. 1
A Free Logical Foundation for Nonstrict Functions
"... . Every "practical" programming language supplies the programmer with at least one nonstrict construct, such as the ALGOL60 arithmetic `ifthenelse' and the LISP `cond'. Many programming languages also enable the user to define nonstrict functions. In some languages, this is ..."
Abstract
 Add to MetaCart
. Every "practical" programming language supplies the programmer with at least one nonstrict construct, such as the ALGOL60 arithmetic `ifthenelse' and the LISP `cond'. Many programming languages also enable the user to define nonstrict functions. In some languages, this is accomplished through the lazy evaluation of procedure parameters, as realized, for example, by the callbyname devices of ALGOL60 and SIMULA67 and the callbyneed 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, twovalued, firstorder logic underlying these languages nonstrict positive free logic. Definitions are essential in the specification of software, and many useful properties of definitions in standard logic carry over into nonstrict positive free logic. Before embarking on details, ...