-
Notifications
You must be signed in to change notification settings - Fork 355
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(Aesop): Make some SetLike rules unsafe, add new SetLike rules #20477
base: master
Are you sure you want to change the base?
Conversation
PR summary 9c216e1351Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
!bench |
Here are the benchmark results for commit bd8fd54. |
!bench |
Here are the benchmark results for commit 7cfb59a. |
!bench |
Here are the benchmark results for commit a6698ad. |
!bench |
Here are the benchmark results for commit 9c216e1. |
I am sorry, I am not competent to review this. |
<SubStructure>.closure_mem_of_mem
simps
auto-generated lemmas aroundStarSubalgebra.adjoin
with an Aesop-registered APImem_of_star_mem
The rules above, which all have nontrivial hypotheses, have been made unsafe as they are not provability-preserving in the presence of more complicated membership rules. This is relevant to material I intend to PR soon. Since these rules are provability-preserving much of the time, and have simple membership hypotheses that can be abandoned quickly, I have given them a "success probability" of 90%. This success probability is the same as that assigned by Aesop to safe rule invocations that create new metavariables.
The new
closure_mem_of_mem
rules provide significant performance improvements inMathlibTest/set_like
since they cause costly use ofSetLike.mem_of_subset
to be avoided in many cases.The
simps
auto-generated lemmas I have removed produced messy output that harmed the performance of simp and Aesop without being particularly usable. The new, clean API bringsStarSubalgebra.adjoin
and friends in line with other closure operators such asSubmonoid.closure
.mem_of_star_mem
is set to the same low priority asSetLike.mem_of_subset
since both rules have the potential to cause loops.Moves (incidental):
NonUnitalSubalgebra.starClosure_toNonunitalSubalgebra
->NonUnitalSubalgebra.starClosure_toNonUnitalSubalgebra