Tabled Typeclass Resolution
Not on the map. Why?
Abstract (arXiv)
Typeclasses provide an elegant and effective way of managing ad-hoc polymorphism in both programming languages and interactive proof assistants. However, the increasingly sophisticated uses of typeclasses within proof assistants, especially within Lean's burgeoning mathematics library, mathlib, have elevated once-theoretical limitations of existing typeclass resolution procedures into major impediments to ongoing progress. The two most devastating limitations of existing procedures are exponential running times in the presence of diamonds and divergence in the presence of cycles. We present a new procedure, tabled typeclass resolution, that solves both problems by tabling, which is a generalization of memoizing originally introduced to address similar limitations of early logic programming systems. We have implemented our procedure for the upcoming version (v4) of Lean, and have confirmed empirically that our implementation is exponentially faster than existing systems in the presence of diamonds. Although tabling is notoriously difficult to implement, our procedure is notably lightweight and could easily be implemented in other systems. We hope our new procedure facilitates even more sophisticated uses of typeclasses in both software development and interactive theorem proving.
Key facts. Cited by 3 papers in the map (data through 13 Oct 2026). First posted on arXiv 13 Jan 2020.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2022: 1; 2023: 1; 2024: 0; 2025: 1.
3 papers.
- 2025VERINA: Benchmarking Verifiable Code Generationcited by 31
- 2022Natural Language Specifications in Proof Assistantscited by 1
- 2023Trustworthy Formal Natural Language Specificationscited by 0
- 2025VERINA: Benchmarking Verifiable Code Generation29 May 2025
- 2023Trustworthy Formal Natural Language Specifications5 Oct 2023
- 2022Natural Language Specifications in Proof Assistants16 May 2022