Structural actions #
In this file, we define structural actions, and prove the freedom of action theorem for actions.
Main declarations #
ConNF.StrAction
: Structural actions.
def
ConNF.StrAction.Coherent
[ConNF.Params]
[ConNF.Level]
[ConNF.CoherentData]
{β : ConNF.TypeIndex}
[ConNF.LeLevel β]
(ξ : ConNF.StrAction β)
:
Equations
- ξ.Coherent = ∀ (A : β ↝ ⊥) (L₁ L₂ : ConNF.Litter), (ξ A)ᴸ L₁ L₂ → ConNF.CoherentAt ξ A L₁ L₂
Instances For
theorem
ConNF.StrAction.Coherent.deriv
[ConNF.Params]
[ConNF.Level]
[ConNF.CoherentData]
{β : ConNF.TypeIndex}
[ConNF.LeLevel β]
{ξ : ConNF.StrAction β}
(hξ : ξ.Coherent)
{γ : ConNF.TypeIndex}
[ConNF.LeLevel γ]
(A : β ↝ γ)
:
ConNF.StrAction.Coherent (ξ ⇘ A)
theorem
ConNF.StrAction.mapFlexible_of_coherent
[ConNF.Params]
[ConNF.Level]
[ConNF.CoherentData]
{β : ConNF.TypeIndex}
[ConNF.LeLevel β]
{ξ : ConNF.StrAction β}
(hξ : ξ.Coherent)
(A : β ↝ ⊥)
:
(ξ A).MapFlexible A
structure
ConNF.BaseAction.Approximates
[ConNF.Params]
(ξ : ConNF.BaseAction)
(π : ConNF.BasePerm)
:
TODO: Maybe move this to BaseActionClass
?
Instances For
theorem
ConNF.BaseAction.Approximates.litters
[ConNF.Params]
{ξ : ConNF.BaseAction}
{π : ConNF.BasePerm}
(h : ξ.Approximates π)
(L₁ L₂ : ConNF.Litter)
:
theorem
ConNF.BaseAction.Approximates.mono
[ConNF.Params]
{ψ χ : ConNF.BaseAction}
{π : ConNF.BasePerm}
(hχ : χ.Approximates π)
(h : ψ ≤ χ)
:
ψ.Approximates π
def
ConNF.StrAction.Approximates
[ConNF.Params]
{β : ConNF.TypeIndex}
[ConNF.ModelData β]
(ξ : ConNF.StrAction β)
(ρ : ConNF.AllPerm β)
:
Instances For
def
ConNF.StrAction.flexApprox
[ConNF.Params]
[ConNF.Level]
{β : ConNF.TypeIndex}
[ConNF.LeLevel β]
[ConNF.CoherentData]
(ξ : ConNF.StrAction β)
:
Equations
- ξ.flexApprox A = (ξ A).flexApprox A
Instances For
theorem
ConNF.StrAction.flexApprox_coherent
[ConNF.Params]
[ConNF.Level]
{β : ConNF.TypeIndex}
[ConNF.LeLevel β]
[ConNF.CoherentData]
(ξ : ConNF.StrAction β)
(hξ : ∀ (A : β ↝ ⊥), (ξ A).MapFlexible A)
:
ξ.flexApprox.Coherent
TODO: Put this in the blueprint.