-
Notifications
You must be signed in to change notification settings - Fork 30
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
Add Intersection Type related problems #205
Conversation
…calculus added reduction from Krivine machine halting to strong normalization
added reduction from intersection type typability to intersection type type checking added reduction from strong normalization to intersection type typability added reduction from simple semi-Thue system 01 rewriting to intersection type inhabitation
Btw about ten years ago, I did implement a significant part of Krivine's book in Coq, including in particular equivalence between SN and typability in D of pure lambda terms. The project used scoped De Bruijn syntax though. I did use the following additional reference for system D: Strict Intersection Types for the Lambda Calculus by Steffen van Bakel. Empty intersections were also forbidden but by assuming that the list was not empty instead of representing it as a pair of the head and a tail. For some reason I do not recall now, I had to specialize the type system to bounded assignments, ie measure the height of typing derivations. I guess some proofs relied on that measure. Do you also need it for your purpose of just characterizing SN with D-typability? |
@DmxLarchey No, there are several key aspects to this particular proof.
[1] Barendregt, Henk, Wil Dekkers, and Richard Statman. Lambda calculus with types. Cambridge University Press, 2013. |
ba89c2d
to
0b3f58b
Compare
@mrhaandi Concerning the equivalence between For both sides of the equivalence, I did (try) to follow the proof in Krivine's book [3]:
There is some work to define Btw, I cannot find remark 17.2.16 in that online version of [1] and I do not have access to the paper book. Could you please forward me the text of the remark please? I am not sure the issue and your solution is the same as the one I did encounter. |
I studied several approaches. There are three different textbook ones, Krivine's is broken, but can be fixed (as you say). Maybe the simplest proof is in the printed version of Lambda Calculus with Types (2013). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm happy with the PR, I only have the comment that we could specify that we are talking about the strong call-by-name lambda-calculus. This can indeed be considered the lambda-calculus, but we use the terminology weak call-by-name, so we might as well be precise here
@yforster I changed the documentation and comments from |
changed (scons t var) to (scons t (fun x => var x))
2cc7a3d
to
1520ce9
Compare
New problems
New reductions