theorem
Mt.Utils.List.erase_subset
{T : Type u}
{a : T}
(l : List T)
(idx : Nat)
:
a ∈ List.eraseIdx l idx → a ∈ l
theorem
Mt.Utils.List.erase_set
{T : Type u}
(l : List T)
(idx : Nat)
(new_value : T)
:
List.eraseIdx (List.set l idx new_value) idx = List.eraseIdx l idx
theorem
Mt.Utils.List.get_congr
{T : Type u}
{l : List T}
{l' : List T}
(idx : Fin (List.length l))
(eq : l = l')
:
List.get l idx = List.get l' (Mt.Utils.Fin.cast idx (_ : List.length l = List.length l'))
theorem
Mt.Utils.List.get_congr'
{T : Type u}
{l : List T}
{l' : List T}
{i : Fin (List.length l)}
{j : Fin (List.length l')}
(l_eq : l = l')
(i_eq : i.val = j.val)
:
theorem
Mt.Utils.List.get_of_map
{U : Type u}
{V : Type u}
{f : U → V}
{l : List U}
{idx : Fin (List.length (List.map f l))}
:
List.get (List.map f l) idx = f (List.get l (Mt.Utils.Fin.cast idx (_ : List.length (List.map f l) = List.length l)))
theorem
Mt.Utils.List.erase_map_commutes
{U : Type u}
{V : Type u}
(f : U → V)
(l : List U)
(idx : Nat)
:
List.map f (List.eraseIdx l idx) = List.eraseIdx (List.map f l) idx