Incremental Benchmarks for Software Verification Tools and Techniques
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Generating Verified Java Components through RESOLVE
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
The location linking concept: a basis for verification of code using pointers
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
A case study in verification of embedded network software
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Hi-index | 0.00 |
References are indispensable to computing practice. Unlike deep copying, reference copying permits constant-time data assignment and parameter passing for all objects. Unfortunately, reference copying introduces aliasing among mutable objects and complicates software behavior by requiring developers to distinguish between references and values of objects for sound reasoning. The objective of this dissertation is to preserve the benefits of reference copying but simplify reasoning. It introduces a notion of conceptually direct reasoning, in which programmers may ignore references and treat all variables directly as object values. It explains how this notion can be applied without compromising soundness. It proposes a new approach to parameter passing that avoids both aliasing and deep copying. It explains how to segregate the few components that require aliasing from the many that do not. It contains formal specifications of components and appropriate proof rules. As a proof of concept, it applies the principles to the design of DirectJava, a prototype language that is syntactically similar to Java but facilitates conceptually direct reasoning without resorting to copying.