Verification of programs that destructively manipulate data
Science of Computer Programming
Science of Computer Programming
Calculating with pointer structures
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Calculational derivation of pointer algorithms from tree operations
Science of Computer Programming
Calculating with acyclic and cyclic lists
Information Sciences: an International Journal - Relational methods in computer science
Verification of Array, Record, and Pointer Operations in Pascal
ACM Transactions on Programming Languages and Systems (TOPLAS)
An efficient machine-independent procedure for garbage collection in various list structures
Communications of the ACM
Introduction to Functional Programming
Introduction to Functional Programming
A Type System for Bounded Space and Functional In-Place Update--Extended Abstract
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Proving Pointer Programs in Hoare Logic
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Transformational Construction of Correct Pointer Algorithms
PSI '02 Revised Papers from the 4th International Andrei Ershov Memorial Conference on Perspectives of System Informatics: Akademgorodok, Novosibirsk, Russia
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Transforming Data by Calculation
Generative and Transformational Techniques in Software Engineering II
Hi-index | 0.00 |
A fair amount has been written on the subject of reasoning about pointer algorithms. There was a peak about 1980 when everyone seemed to be tackling the formal verification of the Schorr–Waite marking algorithm, including Gries (1979, Morris (1982) and Topor (1979). Bornat (2000) writes: “The Schorr–Waite algorithm is the first mountain that any formalism for pointer aliasing should climb”. Then it went more or less quiet for a while, but in the last few years there has been a resurgence of interest, driven by new ideas in relational algebras (Möeller, 1993), in data refinement Butler (1999), in type theory (Hofmann, 2000; Walker and Morrisett, 2000), in novel kinds of assertion (Reynolds, 2000), and by the demands of mechanised reasoning (Bornat, 2000). Most approaches end up being based in the Floyd–Dijkstra–Hoare tradition with loops and invariant assertions. To be sure, when dealing with any recursively-defined linked structure some declarative notation has to be brought in to specify the problem, but no one to my knowledge has advocated a purely functional approach throughout. Mason (1988) comes close, but his Lisp expressions can be very impure. Möller (1999) also exploits an algebraic approach, and the structure of his paper has much in common with what follows.This pearl explores the possibility of a simple functional approach to pointer manipulation algorithms.