-
Notifications
You must be signed in to change notification settings - Fork 26
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
Remove the LambdaBoxMut language, translating directly from LambdaBox to LambdaBoxLocal #109
Comments
after additional discussion today, this is the new plan:
Overall the code that will be deleted should be around 10k lines (everything in As a benefit, we can forget about both LambdaBoxMut and LambdaBoxLocal and just use the flag system of LambdaBox. |
For "thunk" and "force", are these memoizing, with mutable references, or forgetful (so, recompute every time) ? |
These are not memoizing at the moment, and they won't be memoizing after. We could think about making them memoizing in the future. We also noticed something: Currently LambdaBoxMut_to_LambdaBoxLocal goes from a named (global) environment to a de Bruijn substitution-based semantics. If we refactor, we can go from a named global environment to a de Bruijn environment, which should make the proof simpler because it only has to deal with one change of representation, not two. |
One more discussion, one more plan:
In this new plan, we do not have to introduce a new semantics, we can work with the relations that already exist. We also don't need any intermediate syntax anymore, so no code duplication for boilerplate. |
Only issue is that the LambdaBox -> LambaBoxMut compilation is currently partial, which is implemented by a TWrong constructor in LambdaBoxMut that is blindly translated to Prf_e in LambdaBoxMut_to_LambdaBoxLocal.
Proposed fix:
The text was updated successfully, but these errors were encountered: