-
Notifications
You must be signed in to change notification settings - Fork 5
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
export format discussion #1
Comments
LGTM
At first glance this does not sound consistent to me: we use level objects when using universes but names when declaring them (as it wouldn't make sense to have
Makes sense, though a standardized command line format should achieve the same, no?
Perhaps an export format identifier instead, then? |
I forgot this is one of the areas where the type checkers differ; trepplein and nanoda eagerly promote declaration uparams to levels (so the declaration headers are
Sure, I'm fine with doing that instead. |
Just a request for initial feedback, let me know what you think about the changes in 4e9bf08.
|
Makes sense to me. /cc @semorrison @digama0? |
SGTM as well. I agree that the checker should be doing more checking and less generating of expressions. |
@Kha Is there a quick way to tell whether an Expr contains an There are relatively few mdata nodes in the entire environment, so if there's a way to quickly determine whether or not an Expr has any mdata nodes and only rebuild the ones that do, I think that would solve the problem pretty nicely. |
I think the best way to fix this is to just add a |
With a slightly more clever implementation I got the mdata-less version of |
I'm getting ready to release the updated version of nanoda_lib and the binary, and I wrote a small book about the kernel/type checking. I pushed a commit for this repo here as a candidate for the exporter changes that were discussed. Let me know if you have comments/concerns. It includes the mdata pruning and addition of a version string for the export format. I'll send you a draft of the book in the next day or two to get your thoughts on the initial release. |
Also to Sebastian and @digama0, I put the introductory section of the book type checker guide in a gist. If you have a minute, I would appreciate any feedback as experts. It includes a slightly edited quote from Mario on zulip, if you're opposed to its inclusion or want to change the wording, please let me know. |
LGTM |
Looks nice! You might want to reference https://doi.org/10.1016/j.entcs.2012.06.008 in the Adversarial section |
That's a wonderful reference, thank you. |
I wrote/drew up a description of the main thing we talked about in a very bootleg PDF: lifetimes.pdf
A few additional thoughts:
The declaration items currently give their universe parameters as name indices, which the type checker needs to promote to levels. It seems like it would be easier to do what's already done with
#EC
and give a list of level indices instead of name indices, and the type checkers could get rid of a (very) little bit of code in the parser.Something to think about down the line if there are multiple type checkers, it may be nice to have an extension to the export format that conveys the pretty printer options the user wants to use and a list of the declarations they actually want to see printed back to them. Users would just convey that once to the exporter and be able to expect the same behavior from each checker, and it might prevent different checkers from having slightly different ways of taking pretty printer options.
It may be worth it to have some kind of lean version identifier somewhere. While the underlying theory isn't really expected to change, there might be small implementation details in checkers or the format that warrants versioning (we're on v2 of the export format after all).
The text was updated successfully, but these errors were encountered: