Results 1 
9 of
9
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 41 (9 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.
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 8 (2 self)
 Add to MetaCart
(Show Context)
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 PROOFTHEORETIC APPROACH TO MATHEMATICAL KNOWLEDGE MANAGEMENT
, 2007
"... Mathematics is an area of research that is forever growing. Definitions, theorems, axioms, and proofs are integral part of every area of mathematics. The relationships between these elements bring to light the elegant abstractions that bind even the most intricate aspects of math and science. As the ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Mathematics is an area of research that is forever growing. Definitions, theorems, axioms, and proofs are integral part of every area of mathematics. The relationships between these elements bring to light the elegant abstractions that bind even the most intricate aspects of math and science. As the body of mathematics becomes larger and its relationships become richer, the organization of mathematical knowledge becomes more important and more difficult. This emerging area of research is referred to as mathematical knowledge management (MKM). The primary issues facing MKM were summarized by Buchberger, one of the organizers of the first Mathematical Knowledge Management Workshop [20]. • How do we retrieve mathematical knowledge from existing and future sources? • How do we build future mathematical knowledge bases? • How do we make the mathematical knowledge bases available to mathematicians? These questions have become particularly relevant with the growing power of and interest in automated theorem proving, using computer programs to prove
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
(Show Context)
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
(Show Context)
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.
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
(Show Context)
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
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.
Towards a Framework to Integrate Proof Search Paradigms
, 2003
"... Research on automated and interactive theorem proving aims at the mechanization of logical reasoning. Aside from the development of logic calculi it became rapidly apparent that the organization of proof search on top of the calculi is an essential task in the design of powerful theorem proving syst ..."
Abstract
 Add to MetaCart
Research on automated and interactive theorem proving aims at the mechanization of logical reasoning. Aside from the development of logic calculi it became rapidly apparent that the organization of proof search on top of the calculi is an essential task in the design of powerful theorem proving systems. Different paradigms of how to organize proof search have emerged in that area of research, the most prominent representatives are generally described by the buzzwords: automated theorem proving, tactical theorem proving and proof planning. Despite their paradigmatic differences, all approaches share a common goal: to find a proof for a given conjecture. In this paper we start with a rational reconstruction of proof search paradigms in the area of proof planning and tactical theorem proving. Guided by similarities between software engineering and proof construction we develop a uniform view that accommodates the various proof search methodologies and eases their comparison. Based on this view, we propose a unified framework that enables the combination of different methodologies for proof construction to take advantage of their individual virtues within specific phases of a proof construction. 1