Base approximations #
In this file, we define base approximations.
Main declarations #
ConNF.BaseApprox
: A base approximation consists of a partial permutation of atoms and a partial permutation of near-litters.
- exceptions : Rel ConNF.Atom ConNF.Atom
- litters : Rel ConNF.Litter ConNF.Litter
- exceptions_permutative : self.exceptions.Permutative
- litters_permutative' : self.litters.Permutative
- exceptions_small : ∀ (L : ConNF.Litter), ConNF.Small (Lᴬ ∩ self.exceptions.dom)
Instances For
instance
ConNF.BaseApprox.instSuperLRelLitter
[ConNF.Params]
:
ConNF.SuperL ConNF.BaseApprox (Rel ConNF.Litter ConNF.Litter)
Equations
- ConNF.BaseApprox.instSuperLRelLitter = { superL := ConNF.BaseApprox.litters }
@[simp]
theorem
ConNF.BaseApprox.mk_litters
[ConNF.Params]
(exceptions : Rel ConNF.Atom ConNF.Atom)
(litters : Rel ConNF.Litter ConNF.Litter)
(exceptions_permutative : exceptions.Permutative)
(litters_permutative' : litters.Permutative)
(exceptions_small : ∀ (L : ConNF.Litter), ConNF.Small (Lᴬ ∩ exceptions.dom))
:
theorem
ConNF.BaseApprox.ext
[ConNF.Params]
{ψ χ : ConNF.BaseApprox}
(h₁ : ψ.exceptions = χ.exceptions)
(h₂ : ψᴸ = χᴸ)
:
ψ = χ
Equations
- One or more equations did not get rendered due to their size.
@[simp]
@[simp]
def
ConNF.BaseApprox.sublitterAtoms
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(L : ConNF.Litter)
:
Set ConNF.Atom
Instances For
theorem
ConNF.BaseApprox.sublitterAtoms_near
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(L : ConNF.Litter)
:
def
ConNF.BaseApprox.sublitter
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(L : ConNF.Litter)
:
ConNF.NearLitter
Equations
- ψ.sublitter L = { litter := L, atoms := ψ.sublitterAtoms L, atoms_near_litter' := ⋯ }
Instances For
theorem
ConNF.BaseApprox.sublitter_subset
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{L : ConNF.Litter}
:
theorem
ConNF.BaseApprox.sublitter_atoms_disjoint
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{L : ConNF.Litter}
:
@[simp]
Equations
- ConNF.BaseApprox.nearLitterEquiv N = ⋯.some
Instances For
theorem
ConNF.BaseApprox.nearLitterEquiv_injective
[ConNF.Params]
{N : ConNF.NearLitter}
{i₁ i₂ : ConNF.κ}
(h : ↑((ConNF.BaseApprox.nearLitterEquiv N) i₁) = ↑((ConNF.BaseApprox.nearLitterEquiv N) i₂))
:
i₁ = i₂
theorem
ConNF.BaseApprox.nearLitterEquiv_congr
[ConNF.Params]
{N₁ N₂ : ConNF.NearLitter}
{i₁ i₂ : ConNF.κ}
(hN : N₁ = N₂)
(hi : i₁ = i₂)
:
↑((ConNF.BaseApprox.nearLitterEquiv N₁) i₁) = ↑((ConNF.BaseApprox.nearLitterEquiv N₂) i₂)
theorem
ConNF.BaseApprox.nearLitterEquiv_mem
[ConNF.Params]
(N : ConNF.NearLitter)
(i : ConNF.κ)
:
↑((ConNF.BaseApprox.nearLitterEquiv N) i) ∈ Nᴬ
@[simp]
theorem
ConNF.BaseApprox.nearLitterEquiv_litter
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(L : ConNF.Litter)
(i : ConNF.κ)
:
(↑((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L)) i))ᴸ = L
theorem
ConNF.BaseApprox.nearLitterEquiv_not_mem_dom
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(L : ConNF.Litter)
(i : ConNF.κ)
:
↑((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L)) i) ∉ ψ.exceptions.dom
- mk: ∀ [inst : ConNF.Params] {ψ : ConNF.BaseApprox} (L₁ L₂ : ConNF.Litter), ψᴸ L₁ L₂ → ∀ (i : ConNF.κ), ψ.typical ↑((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L₁)) i) ↑((ConNF.BaseApprox.nearLitterEquiv (ψ.sublitter L₂)) i)
Instances For
theorem
ConNF.BaseApprox.not_mem_dom_of_typical
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{a₁ a₂ : ConNF.Atom}
(h : ψ.typical a₁ a₂)
:
a₁ ∉ ψ.exceptions.dom
theorem
ConNF.BaseApprox.typical_inv_of_typical
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{a₁ a₂ : ConNF.Atom}
(h : ψ.typical a₁ a₂)
:
ψ⁻¹.typical a₂ a₁
theorem
ConNF.BaseApprox.typical_inv_iff_typical
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{a₁ a₂ : ConNF.Atom}
:
@[simp]
Instances For
instance
ConNF.BaseApprox.instSuperARelAtom
[ConNF.Params]
:
ConNF.SuperA ConNF.BaseApprox (Rel ConNF.Atom ConNF.Atom)
Equations
- ConNF.BaseApprox.instSuperARelAtom = { superA := ConNF.BaseApprox.atoms }
theorem
ConNF.BaseApprox.mem_dom_atoms_of_litter_mem_dom
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{a : ConNF.Atom}
(h : aᴸ ∈ ψᴸ.dom)
:
@[simp]
theorem
ConNF.BaseApprox.typical_injective
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψ.typical.Injective
theorem
ConNF.BaseApprox.typical_coinjective
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψ.typical.Coinjective
theorem
ConNF.BaseApprox.typical_codomEqDom
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψ.typical.CodomEqDom
theorem
ConNF.BaseApprox.typical_permutative
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψ.typical.Permutative
theorem
ConNF.BaseApprox.exceptions_typical_disjoint
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
Disjoint ψ.exceptions.dom ψ.typical.dom
theorem
ConNF.BaseApprox.atoms_image_eq_typical_image
[ConNF.Params]
(ψ : ConNF.BaseApprox)
{s : Set ConNF.Atom}
(hs : Disjoint ψ.exceptions.dom s)
:
theorem
ConNF.BaseApprox.typical_image_sublitter
[ConNF.Params]
(ψ : ConNF.BaseApprox)
{L₁ L₂ : ConNF.Litter}
(h : ψᴸ L₁ L₂)
:
theorem
ConNF.BaseApprox.image_near_of_near
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(s : Set ConNF.Atom)
{L₁ L₂ : ConNF.Litter}
(hL : ψᴸ L₁ L₂)
(hsL : s ~ L₁ᴬ)
:
instance
ConNF.BaseApprox.instSuperNRelNearLitter
[ConNF.Params]
:
ConNF.SuperN ConNF.BaseApprox (Rel ConNF.NearLitter ConNF.NearLitter)
Equations
- ConNF.BaseApprox.instSuperNRelNearLitter = { superN := ConNF.BaseApprox.nearLitters }
@[simp]
theorem
ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_left
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{N₁ N₂ : ConNF.NearLitter}
(h : ψᴺ N₁ N₂)
:
theorem
ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_right
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{N₁ N₂ : ConNF.NearLitter}
(h : ψᴺ N₁ N₂)
:
theorem
ConNF.BaseApprox.nearLitters_coinjective
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψᴺ.Coinjective
theorem
ConNF.BaseApprox.nearLitters_permutative
[ConNF.Params]
(ψ : ConNF.BaseApprox)
:
ψᴺ.Permutative
Equations
- ConNF.BaseApprox.instPartialOrder = PartialOrder.mk ⋯
theorem
ConNF.BaseApprox.sublitter_eq_of_le
[ConNF.Params]
{ψ χ : ConNF.BaseApprox}
(h : ψ ≤ χ)
(L : ConNF.Litter)
:
ψ.sublitter L = χ.sublitter L
theorem
ConNF.BaseApprox.typical_le_of_le
[ConNF.Params]
{ψ χ : ConNF.BaseApprox}
(h : ψ ≤ χ)
:
ψ.typical ≤ χ.typical
instance
ConNF.BaseApprox.instBaseActionClass
[ConNF.Params]
:
ConNF.BaseActionClass ConNF.BaseApprox
This creates new definitions of ·ᴬ
and ·ᴺ
, but the instances are definitionally equal
so no triangles are formed.
def
ConNF.BaseApprox.addOrbitLitters
[ConNF.Params]
(f : ℤ → ConNF.Litter)
:
Rel ConNF.Litter ConNF.Litter
Instances For
@[simp]
theorem
ConNF.BaseApprox.addOrbitLitters_dom
[ConNF.Params]
(f : ℤ → ConNF.Litter)
:
(ConNF.BaseApprox.addOrbitLitters f).dom = Set.range f
theorem
ConNF.BaseApprox.addOrbitLitters_codomEqDom
[ConNF.Params]
(f : ℤ → ConNF.Litter)
:
(ConNF.BaseApprox.addOrbitLitters f).CodomEqDom
theorem
ConNF.BaseApprox.addOrbitLitters_oneOne
[ConNF.Params]
(f : ℤ → ConNF.Litter)
(hf : ∀ (m n k : ℤ), f m = f n → f (m + k) = f (n + k))
:
(ConNF.BaseApprox.addOrbitLitters f).OneOne
theorem
ConNF.BaseApprox.addOrbitLitters_permutative
[ConNF.Params]
(f : ℤ → ConNF.Litter)
(hf : ∀ (m n k : ℤ), f m = f n → f (m + k) = f (n + k))
:
(ConNF.BaseApprox.addOrbitLitters f).Permutative
theorem
ConNF.BaseApprox.disjoint_litters_dom_addOrbitLitters_dom
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(f : ℤ → ConNF.Litter)
(hfψ : ∀ (n : ℤ), f n ∉ ψᴸ.dom)
:
Disjoint ψᴸ.dom (ConNF.BaseApprox.addOrbitLitters f).dom
def
ConNF.BaseApprox.addOrbit
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(f : ℤ → ConNF.Litter)
(hf : ∀ (m n k : ℤ), f m = f n → f (m + k) = f (n + k))
(hfψ : ∀ (n : ℤ), f n ∉ ψᴸ.dom)
:
ConNF.BaseApprox
Equations
- ψ.addOrbit f hf hfψ = { exceptions := ψ.exceptions, litters := ψ.litters ⊔ ConNF.BaseApprox.addOrbitLitters f, exceptions_permutative := ⋯, litters_permutative' := ⋯, exceptions_small := ⋯ }
Instances For
theorem
ConNF.BaseApprox.upperBound_exceptions_small
[ConNF.Params]
(c : Set ConNF.BaseApprox)
(hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 ≤ x2) c)
(L : ConNF.Litter)
:
ConNF.Small (Lᴬ ∩ (⨆ ψ ∈ c, ψ.exceptions).dom)
def
ConNF.BaseApprox.upperBound
[ConNF.Params]
(c : Set ConNF.BaseApprox)
(hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 ≤ x2) c)
:
ConNF.BaseApprox
An upper bound for a chain of base approximations.
Equations
- ConNF.BaseApprox.upperBound c hc = { exceptions := ⨆ ψ ∈ c, ψ.exceptions, litters := ⨆ ψ ∈ c, ψᴸ, exceptions_permutative := ⋯, litters_permutative' := ⋯, exceptions_small := ⋯ }
Instances For
theorem
ConNF.BaseApprox.le_upperBound
[ConNF.Params]
(c : Set ConNF.BaseApprox)
(hc : IsChain (fun (x1 x2 : ConNF.BaseApprox) => x1 ≤ x2) c)
(ψ : ConNF.BaseApprox)
:
ψ ∈ c → ψ ≤ ConNF.BaseApprox.upperBound c hc
Instances For
theorem
ConNF.BaseApprox.Total.atoms
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
(a : ConNF.Atom)
:
theorem
ConNF.BaseApprox.Total.nearLitters
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
(N : ConNF.NearLitter)
:
theorem
ConNF.BaseApprox.Total.atoms_bijective
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
:
ψᴬ.Bijective
theorem
ConNF.BaseApprox.Total.litters_bijective
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
:
ψᴸ.Bijective
Instances For
theorem
ConNF.BaseApprox.basePerm_smul_atom_def
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{a : ConNF.Atom}
:
theorem
ConNF.BaseApprox.basePerm_smul_litter_def
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{L : ConNF.Litter}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_smul_atom_eq_iff
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{a₁ a₂ : ConNF.Atom}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_inv_smul_atom_eq_iff
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{a₁ a₂ : ConNF.Atom}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_smul_litter_eq_iff
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{L₁ L₂ : ConNF.Litter}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_inv_smul_litter_eq_iff
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{L₁ L₂ : ConNF.Litter}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_smul_nearLitter_eq_iff
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{h : ψ.Total}
{N₁ N₂ : ConNF.NearLitter}
:
structure
ConNF.BaseApprox.Approximates
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(π : ConNF.BasePerm)
:
Instances For
theorem
ConNF.BaseApprox.Approximates.litters
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{π : ConNF.BasePerm}
(h : ψ.Approximates π)
(L₁ L₂ : ConNF.Litter)
:
theorem
ConNF.BaseApprox.Approximates.mono
[ConNF.Params]
{ψ χ : ConNF.BaseApprox}
{π : ConNF.BasePerm}
(hχ : χ.Approximates π)
(h : ψ ≤ χ)
:
ψ.Approximates π
structure
ConNF.BaseApprox.ExactlyApproximates
[ConNF.Params]
(ψ : ConNF.BaseApprox)
(π : ConNF.BasePerm)
extends ψ.Approximates π :
- nearLitters : ∀ (N₁ N₂ : ConNF.NearLitter), ψᴺ N₁ N₂ → N₂ = π • N₁
Instances For
theorem
ConNF.BaseApprox.ExactlyApproximates.mono
[ConNF.Params]
{ψ χ : ConNF.BaseApprox}
{π : ConNF.BasePerm}
(hχ : χ.ExactlyApproximates π)
(h : ψ ≤ χ)
:
ψ.ExactlyApproximates π
theorem
ConNF.BaseApprox.Approximates.smulSet_eq_exceptions_image
[ConNF.Params]
{ψ : ConNF.BaseApprox}
{π : ConNF.BasePerm}
(hψ : ψ.Approximates π)
(s : Set ConNF.Atom)
(hs : s ⊆ ψ.exceptions.dom)
:
theorem
ConNF.BaseApprox.approximates_basePerm
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
:
ψ.Approximates (ψ.basePerm h)
theorem
ConNF.BaseApprox.exactlyApproximates_basePerm
[ConNF.Params]
{ψ : ConNF.BaseApprox}
(h : ψ.Total)
:
ψ.ExactlyApproximates (ψ.basePerm h)