Documentation

Mathlib.Order.SuccPred.Limit

Successor and predecessor limits #

We define the predicate Order.IsSuccPrelimit for "successor pre-limits", values that don't cover any others. They are so named since they can't be the successors of anything smaller. We define Order.IsPredPrelimit analogously, and prove basic results.

For some applications, it is desirable to exclude minimal elements from being successor limits, or maximal elements from being predecessor limits. As such, we also provide Order.IsSuccLimit and Order.IsPredLimit, which exclude these cases.

Successor limits #

def Order.IsSuccPrelimit {α : Type u_1} [LT α] (a : α) :

A successor pre-limit is a value that doesn't cover any other.

It's so named because in a successor order, a successor pre-limit can't be the successor of anything smaller.

Use IsSuccLimit if you want to exclude the case of a minimal element.

Equations
    Instances For
      def Order.IsPredPrelimit {α : Type u_1} [LT α] (a : α) :

      A predecessor pre-limit is a value that isn't covered by any other.

      It's so named because in a predecessor order, a predecessor pre-limit can't be the predecessor of anything smaller.

      Use IsPredLimit to exclude the case of a maximal element.

      Equations
        Instances For
          theorem Order.not_isSuccPrelimit_iff_exists_covBy {α : Type u_1} [LT α] (a : α) :
          ¬IsSuccPrelimit a ∃ (b : α), b a
          theorem Order.not_isPredPrelimit_iff_exists_covBy {α : Type u_1} [LT α] (a : α) :
          ¬IsPredPrelimit a ∃ (b : α), a b
          @[simp]
          theorem Order.IsSuccPrelimit.of_dense {α : Type u_1} [LT α] [DenselyOrdered α] (a : α) :
          @[simp]
          theorem Order.IsPredPrelimit.of_dense {α : Type u_1} [LT α] [DenselyOrdered α] (a : α) :

          Alias of the reverse direction of Order.isSuccPrelimit_toDual_iff.

          def Order.IsSuccLimit {α : Type u_1} [Preorder α] (a : α) :

          A successor limit is a value that isn't minimal and doesn't cover any other.

          It's so named because in a successor order, a successor limit can't be the successor of anything smaller.

          Use IsSuccPrelimit if you want to include the case of a minimal element.

          Equations
            Instances For
              def Order.IsPredLimit {α : Type u_1} [Preorder α] (a : α) :

              A predecessor limit is a value that isn't maximal and doesn't cover any other.

              It's so named because in a predecessor order, a predecessor limit can't be the predecessor of anything larger.

              Use IsPredPrelimit if you want to include the case of a maximal element.

              Equations
                Instances For
                  theorem Order.IsSuccLimit.ne_bot {α : Type u_1} {a : α} [Preorder α] [OrderBot α] (h : IsSuccLimit a) :
                  theorem Order.IsPredLimit.ne_top {α : Type u_1} {a : α} [Preorder α] [OrderTop α] (h : IsPredLimit a) :
                  theorem Order.IsSuccLimit.isMax {α : Type u_1} {a : α} [Preorder α] [SuccOrder α] (h : IsSuccLimit (succ a)) :
                  theorem Order.IsPredLimit.isMin {α : Type u_1} {a : α} [Preorder α] [PredOrder α] (h : IsPredLimit (pred a)) :
                  noncomputable def Order.IsSuccPrelimit.mid {α : Type u_1} [Preorder α] {i j : α} (hi : IsSuccPrelimit i) (hj : j < i) :
                  (Set.Ioo j i)

                  Given j < i with i a prelimit, IsSuccPrelimit.mid picks an arbitrary element strictly between j and i.

                  Equations
                    Instances For
                      theorem Order.IsSuccPrelimit.succ_ne {α : Type u_1} {a : α} [Preorder α] [SuccOrder α] [NoMaxOrder α] (h : IsSuccPrelimit a) (b : α) :
                      succ b a
                      theorem Order.IsPredPrelimit.pred_ne {α : Type u_1} {a : α} [Preorder α] [PredOrder α] [NoMinOrder α] (h : IsPredPrelimit a) (b : α) :
                      pred b a
                      theorem Order.IsSuccLimit.succ_ne {α : Type u_1} {a : α} [Preorder α] [SuccOrder α] [NoMaxOrder α] (h : IsSuccLimit a) (b : α) :
                      succ b a
                      theorem Order.IsPredLimit.pred_ne {α : Type u_1} {a : α} [Preorder α] [PredOrder α] [NoMinOrder α] (h : IsPredLimit a) (b : α) :
                      pred b a
                      @[simp]
                      theorem Order.not_isSuccLimit_succ {α : Type u_1} [Preorder α] [SuccOrder α] [NoMaxOrder α] (a : α) :
                      @[simp]
                      theorem Order.not_isPredLimit_pred {α : Type u_1} [Preorder α] [PredOrder α] [NoMinOrder α] (a : α) :
                      theorem Order.IsSuccLimit.bot_lt {α : Type u_1} {a : α} [PartialOrder α] [OrderBot α] (h : IsSuccLimit a) :
                      < a
                      theorem Order.IsPredLimit.lt_top {α : Type u_1} {a : α} [PartialOrder α] [OrderTop α] (h : IsPredLimit a) :
                      a <
                      theorem Order.isSuccPrelimit_of_succ_ne {α : Type u_1} {a : α} [PartialOrder α] [SuccOrder α] (h : ∀ (b : α), succ b a) :
                      theorem Order.isPredPrelimit_of_pred_ne {α : Type u_1} {a : α} [PartialOrder α] [PredOrder α] (h : ∀ (b : α), pred b a) :
                      theorem Order.not_isSuccPrelimit_iff {α : Type u_1} {a : α} [PartialOrder α] [SuccOrder α] :
                      ¬IsSuccPrelimit a ∃ (b : α), ¬IsMax b succ b = a
                      theorem Order.not_isPredPrelimit_iff {α : Type u_1} {a : α} [PartialOrder α] [PredOrder α] :
                      ¬IsPredPrelimit a ∃ (b : α), ¬IsMin b pred b = a

                      See not_isSuccPrelimit_iff for a version that states that a is a successor of a value other than itself.

                      theorem Order.isSuccPrelimit_of_succ_lt {α : Type u_1} {b : α} [PartialOrder α] [SuccOrder α] (H : a < b, succ a < b) :
                      theorem Order.isPredPrelimit_of_lt_pred {α : Type u_1} {b : α} [PartialOrder α] [PredOrder α] (H : ∀ (a : α), b < ab < pred a) :
                      @[deprecated Order.isPredPrelimit_of_lt_pred (since := "2025-12-20")]
                      theorem Order.isPredPrelimit_of_pred_lt {α : Type u_1} {b : α} [PartialOrder α] [PredOrder α] (H : ∀ (a : α), b < ab < pred a) :

                      Alias of Order.isPredPrelimit_of_lt_pred.

                      theorem Order.IsSuccPrelimit.succ_lt {α : Type u_1} {a b : α} [PartialOrder α] [SuccOrder α] (hb : IsSuccPrelimit b) (ha : a < b) :
                      succ a < b
                      theorem Order.IsPredPrelimit.lt_pred {α : Type u_1} {a b : α} [PartialOrder α] [PredOrder α] (hb : IsPredPrelimit b) (ha : b < a) :
                      b < pred a
                      theorem Order.IsSuccLimit.succ_lt {α : Type u_1} {a b : α} [PartialOrder α] [SuccOrder α] (hb : IsSuccLimit b) (ha : a < b) :
                      succ a < b
                      theorem Order.IsPredLimit.lt_pred {α : Type u_1} {a b : α} [PartialOrder α] [PredOrder α] (hb : IsPredLimit b) (ha : b < a) :
                      b < pred a
                      theorem Order.IsSuccPrelimit.succ_lt_iff {α : Type u_1} {a b : α} [PartialOrder α] [SuccOrder α] (hb : IsSuccPrelimit b) :
                      succ a < b a < b
                      theorem Order.IsPredPrelimit.lt_pred_iff {α : Type u_1} {a b : α} [PartialOrder α] [PredOrder α] (hb : IsPredPrelimit b) :
                      b < pred a b < a
                      theorem Order.IsSuccLimit.succ_lt_iff {α : Type u_1} {a b : α} [PartialOrder α] [SuccOrder α] (hb : IsSuccLimit b) :
                      succ a < b a < b
                      theorem Order.IsPredLimit.lt_pred_iff {α : Type u_1} {a b : α} [PartialOrder α] [PredOrder α] (hb : IsPredLimit b) :
                      b < pred a b < a
                      theorem Order.isPredPrelimit_iff_lt_pred {α : Type u_1} {b : α} [PartialOrder α] [PredOrder α] :
                      IsPredPrelimit b ∀ (a : α), b < ab < pred a
                      theorem Order.isSuccPrelimit_iff_succ_ne {α : Type u_1} {a : α} [PartialOrder α] [SuccOrder α] [NoMaxOrder α] :
                      IsSuccPrelimit a ∀ (b : α), succ b a
                      theorem Order.isPredPrelimit_iff_pred_ne {α : Type u_1} {a : α} [PartialOrder α] [PredOrder α] [NoMinOrder α] :
                      IsPredPrelimit a ∀ (b : α), pred b a
                      theorem Order.IsSuccPrelimit.le_iff_forall_le {α : Type u_1} {a b : α} [LinearOrder α] (h : IsSuccPrelimit a) :
                      a b c < a, c b
                      theorem Order.IsSuccLimit.le_iff_forall_le {α : Type u_1} {a b : α} [LinearOrder α] (h : IsSuccLimit a) :
                      a b c < a, c b
                      theorem Order.IsSuccPrelimit.lt_iff_exists_lt {α : Type u_1} {a b : α} [LinearOrder α] (h : IsSuccPrelimit b) :
                      a < b c < b, a < c
                      theorem Order.IsSuccLimit.lt_iff_exists_lt {α : Type u_1} {a b : α} [LinearOrder α] (h : IsSuccLimit b) :
                      a < b c < b, a < c
                      theorem IsLUB.isSuccPrelimit_of_notMem {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsLUB s a) (ha : as) :
                      theorem IsLUB.mem_of_not_isSuccPrelimit {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsLUB s a) (ha : ¬Order.IsSuccPrelimit a) :
                      a s
                      theorem IsLUB.isSuccLimit_of_notMem {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsLUB s a) (hs' : s.Nonempty) (ha : as) :
                      theorem IsLUB.mem_of_not_isSuccLimit {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsLUB s a) (hs' : s.Nonempty) (ha : ¬Order.IsSuccLimit a) :
                      a s
                      theorem Order.IsSuccLimit.isLUB_Iio {α : Type u_1} {a : α} [LinearOrder α] (ha : IsSuccLimit a) :
                      theorem Order.IsSuccPrelimit.le_succ_iff {α : Type u_1} {a b : α} [LinearOrder α] [SuccOrder α] (hb : IsSuccPrelimit b) :
                      b succ a b a
                      theorem Order.IsPredPrelimit.pred_le_iff {α : Type u_1} {a b : α} [LinearOrder α] [PredOrder α] (hb : IsPredPrelimit b) :
                      pred a b a b
                      theorem Order.IsSuccLimit.le_succ_iff {α : Type u_1} {a b : α} [LinearOrder α] [SuccOrder α] (hb : IsSuccLimit b) :
                      b succ a b a
                      theorem Order.IsPredLimit.pred_le_iff {α : Type u_1} {a b : α} [LinearOrder α] [PredOrder α] (hb : IsPredLimit b) :
                      pred a b a b

                      Predecessor limits #

                      theorem Order.IsPredLimit.dual {α : Type u_1} {a : α} [Preorder α] :

                      Alias of the reverse direction of Order.isSuccLimit_toDual_iff.

                      theorem Order.IsSuccLimit.dual {α : Type u_1} {a : α} [Preorder α] :

                      Alias of the reverse direction of Order.isPredLimit_toDual_iff.

                      theorem Order.IsPredPrelimit.le_iff_forall_le {α : Type u_1} {a b : α} [LinearOrder α] (h : IsPredPrelimit a) :
                      b a ∀ ⦃c : α⦄, a < cb c
                      theorem Order.IsPredLimit.le_iff_forall_le {α : Type u_1} {a b : α} [LinearOrder α] (h : IsPredLimit a) :
                      b a ∀ ⦃c : α⦄, a < cb c
                      theorem Order.IsPredPrelimit.lt_iff_exists_lt {α : Type u_1} {a b : α} [LinearOrder α] (h : IsPredPrelimit b) :
                      b < a ∃ (c : α), b < c c < a
                      theorem Order.IsPredLimit.lt_iff_exists_lt {α : Type u_1} {a b : α} [LinearOrder α] (h : IsPredLimit b) :
                      b < a ∃ (c : α), b < c c < a
                      theorem IsGLB.isPredPrelimit_of_notMem {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsGLB s a) (ha : as) :
                      theorem IsGLB.mem_of_not_isPredPrelimit {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsGLB s a) (ha : ¬Order.IsPredPrelimit a) :
                      a s
                      theorem IsGLB.isPredLimit_of_notMem {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsGLB s a) (hs' : s.Nonempty) (ha : as) :
                      theorem IsGLB.mem_of_not_isPredLimit {α : Type u_1} {a : α} [LinearOrder α] {s : Set α} (hs : IsGLB s a) (hs' : s.Nonempty) (ha : ¬Order.IsPredLimit a) :
                      a s
                      theorem Order.IsPredLimit.isGLB_Ioi {α : Type u_1} {a : α} [LinearOrder α] (ha : IsPredLimit a) :

                      Induction principles #

                      noncomputable def Order.isSuccPrelimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [SuccOrder α] (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccPrelimit : (a : α) → IsSuccPrelimit amotive a) :
                      motive b

                      A value can be built by building it on successors and successor pre-limits.

                      Equations
                        Instances For
                          noncomputable def Order.isPredPrelimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [PredOrder α] (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredPrelimit : (a : α) → IsPredPrelimit amotive a) :
                          motive b

                          A value can be built by building it on predecessors and predecessor pre-limits.

                          Equations
                            Instances For
                              theorem Order.isSuccPrelimitRecOn_of_isSuccPrelimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [SuccOrder α] (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccPrelimit : (a : α) → IsSuccPrelimit amotive a) (hb : IsSuccPrelimit b) :
                              isSuccPrelimitRecOn b succ isSuccPrelimit = isSuccPrelimit b hb
                              theorem Order.isPredPrelimitRecOn_of_isPredPrelimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [PredOrder α] (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredPrelimit : (a : α) → IsPredPrelimit amotive a) (hb : IsPredPrelimit b) :
                              isPredPrelimitRecOn b pred isPredPrelimit = isPredPrelimit b hb
                              theorem Order.isSuccPrelimitRecOn_succ_of_not_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccPrelimit : (a : α) → IsSuccPrelimit amotive a) (hb : ¬IsMax b) :
                              isSuccPrelimitRecOn (Order.succ b) succ isSuccPrelimit = succ b hb
                              theorem Order.isPredPrelimitRecOn_pred_of_not_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [PredOrder α] (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredPrelimit : (a : α) → IsPredPrelimit amotive a) (hb : ¬IsMin b) :
                              isPredPrelimitRecOn (Order.pred b) pred isPredPrelimit = pred b hb
                              @[simp]
                              theorem Order.isSuccPrelimitRecOn_succ {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccPrelimit : (a : α) → IsSuccPrelimit amotive a) [NoMaxOrder α] (b : α) :
                              isSuccPrelimitRecOn (Order.succ b) succ isSuccPrelimit = succ b
                              @[simp]
                              theorem Order.isPredPrelimitRecOn_pred {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [PredOrder α] (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredPrelimit : (a : α) → IsPredPrelimit amotive a) [NoMinOrder α] (b : α) :
                              isPredPrelimitRecOn (Order.pred b) pred isPredPrelimit = pred b
                              noncomputable def Order.isSuccLimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [SuccOrder α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccLimit : (a : α) → IsSuccLimit amotive a) :
                              motive b

                              A value can be built by building it on minimal elements, successors, and successor limits.

                              Equations
                                Instances For
                                  noncomputable def Order.isPredLimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [PredOrder α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredLimit : (a : α) → IsPredLimit amotive a) :
                                  motive b

                                  A value can be built by building it on maximal elements, predecessors, and predecessor limits.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem Order.isSuccLimitRecOn_of_isSuccLimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [SuccOrder α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccLimit : (a : α) → IsSuccLimit amotive a) (hb : IsSuccLimit b) :
                                      isSuccLimitRecOn b isMin succ isSuccLimit = isSuccLimit b hb
                                      @[simp]
                                      theorem Order.isPredLimitRecOn_of_isPredLimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [PredOrder α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredLimit : (a : α) → IsPredLimit amotive a) (hb : IsPredLimit b) :
                                      isPredLimitRecOn b isMax pred isPredLimit = isPredLimit b hb
                                      theorem Order.isSuccLimitRecOn_succ_of_not_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccLimit : (a : α) → IsSuccLimit amotive a) (hb : ¬IsMax b) :
                                      isSuccLimitRecOn (Order.succ b) isMin succ isSuccLimit = succ b hb
                                      theorem Order.isPredLimitRecOn_pred_of_not_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [PredOrder α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredLimit : (a : α) → IsPredLimit amotive a) (hb : ¬IsMin b) :
                                      isPredLimitRecOn (Order.pred b) isMax pred isPredLimit = pred b hb
                                      @[simp]
                                      theorem Order.isSuccLimitRecOn_succ {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccLimit : (a : α) → IsSuccLimit amotive a) [NoMaxOrder α] (b : α) :
                                      isSuccLimitRecOn (Order.succ b) isMin succ isSuccLimit = succ b
                                      @[simp]
                                      theorem Order.isPredLimitRecOn_pred {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [PredOrder α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredLimit : (a : α) → IsPredLimit amotive a) [NoMinOrder α] (b : α) :
                                      isPredLimitRecOn (Order.pred b) isMax pred isPredLimit = pred b
                                      theorem Order.isSuccLimitRecOn_of_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive (succ a)) (isSuccLimit : (a : α) → IsSuccLimit amotive a) (hb : IsMin b) :
                                      isSuccLimitRecOn b isMin succ isSuccLimit = isMin b hb
                                      theorem Order.isPredLimitRecOn_of_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [PredOrder α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive (pred a)) (isPredLimit : (a : α) → IsPredLimit amotive a) (hb : IsMax b) :
                                      isPredLimitRecOn b isMax pred isPredLimit = isMax b hb
                                      noncomputable def SuccOrder.prelimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [SuccOrder α] [WellFoundedLT α] (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccPrelimit : (a : α) → Order.IsSuccPrelimit a((b : α) → b < amotive b)motive a) :
                                      motive b

                                      Recursion principle on a well-founded partial SuccOrder.

                                      Equations
                                        Instances For
                                          noncomputable def PredOrder.prelimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [PredOrder α] [WellFoundedGT α] (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredPrelimit : (a : α) → Order.IsPredPrelimit a((b : α) → a < bmotive b)motive a) :
                                          motive b

                                          Recursion principle on a well-founded partial PredOrder.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem SuccOrder.prelimitRecOn_of_isSuccPrelimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [SuccOrder α] [WellFoundedLT α] (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccPrelimit : (a : α) → Order.IsSuccPrelimit a((b : α) → b < amotive b)motive a) (hb : Order.IsSuccPrelimit b) :
                                              prelimitRecOn b succ isSuccPrelimit = isSuccPrelimit b hb fun (x : α) (x_1 : x < b) => prelimitRecOn x succ isSuccPrelimit
                                              @[simp]
                                              theorem PredOrder.prelimitRecOn_of_isPredPrelimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [PredOrder α] [WellFoundedGT α] (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredPrelimit : (a : α) → Order.IsPredPrelimit a((b : α) → a < bmotive b)motive a) (hb : Order.IsPredPrelimit b) :
                                              prelimitRecOn b pred isPredPrelimit = isPredPrelimit b hb fun (x : α) (x_1 : b < x) => prelimitRecOn x pred isPredPrelimit
                                              theorem SuccOrder.prelimitRecOn_succ_of_not_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] [WellFoundedLT α] (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccPrelimit : (a : α) → Order.IsSuccPrelimit a((b : α) → b < amotive b)motive a) (hb : ¬IsMax b) :
                                              prelimitRecOn (Order.succ b) succ isSuccPrelimit = succ b hb (prelimitRecOn b succ isSuccPrelimit)
                                              theorem PredOrder.prelimitRecOn_pred_of_not_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [PredOrder α] [WellFoundedGT α] (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredPrelimit : (a : α) → Order.IsPredPrelimit a((b : α) → a < bmotive b)motive a) (hb : ¬IsMin b) :
                                              prelimitRecOn (Order.pred b) pred isPredPrelimit = pred b hb (prelimitRecOn b pred isPredPrelimit)
                                              @[simp]
                                              theorem SuccOrder.prelimitRecOn_succ {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] [WellFoundedLT α] (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccPrelimit : (a : α) → Order.IsSuccPrelimit a((b : α) → b < amotive b)motive a) [NoMaxOrder α] (b : α) :
                                              prelimitRecOn (Order.succ b) succ isSuccPrelimit = succ b (prelimitRecOn b succ isSuccPrelimit)
                                              @[simp]
                                              theorem PredOrder.prelimitRecOn_pred {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [PredOrder α] [WellFoundedGT α] (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredPrelimit : (a : α) → Order.IsPredPrelimit a((b : α) → a < bmotive b)motive a) [NoMinOrder α] (b : α) :
                                              prelimitRecOn (Order.pred b) pred isPredPrelimit = pred b (prelimitRecOn b pred isPredPrelimit)
                                              noncomputable def SuccOrder.limitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [SuccOrder α] [WellFoundedLT α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccLimit : (a : α) → Order.IsSuccLimit a((b : α) → b < amotive b)motive a) :
                                              motive b

                                              Recursion principle on a well-founded partial SuccOrder, separating out the case of a minimal element.

                                              Equations
                                                Instances For
                                                  noncomputable def PredOrder.colimitRecOn {α : Type u_1} (b : α) {motive : αSort u_2} [PartialOrder α] [PredOrder α] [WellFoundedGT α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredLimit : (a : α) → Order.IsPredLimit a((b : α) → a < bmotive b)motive a) :
                                                  motive b

                                                  Recursion principle on a well-founded partial PredOrder, separating out the case of a minimal element.

                                                  Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem SuccOrder.limitRecOn_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [SuccOrder α] [WellFoundedLT α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccLimit : (a : α) → Order.IsSuccLimit a((b : α) → b < amotive b)motive a) (hb : IsMin b) :
                                                      limitRecOn b isMin succ isSuccLimit = isMin b hb
                                                      @[simp]
                                                      theorem PredOrder.colimitRecOn_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [PredOrder α] [WellFoundedGT α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredLimit : (a : α) → Order.IsPredLimit a((b : α) → a < bmotive b)motive a) (hb : IsMax b) :
                                                      colimitRecOn b isMax pred isPredLimit = isMax b hb
                                                      @[simp]
                                                      theorem SuccOrder.limitRecOn_of_isSuccLimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [SuccOrder α] [WellFoundedLT α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccLimit : (a : α) → Order.IsSuccLimit a((b : α) → b < amotive b)motive a) (hb : Order.IsSuccLimit b) :
                                                      limitRecOn b isMin succ isSuccLimit = isSuccLimit b hb fun (x : α) (x_1 : x < b) => limitRecOn x isMin succ isSuccLimit
                                                      @[simp]
                                                      theorem PredOrder.colimitRecOn_of_isPredLimit {α : Type u_1} {b : α} {motive : αSort u_2} [PartialOrder α] [PredOrder α] [WellFoundedGT α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredLimit : (a : α) → Order.IsPredLimit a((b : α) → a < bmotive b)motive a) (hb : Order.IsPredLimit b) :
                                                      colimitRecOn b isMax pred isPredLimit = isPredLimit b hb fun (x : α) (x_1 : b < x) => colimitRecOn x isMax pred isPredLimit
                                                      theorem SuccOrder.limitRecOn_succ_of_not_isMax {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] [WellFoundedLT α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccLimit : (a : α) → Order.IsSuccLimit a((b : α) → b < amotive b)motive a) (hb : ¬IsMax b) :
                                                      limitRecOn (Order.succ b) isMin succ isSuccLimit = succ b hb (limitRecOn b isMin succ isSuccLimit)
                                                      theorem PredOrder.colimitRecOn_pred_of_not_isMin {α : Type u_1} {b : α} {motive : αSort u_2} [LinearOrder α] [PredOrder α] [WellFoundedGT α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredLimit : (a : α) → Order.IsPredLimit a((b : α) → a < bmotive b)motive a) (hb : ¬IsMin b) :
                                                      colimitRecOn (Order.pred b) isMax pred isPredLimit = pred b hb (colimitRecOn b isMax pred isPredLimit)
                                                      @[simp]
                                                      theorem SuccOrder.limitRecOn_succ {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [SuccOrder α] [WellFoundedLT α] (isMin : (a : α) → IsMin amotive a) (succ : (a : α) → ¬IsMax amotive amotive (Order.succ a)) (isSuccLimit : (a : α) → Order.IsSuccLimit a((b : α) → b < amotive b)motive a) [NoMaxOrder α] (b : α) :
                                                      limitRecOn (Order.succ b) isMin succ isSuccLimit = succ b (limitRecOn b isMin succ isSuccLimit)
                                                      @[simp]
                                                      theorem PredOrder.colimitRecOn_pred {α : Type u_1} {motive : αSort u_2} [LinearOrder α] [PredOrder α] [WellFoundedGT α] (isMax : (a : α) → IsMax amotive a) (pred : (a : α) → ¬IsMin amotive amotive (Order.pred a)) (isPredLimit : (a : α) → Order.IsPredLimit a((b : α) → a < bmotive b)motive a) [NoMinOrder α] (b : α) :
                                                      colimitRecOn (Order.pred b) isMax pred isPredLimit = pred b (colimitRecOn b isMax pred isPredLimit)