We report on an experimental implementation in Haskell of a dependent type theory featuring an observational equality type, based on Pujet et al.’s CCobs. We use normalisation by evaluation to produce an efficient normalisation function, which is used to implement a bidirectional type checker. To allow for greater expressivity, we extend the core CCobs calculus with quotient types and inductive types. To make the system usable, we explore various proof-assistant features, notably a rudimentary version of a "hole" system similar to Agda’s. While rather crude, this experience should inform other, more substantial implementation efforts of observational equality.
@InProceedings{sirman_et_al:LIPIcs.TYPES.2024.5, author = {Sirman, Matthew and Lennon-Bertrand, Meven and Krishnaswami, Neel}, title = {{Implementing a Type Theory with Observational Equality, Using Normalisation by Evaluation}}, booktitle = {30th International Conference on Types for Proofs and Programs (TYPES 2024)}, pages = {5:1--5:22}, series = {Leibniz International Proceedings in Informatics (LIPIcs)}, ISBN = {978-3-95977-376-8}, ISSN = {1868-8969}, year = {2025}, volume = {336}, editor = {M{\o}gelberg, Rasmus Ejlers and van den Berg, Benno}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.TYPES.2024.5}, URN = {urn:nbn:de:0030-drops-233673}, doi = {10.4230/LIPIcs.TYPES.2024.5}, annote = {Keywords: Dependent type theory, Bidirectional typing, Observational equality, Normalisation by evaluation} }
Feedback for Dagstuhl Publishing