MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Alias Types for Recursive Data Structures (2000) [115 citations — 15 self]

Abstract:

Linear type systems permit programmers to deallocate or explicitly recycle memory, but they are severly restricted by the fact that they admit no aliasing. This paper describes a pseudo-linear type system that allows a degree of aliasing and memory reuse as well as the ability to define complex recursive data structures. Our type system can encode conventional linear data structures such as linear lists and trees as well as more sophisticated data structures including cyclic and doubly-linked lists and trees. In the latter cases, our type system is expressive enough to represent pointer aliasing and yet safely permit destructive operations such as object deallocation. We demonstrate the flexibility of our type system by encoding two common compiler optimizations: destination-passing style and Deutsch-Schorr-Waite or "link-reversal" traversal algorithms.

Citations

500 From System F to Typed Assembly Language – Morrisett, Walker, et al.
415 A syntactic approach to type soundness – Wright, Felleisen - 1994
339 Parametric shape analysis via 3-valued logic – Sagiv, Reps, et al. - 2002
253 Solving shape-analysis problems in languages with destructive updating – Sagiv, Reps, et al. - 1998
250 Functional programming with bananas, lenses, envelopes and barbed wire – Meijer, Fokkinga, et al. - 1991
247 Computational interpretations of linear logic – Abramsky - 1990
221 The design and implementation of a certifying compiler – Necula - 1998
221 Dependent types in practical programming – Xi, Pfenning - 1999
187 Interprocedural may-alias analysis for pointers: Beyond k-limiting – Deutsch - 1994
168 Typed memory management in a calculus of capabilities – Crary, Walker, et al. - 1999
157 Simple type-theoretic foundations for objectoriented programming – Pierce, Turner - 1994
154 Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers – Ghiya, Hendren - 1996
150 Detecting Conflicts Between Structure Access – Larus, Hilfinger - 1988
143 Alias types – Smith, Walker, et al. - 2000
140 Typed closure conversion – Minamide, Morrisett, et al. - 1996
124 Stack-based typed assembly language – Morrisett, Crary, et al. - 1998
117 Syntactic control of interference – Reynolds - 1978
112 as an assertion language for mutable data structures – BI - 2001
109 Graph types – Klarlund, Schwartzbach - 1993
102 Linear types can change the world – Wadler - 1990
96 types can change the world – Linear - 1990
95 Intuitionistic reasoning about shared mutable data structure – Reynolds - 2001
83 Better static memory management: Improving region-based analysis of higher-order languages – Aiken, Fahndrich, et al. - 1995
82 The linear abstract machine – Lafont - 1988
81 Once upon a type – Turner, Wadler, et al. - 1995
80 From Region Inference to von Neumann Machines via Region Representation Inference – Birkedal, Tofte, et al. - 1996
68 Single-threaded polymorphic lambda calculus – Guzm'an, Hudak - 1990
65 Conventional and Uniqueness Typing in Graph Rewrite Systems – Barendsen, Smetsers - 1996
62 An efficient machine-independent procedure for garbage collection in various list structures – Schorr, Waite - 1967
56 Some techniques for proving correctness of programs which alter data structures – Burstall - 1972
52 A simplified account of polymorphic references – Harper - 1994
51 Quasi-linear types – Kobayashi - 1999
49 Implementation of the typed call-by-value -calculus using a stack of regions – Tofte, Talpin - 1994
44 Implementation of the typed call-by-value λ-calculus using a stack of regions – Tofte, Talpin - 1994
35 Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors – Larus - 1989
33 Beyond continuations – Felleisen, Friedman, et al. - 1987
27 Ref-erence counting as a computational interpretation of linear logic – Chirimar, Gunter, et al.
26 Strongly typed flow-directed representation transformations – Dimock, Muller, et al.
17 Listlessness is better than laziness – Wadler - 1984
16 Towards pointer algebra – Möller - 1993
15 Mooly Sagiv. A decidable logic for describing linked data structures – Benedikt, Reps - 1999
15 An assertion language for data structures – Cook, Oppen - 1975
11 Detecting con between structure accesses – Larus, Hil - 1988
10 A functional represention of data structures with a hole – Minamide - 1998
10 Abramsky. Computational interpretations of linear logic. Theoretical Computer Science – Samson - 1993
10 From System F to Typed Assembly Language. ACM Transactions on Programming Languages and Systems – Morrisett, Walker, et al. - 1999
7 Typed Memory Management – Walker - 2001
6 Scalable certification of native code: Experience from compiling to TALx86 – Grossman, Morrisett - 2000
5 Destination-passing style and generational garbage collection – Cheng, Okasaki - 1996
3 Scalable certi for typed assembly language – Grossman, Morrisett - 2000