Results 1 -
8 of
8
Generic universe types
- In ECOOP
, 2007
"... Ownership is a powerful concept to structure the object store and to control aliasing and modifications of objects. This paper presents an ownership type system for a Javalike programming language with generic types. Like our earlier Universe type system, Generic Universe Types enforce the owner-as- ..."
Abstract
-
Cited by 42 (17 self)
- Add to MetaCart
Ownership is a powerful concept to structure the object store and to control aliasing and modifications of objects. This paper presents an ownership type system for a Javalike programming language with generic types. Like our earlier Universe type system, Generic Universe Types enforce the owner-as-modifier discipline. This discipline does not restrict aliasing, but requires modifications of an object to be initiated by its owner. This allows owner objects to control state changes of owned objects, for instance, to maintain invariants. Generic Universe Types require a small annotation overhead and provide strong static guarantees. They are the first type system that combines the owner-as-modifier discipline with type genericity.
Formalization of ownership transfer in Universe Types
, 2007
"... Ownership simplifies reasoning about object-oriented programs by controlling aliasing and modifications of objects. Several type systems have been proposed to express and check ownership statically. For ownership systems to be practical, they must allow objects to migrate from one owner to another. ..."
Abstract
-
Cited by 22 (9 self)
- Add to MetaCart
Ownership simplifies reasoning about object-oriented programs by controlling aliasing and modifications of objects. Several type systems have been proposed to express and check ownership statically. For ownership systems to be practical, they must allow objects to migrate from one owner to another. This ownership transfer is common and occurs, for instance, during the initialization of data structures and when data structures are merged. However, existing ownership type systems either do not support ownership transfer at all or they are too restrictive, give rather weak static guarantees, or require a high annotation overhead. In this paper, we present UTT, an extension of Universe Types that supports ownership transfer. UTT combines ownership type checking with a modular static analysis to control references to transferable objects. UTT is very flexible because it permits temporary aliases, even across certain method calls. Nevertheless, it guarantees statically that a cluster of objects is externally-unique when it is transferred and, thus, that ownership transfer is type safe. UTT provides the same encapsulation as Universe Types and requires only negligible annotation overhead.
Universe Type System for Scala
, 2007
"... Scala combines the object-oriented and functional paradigms to an expressive programming language. It supports the creation of class hierarchies known from object-oriented languages like Java or C# and at the same time allows to model algebraic types through pattern matching, as found in many functi ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Scala combines the object-oriented and functional paradigms to an expressive programming language. It supports the creation of class hierarchies known from object-oriented languages like Java or C# and at the same time allows to model algebraic types through pattern matching, as found in many functional programming languages. The Universe type system applies the concept of ownership to Java-like languages and allows to control object modi cation and thereby maintain invariants. It does so by controlling aliasing without restricting it. This thesis presents an ownership type system for Scala and other Java-like programming languages. It combines support for type genericity with path-dependent types to extend the static expressiveness of the Universe type system.
Ownership and Immutability in Generic Java
"... The Java language lacks the important notions of ownership (an object owns its representation to prevent unwanted aliasing) and immutability (the division into mutable, immutable, and readonly data and references). Programmers are prone to design errors such as representation exposure or violation o ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
The Java language lacks the important notions of ownership (an object owns its representation to prevent unwanted aliasing) and immutability (the division into mutable, immutable, and readonly data and references). Programmers are prone to design errors such as representation exposure or violation of immutability contracts. This paper presents Ownership Immutability Generic Java (OIGJ), a backward-compatible purely-static language extension supporting ownership and immutability. We formally defined a core calculus for OIGJ, based on Featherweight Java, and proved it sound. We also implemented OIGJ and performed case studies on 33,000 lines of code. Creation of immutable cyclic structures requires a “cooking phase ” in which the structure is mutated but the outside world cannot observe this mutation. OIGJ uses ownership information to facilitate creation of immutable cyclic structures, by safely prolonging the cooking phase even after the constructor finishes. OIGJ is easy for a programmer to use, and it is easy to implement (flow-insensitive, using only 14 rules). Yet, OIGJ is more expressive than previous ownership languages, in the sense that it can type-check more good code. OIGJ can express the factory and visitor patterns, and OIGJ can type-check Sun’s java.util collections (except for the clone method) without refactoring and with only a small number of annotations. Previous work required major refactoring of existing code in order to fit its ownership restrictions. Forcing refactoring of well-designed code is undesirable because it costs programmer effort, degrades the design, and hinders adoption in the mainstream community.
Formalization of Generic Universe Types
, 2006
"... Ownership is a powerful concept to structure the object store and to control aliasing and modifications of objects. This paper presents an ownership type system for a Java-like programming language with generic types. Like our earlier Universe type system, Generic Universe Types enforce the owner-as ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
Ownership is a powerful concept to structure the object store and to control aliasing and modifications of objects. This paper presents an ownership type system for a Java-like programming language with generic types. Like our earlier Universe type system, Generic Universe Types enforce the owner-as-modifier discipline. This discipline does not restrict aliasing, but requires modifications of an object to be initiated by its owner. This allows owner objects to control state changes of owned objects, for instance, to maintain invariants. Generic Universe Types require a small annotation overhead and provide strong static guarantees. They are the first type
Ownership type systems and dependent classes
- In Foundations of Object-Oriented Languages (FOOL
, 2008
"... Ownership type systems structure the heap and enforce restrictions on the behavior of a program. Benefits of ownership type systems include simplified program verification, absence of race conditions and deadlocks, and enforcement of architectural styles. Dependent classes are a generalization of vi ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
Ownership type systems structure the heap and enforce restrictions on the behavior of a program. Benefits of ownership type systems include simplified program verification, absence of race conditions and deadlocks, and enforcement of architectural styles. Dependent classes are a generalization of virtual class systems that allows one class to depend on multiple objects. Dependency is expressed by explicit declaration of the depended-upon objects as class parameters. This allows one to declare dependencies independently of the nesting of classes, which increases the expressive power and reduces the coupling between classes. In this paper, we describe how ownership type systems can be expressed on top of dependent classes. The ownership type systems are split into two parts: (1) ensuring the topological structure of the heap and (2) enforcing restrictions on the behavior of the program. We present an encoding of the topological part in dependent classes and describe how to enforce the restrictions of ownership type systems directly on the dependent classes program. Finally, we present the encoding of some examples for the MVC interpreter and discuss future work.
Featherweight Ownership and Immutability Generic Java (FOIGJ
, 2010
"... This technical report contains proofs that were omitted from our paper entitled “Ownership and Immutability in Generic Java”. Please read the paper first, and only then proceed to reading this technical report, because this technical report is not self contained. We only include a summary of the syn ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This technical report contains proofs that were omitted from our paper entitled “Ownership and Immutability in Generic Java”. Please read the paper first, and only then proceed to reading this technical report, because this technical report is not self contained. We only include a summary of the syntax (Fig. 1), subtyping rules (Fig. 2), expression typing rules (Fig. 3), and reduction rules (Fig. 4).
Advisors:
, 2006
"... Prof. Dr. Peter MüllerThe Java Interactive Verification Environment, Jive, is a verification system for objectoriented programs on the basis of a partial-correctness Hoare-style programming logic. The verification of general lemmas that arise during a program proof is delegated and performed by an a ..."
Abstract
- Add to MetaCart
Prof. Dr. Peter MüllerThe Java Interactive Verification Environment, Jive, is a verification system for objectoriented programs on the basis of a partial-correctness Hoare-style programming logic. The verification of general lemmas that arise during a program proof is delegated and performed by an associated general theorem prover. Currently, the interactive theorem prover Isabelle is supported for this purpose. This report describes the integration of the

