Syntactic control of interference revisited
Theoretical Computer Science - Special issue on mathematical foundations of programming semantics
Syntactic control of interference
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Static prediction of heap space usage for first-order functional programs
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Another Type System for In-Place Update
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Syntactic Control of Inference, Part 2
ICALP '89 Proceedings of the 16th International Colloquium on Automata, Languages and Programming
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
A type system for bounded space and functional in-place update
Nordic Journal of Computing
Linear Types and Non Size-Increasing Polynomial Time Computation
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Journal of Functional Programming
A type system with usage aspects
Journal of Functional Programming
Functional in-place update with layered datatype sharing
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Hi-index | 0.01 |
Hofmann's LFPL is a functional language with constructs that can be interpreted as referring to heap locations. In this view, the language is suitable for expressing and verifying in-place update algorithms. Correctness of in-place evaluation is guaranteed by a linear typing. As linearity prevents sharing on the heap, LFPL rejects many sound, natural in-place update algorithms with sharing. Recently, Aspinall and Hofmann added usage aspects to parameters of terms in first-order LFPL in order to type-check sound non-linear programs. Nevertheless, soundness of this system has not been fully established. We show a more subtle meaning of the usage aspects as preconditions and (rely-)guarantees about the heap layout before and after evaluation. This interpretation allows a manageable proof of soundness for Aspinall and Hofmann's system. Secondly, we present an algorithm for inferring the strongest sound usage aspects for typable recursive programs. We outline two other annotated typings of LFPL as systems inferring preconditions and (rely-)guarantees, both extending usage aspects. One is Atkey's system based on explicit indication of sharing among parameters in typing contexts and the other one is a system by the author which admits LFPL programs in which datatypes share at different layers. The latter is based on the author's conditions-and-guarantees approach to usage aspects.