Flexible approximations #
In this file, we define flexible approximations.
Main declarations #
ConNF.FlexApprox
: Flexible approximations.
structure
ConNF.BaseAction.FlexApprox
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(A : β ↝ ⊥)
(ξ : BaseAction)
(ψ : BaseApprox)
:
TODO: Fix definition in blueprint to this.
- litters_of_flexible {L₁ L₂ : Litter} : ¬Inflexible A L₁ → ξᴸ L₁ L₂ → ψᴸ L₁ L₂
- mem_iff_mem {N₁ N₂ : NearLitter} : ξᴺ N₁ N₂ → ∀ (a₂ : Atom), a₂ ∈ N₂ᴬ ↔ (∃ a₁ ∈ N₁ᴬ, ψ.exceptions a₁ a₂) ∨ a₂ ∉ ψ.exceptions.dom ∧ a₂ᴸ = N₂ᴸ
Instances For
theorem
ConNF.BaseAction.FlexApprox.mono
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
{A : β ↝ ⊥}
{ξ ζ : BaseAction}
{ψ : BaseApprox}
(hξ : FlexApprox A ξ ψ)
(h : ζ ≤ ξ)
:
FlexApprox A ζ ψ
theorem
ConNF.BaseAction.smul_nearLitter_of_smul_litter
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
{ξ : BaseAction}
{ψ : BaseApprox}
{A : β ↝ ⊥}
{π : BasePerm}
{N₁ N₂ : NearLitter}
(hξ : FlexApprox A ξ ψ)
(hψ : ψ.ExactlyApproximates π)
(hNξ : ξᴺ N₁ N₂)
(hNπ : π • N₁ᴸ = N₂ᴸ)
:
The main lemma about how approximations interact with actions.
Equations
- ξ.littersExtension' = ξᴸ.permutativeExtension' ⋯ (ξᴸ.dom ∪ ξᴸ.codom)ᶜ ⋯ ⋯ ⋯
Instances For
Equations
- ξ.littersExtension = ξ.littersExtension' ⊔ fun (L₁ L₂ : ConNF.Litter) => L₁ = L₂ ∧ L₁ ∉ ξ.littersExtension'.dom
Instances For
TODO: Move this to PermutativeExtension
and do it abstractly.
Equations
- ξ.litterPerm = ξ.littersExtension.toEquiv ⋯
Instances For
Equations
- ξ.orbitRestriction = { sandbox := ξ.insideAll \ (ξᴬ.dom ∪ ξᴬ.codom), sandbox_disjoint := ⋯, categorise := fun (a : ConNF.Atom) => aᴸ, catPerm := ξ.litterPerm, le_card_categorise := ⋯ }
Instances For
Equations
Instances For
theorem
ConNF.BaseAction.atomPerm_mem_iff_mem
[Params]
{ξ : BaseAction}
(hξ : ξ.Nice)
{a₁ a₂ : Atom}
{N₁ N₂ : NearLitter}
(ha : ξ.atomPerm a₁ a₂)
(hN : ξᴺ N₁ N₂)
:
def
ConNF.BaseAction.flexLitterRel
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
Equations
- ξ.flexLitterRel A = ξᴸ ⊓ fun (L₁ L₂ : ConNF.Litter) => ¬ConNF.Inflexible A L₁ ∧ ¬ConNF.Inflexible A L₂
Instances For
theorem
ConNF.BaseAction.flexLitterRel_dom_small
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
Small (ξ.flexLitterRel A).dom
theorem
ConNF.BaseAction.card_inflexible
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(A : β ↝ ⊥)
:
theorem
ConNF.BaseAction.card_inflexible_diff_dom
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
def
ConNF.BaseAction.flexLitterPerm
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
Equations
- ξ.flexLitterPerm A = (ξ.flexLitterRel A).permutativeExtension' ⋯ ({L : ConNF.Litter | ¬ConNF.Inflexible A L} \ (ξᴸ.dom ∪ ξᴸ.codom)) ⋯ ⋯ ⋯
Instances For
theorem
ConNF.BaseAction.le_flexLitterPerm
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
theorem
ConNF.BaseAction.flexLitterPerm_permutative
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
(ξ.flexLitterPerm A).Permutative
theorem
ConNF.BaseAction.dom_flexLitterPerm_subset
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
def
ConNF.BaseAction.flexApprox'
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
Equations
- ξ.flexApprox' A = { exceptions := ξ.atomPerm, litters := ξ.flexLitterPerm A, exceptions_permutative := ⋯, litters_permutative' := ⋯, exceptions_small := ⋯ }
Instances For
def
ConNF.BaseAction.MapFlexible
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
Equations
- ξ.MapFlexible A = ∀ {L₁ L₂ : ConNF.Litter}, ξᴸ L₁ L₂ → (ConNF.Inflexible A L₁ ↔ ConNF.Inflexible A L₂)
Instances For
theorem
ConNF.BaseAction.flexApprox_flexApprox'
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
{ξ : BaseAction}
{A : β ↝ ⊥}
(hξ₁ : ξ.MapFlexible A)
(hξ₂ : ξ.Nice)
:
FlexApprox A ξ (ξ.flexApprox' A)
def
ConNF.BaseAction.flexApprox
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
(ξ : BaseAction)
(A : β ↝ ⊥)
:
A flexible approximation for ξ
along A
.
Equations
- ξ.flexApprox A = ξ.niceExtension.flexApprox' A
Instances For
theorem
ConNF.BaseAction.niceExtension_mapFlexible
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
{ξ : BaseAction}
{A : β ↝ ⊥}
(hξ : ξ.MapFlexible A)
:
theorem
ConNF.BaseAction.flexApprox_flexApprox
[Params]
[Level]
[CoherentData]
{β : TypeIndex}
[LeLevel β]
{ξ : BaseAction}
{A : β ↝ ⊥}
(hξ : ξ.MapFlexible A)
:
FlexApprox A ξ (ξ.flexApprox A)