-
Notifications
You must be signed in to change notification settings - Fork 438
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: let get_elem_tactic_trivial handle [a]'h.2 #3132
Conversation
The pattern ``` for h : i in [:xs.size] do let x := xs[i]'h.2 ``` is occassionally useful to iterate over an array with the index in hand. This PR extends the `get_elem_tactic_trivial` so that one can simply write ``` for h : i in [:xs.size] do let x := xs[i] ``` fixes #3032.
Hmm, the tactic
I wrote doesn’t work as well as I thought; the
Is it possible to say “apply NB: Simply apply fails with
|
@nomeata What about the following? theorem helper {r : Std.Range} (h₁ : i ∈ r) (h₂ : r.stop = n) : i < n := by
have := h₁.2
rw [h₂] at this
assumption
macro_rules
| `(tactic| get_elem_tactic_trivial) => `(tactic| apply helper; assumption; rfl)
def withTwoRanges (xs : Array Nat) : Option Nat := Id.run do
for h1 : i in [:xs.size] do
for h2 : j in [i + 1:xs.size] do
if xs[i] == xs[j] then
return i
return none BTW, we will be working on better automation this year. |
I thought about something in that direction, good to know that it was a reasonable direction :-) |
|
After leanprover/lean4#3132 the linter will complain about this.
* feat: hover info for `rcases h : ...` (#486) * feat: hover info for `rcases h : ...` * fix * chore: adaptations for leanprover/lean4#3123 (#502) * chore: adaptations for leanprover/lean4#3123 * update toolchain * chore: remove unnecessary `have` (#516) After leanprover/lean4#3132 the linter will complain about this. * chore: simproc PR changes (#496) See leanprover/lean4#3124 Co-authored-by: Scott Morrison <scott.morrison@gmail.com> * chore: adaptions for nightly-2023-01-11 (#524) * advance toolchain to nightly-2024-01-12, no updates required * chore: updates to DiscrTree for changes in nightly (#536) * doc: extend docstrings for `ext` and `ext1` (#525) Makes sure to mention that the patterns are processed using `rintro`, and makes sure `ext` mentions `ext1`. * docs(Data/List): typo (#529) * feat: Eq.rec lemma (#385) * chore: Add empty collection instance to BinomialHeap (#532) * Incremental Library Search (#421) This ports library_search from Mathlib to Std. It preserves the ability to do caching, but is designed to support a cacheless mode. The exact and apply tactics are named `std_exact?` and `std_apply?`, but will eventually be renamed. Co-authored-by: Scott Morrison <scott.morrison@gmail.com> * fix termination_by clauses in LazyDiscrTree fix LibrarySearch * bump toolchain --------- Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Martin Dvořák <martin.dvorak@matfyz.cz> Co-authored-by: François G. Dorais <fgdorais@gmail.com> Co-authored-by: Joe Hendrix <joe@lean-fro.org> * feat: adaptations for leanprover/lean4#3159 (#557) * merge origin/main * chore: fixes for `simp` refactor (#571) * move to v4.6.0-rc1 * fix proofs --------- Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Leonardo de Moura <leonardo@microsoft.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Martin Dvořák <martin.dvorak@matfyz.cz> Co-authored-by: François G. Dorais <fgdorais@gmail.com> Co-authored-by: Joe Hendrix <joe@lean-fro.org>
) * feat: hover info for `rcases h : ...` (leanprover-community#486) * feat: hover info for `rcases h : ...` * fix * chore: adaptations for leanprover/lean4#3123 (leanprover-community#502) * chore: adaptations for leanprover/lean4#3123 * update toolchain * chore: remove unnecessary `have` (leanprover-community#516) After leanprover/lean4#3132 the linter will complain about this. * chore: simproc PR changes (leanprover-community#496) See leanprover/lean4#3124 Co-authored-by: Scott Morrison <scott.morrison@gmail.com> * chore: adaptions for nightly-2023-01-11 (leanprover-community#524) * advance toolchain to nightly-2024-01-12, no updates required * chore: updates to DiscrTree for changes in nightly (leanprover-community#536) * doc: extend docstrings for `ext` and `ext1` (leanprover-community#525) Makes sure to mention that the patterns are processed using `rintro`, and makes sure `ext` mentions `ext1`. * docs(Data/List): typo (leanprover-community#529) * feat: Eq.rec lemma (leanprover-community#385) * chore: Add empty collection instance to BinomialHeap (leanprover-community#532) * Incremental Library Search (leanprover-community#421) This ports library_search from Mathlib to Std. It preserves the ability to do caching, but is designed to support a cacheless mode. The exact and apply tactics are named `std_exact?` and `std_apply?`, but will eventually be renamed. Co-authored-by: Scott Morrison <scott.morrison@gmail.com> * fix termination_by clauses in LazyDiscrTree fix LibrarySearch * bump toolchain --------- Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Martin Dvořák <martin.dvorak@matfyz.cz> Co-authored-by: François G. Dorais <fgdorais@gmail.com> Co-authored-by: Joe Hendrix <joe@lean-fro.org> * feat: adaptations for leanprover/lean4#3159 (leanprover-community#557) * merge origin/main * chore: fixes for `simp` refactor (leanprover-community#571) * move to v4.6.0-rc1 * fix proofs --------- Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Leonardo de Moura <leonardo@microsoft.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Martin Dvořák <martin.dvorak@matfyz.cz> Co-authored-by: François G. Dorais <fgdorais@gmail.com> Co-authored-by: Joe Hendrix <joe@lean-fro.org>
The pattern
is occassionally useful to iterate over an array with the index in
hand. This PR extends the
get_elem_tactic_trivial
so that one cansimply write
fixes #3032.