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
- ConNF.BaseApprox.instSuperLRelLitter = { superL := ConNF.BaseApprox.litters }
@[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
- ConNF.BaseApprox.instSuperARelAtom = { superA := ConNF.BaseApprox.atoms }
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 ∧ ψᴸ ≤ χᴸ }
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)