-
Notifications
You must be signed in to change notification settings - Fork 162
Add STRIP_ALL_THEN and CHOOSE_ALL_THEN #1709
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
base: develop
Are you sure you want to change the base?
Add STRIP_ALL_THEN and CHOOSE_ALL_THEN #1709
Conversation
ba12b04 to
f254035
Compare
Only STRIP_ALL_THEN is exposed in the signature. STRIP_ALL_THEN should behave like REPEAT_TCL STRIP_THM_THEN and CHOOSE_ALL_THEN should behave like REPEAT_TCL CHOOSE_THEN This change is intended to speedup record construction time where STRIP_ALL_THEN is being called via STRUCT_CASES_TAC
…dly calling dest_exists
``?q r. ?r q. (n' = q * m + r) /\ r < m`` In here the front q and r is free and can be ignored The code previously generated q r r' q'.
aa0ca3e to
d0fd996
Compare
mn200
left a comment
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.
Please write a documentation file for STRIP_ALL_THEN in help/Docfiles. Use the template or other examples for formatting.
| fun varyAcc v (V, l) = let val v' = gen_variant Parse.is_constname "" V v in (v'::V, v'::l) end | ||
| (* There are actual cases where strip_exists differ from this function *) | ||
| fun strip_exists1 tm = | ||
| let fun dest_exist_opt tm = SOME (dest_exists tm) handle HOL_ERR _ => NONE |
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 dest_exist_opt function is Lib.total dest_exists.
|
I've figured out why this is way slower than using MP with a induction thm + GENL. Lines 104 to 133 in a902f2d
This bug fix means that the thm passed through the continuation gets bigger and bigger with more hyps and resulting call of CHOOSE has to check for var_occurs for all of the hyps. |
Add STRIP_ALL_THEN and CHOOSE_ALL_THEN
Only STRIP_ALL_THEN is exposed in the signature.
STRIP_ALL_THEN should behave like REPEAT_TCL STRIP_THM_THEN
and
CHOOSE_ALL_THEN should behave like REPEAT_TCL CHOOSE_THEN
This change is intended to speedup record construction time
where STRIP_ALL_THEN is being called via STRUCT_CASES_TAC