Initial and principal segments #
This file defines initial and principal segments.
Main definitions #
InitialSeg r s
: type of order embeddings ofr
intos
for which the range is an initial segment (i.e., ifb
belongs to the range, then anyb' < b
also belongs to the range). It is denoted byr ≼i s
.PrincipalSeg r s
: Type of order embeddings ofr
intos
for which the range is a principal segment, i.e., an interval of the form(-∞, top)
for some elementtop
. It is denoted byr ≺i s
.
Notations #
These notations belong to the InitialSeg
locale.
r ≼i s
: the type of initial segment embeddings ofr
intos
.r ≺i s
: the type of principal segment embeddings ofr
intos
.
Initial segments #
Order embeddings whose range is an initial segment of s
(i.e., if b
belongs to the range, then
any b' < b
also belongs to the range). The type of these embeddings from r
to s
is called
InitialSeg r s
, and denoted by r ≼i s
.
If r
is a relation on α
and s
in a relation on β
, then f : r ≼i s
is an order
embedding whose range is an initial segment. That is, whenever b < f a
in β
then b
is in the
range of f
.
- toFun : α → β
- inj' : Function.Injective self.toFun
- map_rel_iff' : ∀ {a b : α}, s (self.toEmbedding a) (self.toEmbedding b) ↔ r a b
- init' : ∀ (a : α) (b : β), s b (self.toRelEmbedding a) → ∃ (a' : α), self.toRelEmbedding a' = b
The order embedding is an initial segment
If r
is a relation on α
and s
in a relation on β
, then f : r ≼i s
is an order
embedding whose range is an initial segment. That is, whenever b < f a
in β
then b
is in the
range of f
.
Equations
- «term_≼i_» = Lean.ParserDescr.trailingNode `term_≼i_ 25 25 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≼i ") (Lean.ParserDescr.cat `term 26))
Equations
- ⋯ = ⋯
An order isomorphism is an initial segment
Equations
- InitialSeg.ofIso f = { toRelEmbedding := RelIso.toRelEmbedding f, init' := ⋯ }
The identity function shows that ≼i
is reflexive
Equations
- InitialSeg.refl r = { toRelEmbedding := RelEmbedding.refl r, init' := ⋯ }
Equations
- InitialSeg.instInhabitedInitialSeg r = { default := InitialSeg.refl r }
Composition of functions shows that ≼i
is transitive
Equations
- InitialSeg.trans f g = { toRelEmbedding := RelEmbedding.trans f.toRelEmbedding g.toRelEmbedding, init' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If we have order embeddings between α
and β
whose images are initial segments, and β
is a well-order then α
and β
are order-isomorphic.
Equations
- InitialSeg.antisymm f g = { toEquiv := { toFun := ⇑f, invFun := ⇑g, left_inv := ⋯, right_inv := ⋯ }, map_rel_iff' := ⋯ }
Restrict the codomain of an initial segment
Equations
- InitialSeg.codRestrict p f H = { toRelEmbedding := RelEmbedding.codRestrict p f.toRelEmbedding H, init' := ⋯ }
Initial segment from an empty type.
Equations
- InitialSeg.ofIsEmpty r s = { toRelEmbedding := RelEmbedding.ofIsEmpty r s, init' := ⋯ }
Initial segment embedding of an order r
into the disjoint union of r
and s
.
Equations
- InitialSeg.leAdd r s = { toRelEmbedding := { toEmbedding := { toFun := Sum.inl, inj' := ⋯ }, map_rel_iff' := ⋯ }, init' := ⋯ }
Principal segments #
Order embeddings whose range is a principal segment of s
(i.e., an interval of the form
(-∞, top)
for some element top
of β
). The type of these embeddings from r
to s
is called
PrincipalSeg r s
, and denoted by r ≺i s
. Principal segments are in particular initial
segments.
If r
is a relation on α
and s
in a relation on β
, then f : r ≺i s
is an order
embedding whose range is an open interval (-∞, top)
for some element top
of β
. Such order
embeddings are called principal segments
- toFun : α → β
- inj' : Function.Injective self.toFun
- map_rel_iff' : ∀ {a b : α}, s (self.toEmbedding a) (self.toEmbedding b) ↔ r a b
- top : β
The supremum of the principal segment
The image of the order embedding is the set of elements
b
such thats b top
If r
is a relation on α
and s
in a relation on β
, then f : r ≺i s
is an order
embedding whose range is an open interval (-∞, top)
for some element top
of β
. Such order
embeddings are called principal segments
Equations
- «term_≺i_» = Lean.ParserDescr.trailingNode `term_≺i_ 25 25 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≺i ") (Lean.ParserDescr.cat `term 26))
Equations
- ⋯ = ⋯
Composition of a principal segment with an initial segment, as a principal segment
Equations
- PrincipalSeg.ltLe f g = { toRelEmbedding := RelEmbedding.trans f.toRelEmbedding g.toRelEmbedding, top := g f.top, down' := ⋯ }
Composition of two principal segments as a principal segment
Equations
- PrincipalSeg.trans f g = PrincipalSeg.ltLe f { toRelEmbedding := g.toRelEmbedding, init' := ⋯ }
Composition of an order isomorphism with a principal segment, as a principal segment
Equations
- PrincipalSeg.equivLT f g = { toRelEmbedding := RelEmbedding.trans (RelIso.toRelEmbedding f) g.toRelEmbedding, top := g.top, down' := ⋯ }
Composition of a principal segment with an order isomorphism, as a principal segment
Equations
- PrincipalSeg.ltEquiv f g = { toRelEmbedding := RelEmbedding.trans f.toRelEmbedding (RelIso.toRelEmbedding g), top := g f.top, down' := ⋯ }
Given a well order s
, there is a most one principal segment embedding of r
into s
.
Equations
- ⋯ = ⋯
Any element of a well order yields a principal segment
Equations
- PrincipalSeg.ofElement r a = { toRelEmbedding := Subrel.relEmbedding r {b : α | r b a}, top := a, down' := ⋯ }
For any principal segment r ≺i s
, there is a Subrel
of s
order isomorphic to r
.
Equations
- PrincipalSeg.subrelIso f = RelIso.symm { toEquiv := (Equiv.ofInjective ⇑f.toRelEmbedding ⋯).trans (Equiv.setCongr ⋯), map_rel_iff' := ⋯ }
Restrict the codomain of a principal segment
Equations
- PrincipalSeg.codRestrict p f H H₂ = { toRelEmbedding := RelEmbedding.codRestrict p f.toRelEmbedding H, top := { val := f.top, property := H₂ }, down' := ⋯ }
Principal segment from an empty type into a type with a minimal element.
Equations
- PrincipalSeg.ofIsEmpty r H = let __src := RelEmbedding.ofIsEmpty r s; { toRelEmbedding := __src, top := b, down' := ⋯ }
Principal segment from the empty relation on PEmpty
to the empty relation on PUnit
.
Equations
- PrincipalSeg.pemptyToPunit = PrincipalSeg.ofIsEmpty EmptyRelation ⋯
A relation is well-founded iff every principal segment of it is well-founded.
In this lemma we use Subrel
to indicate its principal segments because it's usually more
convenient to use.
Properties of initial and principal segments #
To an initial segment taking values in a well order, one can associate either a principal segment (if the range is not everything, hence one can take as top the minimum of the complement of the range) or an order isomorphism (if the range is everything).
Equations
- One or more equations did not get rendered due to their size.
Composition of an initial segment taking values in a well order and a principal segment.
Equations
- InitialSeg.leLT f g = match InitialSeg.ltOrEq f with | Sum.inl f' => PrincipalSeg.trans f' g | Sum.inr f' => PrincipalSeg.equivLT f' g
Given an order embedding into a well order, collapse the order embedding by filling the
gaps, to obtain an initial segment. Here, we construct the collapsed order embedding pointwise,
but the proof of the fact that it is an initial segment will be given in collapse
.
Equations
- One or more equations did not get rendered due to their size.
Construct an initial segment from an order embedding into a well order, by collapsing it to fill the gaps.
Equations
- RelEmbedding.collapse f = { toRelEmbedding := RelEmbedding.ofMonotone (fun (a : α) => ↑(RelEmbedding.collapseF f a)) ⋯, init' := ⋯ }