TODO: Fix the paper version of this.
- sandbox : Set α
- sandbox_disjoint : Disjoint s self.sandbox
- categorise : α → β
- catPerm : Equiv.Perm β
- le_card_categorise : ∀ (b : β), Cardinal.aleph0 ⊔ Cardinal.mk ↑s ≤ Cardinal.mk ↑(self.sandbox ∩ self.categorise ⁻¹' {b})
Instances For
theorem
Rel.le_card_categorise
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(b : β)
:
Cardinal.mk (↑(r.dom ∪ r.codom) × ℕ) ≤ Cardinal.mk ↑(R.sandbox ∩ R.categorise ⁻¹' {b})
def
Rel.catInj
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(b : β)
:
Equations
- Rel.catInj R b = Nonempty.some ⋯
Instances For
theorem
Rel.catInj_mem_sandbox
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(b : β)
(x : ↑(r.dom ∪ r.codom) × ℕ)
:
↑((Rel.catInj R b) x) ∈ R.sandbox
@[simp]
theorem
Rel.categorise_catInj
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(b : β)
(x : ↑(r.dom ∪ r.codom) × ℕ)
:
R.categorise ↑((Rel.catInj R b) x) = b
theorem
Rel.catInj_ne_of_mem
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(b : β)
(x : ↑(r.dom ∪ r.codom) × ℕ)
(a : α)
(ha : a ∈ r.dom ∪ r.codom)
:
↑((Rel.catInj R b) x) ≠ a
theorem
Rel.catInj_injective
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
{R : Rel.OrbitRestriction (r.dom ∪ r.codom) β}
{b₁ b₂ : β}
{x₁ x₂ : ↑(r.dom ∪ r.codom) × ℕ}
(h : ↑((Rel.catInj R b₁) x₁) = ↑((Rel.catInj R b₂) x₂))
:
@[simp]
theorem
Rel.catInj_inj
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
{R : Rel.OrbitRestriction (r.dom ∪ r.codom) β}
{b₁ b₂ : β}
{a₁ a₂ : α}
{h₁ : a₁ ∈ r.dom ∪ r.codom}
{h₂ : a₂ ∈ r.dom ∪ r.codom}
{n₁ n₂ : ℕ}
:
↑((Rel.catInj R b₁) (⟨a₁, h₁⟩, n₁)) = ↑((Rel.catInj R b₂) (⟨a₂, h₂⟩, n₂)) ↔ b₁ = b₂ ∧ a₁ = a₂ ∧ n₁ = n₂
inductive
Rel.newOrbits
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
Rel α α
- left: ∀ {α : Type u_1} {β : Type u_2} {r : Rel α α} {R : Rel.OrbitRestriction (r.dom ∪ r.codom) β} (a : α) (had : a ∈ r.dom), a ∉ r.codom → Rel.newOrbits R (↑((Rel.catInj R ((Equiv.symm R.catPerm) (R.categorise a))) (⟨a, ⋯⟩, 0))) a
- leftStep: ∀ {α : Type u_1} {β : Type u_2} {r : Rel α α} {R : Rel.OrbitRestriction (r.dom ∪ r.codom) β} (n : ℕ) (a : α) (had : a ∈ r.dom), a ∉ r.codom → Rel.newOrbits R ↑((Rel.catInj R ((⇑(Equiv.symm R.catPerm))^[n + 2] (R.categorise a))) (⟨a, ⋯⟩, n + 1)) ↑((Rel.catInj R ((⇑(Equiv.symm R.catPerm))^[n + 1] (R.categorise a))) (⟨a, ⋯⟩, n))
- right: ∀ {α : Type u_1} {β : Type u_2} {r : Rel α α} {R : Rel.OrbitRestriction (r.dom ∪ r.codom) β}, ∀ a ∉ r.dom, ∀ (hac : a ∈ r.codom), Rel.newOrbits R a ↑((Rel.catInj R (R.catPerm (R.categorise a))) (⟨a, ⋯⟩, 0))
- rightStep: ∀ {α : Type u_1} {β : Type u_2} {r : Rel α α} {R : Rel.OrbitRestriction (r.dom ∪ r.codom) β} (n : ℕ), ∀ a ∉ r.dom, ∀ (hac : a ∈ r.codom), Rel.newOrbits R ↑((Rel.catInj R ((⇑R.catPerm)^[n + 1] (R.categorise a))) (⟨a, ⋯⟩, n)) ↑((Rel.catInj R ((⇑R.catPerm)^[n + 2] (R.categorise a))) (⟨a, ⋯⟩, n + 1))
Instances For
def
Rel.permutativeExtension
{α : Type u_1}
{β : Type u_2}
(r : Rel α α)
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
Rel α α
Equations
- r.permutativeExtension R = r ⊔ Rel.newOrbits R
Instances For
theorem
Rel.le_permutativeExtension
{α : Type u_1}
{β : Type u_2}
(r : Rel α α)
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
r ≤ r.permutativeExtension R
theorem
Rel.dom_permutativeExtension_subset
{α : Type u_1}
{β : Type u_2}
(r : Rel α α)
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
theorem
Rel.dom_permutativeExtension_subset'
{α : Type u_1}
{β : Type u_2}
(r : Rel α α)
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
theorem
Rel.card_permutativeExtension
{α : Type u_1}
{β : Type u_2}
(r : Rel α α)
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(hr : r.Coinjective)
:
Cardinal.mk ↑(r.permutativeExtension R).dom ≤ Cardinal.aleph0 ⊔ Cardinal.mk ↑r.dom
theorem
Rel.categorise_newOrbits
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
{a₁ a₂ : α}
(h : Rel.newOrbits R a₁ a₂)
:
R.categorise a₂ = R.catPerm (R.categorise a₁)
theorem
Rel.categorise_permutativeExtension
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
{a₁ a₂ : α}
(h : r.permutativeExtension R a₁ a₂)
:
theorem
Rel.newOrbits_injective
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
(Rel.newOrbits R).Injective
theorem
Rel.newOrbits_coinjective
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
(Rel.newOrbits R).Coinjective
theorem
Rel.newOrbits_oneOne
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
(Rel.newOrbits R).OneOne
theorem
Rel.permutativeExtension_codomEqDom
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
(r.permutativeExtension R).CodomEqDom
theorem
Rel.disjoint_newOrbits_dom
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
Disjoint r.dom (Rel.newOrbits R).dom
theorem
Rel.disjoint_newOrbits_codom
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
:
Disjoint r.codom (Rel.newOrbits R).codom
theorem
Rel.permutativeExtension_permutative
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(hr : r.OneOne)
:
(r.permutativeExtension R).Permutative
theorem
Rel.categorise_permutativeExtension_of_oneOne
{α : Type u_1}
{β : Type u_2}
{r : Rel α α}
(R : Rel.OrbitRestriction (r.dom ∪ r.codom) β)
(hr : r.OneOne)
{a₁ a₂ : α}
(h : r.permutativeExtension R a₁ a₂)
:
TODO: Strengthen statement in blueprint version.
def
Rel.permutativeExtension'
{α : Type u_1}
(r : Rel α α)
(hr : r.OneOne)
(s : Set α)
(hs₁ : s.Infinite)
(hs₂ : Cardinal.mk ↑r.dom ≤ Cardinal.mk ↑s)
(hs₃ : Disjoint (r.dom ∪ r.codom) s)
:
Rel α α
Equations
Instances For
theorem
Rel.le_permutativeExtension'
{α : Type u_1}
{r : Rel α α}
{hr : r.OneOne}
{s : Set α}
{hs₁ : s.Infinite}
{hs₂ : Cardinal.mk ↑r.dom ≤ Cardinal.mk ↑s}
{hs₃ : Disjoint (r.dom ∪ r.codom) s}
:
r ≤ r.permutativeExtension' hr s hs₁ hs₂ hs₃
theorem
Rel.permutativeExtension'_permutative
{α : Type u_1}
{r : Rel α α}
{hr : r.OneOne}
{s : Set α}
{hs₁ : s.Infinite}
{hs₂ : Cardinal.mk ↑r.dom ≤ Cardinal.mk ↑s}
{hs₃ : Disjoint (r.dom ∪ r.codom) s}
:
(r.permutativeExtension' hr s hs₁ hs₂ hs₃).Permutative
theorem
Rel.dom_permutativeExtension'_subset
{α : Type u_1}
{r : Rel α α}
{hr : r.OneOne}
{s : Set α}
{hs₁ : s.Infinite}
{hs₂ : Cardinal.mk ↑r.dom ≤ Cardinal.mk ↑s}
{hs₃ : Disjoint (r.dom ∪ r.codom) s}
: