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) ) :
    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) ) :
    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' := }
    @[simp]
    theorem Fin.succAboveEmb_apply {n : } (p : Fin (n + 1)) (i : Fin n) :
    def Fin.succAboveEmb {n : } (p : Fin (n + 1)) :
    Fin n ↪o Fin (n + 1)

    Fin.succAbove p as an OrderEmbedding.

    Equations
    Instances For
      @[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) ) :
      theorem Fin.pred_succAbove {n : } (x : Fin n) (y : Fin (n + 1)) (h : y Fin.castSucc x) (h' : optParam (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) ) :

      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)) ) :

      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) ) :
        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) ) :
        theorem Fin.predAbove_of_castSucc_lt {n : } (p : Fin n) (i : Fin (n + 1)) (h : Fin.castSucc p < i) (hi : optParam (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) ) :
        theorem Fin.predAbove_succ_of_lt {n : } (p : Fin n) (i : Fin n) (h : i < p) (hi : optParam (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) ) :
        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) ) (hi : optParam (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) ) :
        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) ) (hi : optParam (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 ) ) :
        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.