Documentation

Mathlib.Data.List.FinRange

Lists of elements of Fin n #

This file develops some results on finRange n.

@[simp]
theorem List.mem_finRange {n : ℕ} (a : Fin n) :
@[simp]
theorem List.finRange_eq_nil {n : ℕ} :
finRange n = [] ↔ n = 0
theorem List.pairwise_lt_finRange (n : ℕ) :
Pairwise (fun (x1 x2 : Fin n) => x1 < x2) (finRange n)
theorem List.pairwise_le_finRange (n : ℕ) :
Pairwise (fun (x1 x2 : Fin n) => x1 ≤ x2) (finRange n)
@[simp]
theorem List.count_finRange {n : ℕ} (a : Fin n) :
count a (finRange n) = 1
theorem List.get_finRange {n i : ℕ} (h : i < (finRange n).length) :
(finRange n).get ⟨i, h⟩ = ⟨i, ⋯⟩
@[simp]
theorem List.finRange_map_get {α : Type u} (l : List α) :
@[simp]
theorem List.finRange_map_getElem {α : Type u} (l : List α) :
map (fun (x : Fin l.length) => l[↑x]) (finRange l.length) = l
@[simp]
theorem List.idxOf_finRange {k : ℕ} (i : Fin k) :
idxOf i (finRange k) = ↑i
@[deprecated List.idxOf_get (since := "2025-01-30")]
theorem List.indexOf_finRange {α : Type u} [DecidableEq α] {a : α} {l : List α} (h : idxOf a l < l.length) :
l.get ⟨idxOf a l, h⟩ = a

Alias of List.idxOf_get.

theorem List.ofFn_eq_pmap {α : Type u} {n : ℕ} {f : Fin n → α} :
ofFn f = pmap (fun (i : ℕ) (hi : i < n) => f ⟨i, hi⟩) (range n) ⋯
theorem List.ofFn_eq_map {α : Type u} {n : ℕ} {f : Fin n → α} :
ofFn f = map f (finRange n)
theorem List.nodup_ofFn_ofInjective {α : Type u} {n : ℕ} {f : Fin n → α} (hf : Function.Injective f) :
theorem List.nodup_ofFn {α : Type u} {n : ℕ} {f : Fin n → α} :
theorem Equiv.Perm.ofFn_comp_perm {n : ℕ} {α : Type u} (σ : Perm (Fin n)) (f : Fin n → α) :
(List.ofFn (f ∘ ⇑σ)).Perm (List.ofFn f)

The list obtained from a permutation of a tuple f is permutation equivalent to the list obtained from f.