Zulip Chat Archive
Stream: lean4
Topic: improving Array indexing in for loops
Thomas Murrills (Nov 09 2023 at 21:51):
Often when iterating through for loop via index, you're forced to write either
for i in [:as.size] do
let a := as[i]!
or
for h : i in [:as.size] do
let a := (as[i]'h.2)
By adding e.g.
macro_rules
| `(tactic|get_elem_tactic_trivial) => `(tactic|exact Membership.mem.upper ‹_›)
you can get away with
for h : i in [:as.size] do
let a := as[i]
but the h
is unfortunately necessary. It would be nice if it could be replaced with _
—or, even better, if it wasn't necessary at all.
Would it be a good or bad idea to use forIn'
with an inaccessible hypothesis by default for for i in ...
(when possible), so that for h : i in ...
wasn't necessary in cases like this? (Would there be any technical obstacles, or any significant costs?)
In the future, it would also be nice to gradually make get_elem_tactic_trivial
powerful enough (either in core or std) to avoid using []'
or []!
in most basic for
loops. (This would mean being able to handle things like [:as.size-1]
as well, as well as using hypotheses like as.size ≤ bs.size
when indexing into bs
.)
Joachim Breitner (Dec 06 2023 at 08:32):
I’ve RFC’ed this at https://github.com/leanprover/lean4/issues/3032
Last updated: Dec 20 2023 at 11:08 UTC