Lemmas about vector iterators #
This module provides lemmas about the interactions of Vector.iter with Iter.step and
various collectors.
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]