@inbook {almeida1997balloon, title = {Balloon types: Controlling sharing of state in data types}, booktitle = {ECOOP{\textquoteright}97{\textemdash}Object-Oriented Programming}, year = {1997}, pages = {32{\textendash}59}, publisher = {Springer}, organization = {Springer}, abstract = {

Current data abstraction mechanisms are not adequate to control sharing of state in the general case involving objects in linked structures. The pervading possibility of sharing is a source of errors and an obstacle to language implementation techniques.
We present a general extension to programming languages which makes the ability to share state a first class property of a data type, resolving a long-standing flaw in existing data abstraction mechanisms.
Balloon types enforce a strong form of encapsulation: no state reachable (directly or transitively) by a balloon object is referenced by any external object. Syntactic simplicity is achieved by relying on a non-trivial static analysis as the checking mechanism.
Balloon types are applicable in a wide range of areas such as program transformation, memory management and distributed systems. They are the key to obtaining self-contained composite objects, truly opaque data abstractions and value types{\textemdash}important concepts for the development of large scale, provably correct programs.

}, author = {Paulo S{\'e}rgio Almeida} }