Documentation

Mathlib.Data.Fin.OrderHom

Finite order homomorphisms. #

The fundamental order homomorphisms between Fin (n + 1) and Fin n.

def Fin.succAbove {n : } (p : Fin (n + 1)) (i : Fin n) :
Fin (n + 1)

succAbove p i embeds Fin n into Fin (n + 1) with a hole around p.

Equations
Instances For
    theorem Fin.succAbove_of_castSucc_lt {n : } (p : Fin (n + 1)) (i : Fin n) (h : Fin.castSucc i < p) :

    Embedding i : Fin n into Fin (n + 1) with a hole around p : Fin (n + 1) embeds i by castSucc when the resulting i.castSucc < p.

    theorem Fin.succAbove_of_succ_le {n : } (p : Fin (n + 1)) (i : Fin n) (h : Fin.succ i p) :
    theorem Fin.succAbove_of_le_castSucc {n : } (p : Fin (n + 1)) (i : Fin n) (h : p Fin.castSucc i) :

    Embedding i : Fin n into Fin (n + 1) with a hole around p : Fin (n + 1) embeds i by succ when the resulting p < i.succ.

    theorem Fin.succAbove_of_lt_succ {n : } (p : Fin (n + 1)) (i : Fin n) (h : p < Fin.succ i) :
    theorem Fin.succAbove_succ_of_lt {n : } (p : Fin n) (i : Fin n) (h : p < i) :
    theorem Fin.succAbove_succ_of_le {n : } (p : Fin n) (i : Fin n) (h : i p) :
    theorem Fin.succAbove_castSucc_of_lt {n : } (p : Fin n) (i : Fin n) (h : i < p) :
    theorem Fin.succAbove_castSucc_of_le {n : } (p : Fin n) (i : Fin n) (h : p i) :
    theorem Fin.succAbove_pred_of_lt {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : p < i) (hi : optParam (i 0) (_ : i 0)) :
    theorem Fin.succAbove_pred_of_le {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : i p) (hi : i 0) :
    @[simp]
    theorem Fin.succAbove_pred_self {n : } (p : Fin (n + 1)) (h : p 0) :
    theorem Fin.succAbove_castPred_of_lt {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : i < p) (hi : optParam (i Fin.last n) (_ : i Fin.last n)) :
    theorem Fin.succAbove_castPred_of_le {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : p i) (hi : i Fin.last n) :
    theorem Fin.succAbove_rev_left {n : } (p : Fin (n + 1)) (i : Fin n) :
    theorem Fin.succAbove_rev_right {n : } (p : Fin (n + 1)) (i : Fin n) :
    theorem Fin.succAbove_ne {n : } (p : Fin (n + 1)) (i : Fin n) :

    Embedding i : Fin n into Fin (n + 1) with a hole around p : Fin (n + 1) never results in p itself

    theorem Fin.ne_succAbove {n : } (p : Fin (n + 1)) (i : Fin n) :

    Given a fixed pivot x : Fin (n + 1), x.succAbove is injective

    theorem Fin.succAbove_right_inj {n : } {i : Fin n} {j : Fin n} (x : Fin (n + 1)) :

    Given a fixed pivot x : Fin (n + 1), x.succAbove is injective

    theorem Fin.succAbove_lt_succAbove_iff {n : } {i : Fin n} {j : Fin n} (p : Fin (n + 1)) :
    theorem Fin.succAbove_le_succAbove_iff {n : } {i : Fin n} {j : Fin n} (p : Fin (n + 1)) :
    @[simp]
    theorem Fin.succAboveEmb_toEmbedding {n : } (p : Fin (n + 1)) :
    (Fin.succAboveEmb p).toEmbedding = { toFun := Fin.succAbove p, inj' := (_ : ∀ (x x_1 : Fin n), Fin.succAbove p x = Fin.succAbove p x_1x = x_1) }
    @[simp]
    theorem Fin.succAboveEmb_apply {n : } (p : Fin (n + 1)) (i : Fin n) :
    @[simp]
    theorem Fin.succAbove_ne_zero_zero {n : } [NeZero n] {a : Fin (n + 1)} (ha : a 0) :
    theorem Fin.succAbove_eq_zero_iff {n : } [NeZero n] {a : Fin (n + 1)} {b : Fin n} (ha : a 0) :
    Fin.succAbove a b = 0 b = 0
    theorem Fin.succAbove_ne_zero {n : } [NeZero n] {a : Fin (n + 1)} {b : Fin n} (ha : a 0) (hb : b 0) :
    @[simp]
    theorem Fin.succAbove_zero {n : } :
    Fin.succAbove 0 = Fin.succ

    Embedding Fin n into Fin (n + 1) with a hole around zero embeds by succ.

    @[simp]
    theorem Fin.succAbove_ne_last_last {n : } {a : Fin (n + 2)} (h : a Fin.last (n + 1)) :
    theorem Fin.succAbove_eq_last_iff {n : } {a : Fin (n + 2)} {b : Fin (n + 1)} (ha : a Fin.last (n + 1)) :
    theorem Fin.succAbove_ne_last {n : } {a : Fin (n + 2)} {b : Fin (n + 1)} (ha : a Fin.last (n + 1)) (hb : b Fin.last n) :
    @[simp]
    theorem Fin.succAbove_last {n : } :
    Fin.succAbove (Fin.last n) = Fin.castSucc

    Embedding Fin n into Fin (n + 1) with a hole around last n embeds by castSucc.

    @[deprecated]
    theorem Fin.succAbove_lt_ge {n : } (p : Fin (n + 1)) (i : Fin n) :
    @[deprecated Fin.castSucc_lt_or_lt_succ]
    theorem Fin.succAbove_lt_gt {n : } (p : Fin (n + 1)) (i : Fin n) :

    Alias of Fin.castSucc_lt_or_lt_succ.

    theorem Fin.succAbove_lt_iff_castSucc_lt {n : } (p : Fin (n + 1)) (i : Fin n) :

    Embedding i : Fin n into Fin (n + 1) using a pivot p that is greater results in a value that is less than p.

    theorem Fin.succAbove_lt_iff_succ_le {n : } (p : Fin (n + 1)) (i : Fin n) :
    theorem Fin.lt_succAbove_iff_le_castSucc {n : } (p : Fin (n + 1)) (i : Fin n) :

    Embedding i : Fin n into Fin (n + 1) using a pivot p that is lesser results in a value that is greater than p.

    theorem Fin.lt_succAbove_iff_lt_castSucc {n : } (p : Fin (n + 1)) (i : Fin n) :
    theorem Fin.succAbove_pos {n : } [NeZero n] (p : Fin (n + 1)) (i : Fin n) (h : 0 < i) :

    Embedding a positive Fin n results in a positive Fin (n + 1)

    theorem Fin.castPred_succAbove {n : } (x : Fin n) (y : Fin (n + 1)) (h : Fin.castSucc x < y) (h' : optParam (Fin.succAbove y x Fin.last n) (_ : Fin.succAbove y x Fin.last n)) :
    theorem Fin.pred_succAbove {n : } (x : Fin n) (y : Fin (n + 1)) (h : y Fin.castSucc x) (h' : optParam (Fin.succAbove y x 0) (_ : Fin.succAbove y x 0)) :
    theorem Fin.exists_succAbove_eq {n : } {x : Fin (n + 1)} {y : Fin (n + 1)} (h : x y) :
    ∃ (z : Fin n), Fin.succAbove y z = x
    @[simp]
    theorem Fin.exists_succAbove_eq_iff {n : } {x : Fin (n + 1)} {y : Fin (n + 1)} :
    (∃ (z : Fin n), Fin.succAbove x z = y) y x
    @[simp]
    theorem Fin.range_succAbove {n : } (p : Fin (n + 1)) :

    The range of p.succAbove is everything except p.

    @[simp]
    theorem Fin.range_succ (n : ) :
    Set.range Fin.succ = {0}

    succAbove is injective at the pivot

    @[simp]
    theorem Fin.succAbove_left_inj {n : } {x : Fin (n + 1)} {y : Fin (n + 1)} :

    succAbove is injective at the pivot

    @[simp]
    theorem Fin.zero_succAbove {n : } (i : Fin n) :
    @[simp]
    theorem Fin.succ_succAbove_zero {n : } [NeZero n] (i : Fin n) :
    @[simp]
    theorem Fin.succ_succAbove_succ {n : } (i : Fin (n + 1)) (j : Fin n) :

    succ commutes with succAbove.

    @[simp]

    castSucc commutes with succAbove.

    theorem Fin.pred_succAbove_pred {n : } {a : Fin (n + 2)} {b : Fin (n + 1)} (ha : a 0) (hb : b 0) (hk : optParam (Fin.succAbove a b 0) (_ : Fin.succAbove a b 0)) :

    pred commutes with succAbove.

    theorem Fin.castPred_succAbove_castPred {n : } {a : Fin (n + 2)} {b : Fin (n + 1)} (ha : a Fin.last (n + 1)) (hb : b Fin.last n) (hk : optParam (Fin.succAbove a b Fin.last (n + 1)) (_ : Fin.succAbove a b Fin.last (n + 1))) :

    castPred commutes with succAbove.

    theorem Fin.rev_succAbove {n : } (p : Fin (n + 1)) (i : Fin n) :

    rev commutes with succAbove.

    @[simp]
    theorem Fin.succ_succAbove_one {n : } [NeZero n] (i : Fin (n + 1)) :

    By moving succ to the outside of this expression, we create opportunities for further simplification using succAbove_zero or succ_succAbove_zero.

    @[simp]
    @[simp]
    def Fin.predAbove {n : } (p : Fin n) (i : Fin (n + 1)) :
    Fin n

    predAbove p i surjects i : Fin (n+1) into Fin n by subtracting one if p < i.

    Equations
    Instances For
      theorem Fin.predAbove_of_le_castSucc {n : } (p : Fin n) (i : Fin (n + 1)) (h : i Fin.castSucc p) (hi : optParam (i Fin.last n) (_ : i Fin.last n)) :
      theorem Fin.predAbove_of_lt_succ {n : } (p : Fin n) (i : Fin (n + 1)) (h : i < Fin.succ p) (hi : optParam (i Fin.last n) (_ : i Fin.last n)) :
      theorem Fin.predAbove_of_castSucc_lt {n : } (p : Fin n) (i : Fin (n + 1)) (h : Fin.castSucc p < i) (hi : optParam (i 0) (_ : i 0)) :
      theorem Fin.predAbove_of_succ_le {n : } (p : Fin n) (i : Fin (n + 1)) (h : Fin.succ p i) (hi : optParam (i 0) (_ : i 0)) :
      theorem Fin.predAbove_succ_of_lt {n : } (p : Fin n) (i : Fin n) (h : i < p) (hi : optParam (Fin.succ i Fin.last n) (_ : Fin.succ i Fin.last n)) :
      theorem Fin.predAbove_succ_of_le {n : } (p : Fin n) (i : Fin n) (h : p i) :
      @[simp]
      theorem Fin.predAbove_succ_self {n : } (p : Fin n) :
      theorem Fin.predAbove_castSucc_of_lt {n : } (p : Fin n) (i : Fin n) (h : p < i) (hi : optParam (Fin.castSucc i 0) (_ : Fin.castSucc i 0)) :
      theorem Fin.predAbove_castSucc_of_le {n : } (p : Fin n) (i : Fin n) (h : i p) :
      @[simp]
      theorem Fin.predAbove_pred_of_lt {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : i < p) (hp : optParam (p 0) (_ : p 0)) (hi : optParam (i Fin.last n) (_ : i Fin.last n)) :
      theorem Fin.predAbove_pred_of_le {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : p i) (hp : p 0) (hi : optParam (i 0) (_ : i 0)) :
      theorem Fin.predAbove_pred_self {n : } (p : Fin (n + 1)) (hp : p 0) :
      theorem Fin.predAbove_castPred_of_lt {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : p < i) (hp : optParam (p Fin.last n) (_ : p Fin.last n)) (hi : optParam (i 0) (_ : i 0)) :
      theorem Fin.predAbove_castPred_of_le {n : } (p : Fin (n + 1)) (i : Fin (n + 1)) (h : i p) (hp : p Fin.last n) (hi : optParam (i ) (_ : i )) :
      theorem Fin.predAbove_castPred_self {n : } (p : Fin (n + 1)) (hp : p Fin.last n) :
      theorem Fin.predAbove_rev_left {n : } (p : Fin n) (i : Fin (n + 1)) :
      theorem Fin.predAbove_rev_right {n : } (p : Fin n) (i : Fin (n + 1)) :
      @[simp]
      theorem Fin.predAbove_right_zero {n : } [NeZero n] {i : Fin n} :
      @[simp]
      theorem Fin.predAbove_zero_succ {n : } [NeZero n] {i : Fin n} :
      @[simp]
      theorem Fin.succ_predAbove_zero {n : } [NeZero n] {j : Fin (n + 1)} (h : j 0) :
      @[simp]
      theorem Fin.predAbove_zero_of_ne_zero {n : } [NeZero n] {i : Fin (n + 1)} (hi : i 0) :
      theorem Fin.predAbove_zero {n : } [NeZero n] {i : Fin (n + 1)} :
      Fin.predAbove 0 i = if hi : i = 0 then 0 else Fin.pred i hi
      @[simp]
      theorem Fin.predAbove_right_last {n : } {i : Fin (n + 1)} :
      @[simp]
      @[simp]
      theorem Fin.predAbove_last_of_ne_last {n : } {i : Fin (n + 2)} (hi : i Fin.last (n + 1)) :
      theorem Fin.predAbove_last_apply {n : } {i : Fin (n + 2)} :
      Fin.predAbove (Fin.last n) i = if hi : i = Fin.last (n + 1) then Fin.last n else Fin.castPred i hi
      theorem Fin.predAbove_left_monotone {n : } (i : Fin (n + 1)) :
      Monotone fun (p : Fin n) => Fin.predAbove p i
      @[simp]
      theorem Fin.predAboveOrderHom_coe {n : } (p : Fin n) (i : Fin (n + 1)) :
      def Fin.predAboveOrderHom {n : } (p : Fin n) :
      Fin (n + 1) →o Fin n

      Fin.predAbove p as an OrderHom.

      Equations
      Instances For
        @[simp]
        theorem Fin.succAbove_predAbove {n : } {p : Fin n} {i : Fin (n + 1)} (h : i Fin.castSucc p) :

        Sending Fin (n+1) to Fin n by subtracting one from anything above p then back to Fin (n+1) with a gap around p is the identity away from p.

        @[simp]
        theorem Fin.predAbove_succAbove {n : } (p : Fin n) (i : Fin n) :

        Sending Fin n into Fin (n + 1) with a gap at p then back to Fin n by subtracting one from anything above p is the identity.

        @[simp]
        theorem Fin.succ_predAbove_succ {n : } (a : Fin n) (b : Fin (n + 1)) :

        succ commutes with predAbove.

        @[simp]

        castSucc commutes with predAbove.

        theorem Fin.rev_predAbove {n : } (p : Fin n) (i : Fin (n + 1)) :

        rev commutes with predAbove.