Skip to main content
Log in

A theory of bunches

  • Original articles
  • Published:
Acta Informatica Aims and scope Submit manuscript

Abstract.

A bunch is a simple data structure, similar in many respects to a set. However, bunches differ from sets in that the data is not packaged up or encapsulated, and in particular in that a bunch consisting of one element is the same as that element. Bunches are attractive for handling nondeterminacy and underspecification, by which is meant that for any particular input to the program or specification, the associated output is not fully determined. The acceptable outputs for any given input can be described by a bunch. This approach nicely generalises traditional single-output programs and specifications. We present a formal theory of bunches. It includes an axiomatisations of boolean and function types whose behaviour is well-known to be complicated by the presence of nondeterminacy. The axiomatisation of the booleans preserves most of the laws of classical predicate calculus. The axiomatisation of functions accommodates higher-order functions in all their generality, while avoiding the dangers of inconsistency when functions and nondeterminacy intermix. Our theory is presented as a Hilbert-style system of axioms and inference rules for a small specification language. We prove consistency.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Author information

Authors and Affiliations

Authors

Additional information

Received: 23 December 1998 / 2 November 1999

Rights and permissions

Reprints and permissions

About this article

Cite this article

Morris, J., Bunkenburg, A. A theory of bunches. Acta Informatica 37, 541–561 (2001). https://doi.org/10.1007/PL00013316

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/PL00013316

Keywords

Navigation