Documentation

Mathlib.Order.Fin.Tuple

Order properties on tuples #

theorem Fin.pi_lex_lt_cons_cons {n : } {α : Fin (n + 1)Type u_1} {x₀ : α 0} {y₀ : α 0} {x : (i : Fin n) → α i.succ} {y : (i : Fin n) → α i.succ} (s : {i : Fin n.succ} → α iα iProp) :
Pi.Lex (fun (x x_1 : Fin n.succ) => x < x_1) s (Fin.cons x₀ x) (Fin.cons y₀ y) s x₀ y₀ x₀ = y₀ Pi.Lex (fun (x x_1 : Fin n) => x < x_1) (fun (i : Fin n) => s) x y
theorem Fin.insertNth_mem_Icc {n : } {α : Fin (n + 1)Type u_1} [(i : Fin (n + 1)) → Preorder (α i)] {i : Fin (n + 1)} {x : α i} {p : (j : Fin n) → α (i.succAbove j)} {q₁ : (j : Fin (n + 1)) → α j} {q₂ : (j : Fin (n + 1)) → α j} :
i.insertNth x p Set.Icc q₁ q₂ x Set.Icc (q₁ i) (q₂ i) p Set.Icc (fun (j : Fin n) => q₁ (i.succAbove j)) fun (j : Fin n) => q₂ (i.succAbove j)
theorem Fin.preimage_insertNth_Icc_of_mem {n : } {α : Fin (n + 1)Type u_1} [(i : Fin (n + 1)) → Preorder (α i)] {i : Fin (n + 1)} {x : α i} {q₁ : (j : Fin (n + 1)) → α j} {q₂ : (j : Fin (n + 1)) → α j} (hx : x Set.Icc (q₁ i) (q₂ i)) :
i.insertNth x ⁻¹' Set.Icc q₁ q₂ = Set.Icc (fun (j : Fin n) => q₁ (i.succAbove j)) fun (j : Fin n) => q₂ (i.succAbove j)
theorem Fin.preimage_insertNth_Icc_of_not_mem {n : } {α : Fin (n + 1)Type u_1} [(i : Fin (n + 1)) → Preorder (α i)] {i : Fin (n + 1)} {x : α i} {q₁ : (j : Fin (n + 1)) → α j} {q₂ : (j : Fin (n + 1)) → α j} (hx : xSet.Icc (q₁ i) (q₂ i)) :
i.insertNth x ⁻¹' Set.Icc q₁ q₂ =
theorem liftFun_vecCons {α : Type u_1} {n : } (r : ααProp) [IsTrans α r] {f : Fin (n + 1)α} {a : α} :
((fun (x x_1 : Fin (n + 1).succ) => x < x_1) r) (Matrix.vecCons a f) (Matrix.vecCons a f) r a (f 0) ((fun (x x_1 : Fin (n + 1)) => x < x_1) r) f f
@[simp]
theorem strictMono_vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} :
@[simp]
theorem monotone_vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} :
@[simp]
theorem monotone_vecEmpty {α : Type u_1} [Preorder α] {a : α} :
@[simp]
theorem strictMono_vecEmpty {α : Type u_1} [Preorder α] {a : α} :
@[simp]
theorem strictAnti_vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} :
@[simp]
theorem antitone_vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} :
@[simp]
theorem antitone_vecEmpty {α : Type u_1} [Preorder α] {a : α} :
@[simp]
theorem strictAnti_vecEmpty {α : Type u_1} [Preorder α] {a : α} :
theorem StrictMono.vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} (hf : StrictMono f) (ha : a < f 0) :
theorem StrictAnti.vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} (hf : StrictAnti f) (ha : f 0 < a) :
theorem Monotone.vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} (hf : Monotone f) (ha : a f 0) :
theorem Antitone.vecCons {α : Type u_1} [Preorder α] {n : } {f : Fin (n + 1)α} {a : α} (hf : Antitone f) (ha : f 0 a) :
def OrderIso.piFinTwoIso (α : Fin 2Type u_2) [(i : Fin 2) → Preorder (α i)] :
((i : Fin 2) → α i) ≃o α 0 × α 1

Π i : Fin 2, α i is order equivalent to α 0 × α 1. See also OrderIso.finTwoArrowEquiv for a non-dependent version.

Equations
Instances For
    def OrderIso.finTwoArrowIso (α : Type u_2) [Preorder α] :
    (Fin 2α) ≃o α × α

    The space of functions Fin 2 → α is order equivalent to α × α. See also OrderIso.piFinTwoIso.

    Equations
    Instances For
      def OrderIso.piFinSuccAboveIso {n : } (α : Fin (n + 1)Type u_2) [(i : Fin (n + 1)) → LE (α i)] (i : Fin (n + 1)) :
      ((j : Fin (n + 1)) → α j) ≃o α i × ((j : Fin n) → α (i.succAbove j))

      Order isomorphism between Π j : Fin (n + 1), α j and α i × Π j : Fin n, α (Fin.succAbove i j).

      Equations
      Instances For
        def finSuccAboveOrderIso {n : } (p : Fin (n + 1)) :
        Fin n ≃o { x : Fin (n + 1) // x p }

        Fin.succAbove as an order isomorphism between Fin n and {x : Fin (n + 1) // x ≠ p}.

        Equations
        Instances For
          theorem finSuccAboveOrderIso_apply {n : } (p : Fin (n + 1)) (i : Fin n) :
          (finSuccAboveOrderIso p) i = p.succAbove i,
          theorem finSuccAboveOrderIso_symm_apply_last {n : } (x : { x : Fin (n + 1) // x Fin.last n }) :
          (finSuccAboveOrderIso (Fin.last n)).symm x = (x).castLT
          theorem finSuccAboveOrderIso_symm_apply_ne_last {n : } {p : Fin (n + 1)} (h : p Fin.last n) (x : { x : Fin (n + 1) // x p }) :
          (finSuccAboveEquiv p).symm x = (p.castLT ).predAbove x
          @[simp]
          theorem Fin.castLEOrderIso_apply {n : } {m : } (h : n m) (i : Fin n) :
          (Fin.castLEOrderIso h) i = Fin.castLE h i,
          @[simp]
          theorem Fin.castLEOrderIso_symm_apply {n : } {m : } (h : n m) (i : { i : Fin m // i < n }) :
          (RelIso.symm (Fin.castLEOrderIso h)) i = i,
          def Fin.castLEOrderIso {n : } {m : } (h : n m) :
          Fin n ≃o { i : Fin m // i < n }

          Promote a Fin n into a larger Fin m, as a subtype where the underlying values are retained. This is the OrderIso version of Fin.castLE.

          Equations
          • Fin.castLEOrderIso h = { toFun := fun (i : Fin n) => Fin.castLE h i, , invFun := fun (i : { i : Fin m // i < n }) => i, , left_inv := , right_inv := , map_rel_iff' := }
          Instances For