The foundation of a generic theorem prover
Journal of Automated Reasoning
Term rewriting and all that
Termination of term rewriting using dependency pairs
Theoretical Computer Science - Trees in algebra and programming
Type Classes and Overloading in Higher-Order Logic
TPHOLs '97 Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics
A Proposal for a Formal OCL Semantics in Isabelle/HOL
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
Generating Polynomial Orderings for Termination Proofs
RTA '95 Proceedings of the 6th International Conference on Rewriting Techniques and Applications
Automating the dependency pair method
Information and Computation - Special issue: 19th international conference on automated deduction (CADE-19)
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Proving bounds for real linear programs in Isabelle/HOL
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Nominal techniques in Isabelle/HOL
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
RTA'05 Proceedings of the 16th international conference on Term Rewriting and Applications
A mechanized translation from higher-order logic to set theory
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Hi-index | 0.00 |
Overloading in the context of higher-order logic has been used for some time now. We define what we mean by Higher-Order Logic with Conservative Overloading (HOLCO). HOLCO captures how overloading is actually applied by the users of Isabelle. We show that checking whether definitions obey the rules of HOLCO is not even semi-decidable. The undecidability proof reveals strong ties between our problem and the dependency pair method by Arts and Giesl for proving termination of TRSs via the notion overloading TRS. The dependency graph of overloading TRSs can be computed exactly. We exploit this by providing an algorithm that checks the conservativity of definitions based on the dependency pair method and a simple form of linear polynomial interpretation; the algorithm also uses the strategy of Hirokawa and Middeldorp of recursively calculating the strongly connected components of the dependency graph. The algorithm is powerful enough to deal with all overloaded definitions that the author has encountered so far in practice. An implementation of this algorithm is available as part of a package that adds conservative overloading to Isabelle. This package also allows to delegate the conservativity check to external tools like the Tyrolean Termination Tool or the Automated Program Verification Environment.