Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Programming up to Congruence #22

Open
brianhempel opened this issue Feb 3, 2017 · 1 comment
Open

Programming up to Congruence #22

brianhempel opened this issue Feb 3, 2017 · 1 comment

Comments

@brianhempel
Copy link
Contributor

Vilhelm Sjöberg, Stephanie Weirich

This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference. This algorithm allows the type checker to automatically use equality assumptions from the context when reasoning about equality. Most dependently- typed languages automatically use equalities that follow from β-reduction during type checking; however, such reasoning is incompatible with congruence closure. In contrast, ZOMBIE does not use automatic β-reduction because types may contain potentially diverging terms. Therefore ZOMBIE provides a unique opportunity to explore an alternative definition of equivalence in dependently- typed language design.

Our work includes the specification of the language via a bidirectional type system, which works “up-to-congruence,” and an algorithm for elaborating expressions in this language to an explicitly typed core language. We prove that our elaboration algorithm is complete with respect to the source type system, and always produces well typed terms in the core language. This algorithm has been implemented in the ZOMBIE language, which includes general recursion, irrelevant arguments, heterogeneous equality and datatypes.

http://www.seas.upenn.edu/~sweirich/papers/congruence-extended.pdf

@k4rtik
Copy link
Member

k4rtik commented Mar 27, 2020

I might be interested in this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants