How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Aspectual Caml: an aspect-oriented functional language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Parametric higher-order abstract syntax for mechanized semantics
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
A systematic derivation of the STG machine verified in Coq
Proceedings of the third ACM Haskell symposium on Haskell
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
Interactive theorem provers such as Coq are widely used for program verification. However, if one aims to, for example, add a simple feature to an already-verified program, it may require reconstructing the entire proof. In other words, building upon a verified program (a program with its accompanying proofs) while also maintaining its consistency is generally not an easy task. We propose a novel method to support the extension of verified programs by interactively modifying their definitions and proofs. We introduce ECoq, an extended version of Coq, which is equipped with a mechanism to help extend inductive types. When a type is modified, ECoq locates the corresponding areas requiring modification in the program and its proofs. Unfortunately, however, this can produce spurious modifications that may complicate the extension of large programs. Hence, we also introduce the concept of "correction candidates," which are used to reduce the number of spurious modifications semi-automatically.