Allowable permutations #
In this file, we define the type of allowable permutations at level α
, assuming that they
exist for all type indices β < α
.
Main declarations #
ConNF.Derivatives
: A collection of allowable permutations at every levelβ < α
, which are the one-step derivatives of the newly defined allowable permutations at levelα
.ConNF.NewAllowable
: A collection ofDerivatives
that commutes with thefuzz
map.ConNF.Code.smul_code
: Allowable permutations preserve code equivalence.
A collection of derivatives is a collection of allowable permutations at every type index
β < α
. The type of allowable permutations is a subtype of this type.
Equations
- ConNF.Derivatives = ((β : ConNF.TypeIndex) → [inst_1 : ConNF.LtLevel β] → ConNF.Allowable β)
Instances For
Equations
- ConNF.instGroupDerivatives = Pi.group
The bottom of a path can be easily manipulated with operations such as cons
.
We now need to introduce machinery for manipulating the top of a path.
This allows us to convert collections of derivatives structural permutations, whose
derivative maps are more naturally expressed in the other direction.
If the path is nonempty, extract the second element of the path.
This requires induction over paths because paths in quivers are expressed with their cons
operation at the end, not the start.
Equations
- ConNF.Derivatives.pathTop (Quiver.Path.nil.cons e) = y
- ConNF.Derivatives.pathTop ((p.cons e).cons a) = ConNF.Derivatives.pathTop (p.cons e)
- ConNF.Derivatives.pathTop Quiver.Path.nil = x
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extract the portion of the path after the first morphism.
Equations
- ConNF.Derivatives.pathTail (Quiver.Path.nil.cons e) = Quiver.Path.nil
- ConNF.Derivatives.pathTail ((p.cons e).cons a) = (ConNF.Derivatives.pathTail (p.cons e)).cons a
- ConNF.Derivatives.pathTail Quiver.Path.nil = Quiver.Path.nil
Instances For
We can remove the first morphism from a path and compose it back to form the original path.
Adding and removing a morphism from the top of a path doesn't change anything.
Equations
- ⋯ = ⋯
Convert a collection of derivatives to a structural permutation.
To work out the A
-derivative, we extract the first morphism in the path A
and use it to
determine which of the β
-allowable permutations in ρ
we will use.
Equations
- ρ.toStructPerm' A = ConNF.Allowable.toStructPerm (ρ (ConNF.Derivatives.pathTop A)) (ConNF.Derivatives.pathTail A)
Instances For
Convert a collection of derivatives to a structural permutation.
Equations
- ConNF.Derivatives.toStructPerm = { toFun := ConNF.Derivatives.toStructPerm', map_one' := ⋯, map_mul' := ⋯ }
Instances For
Equations
- ConNF.Derivatives.instMulAction = MulAction.compHom X ConNF.Derivatives.toStructPerm
In the same way that structural permutations act on addresses, collections of derivatives act on codes.
Equations
- ConNF.Derivatives.instMulActionCode = MulAction.mk ⋯ ⋯
Equations
- ConNF.Derivatives.instMulActionNonemptyCode = Function.Injective.mulAction (fun (a : { c : ConNF.Code // c.members.Nonempty }) => ↑a) ⋯ ⋯
We say that a collection of derivatives is allowable if its one-step derivatives commute with
the fuzz
maps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An allowable permutation is a collection of derivatives that commutes with the fuzz
maps.
Equations
- ConNF.NewAllowable = { ρ : ConNF.Derivatives // ρ.IsAllowable }
Instances For
Equations
- ConNF.NewAllowable.instCoeTCDerivatives = { coe := Subtype.val }
Equations
- ConNF.NewAllowable.instOne = { one := ⟨1, ⋯⟩ }
Equations
- ConNF.NewAllowable.instGroup = Function.Injective.group Subtype.val ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The coercion from allowable permutations to their derivatives as a monoid homomorphism.
Equations
- ConNF.NewAllowable.coeHom = { toFun := Subtype.val, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Turn an allowable permutation into a structural permutation.
Equations
- ConNF.NewAllowable.toStructPerm = ConNF.Derivatives.toStructPerm.comp ConNF.NewAllowable.coeHom
Instances For
Equations
- ConNF.NewAllowable.instMulAction = MulAction.compHom X ConNF.NewAllowable.coeHom
Allowable permutations commute with the cloud
map.
Allowable permutations commute with the cloudCode
map.
Alias of the reverse direction of ConNF.Code.isEven_smul
.
Alias of the reverse direction of ConNF.Code.isOdd_smul
.
Allowable permutations preserve code equivalence.