-
Notifications
You must be signed in to change notification settings - Fork 1
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
feat: push down lets #1111
feat: push down lets #1111
Commits on Aug 10, 2023
-
This is in preparation for rethinking how we evaluate let bindings. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for c45f948 - Browse repository at this point
Copy the full SHA c45f948View commit details
Commits on Aug 11, 2023
-
we do this because we are changing eval a lot shortly, and want to be able to see changes. is also easier to update when bounds are broken!
Configuration menu - View commit details
-
Copy full SHA for 3ac2cd6 - Browse repository at this point
Copy the full SHA 3ac2cd6View commit details
Commits on Aug 12, 2023
-
feat: evaluate
let
s by "pushing down", with opt TODO: squash this w……ith next commit! This can be seen as an explicit-substitution style operational semantics. This change in approach means that our evaluation rules are much more local, and will enable some future simplifications. In particular we will avoid using the `Accum` machinery, simplify the eval `Cxt` and not have to have a separate eval mode for substitutions. We temporarily disable EvalFull.unit_8. It does pass (note that the step count is bumped), but takes a long time (almost 10 minutes on my machine!). This will be massively improved shortly, by being more aggressive in eliding pointless `let`s. Signed-off-by: Ben Price <[email protected]> pushMulti opt
Configuration menu - View commit details
-
Copy full SHA for 5b31878 - Browse repository at this point
Copy the full SHA 5b31878View commit details -
Configuration menu - View commit details
-
Copy full SHA for 372f360 - Browse repository at this point
Copy the full SHA 372f360View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8bb497c - Browse repository at this point
Copy the full SHA 8bb497cView commit details -
Configuration menu - View commit details
-
Copy full SHA for a9d0111 - Browse repository at this point
Copy the full SHA a9d0111View commit details -
Configuration menu - View commit details
-
Copy full SHA for 04dc304 - Browse repository at this point
Copy the full SHA 04dc304View commit details -
Configuration menu - View commit details
-
Copy full SHA for 490029f - Browse repository at this point
Copy the full SHA 490029fView commit details -
Configuration menu - View commit details
-
Copy full SHA for c96b24c - Browse repository at this point
Copy the full SHA c96b24cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 587abf6 - Browse repository at this point
Copy the full SHA 587abf6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1fe5230 - Browse repository at this point
Copy the full SHA 1fe5230View commit details -
Configuration menu - View commit details
-
Copy full SHA for 47bad07 - Browse repository at this point
Copy the full SHA 47bad07View commit details -
Configuration menu - View commit details
-
Copy full SHA for bbdbca1 - Browse repository at this point
Copy the full SHA bbdbca1View commit details -
Configuration menu - View commit details
-
Copy full SHA for bfd8224 - Browse repository at this point
Copy the full SHA bfd8224View commit details -
Configuration menu - View commit details
-
Copy full SHA for 681eb1e - Browse repository at this point
Copy the full SHA 681eb1eView commit details -
Configuration menu - View commit details
-
Copy full SHA for d45dc43 - Browse repository at this point
Copy the full SHA d45dc43View commit details -
Configuration menu - View commit details
-
Copy full SHA for 34c8dbd - Browse repository at this point
Copy the full SHA 34c8dbdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0b35405 - Browse repository at this point
Copy the full SHA 0b35405View commit details -
Configuration menu - View commit details
-
Copy full SHA for b73d143 - Browse repository at this point
Copy the full SHA b73d143View commit details -
todo/review notes - I need to flesh out into a note
Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 0736afe - Browse repository at this point
Copy the full SHA 0736afeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 120b54d - Browse repository at this point
Copy the full SHA 120b54dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6651d90 - Browse repository at this point
Copy the full SHA 6651d90View commit details -
Configuration menu - View commit details
-
Copy full SHA for 210b92a - Browse repository at this point
Copy the full SHA 210b92aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 63d8e2b - Browse repository at this point
Copy the full SHA 63d8e2bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 10a8173 - Browse repository at this point
Copy the full SHA 10a8173View commit details -
update testsuite for aggressive elision. some justifications:
bump limit on unit_prim_partial_map because... it turns out that on this workload the aggressive elision optimisation actually takes more step. However, the trees are somewhat smaller. this is because the optimisation makes no difference on terms like let x1=_ in ... let xn=_ in xi as `xi` is a leaf. This workload has many such subterms which get created when pushing lets down. Aggressive elision will remove some of the lets early, when they are (for example) let x1=_ in ... let xn=_ in C xi xj but this takes an extra step This phenomenon is also seen in unit_type_preservation_BETA_regression
Configuration menu - View commit details
-
Copy full SHA for 1b6f562 - Browse repository at this point
Copy the full SHA 1b6f562View commit details -
Configuration menu - View commit details
-
Copy full SHA for a2837c3 - Browse repository at this point
Copy the full SHA a2837c3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9da8eb3 - Browse repository at this point
Copy the full SHA 9da8eb3View commit details -
feat: eval combines push and elide
Since we are eliding aggressively, we may as well not create the pointless lets in the first place. (Note that we may still create pointless lets when renaming binders.) This again noticably speeds up unit_8 and unit_9. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 7297eae - Browse repository at this point
Copy the full SHA 7297eaeView commit details -
fix: change eval cxts to match push-down-lets
This fixes unit_redexes_lettype_capture, where we want to not consider a burried binder renamable. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for db35ff0 - Browse repository at this point
Copy the full SHA db35ff0View commit details -
Now we are pushing down lets, we do not need so much information about bindings. In particular, we do not need to record the original binding location, or the original binding's context, since we do not do long-range substitution where care is needed to avoid capture. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for eb18e6b - Browse repository at this point
Copy the full SHA eb18e6bView commit details -
fix: Eval.Cxt is a list, can record shadowed lets
This fixes a rare issue that if one has two adjacent lets with the same name, we would only record one of them in the `Cxt`, and thus miscalculate whether a binder they immediately contain needs to be renamed before we can push the lets under. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 622e34d - Browse repository at this point
Copy the full SHA 622e34dView commit details -
refactor: special 'subst' handling is now unneeded
This is because we "push down lets", rather than doing long-range substitutions. Signed-off-by: Ben Price <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 9719b72 - Browse repository at this point
Copy the full SHA 9719b72View commit details -
Configuration menu - View commit details
-
Copy full SHA for ac6aea5 - Browse repository at this point
Copy the full SHA ac6aea5View commit details