-
Notifications
You must be signed in to change notification settings - Fork 297
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/interactive/choose): nondependent choose #3806
Conversation
I see you are using Also, what about using just |
The reason for not making it default is to avoid the hit for typeclass search. But I can switch it to use |
I would'nt be too much worried about performance issues, as it's an interactive tactic and it's not used that frequently, so one additional typeclass search from time to time shouldn't be that bad. But I get your point, so let's keep the And thanks for switching to |
I just checked that it works great on two real life examples I'm interested in (including #3740). My only little complain is that when |
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, just a couple doc comments. Maybe it would be better to move this out of tactic.core
/tactic.interactive
into its own file.
Co-authored-by: Rob Lewis <Rob.y.lewis@gmail.com>
Co-authored-by: Rob Lewis <Rob.y.lewis@gmail.com>
bors merge |
👎 Rejected by label |
bors merge |
Now you can write `choose!` to eliminate propositional arguments from the chosen functions. ``` example (h : ∀n m : ℕ, n < m → ∃i j, m = n + i ∨ m + j = n) : true := begin choose! i j h using h, guard_hyp i := ℕ → ℕ → ℕ, guard_hyp j := ℕ → ℕ → ℕ, guard_hyp h := ∀ (n m : ℕ), n < m → m = n + i n m ∨ m + j n m = n, trivial end ```
Pull request successfully merged into master. Build succeeded: |
Now you can write
choose!
to eliminate propositional arguments from the chosen functions.