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
[Merged by Bors] - feat(tactic/choose): choose
can now decompose conjunctions
#3699
Conversation
This PR was spun off from #3638 |
We already have a |
src/tactic/mk_constructive.lean
Outdated
@@ -0,0 +1,42 @@ | |||
|
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.
Copyright boilerplate, and module docstring please!
I see yes, it's mostly redundant with that tactic. Maybe I should recycle this PR to make a change to |
|
This PR is now completely revamped and it is now an improvement of |
Can you update the PR title / comment? |
choose
can now decompose conjunctions
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.
Looks good. Some comments:
- please add one or more tests for this tactic.
- Ideally
choose
can parse something like⟨⟨h1, h2⟩, h3⟩
as argument, in the same way as the (conjunctive part of)rcases
. That could be a different PR, though.
I thought about that too. As you say, that's probably a bigger change but it's worth considering. The one part that gives me pause though is that patterns |
Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
I do have tests. For some reason, they don't show up here. I don't get it. I do |
I was looking at the wrong PR 🤦 |
We can easily implement a different parser that only reads the conjunctive patterns of For the moment, LGTM bors merge |
Pull request successfully merged into master. Build succeeded: |
choose
can now decompose conjunctionschoose
can now decompose conjunctions
In goal of the form
mk_constructive h
produces this goal:This makes it easier to use elimination on
h
later even when the goal is not aProp