Chains and flags #
This file defines chains for an arbitrary relation and flags for an order and proves Hausdorff's Maximality Principle.
Main declarations #
IsChain s
: A chains
is a set of comparable elements.maxChain_spec
: Hausdorff's Maximality Principle.Flag
: The type of flags, aka maximal chains, of an order.
Notes #
Originally ported from Isabelle/HOL. The original file was written by Jacques D. Fleuriot, Tobias Nipkow, Christian Sternagel.
Chains #
SuperChain s t
means that t
is a chain that strictly includes s
.
Equations
- SuperChain r s t = (IsChain r t ∧ s ⊂ t)
Instances For
theorem
Set.Subsingleton.isChain
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
(hs : Set.Subsingleton s)
:
IsChain r s
theorem
isChain_of_trichotomous
{α : Type u_1}
{r : α → α → Prop}
[IsTrichotomous α r]
(s : Set α)
:
IsChain r s
theorem
Monotone.isChain_range
{α : Type u_1}
{β : Type u_2}
[LinearOrder α]
[Preorder β]
{f : α → β}
(hf : Monotone f)
:
theorem
IsChain.lt_of_le
{α : Type u_1}
[PartialOrder α]
{s : Set α}
(h : IsChain (fun (x x_1 : α) => x ≤ x_1) s)
:
theorem
IsChain.directedOn
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
[IsRefl α r]
(H : IsChain r s)
:
DirectedOn r s
theorem
IsMaxChain.isChain
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
(h : IsMaxChain r s)
:
IsChain r s
theorem
IsMaxChain.not_superChain
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
{t : Set α}
(h : IsMaxChain r s)
:
¬SuperChain r s t
theorem
IsMaxChain.bot_mem
{α : Type u_1}
{s : Set α}
[LE α]
[OrderBot α]
(h : IsMaxChain (fun (x x_1 : α) => x ≤ x_1) s)
:
theorem
IsMaxChain.top_mem
{α : Type u_1}
{s : Set α}
[LE α]
[OrderTop α]
(h : IsMaxChain (fun (x x_1 : α) => x ≤ x_1) s)
:
Given a set s
, if there exists a chain t
strictly including s
, then SuccChain s
is one of these chains. Otherwise it is s
.
Equations
- SuccChain r s = if h : ∃ (t : Set α), IsChain r s ∧ SuperChain r s t then Exists.choose h else s
Instances For
theorem
succChain_spec
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
(h : ∃ (t : Set α), IsChain r s ∧ SuperChain r s t)
:
SuperChain r s (SuccChain r s)
theorem
IsChain.superChain_succChain
{α : Type u_1}
{r : α → α → Prop}
{s : Set α}
(hs₁ : IsChain r s)
(hs₂ : ¬IsMaxChain r s)
:
SuperChain r s (SuccChain r s)
Predicate for whether a set is reachable from ∅
using SuccChain
and ⋃₀
.
- succ: ∀ {α : Type u_1} {r : α → α → Prop} {s : Set α}, ChainClosure r s → ChainClosure r (SuccChain r s)
- union: ∀ {α : Type u_1} {r : α → α → Prop} {s : Set (Set α)}, (∀ a ∈ s, ChainClosure r a) → ChainClosure r (⋃₀ s)
Instances For
theorem
ChainClosure.total
{α : Type u_1}
{r : α → α → Prop}
{c₁ : Set α}
{c₂ : Set α}
(hc₁ : ChainClosure r c₁)
(hc₂ : ChainClosure r c₂)
:
theorem
ChainClosure.succ_fixpoint
{α : Type u_1}
{r : α → α → Prop}
{c₁ : Set α}
{c₂ : Set α}
(hc₁ : ChainClosure r c₁)
(hc₂ : ChainClosure r c₂)
(hc : SuccChain r c₂ = c₂)
:
c₁ ⊆ c₂
theorem
ChainClosure.isChain
{α : Type u_1}
{r : α → α → Prop}
{c : Set α}
(hc : ChainClosure r c)
:
IsChain 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
.
Flags #
theorem
Flag.maxChain
{α : Type u_1}
[LE α]
(s : Flag α)
:
IsMaxChain (fun (x x_1 : α) => x ≤ x_1) ↑s
instance
Flag.instBoundedOrderSubtypeMemFlagToLEInstMembershipInstSetLikeFlagLe
{α : Type u_1}
[Preorder α]
[BoundedOrder α]
(s : Flag α)
:
BoundedOrder ↥s
instance
Flag.instLinearOrderSubtypeMemFlagToLEToPreorderInstMembershipInstSetLikeFlag
{α : Type u_1}
[PartialOrder α]
[DecidableRel fun (x x_1 : α) => x ≤ x_1]
[DecidableRel fun (x x_1 : α) => x < x_1]
(s : Flag α)
:
LinearOrder ↥s
Equations
- One or more equations did not get rendered due to their size.
instance
Flag.instUniqueFlagToLEToPreorderToPartialOrderToSemilatticeInfToLatticeInstDistribLattice
{α : Type u_1}
[LinearOrder α]
:
Equations
- Flag.instUniqueFlagToLEToPreorderToPartialOrderToSemilatticeInfToLatticeInstDistribLattice = { toInhabited := { default := { carrier := Set.univ, Chain' := ⋯, max_chain' := ⋯ } }, uniq := ⋯ }