theorem
Vector.iterFromIdx_eq_toIter_iterFromIdxM
{β : Type w}
{n : Nat}
{xs : Vector β n}
{pos : Nat}
:
theorem
Std.Iterators.Vector.isPlausibleStep_iterFromIdx_of_lt
{β : Type w}
{n : Nat}
{xs : Vector β n}
{pos : Nat}
(h : pos < n)
:
(xs.iterFromIdx pos).IsPlausibleStep (IterStep.yield (xs.iterFromIdx (pos + 1)) xs[pos])
theorem
Std.Iterators.Vector.isPlausibleStep_iterFromIdx_of_not_lt
{β : Type w}
{n : Nat}
{xs : Vector β n}
{pos : Nat}
(h : ¬pos < n)
:
(xs.iterFromIdx pos).IsPlausibleStep IterStep.done
theorem
Std.Iterators.Vector.isPlausibleStep_iter_of_pos
{β : Type w}
{n : Nat}
{xs : Vector β n}
(h : 0 < n)
:
xs.iter.IsPlausibleStep (IterStep.yield (xs.iterFromIdx 1) xs[0])
@[simp]
theorem
Vector.step_iterFromIdx
{β : Type w}
{n : Nat}
{xs : Vector β n}
{pos : Nat}
:
(xs.iterFromIdx pos).step = if h : pos < n then Std.PlausibleIterStep.yield (xs.iterFromIdx (pos + 1)) xs[pos] ⋯ else Std.PlausibleIterStep.done ⋯
theorem
Vector.step_iter
{β : Type w}
{n : Nat}
{xs : Vector β n}
:
xs.iter.step = if h : 0 < n then Std.PlausibleIterStep.yield (xs.iterFromIdx 1) xs[0] ⋯ else Std.PlausibleIterStep.done ⋯
@[simp]