Reasoning about imperative programs requires the ability to track aliasing and ownership properties. We present a type system that provides this ability, by using regions, capabil...
We show how linear typing can be used to obtain functional programs which modify heap-allocated data structures in place. We present this both as a "design pattern" for ...
"These notes were prepared for use in the graduate course Computer Science 15–
814: Type Systems for Programming Languages at Carnegie Mellon University.
Their purpose is ...
One way to analyse programs is to to derive expressions for their computational behaviour. A time bound function (or worst-case complexity) gives an upper bound for the computatio...
Assessing the reliability of a software system has always been an elusive target. A program may work very well for a number of years and this same program may suddenly become quit...