# Documentation

Mathlib.Order.WellFounded

# Well-founded relations #

A relation is well-founded if it can be used for induction: for each x, (∀ y, r y x → P y) → P x implies P x. Well-founded relations can be used for induction and recursion, including construction of fixed points in the space of dependent functions Π x : α , β x.

The predicate WellFounded is defined in the core library. In this file we prove some extra lemmas and provide a few new definitions: WellFounded.min, WellFounded.sup, and WellFounded.succ, and an induction principle WellFounded.induction_bot.

theorem WellFounded.isAsymm {α : Type u_1} {r : ααProp} (h : ) :
IsAsymm α r
theorem WellFounded.isIrrefl {α : Type u_1} {r : ααProp} (h : ) :
instance WellFounded.instIsAsymmRel {α : Type u_1} :
IsAsymm α WellFoundedRelation.rel
theorem WellFounded.mono {α : Type u_1} {r : ααProp} {r' : ααProp} (hr : ) (h : (a b : α) → r' a br a b) :
theorem WellFounded.onFun {α : Sort u_4} {β : Sort u_5} {r : ββProp} {f : αβ} :
WellFounded (r on f)
theorem WellFounded.has_min {α : Type u_4} {r : ααProp} (H : ) (s : Set α) :
a, a s ∀ (x : α), x s¬r x a

If r is a well-founded relation, then any nonempty set has a minimal element with respect to r.

noncomputable def WellFounded.min {α : Type u_1} {r : ααProp} (H : ) (s : Set α) (h : ) :
α

A minimal element of a nonempty set in a well-founded order.

If you're working with a nonempty linear order, consider defining a ConditionallyCompleteLinearOrderBot instance via WellFounded.conditionallyCompleteLinearOrderWithBot and using Inf instead.

Instances For
theorem WellFounded.min_mem {α : Type u_1} {r : ααProp} (H : ) (s : Set α) (h : ) :
s
theorem WellFounded.not_lt_min {α : Type u_1} {r : ααProp} (H : ) (s : Set α) (h : ) {x : α} (hx : x s) :
¬r x ()
theorem WellFounded.wellFounded_iff_has_min {α : Type u_1} {r : ααProp} :
∀ (s : Set α), m, m s ∀ (x : α), x s¬r x m
noncomputable def WellFounded.sup {α : Type u_1} {r : ααProp} (wf : ) (s : Set α) (h : ) :
α

The supremum of a bounded, well-founded order

Instances For
theorem WellFounded.lt_sup {α : Type u_1} {r : ααProp} (wf : ) {s : Set α} (h : ) {x : α} (hx : x s) :
r x (WellFounded.sup wf s h)
noncomputable def WellFounded.succ {α : Type u_1} {r : ααProp} (wf : ) (x : α) :
α

A successor of an element x in a well-founded order is a minimal element y such that x < y if one exists. Otherwise it is x itself.

Instances For
theorem WellFounded.lt_succ {α : Type u_1} {r : ααProp} (wf : ) {x : α} (h : y, r x y) :
r x ()
theorem WellFounded.lt_succ_iff {α : Type u_1} {r : ααProp} [wo : ] {x : α} (h : y, r x y) (y : α) :
r y (WellFounded.succ (_ : ) x) r y x y = x
theorem WellFounded.min_le {β : Type u_2} [] (h : WellFounded fun x x_1 => x < x_1) {x : β} {s : Set β} (hx : x s) (hne : optParam () (_ : x, x s)) :
theorem WellFounded.eq_strictMono_iff_eq_range {β : Type u_2} {γ : Type u_3} [] (h : WellFounded fun x x_1 => x < x_1) [] {f : βγ} {g : βγ} (hf : ) (hg : ) :
f = g
theorem WellFounded.self_le_of_strictMono {β : Type u_2} [] (h : WellFounded fun x x_1 => x < x_1) {f : ββ} (hf : ) (n : β) :
n f n
noncomputable def Function.argmin {α : Type u_1} {β : Type u_2} (f : αβ) [LT β] (h : WellFounded fun x x_1 => x < x_1) [] :
α

Given a function f : α → β where β carries a well-founded <, this is an element of α whose image under f is minimal in the sense of Function.not_lt_argmin.

Instances For
theorem Function.not_lt_argmin {α : Type u_1} {β : Type u_2} (f : αβ) [LT β] (h : WellFounded fun x x_1 => x < x_1) [] (a : α) :
¬f a < f ()
noncomputable def Function.argminOn {α : Type u_1} {β : Type u_2} (f : αβ) [LT β] (h : WellFounded fun x x_1 => x < x_1) (s : Set α) (hs : ) :
α

Given a function f : α → β where β carries a well-founded <, and a non-empty subset s of α, this is an element of s whose image under f is minimal in the sense of Function.not_lt_argminOn.

Instances For
@[simp]
theorem Function.argminOn_mem {α : Type u_1} {β : Type u_2} (f : αβ) [LT β] (h : WellFounded fun x x_1 => x < x_1) (s : Set α) (hs : ) :
theorem Function.not_lt_argminOn {α : Type u_1} {β : Type u_2} (f : αβ) [LT β] (h : WellFounded fun x x_1 => x < x_1) (s : Set α) {a : α} (ha : a s) (hs : optParam () (_ : )) :
¬f a < f (Function.argminOn f h s hs)
theorem Function.argmin_le {α : Type u_1} {β : Type u_2} (f : αβ) [] (h : WellFounded fun x x_1 => x < x_1) (a : α) [] :
f () f a
theorem Function.argminOn_le {α : Type u_1} {β : Type u_2} (f : αβ) [] (h : WellFounded fun x x_1 => x < x_1) (s : Set α) {a : α} (ha : a s) (hs : optParam () (_ : )) :
f (Function.argminOn f h s hs) f a
theorem Acc.induction_bot' {α : Sort u_4} {β : Sort u_5} {r : ααProp} {a : α} {bot : α} (ha : Acc r a) {C : βProp} {f : αβ} (ih : ∀ (b : α), f b f botC (f b)c, r c b C (f c)) :
C (f a)C (f bot)

Let r be a relation on α, let f : α → β be a function, let C : β → Prop, and let bot : α. This induction principle shows that C (f bot) holds, given that

• some a that is accessible by r satisfies C (f a), and
• for each b such that f b ≠ f bot and C (f b) holds, there is c satisfying r c b and C (f c).
theorem Acc.induction_bot {α : Sort u_4} {r : ααProp} {a : α} {bot : α} (ha : Acc r a) {C : αProp} (ih : ∀ (b : α), b botC bc, r c b C c) :
C aC bot

Let r be a relation on α, let C : α → Prop and let bot : α. This induction principle shows that C bot holds, given that

• some a that is accessible by r satisfies C a, and
• for each b ≠ bot such that C b holds, there is c satisfying r c b and C c.
theorem WellFounded.induction_bot' {α : Sort u_4} {β : Sort u_5} {r : ααProp} (hwf : ) {a : α} {bot : α} {C : βProp} {f : αβ} (ih : ∀ (b : α), f b f botC (f b)c, r c b C (f c)) :
C (f a)C (f bot)

Let r be a well-founded relation on α, let f : α → β be a function, let C : β → Prop, and let bot : α. This induction principle shows that C (f bot) holds, given that

• some a satisfies C (f a), and
• for each b such that f b ≠ f bot and C (f b) holds, there is c satisfying r c b and C (f c).
theorem WellFounded.induction_bot {α : Sort u_4} {r : ααProp} (hwf : ) {a : α} {bot : α} {C : αProp} (ih : ∀ (b : α), b botC bc, r c b C c) :
C aC bot

Let r be a well-founded relation on α, let C : α → Prop, and let bot : α. This induction principle shows that C bot holds, given that

• some a satisfies C a, and
• for each b that satisfies C b, there is c satisfying r c b and C c.

The naming is inspired by the fact that when r is transitive, it follows that bot is the smallest element w.r.t. r that satisfies C.