-
Notifications
You must be signed in to change notification settings - Fork 166
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
Refinement typing #1961
base: master
Are you sure you want to change the base?
Refinement typing #1961
Conversation
@catvayor I'm going to work on this same branch for the checking pass; it shouldn't conflict with your work (but if there's an issue do let me know). |
I have a suggestion for Futhark.Internalise.Refinement: instead of adding |
@athas Why? |
I've done some hacking to allow the SoP system to convert from arbitrary representations into SoPs, but it still needs work. One of the things I'm not sure about with the current SoP system is that there is significant conversion back-and-forth between the original representation and SoP representation of an expression. For example, here on lines 29 and 30: futhark/src/Futhark/SoP/RefineEquivs.hs Lines 24 to 39 in 088201e
In the above this is done to substitute in known equivalences into the new equations ( But there's merit to keeping everything in SoP land (at least in terms of simplicity) and substituting in and constructing source terms will be a pain and jank. And of course the analysis could inspect the environment for hints about |
Because our goal for now is to figure out when and how verification fails, which is easier when it does not happen silently. Long term, it is my impression that this entire mechanism is about optionally asking it to verify the dynamic safety of a program, after which the compilation can occur without inserting any safety checks at all. Again, it's not a hidden optimisation: it's something the user explicitly asks for, and a failure to verify should be noisy. |
I also strongly recommend keeping things in SoP form as much as possible. Constructing source language expressions is a sign you're on the wrong track. |
This reverts commit 7212caa.
No description provided.