Skip to main content
Article thumbnail
Location of Repository

A Certified Refactoring Engine

By Nik Sultana and Simon Thompson


The paper surveys how software tools such as refactoring systems can be validated, and introduces a new mechanism, namely the extraction of a refactoring engine for a functional programming language from an Isabelle/HOL theory in which it is verified. This research is a first step in a programme to construct certified programming tools from verified theories. We also provide some empirical evidence of how refactoring can be of significant benefit in reshaping automatically-generated program code for use in larger systems

Topics: QA76
Year: 2008
OAI identifier:

Suggested articles


  1. (2007). A code generator framework for Isabelle/HOL.
  2. (1995). A Logic for Miranda, Revisited. doi
  3. (2007). Automated testing of refactoring engines. doi
  4. (2003). Executing Verified Compiler Specification. Programming Languages and Systems: First Asian Symposium, doi
  5. (2006). Formal certification of a compiler back-end or: programming a compiler with a proof assistant. doi
  6. (2006). Formal Specification and Verification of Java Refactorings. doi
  7. (2006). Formal Verification of a C Compiler Front-end. doi
  8. (2005). Formalisation of Haskell Refactorings.
  9. (2006). Formalising a high-performance microkernel. In
  10. (1992). Formulating Haskell. doi
  11. (1994). Isabelle: A Generic Theorem Prover, doi
  12. (2002). Isabelle/HOL: A Proof Assistant for Higher-Order Logic, doi
  13. (1977). LCF considered as a programming language. doi
  14. (2008). Mechanical Verification of Refactorings. doi
  15. (1991). Program Restructuring as an Aidto Software Maintenance.
  16. (2006). Refactoring Haskell Programs. doi
  17. (2007). Refactoring via Program Slicing and Sliding. doi
  18. (1999). Refactoring: Improving the Design of Existing Code. doi
  19. (2004). Refactorings as Formal Refinements.
  20. (2007). Testing Erlang Refactorings with QuickCheck. doi
  21. (2007). The Heterogeneous Tool Set, doi
  22. (1984). The Lambda Calculus, its Syntax and Semantics. doi
  23. (2007). Translating haskell to isabelle. Number 364/07,
  24. (2002). Types and Programming Languages. doi
  25. (2007). Using CafeOBJ to Mechanise Refactoring Proofs and Application. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.