Program restructuring as an aid to software maintenance
Program restructuring as an aid to software maintenance
Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
Practical analysis for refactoring
Practical analysis for refactoring
Verifying CPS transformations in Isabelle/HOL
MERLIN '03 Proceedings of the 2003 ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program refactoring in the presence of preprocessor directives
Program refactoring in the presence of preprocessor directives
Formal Specification and Verification of Java Refactorings
SCAM '06 Proceedings of the Sixth IEEE International Workshop on Source Code Analysis and Manipulation
A Head-to-Head Comparison of de Bruijn Indices and Names
Electronic Notes in Theoretical Computer Science (ENTCS)
Using CafeOBJ to Mechanise Refactoring Proofs and Application
Electronic Notes in Theoretical Computer Science (ENTCS)
Coinductive Verification of Program Optimizations Using Similarity Relations
Electronic Notes in Theoretical Computer Science (ENTCS)
Ott: effective tool support for the working semanticist
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Tool support for refactoring functional programs
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Nominal techniques in Isabelle/HOL
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Challenge proposal: verification of refactorings
Proceedings of the 3rd workshop on Programming languages meets program verification
Tool support for refactoring functional programs
Proceedings of the 2nd Workshop on Refactoring Tools
Quickchecking refactoring tools
Proceedings of the 9th ACM SIGPLAN workshop on Erlang
Property-based testing: the ProTest project
FMCO'09 Proceedings of the 8th international conference on Formal methods for components and objects
Refactoring and representation independence for class hierarchies
Theoretical Computer Science
Hi-index | 0.00 |
In this paper we describe the formal verification of refactorings for untyped and typed lambda-calculi. This verification is performed in the proof assistant Isabelle/HOL. Refactorings are program transformations applied to improve the design of source code. Well-structured source code is easier and cheaper to maintain, and this motivates the use of refactoring. These transformations have been implemented as programmer tools and, as with other metaprogramming tools, it is desirable that implementations of refactorings are correct. For a refactoring to be correct the refactored program must be identical in behaviour to the original program. Since refactorings are source-to-source transformations, concrete program information matters: for example, names (of variables, procedures, etc) and program layout should also be preserved by refactoring. This is a particular characteristic of refactorings since general program transformations operate over machine representations of programs, rather than readable source code. The paper describes the formalisation adopted, and the alternatives explored. It also reflects on some of the difficulties of performing such formalisations, the interaction between refactoring and phases such as type-checking and parsing, and the generation of correctimplementations from mechanised proofs.