In his book, A Discipline of Programming, Dijkstra presents the skeleton for a programming language and defines its semantics axiomatically using predicate transformers. HIS language involves only bounded nondeterminism. He shows that unbounded nondeterminism is incompatible with his axioms and his continuity principle, and he argues that this is no drawback because unboundedly nondeterministic machines cannot be built. This paper considers the question of unbounded nondeterminism. A new predicate transformer is derived to handle this. A proof is given that the new transformer corresponds to operational semantics, and an informal argument is given that unbounded nondeterminism can be a useful programming concept even in the absence of nondeterministic machines.
[1]
Zohar Manna,et al.
Proving termination with multiset orderings
,
1979,
CACM.
[2]
Edsger W. Dijkstra,et al.
A Discipline of Programming
,
1976
.
[3]
Zohar Manna,et al.
Is “sometime” sometimes better than “always”?: Intermittent assertions in proving program correctness
,
1976,
ICSE '76.
[4]
David Gries,et al.
Is Sometimes Ever Better Than Always?
,
1978,
TOPL.
[5]
MannaZohar,et al.
Is sometime sometimes better than always
,
1978
.
[6]
Zohar Manna,et al.
Proving termination with multiset orderings
,
1979,
CACM.