-
Notifications
You must be signed in to change notification settings - Fork 149
fix_IF_NONE_EQUALS_OPTION #1482
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
fix_IF_NONE_EQUALS_OPTION #1482
Conversation
I'm skeptical of the usefulness of the first 2 rewrites so removing them for now. |
It seems that otknl is some how not terminating. Can someone with permission to kill jobs kill it. Also to prevent this from happening again @mn200 can I please get permission to kill jobs as it seems like this is happening frequently enough. |
Oh it finished running. |
This change removes IF_NONE_EQUALS_OPTION from the srw_ss and adds 2 lemmas. if_option_eq is the last two conjuncts + 2 more other useful case splits if_option_neq is added for backward compatiblitity and it preserves good behaviour of IF_NONE_EQUALS_OPTION.
f28957d
to
94b3ea9
Compare
@mn200 ping on this? |
>> Q_TAC (HNF_TAC (“M0':term”, “vs :string list”, | ||
“y' :string”, “args':term list”)) ‘M1'’ | ||
“y''' :string”, “args':term list”)) ‘M1'’ |
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.
The name y'
was available here, and it's supposed to correspond to y
. In my name design, y
is the head variable of M0
, and y'
is the head variable of M0'
, which is perfect. Now this bad y'''
jump out, because somehow y'
and y''
occurred from nowhere but changed simplification rules. Shit.
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.
Another slightly less obvious change is Overload subterm' = “\X M p r. FST (THE (subterm X M p r))”
does not print as often as
subterm X M p r <> NONE
before would be simplified in some cases to.
subterm X M p r = SOME y
and i get
FST y
appearing instead
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.
Both NONE
and SOME
are primitive constants provided by optionTheory
. I think it's very rude to automatically rewrite all a <> NONE
to a = SOME y
with a new, fixed name y
introduced. I keep those _ <> NONE
terms only because I don't care which SOME y
it equals to.
I actually have a blacklist of simplification rules in front of my
If this PR were merged, I will later revert the changed proofs by putting |
As per Zulip discussion, I think the best way forward is to avoid automatic simps that generate (existentially-quantified) names, so that |
91157dc
to
13fa486
Compare
13fa486
to
686f85a
Compare
686f85a
to
37ed4e8
Compare
Thanks for negotiating the long back-and-forth with this PR! The total impact now looks quite minimal and the failing checks in the latest regression are not your problem so I'm happy to merge. |
This change removes IF_NONE_EQUALS_OPTION from the srw_ss and adds if_option_eq which has the last 2
conjuncts + 2 more other useful case splits.