Base litter actions #
In this file, we define base litter actions.
Main declarations #
ConNF.BaseLAction
: The type of base litter actions.ConNF.BaseLAction.Lawful
: Injectivity requirements that allow a litter action to be converted into an approximation.ConNF.BaseLAction.Approximates
: A base litter action approximates a base permutation if they agree wherever they are defined.
A base litter action is a partial function from atoms to atoms and a partial
function from litters to near-litters, both of which have small domain.
The image of a litter under the litter_map
should be interpreted as the intended precise image
of this litter under an allowable permutation.
- atomMap : ConNF.Atom →. ConNF.Atom
- litterMap : ConNF.Litter →. ConNF.NearLitter
- atomMap_dom_small : ConNF.Small self.atomMap.Dom
- litterMap_dom_small : ConNF.Small self.litterMap.Dom
Instances For
A base litter action in which the atom and litter maps are injective (in suitable senses) and cohere in the sense that images of atoms in litters are mapped to atoms inside the corresponding near-litters.
Instances For
A base litter action approximates a base permutation if they agree wherever they are defined.
Instances For
A litter that is not allowed to be used as a sandbox because it appears somewhere that we need to preserve.
- atomDom: ∀ [inst : ConNF.Params] {φ : ConNF.BaseLAction} (a : ConNF.Atom), (φ.atomMap a).Dom → φ.BannedLitter a.1
- litterDom: ∀ [inst : ConNF.Params] {φ : ConNF.BaseLAction} (L : ConNF.Litter), (φ.litterMap L).Dom → φ.BannedLitter L
- atomMap: ∀ [inst : ConNF.Params] {φ : ConNF.BaseLAction} (a : ConNF.Atom) (h : (φ.atomMap a).Dom), φ.BannedLitter ((φ.atomMap a).get h).1
- litterMap: ∀ [inst : ConNF.Params] {φ : ConNF.BaseLAction} (L : ConNF.Litter) (h : (φ.litterMap L).Dom), φ.BannedLitter ((φ.litterMap L).get h).fst
- diff: ∀ [inst : ConNF.Params] {φ : ConNF.BaseLAction} (L : ConNF.Litter) (h : (φ.litterMap L).Dom), ∀ a ∈ ↑((φ.litterMap L).get h) \ ConNF.litterSet ((φ.litterMap L).get h).fst, φ.BannedLitter a.1
Instances For
There are only a small amount of banned litters.
If a
is in the domain, this is the atom map. Otherwise, this gives an arbitrary atom.
Equations
- φ.atomMapOrElse a = (φ.atomMap a).getOrElse (Classical.arbitrary ConNF.Atom)
Instances For
If L
is in the domain, this is the litter map.
Otherwise, this gives an arbitrary near-litter.
Equations
- φ.litterMapOrElse L = (φ.litterMap L).getOrElse (Classical.arbitrary ConNF.NearLitter)
Instances For
If L
is in the domain, this gives the (rough) image of L
under φ
.
Otherwise, this gives an arbitrary litter.
Equations
- φ.roughLitterMapOrElse L = (φ.litterMapOrElse L).fst
Instances For
Preorder structure #
We define that f ≤ g
if the domain of f
is included in the domain of g
, and
they agree where they are defined.
- dom_of_dom : ∀ (a : α), (f a).Dom → (g a).Dom
- get_eq : ∀ (a : α) (h : (f a).Dom), (f a).get h = (g a).get ⋯
Instances For
Equations
- ConNF.BaseLAction.instPartialOrderPFun = PartialOrder.mk ⋯
Equations
- ConNF.BaseLAction.instPartialOrder = PartialOrder.mk ⋯
An action is precise at a litter in its domain if all atoms in the symmetric difference of its image are accounted for.
- diff : symmDiff (↑((φ.litterMap L).get hL)) (ConNF.litterSet ((φ.litterMap L).get hL).fst) ⊆ φ.atomMap.ran
- fwd : ∀ (a : ConNF.Atom) (ha : (φ.atomMap a).Dom), (φ.atomMap a).get ha ∈ ConNF.litterSet L → (φ.atomMap ((φ.atomMap a).get ha)).Dom
Instances For
An action is precise if it is precise at every litter in its domain.
Equations
- φ.Precise = ∀ ⦃L : ConNF.Litter⦄ (hL : (φ.litterMap L).Dom), φ.PreciseAt hL
Instances For
Induced litter permutation #
A partial permutation that agrees with φ
on flexible litters in its domain.
Equations
- One or more equations did not get rendered due to their size.