Green's Relations Definitions #
This file defines Green's preorders and equivalence relations on semigroups.
We prove basic theorems, like Semigroup.rEquiv_lEquiv_comm, which are necessary
for instantiating DEquiv as an equivalence relation with Semigroup.DEquiv.isEquivalence.
We also prove simp lemmas at the end of the file.
Main definitions #
In the following definitions, S is a semigroup and x y : S.
Green's Preorder Relations
Semigroup.RPreorder-xis π‘-belowy(notatedx β€π‘ y) iff there exists az : WithOne Ssuch thatβx = βy * zSemigroup.LPreorder-xis π-belowy(notatedx β€π y) iff there exists az : WithOne Ssuch thatβx = z * βySemigroup.JPreorder-xis π-belowy(notatedx β€π y) iff there existsz w : WithOne Ssuch thatβx = z * βy * wSemigroup.HPreorder-xis π-belowy(notatedx β€π y) iffx β€π yandx β€π‘ y
We instantiate each preorder in the unbundled IsPreorder Class:
Semigroup.RPreorder.isPreorder- instance for[IsPreorder S RPreorder]Semigroup.LPreorder.isPreorder- instance for[IsPreorder S LPreorder]Semigroup.JPreorder.isPreorder- instance for[IsPreorder S JPreorder]Semigroup.HPreorder.isPreorder- instance for[IsPreorder S HPreorder]
Green's Equivalence Relations
We define the π‘, π, π, π relations as the
symmetric closure of their corresponding preorders:
Semigroup.REquiv-x π‘ yiffx β€π‘ yandy β€π‘ xSemigroup.LEquiv-x π yiffx β€π yandy β€π xSemigroup.JEquiv-x π yiffx β€π yandy β€π xSemigroup.HEquiv-x π yiffx β€π yandy β€π x
The π relation is defined as the composition of π‘ and π:
Semigroup.DEquiv-x π yiffβ z, x π‘ z β§ z π y
Equivalence classes of elements as sets:
Semigroup.REquiv.set- Notatedβ¦xβ§π‘, theSet Sof elements π‘-related toxSemigroup.LEquiv.set- Notatedβ¦xβ§π, theSet Sof elements π-related toxSemigroup.JEquiv.set- Notatedβ¦xβ§π, theSet Sof elements π-related toxSemigroup.HEquiv.set- Notatedβ¦xβ§π, theSet Sof elements π-related toxSemigroup.DEquiv.set- Notatedβ¦xβ§π, theSet Sof elements π-related tox
Main theorems #
IsPreorder.SymmClosure- Given a preorderΞ± : S β S β Propand an instance[IsPreorder S Ξ±], the symmetric closure ofΞ±is an equivalence relation.
We use the preceding theorem to prove that π‘, π, π, π are equivalence relations.
Semigroup.REquiv.isEquivalenceSemigroup.LEquiv.isEquivalenceSemigroup.JEquiv.isEquivalenceSemigroup.HEquiv.isEquivalence
We prove that β€π‘ and π‘ are compatible with left multiplication.
That is, if x (β€)π‘ y, then z * x (β€)π‘ z * y.
We also prove that β€π and π are compatible with right multiplication:
Semigroup.rEquiv_lEquiv_comm- We prove thatπ‘andπcommute under composition, i.e.(β z, x π‘ z β§ z π y) β (β z, x π z β§ z π‘ y). This allows us to prove thatπis symmetric.
We prove that π is closed under composition with π and π‘.
This allows us to prove that π is transitive:
Semigroup.DEquiv.closed_under_lEquiv- Ifx π yandy π z, thenx π z.Semigroup.DEquiv.closed_under_rEquiv- Ifx π yandy π‘ z, thenx π z.Semigroup.DEquiv.isEquivalence- Theπrelation is reflexive, symmetric, and transitive.
Implementation notes #
Because we defined π as the symmetric closure of β€π, using simp [HEquiv] will
change x π y to x β€π y β§ y β€π x. If you want to rewrite to x π‘ y β§ x π y, use
HEquiv.iff_rEquiv_and_lEquiv.
The simp-tagged lemmas at the end of the file are able to close goals like x * y β€π‘ x by
calling simp. Also, if you have a goal like x π y, and a local hypothesis hr : x π‘ y,
you can close this goal by simp [hr] or simp_all.
We also define two lemmas, le and ge, in the namespaces for π‘, π, π, π.
These lemmas restrict hypotheses about equivalences to hypotheses about preorders.
For example, if you have the goal x β€π‘ y and a hypothesis h : x π‘ y, you can
close that goal with exact h.le. Similarly, if the goal is y β€π‘ x, you can
use exact h.ge.
References #
TODO
Blueprint #
One blueprint DEF entry for Green's Preorders and Equivalence Relations. Label : greens-relations Tagged Lean defs :
Semigroup.RPreorderSemigroup.LPreorderSemigroup.JPreorderSemigroup.HPreorderSemigroup.RPreorder.isPreorderSemigroup.LPreorder.isPreorderSemigroup.JPreorder.isPreorderSemigroup.HPreorder.isPreorderSemigroup.REquivSemigroup.LEquivSemigroup.JEquivSemigroup.HEquivSemigroup.DEquivSemigroup.REquiv.isEquivalenceSemigroup.LEquiv.isEquivalenceSemigroup.JEquiv.isEquivalenceSemigroup.HEquiv.isEquivalenceSemigroup.DEquiv.isEquivalenceContent :- Explain definitions of the relations
- introduce notation for preorders, equivalence, and equivalence classes
- Explain that the preorders are reflexive and transitive (preorders)
- Explain that the equivalences are reflexive, symmetric, and transitive (equivalence relations) Dependencies : None
One Lemma entry for the right/left mul compatibility lemmas. Label : greens-relations-mul-compat tagged lean lemmas :
Semigroup.RPreorder.lmult_compatSemigroup.REquiv.lmult_compatSemigroup.LPreorder.rmult_compatSemigroup.LEquiv.rmult_compatContent : Prove it for β€π‘, then for π‘, then say a similar arguement holds for β€π and π Dependencies : greens-relations
One Lemma entry for the commutation of π‘ and π. Label : r-l-comm tagged lean lemmas :
Semigroup.rEquiv_lEquiv_commContent : Prove it and mention that this is used to prove that π is symmetric. Dependencies : greens-relations-mul-compat
One Lemma entry for the closure of π under π‘ and π. label : d-equiv-closed tagged lean lemmas :
Semigroup.DEquiv.closed_under_lEquivSemigroup.DEquiv.closed_under_rEquivContent : Prove closure under π, then say a similar argument holds for closure under π‘. Dependencies : greens-relations
Green's Preorders #
Equations
- Semigroup.Β«term_β€π‘_Β» = Lean.ParserDescr.trailingNode `Semigroup.Β«term_β€π‘_Β» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " β€π‘ ") (Lean.ParserDescr.cat `term 51))
Instances For
β€π‘ is a Preorder
Equations
- Semigroup.Β«term_β€π_Β» = Lean.ParserDescr.trailingNode `Semigroup.Β«term_β€π_Β» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " β€π ") (Lean.ParserDescr.cat `term 51))
Instances For
β€π is a Preorder
Equations
- Semigroup.Β«term_β€π_Β» = Lean.ParserDescr.trailingNode `Semigroup.Β«term_β€π_Β» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " β€π ") (Lean.ParserDescr.cat `term 51))
Instances For
The π-preorder is a preorder.
Equations
- Semigroup.Β«term_β€π_Β» = Lean.ParserDescr.trailingNode `Semigroup.Β«term_β€π_Β» 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " β€π ") (Lean.ParserDescr.cat `term 50))
Instances For
β€π is a Preorder
Green's Equivalences (except π) #
The symmetric closure of a preorder is an equivalence relation.
Equations
- β― = β―
Instances For
Equations
- Semigroup.term_π‘_ = Lean.ParserDescr.trailingNode `Semigroup.term_π‘_ 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " π‘ ") (Lean.ParserDescr.cat `term 50))
Instances For
The π‘ relation is an equivalence relation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semigroup.term_π_ = Lean.ParserDescr.trailingNode `Semigroup.term_π_ 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " π ") (Lean.ParserDescr.cat `term 50))
Instances For
The π relation is an equivalence relation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semigroup.term_π_ = Lean.ParserDescr.trailingNode `Semigroup.term_π_ 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " π ") (Lean.ParserDescr.cat `term 50))
Instances For
The π relation is an equivalence relation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semigroup.term_π_ = Lean.ParserDescr.trailingNode `Semigroup.term_π_ 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " π ") (Lean.ParserDescr.cat `term 50))
Instances For
The π relation is an equivalence relation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
π‘ π Theorems #
Green's D relation #
Equations
- Semigroup.term_π_ = Lean.ParserDescr.trailingNode `Semigroup.term_π_ 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " π ") (Lean.ParserDescr.cat `term 51))
Instances For
The π relation is an equivalence relation.
Equations
- One or more equations did not get rendered due to their size.