Chains #
This file defines chains for an arbitrary relation and proves Hausdorff's Maximality Principle.
Main declarations #
is_chain s
: A chains
is a set of comparable elements.max_chain_spec
: Hausdorff's Maximality Principle.
Notes #
Originally ported from Isabelle/HOL. The original file was written by Jacques D. Fleuriot, Tobias Nipkow, Christian Sternagel.
super_chain s t
means that t
is a chain that strictly includes s
.
Equations
- super_chain r s t = (is_chain r t ∧ s ⊂ t)
theorem
set.subsingleton.is_chain
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
(hs : s.subsingleton) :
is_chain r s
theorem
is_chain_of_trichotomous
{α : Type u_1}
{r : α → α → Prop}
[is_trichotomous α r]
(s : set α) :
is_chain r s
theorem
is_chain_univ_iff
{α : Type u_1}
{r : α → α → Prop} :
is_chain r set.univ ↔ is_trichotomous α r
theorem
is_chain.directed_on
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
[is_refl α r]
(H : is_chain r s) :
directed_on r s
theorem
is_max_chain.is_chain
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
(h : is_max_chain r s) :
is_chain r s
theorem
is_max_chain.not_super_chain
{α : Type u_1}
{r : α → α → Prop}
{s t : set α}
(h : is_max_chain r s) :
¬super_chain r s t
Given a set s
, if there exists a chain t
strictly including s
, then succ_chain s
is one of these chains. Otherwise it is s
.
Equations
- succ_chain r s = dite (∃ (t : set α), is_chain r s ∧ super_chain r s t) (λ (h : ∃ (t : set α), is_chain r s ∧ super_chain r s t), classical.some h) (λ (h : ¬∃ (t : set α), is_chain r s ∧ super_chain r s t), s)
theorem
succ_chain_spec
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
(h : ∃ (t : set α), is_chain r s ∧ super_chain r s t) :
super_chain r s (succ_chain r s)
theorem
is_chain.succ
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
(hs : is_chain r s) :
is_chain r (succ_chain r s)
theorem
is_chain.super_chain_succ_chain
{α : Type u_1}
{r : α → α → Prop}
{s : set α}
(hs₁ : is_chain r s)
(hs₂ : ¬is_max_chain r s) :
super_chain r s (succ_chain r s)
- succ : ∀ {α : Type u_1} {r : α → α → Prop} {s : set α}, chain_closure r s → chain_closure r (succ_chain r s)
- union : ∀ {α : Type u_1} {r : α → α → Prop} {s : set (set α)}, (∀ (a : set α), a ∈ s → chain_closure r a) → chain_closure r (⋃₀s)
Predicate for whether a set is reachable from ∅
using succ_chain
and ⋃₀
.
An explicit maximal chain. max_chain
is taken to be the union of all sets in chain_closure
.
Equations
- max_chain r = ⋃₀set_of (chain_closure r)
theorem
chain_closure.total
{α : Type u_1}
{r : α → α → Prop}
{c₁ c₂ : set α}
(hc₁ : chain_closure r c₁)
(hc₂ : chain_closure r c₂) :
theorem
chain_closure.succ_fixpoint
{α : Type u_1}
{r : α → α → Prop}
{c₁ c₂ : set α}
(hc₁ : chain_closure r c₁)
(hc₂ : chain_closure r c₂)
(hc : succ_chain r c₂ = c₂) :
c₁ ⊆ c₂
theorem
chain_closure.succ_fixpoint_iff
{α : Type u_1}
{r : α → α → Prop}
{c : set α}
(hc : chain_closure r c) :
succ_chain r c = c ↔ c = max_chain r
theorem
chain_closure.is_chain
{α : Type u_1}
{r : α → α → Prop}
{c : set α}
(hc : chain_closure r c) :
is_chain r c
Hausdorff's maximality principle
There exists a maximal totally ordered set of α
.
Note that we do not require α
to be partially ordered by r
.