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_permutative : self.exceptions.Permutative
- litters_permutative' : self.litters.Permutative
Instances For
Equations
@[simp]
theorem
ConNF.BaseApprox.mk_litters
[Params]
(exceptions : Rel Atom Atom)
(litters : Rel Litter Litter)
(exceptions_permutative : exceptions.Permutative)
(litters_permutative' : litters.Permutative)
(exceptions_small : ∀ (L : Litter), Small (Lᴬ ∩ exceptions.dom))
:
theorem
ConNF.BaseApprox.ext
[Params]
{ψ χ : BaseApprox}
(h₁ : ψ.exceptions = χ.exceptions)
(h₂ : ψᴸ = χᴸ)
:
Equations
- One or more equations did not get rendered due to their size.
@[simp]
Equations
- ψ.sublitterAtoms L = Lᴬ \ ψ.exceptions.dom
Instances For
Equations
- ψ.sublitter L = { litter := L, atoms := ψ.sublitterAtoms L, atoms_near_litter' := ⋯ }
Instances For
theorem
ConNF.BaseApprox.sublitter_atoms_disjoint
[Params]
{ψ : BaseApprox}
{L : Litter}
:
Disjoint (ψ.sublitter L)ᴬ ψ.exceptions.dom
@[simp]
Equations
Instances For
theorem
ConNF.BaseApprox.nearLitterEquiv_injective
[Params]
{N : NearLitter}
{i₁ i₂ : κ}
(h : ↑((nearLitterEquiv N) i₁) = ↑((nearLitterEquiv N) i₂))
:
theorem
ConNF.BaseApprox.nearLitterEquiv_congr
[Params]
{N₁ N₂ : NearLitter}
{i₁ i₂ : κ}
(hN : N₁ = N₂)
(hi : i₁ = i₂)
:
@[simp]
theorem
ConNF.BaseApprox.nearLitterEquiv_not_mem_dom
[Params]
(ψ : BaseApprox)
(L : Litter)
(i : κ)
:
↑((nearLitterEquiv (ψ.sublitter L)) i) ∉ ψ.exceptions.dom
- mk [Params] {ψ : BaseApprox} (L₁ L₂ : Litter) (h : ψᴸ L₁ L₂) (i : κ) : ψ.typical ↑((nearLitterEquiv (ψ.sublitter L₁)) i) ↑((nearLitterEquiv (ψ.sublitter L₂)) i)
Instances For
theorem
ConNF.BaseApprox.not_mem_dom_of_typical
[Params]
{ψ : BaseApprox}
{a₁ a₂ : Atom}
(h : ψ.typical a₁ a₂)
:
a₁ ∉ ψ.exceptions.dom
theorem
ConNF.BaseApprox.typical_inv_of_typical
[Params]
{ψ : BaseApprox}
{a₁ a₂ : Atom}
(h : ψ.typical a₁ a₂)
:
@[simp]
Equations
- ψ.atoms = ψ.exceptions ⊔ ψ.typical
Instances For
Equations
theorem
ConNF.BaseApprox.exceptions_typical_disjoint
[Params]
(ψ : BaseApprox)
:
Disjoint ψ.exceptions.dom ψ.typical.dom
theorem
ConNF.BaseApprox.atoms_image_eq_typical_image
[Params]
(ψ : BaseApprox)
{s : Set Atom}
(hs : Disjoint ψ.exceptions.dom s)
:
Instances For
Equations
theorem
ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_left
[Params]
{ψ : BaseApprox}
{N₁ N₂ : NearLitter}
(h : ψᴺ N₁ N₂)
:
theorem
ConNF.BaseApprox.atoms_subset_dom_of_nearLitters_right
[Params]
{ψ : BaseApprox}
{N₁ N₂ : NearLitter}
(h : ψᴺ N₁ N₂)
:
Equations
- ConNF.BaseApprox.instLE = { le := fun (ψ χ : ConNF.BaseApprox) => ψ.exceptions = χ.exceptions ∧ ψᴸ ≤ χᴸ }
Equations
- One or more equations did not get rendered due to their size.
This creates new definitions of ·ᴬ and ·ᴺ, but the instances are definitionally equal
so no triangles are formed.
Equations
- ConNF.BaseApprox.instBaseActionClass = { atoms := fun (ψ : ConNF.BaseApprox) => ψᴬ, atoms_oneOne := ⋯, nearLitters := fun (ψ : ConNF.BaseApprox) => ψᴺ, nearLitters_oneOne := ⋯ }
@[simp]
theorem
ConNF.BaseApprox.disjoint_litters_dom_addOrbitLitters_dom
[Params]
(ψ : BaseApprox)
(f : ℤ → Litter)
(hfψ : ∀ (n : ℤ), f n ∉ ψᴸ.dom)
:
Disjoint ψᴸ.dom (addOrbitLitters f).dom
def
ConNF.BaseApprox.addOrbit
[Params]
(ψ : BaseApprox)
(f : ℤ → Litter)
(hf : ∀ (m n k : ℤ), f m = f n → f (m + k) = f (n + k))
(hfψ : ∀ (n : ℤ), f n ∉ ψᴸ.dom)
:
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
[Params]
(c : Set BaseApprox)
(hc : IsChain (fun (x1 x2 : BaseApprox) => x1 ≤ x2) c)
(L : Litter)
:
Small (Lᴬ ∩ (⨆ ψ ∈ c, ψ.exceptions).dom)
def
ConNF.BaseApprox.upperBound
[Params]
(c : Set BaseApprox)
(hc : IsChain (fun (x1 x2 : BaseApprox) => x1 ≤ x2) c)
:
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
[Params]
(c : Set BaseApprox)
(hc : IsChain (fun (x1 x2 : BaseApprox) => x1 ≤ x2) c)
(ψ : BaseApprox)
:
ψ ∈ c → ψ ≤ upperBound c hc
Instances For
theorem
ConNF.BaseApprox.Total.nearLitters
[Params]
{ψ : BaseApprox}
(h : ψ.Total)
(N : NearLitter)
:
theorem
ConNF.BaseApprox.basePerm_smul_atom_def
[Params]
{ψ : BaseApprox}
{h : ψ.Total}
{a : Atom}
:
theorem
ConNF.BaseApprox.basePerm_smul_litter_def
[Params]
{ψ : BaseApprox}
{h : ψ.Total}
{L : Litter}
:
@[simp]
theorem
ConNF.BaseApprox.basePerm_smul_nearLitter_eq_iff
[Params]
{ψ : BaseApprox}
{h : ψ.Total}
{N₁ N₂ : NearLitter}
:
- nearLitters (N₁ N₂ : NearLitter) : ψᴺ N₁ N₂ → N₂ = π • N₁
Instances For
theorem
ConNF.BaseApprox.Approximates.litters
[Params]
{ψ : BaseApprox}
{π : BasePerm}
(h : ψ.Approximates π)
(L₁ L₂ : Litter)
:
theorem
ConNF.BaseApprox.Approximates.mono
[Params]
{ψ χ : BaseApprox}
{π : BasePerm}
(hχ : χ.Approximates π)
(h : ψ ≤ χ)
:
ψ.Approximates π
structure
ConNF.BaseApprox.ExactlyApproximates
[Params]
(ψ : BaseApprox)
(π : BasePerm)
extends ψ.Approximates π :
Instances For
theorem
ConNF.BaseApprox.ExactlyApproximates.mono
[Params]
{ψ χ : BaseApprox}
{π : BasePerm}
(hχ : χ.ExactlyApproximates π)
(h : ψ ≤ χ)
:
theorem
ConNF.BaseApprox.ExactlyApproximates.smulSet_nearLitter
[Params]
{ψ : BaseApprox}
{π : BasePerm}
{N₁ N₂ : NearLitter}
(hψ : ψ.ExactlyApproximates π)
(hNπ : π • N₁ᴸ = N₂ᴸ)
:
theorem
ConNF.BaseApprox.Approximates.smulSet_eq_exceptions_image
[Params]
{ψ : BaseApprox}
{π : BasePerm}
(hψ : ψ.Approximates π)
(s : Set Atom)
(hs : s ⊆ ψ.exceptions.dom)
:
theorem
ConNF.BaseApprox.approximates_basePerm
[Params]
{ψ : BaseApprox}
(h : ψ.Total)
:
ψ.Approximates (ψ.basePerm h)
theorem
ConNF.BaseApprox.exactlyApproximates_basePerm
[Params]
{ψ : BaseApprox}
(h : ψ.Total)
:
ψ.ExactlyApproximates (ψ.basePerm h)