ACM Transactions on Programming Languages and Systems (TOPLAS)
Equational reasoning in Isabelle
Science of Computer Programming
The definition of Standard ML
Experiments with proof plans for induction
Journal of Automated Reasoning
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
Enhancing the NUPRL proof development system and applying it to computational abstract algebra
Enhancing the NUPRL proof development system and applying it to computational abstract algebra
Term rewriting and all that
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Adding New Rules to an LCF-style Logic Implementation
HOL'92 Proceedings of the IFIP TC10/WG10.2 Workshop on Higher Order Logic Theorem Proving and its Applications
Recording and Checking HOL Proofs
Proceedings of the 8th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Proceedings of the 8th International Workshop on Higher Order Logic Theorem Proving and Its Applications
An Interface between Clam and HOL
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
VDM '91 Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume I: Conference Contributions - Volume I
Hi-index | 0.00 |
The LCF system was the first mechanical theorem prover to be user-programmable via a metalanguage, ML, from which the functional programming language Standard ML has been developed. Paulson has demonstrated how a modular rewriting engine can be implemented in LCF. This provides both clarity and flexibility. This paper shows that the same modular approach (using higher-order functions) allows transparent optimisation of the rewriting engine; performance can be improved while few, if any, changes are required to code written using these functions. The techniques described have been implemented in the HOL system, a descendant of LCF, and some are now in daily use. Comparative results are given. Some of the techniques described, in particular ones to avoid processing parts of a data structure that do not need to be changed, may be of more general use in functional programming and beyond.