Results 1 
6 of
6
Towards an Evolutionary Formal Software Development
 Proceedings Workshop on Algebraic Development Techniques, WADT99. Springer, LNCS 1827
, 1999
"... Although formal methods have been successfully applied in various industrial applications, their use in software development is still restricted to individual case studies. To overcome this situation we aim at a methodology for an evolutionary formal software development which allows for a stepwise ..."
Abstract

Cited by 37 (8 self)
 Add to MetaCart
Although formal methods have been successfully applied in various industrial applications, their use in software development is still restricted to individual case studies. To overcome this situation we aim at a methodology for an evolutionary formal software development which allows for a stepwise and incremental development process along the line of rapid prototyping. The approach is based on work on a formal management of change for formal developments which is able to maintain proofs when changing specifications.
Proof Weaving
 In Proceedings of the First Informal ACM SIGPLAN Workshop on Mechanizing Metatheory
, 2006
"... Automated proof assistants provide few facilities for incremental development. Generally, if the underlying structures on which a proof is based are modified, the developer must redo much of the proof. Yet incremental development is really the most natural approach for proofs of programming language ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Automated proof assistants provide few facilities for incremental development. Generally, if the underlying structures on which a proof is based are modified, the developer must redo much of the proof. Yet incremental development is really the most natural approach for proofs of programming language properties [5, 12]. We propose “proof weaving”, a technique that allows a proof developer to combine small proofs into larger ones by merging proof objects. We automate much of the merging process and thus ease incremental proof development for programming language properties. To make the discussion concrete we take as an example the problem of proving typesoundness by proving progress and preservation [17] in Coq [3, 7]. However we believe that the methods can be generalized to other proof assistants which generate proof objects, and most directly to those proof assistants which exploit the CurryHoward isomorphism in representing proof terms as λterms [16], e.g. Isabelle and Minlog. We rely on the proof developer to initially prove typesoundness for “tiny ” languages. Each of these languages encapsulates a single welldefined programming feature. For example, a tiny language of booleans can be restricted to the terms True, False, and If and their
Proof transformations for evolutionary formal software development
 Proc. Int. Conf. Algebraic Methodology And Software Technology (AMAST
, 2002
"... In the early stages of the software development process, formal methods are used to engineer specications in an explorative way. Changes to specifications and verification proofs are a core part of this activity, and tool support for the evolutionary aspect of formal software development is indisp ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
In the early stages of the software development process, formal methods are used to engineer specications in an explorative way. Changes to specifications and verification proofs are a core part of this activity, and tool support for the evolutionary aspect of formal software development is indispensable. We describe an approach to support evolution of formal developments by explicitly transforming specifications and proofs, using a set of predefined basic transformations. They implement small and controlled changes both to specifications and to proofs by adjusting them in a predictable way. Complex changes to a specification are achieved by applying several basic transformations in sequence. The result is a transformed specification and proofs, where necessary revisions of a proof are represented by new open goals.
Changing Java’s Semantics for Handling Null Pointer Exceptions
"... We envision a world where no exceptions are raised; instead, language semantics are changed so that operations are total functions. Either an operation executes normally or tailored recovery code is applied where exceptions would have been raised. As an initial step and evaluation of this idea, we p ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
We envision a world where no exceptions are raised; instead, language semantics are changed so that operations are total functions. Either an operation executes normally or tailored recovery code is applied where exceptions would have been raised. As an initial step and evaluation of this idea, we propose to transform programs so that null pointer dereferences are handled automatically without a large runtime overhead. We increase robustness by replacing code that raises null pointer exceptions with errorhandling code, allowing the program to continue execution. Our technique first finds potential null pointer dereferences and then automatically transforms programs to insert null checks and errorhandling code. These transformations are guided by composable, contextsensitive recovery policies. Errorhandling code may, for example, create default objects of the appropriate types, or restore data structure invariants. If no null pointers would be dereferenced, the transformed program behaves just as the original. We applied our transformation in experiments involving multiple benchmarks, the Java Standard Library, and externally reported null pointer exceptions. Our technique was able to handle the reported exceptions and allow the programs to continue to do useful work, with an average execution time overhead of less than 1 % and an average bytecode space overhead of 22%. 1.
A Semantics for Proof Plans with Applications to Interactive Proof Planning
 Lecture Notes in Computer Science
, 2002
"... Proof planning is an automated theorem proving technique which encodes meaningful blocks of proof as planning operators called methods. Methods often encode complex control strategies, and a language of methodicals, similar to tacticals, has been developed to allow methods to be expressed in a modu ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Proof planning is an automated theorem proving technique which encodes meaningful blocks of proof as planning operators called methods. Methods often encode complex control strategies, and a language of methodicals, similar to tacticals, has been developed to allow methods to be expressed in a modular way. Previous work has demonstrated that proof planning can be effective for interactive theorem proving, but it has not been clear how to reconcile the complex control encoded by methodicals with the needs of interactive theorem proving. In this paper we develop an operational semantics for methodicals which allows reasoning about proof plans in the abstract, without generating objectlevel proofs, and facilitates interactive planning. The semantics is defined by a handful of deterministic transition rules, represents disjunction and backtracking in the planning process explicitly, and handles the cut methodical correctly.
Publication/citation: A prooftheoretic approach to mathematical knowledge management
, 2005
"... There are many reallife examples of formal systems that support constructions or proofs, but that do not provide direct support for remembering them so that they can be recalled and reused in the future. In this paper we examine the operations of publication (remembering a proof) and citation (reca ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
There are many reallife examples of formal systems that support constructions or proofs, but that do not provide direct support for remembering them so that they can be recalled and reused in the future. In this paper we examine the operations of publication (remembering a proof) and citation (recalling a proof for reuse), regarding them as forms of common subexpression elimination on proof terms. We then develop this idea from a proof theoretic perspective, describing a simple complete proof system for universal Horn equational logic using three new proof rules, publish, cite and forget. These rules can provide a prooftheoretic infrastructure for proof reuse in any system. 1