Systematic software development using VDM
Systematic software development using VDM
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
The Z notation: a reference manual
The Z notation: a reference manual
The RAISE specification language
The RAISE specification language
A practical theory of programming
A practical theory of programming
Proof in VDM: a practitioner's guide
Proof in VDM: a practitioner's guide
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Algebraic approaches to nondeterminism—an overview
ACM Computing Surveys (CSUR)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Acta Informatica
Logical Specifications for Functional Programs
Proceedings of the Second International Conference on Mathematics of Program Construction
Dually nondeterministic functions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Nondeterminacy is a useful feature of specification languages because it allows the customer to express that any of a range of outcomes is acceptable for a particular operation. However, the classical theory of functions becomes considerably complicated and counter-intuitive in the presence of nondeterminacy, and inconsistencies can easily creep in. All this is well known. In this paper, we describe a potential new source of inconsistency when functions and nondeterminacy are combined. We show that some existing theories fall foul of it, and show how to avoid it. The root cause of the problem is the substitution of a variable in a nonmonotonic position when the type of the variable is nonflat.