Idris2Doc : Frexlet.Monoid.Involutive.Frex

Frexlet.Monoid.Involutive.Frex

Cosntructing the involutive monoid frex.

This implementation uses the fact that if `a` is an involutive
monoid, then `Frex a s` can be represented by `Frex a.monoid (Bool, s)`.

Definitions

0AuxExtensionType : InvolutiveMonoid->Setoid->Type
Totality: total
Visibility: public export
0AuxFrexType : InvolutiveMonoid->Setoid->Type
  Type of auxiliary monoid frex used to construct the involutive monoid frex

Totality: total
Visibility: public export
AuxFrex : (a : InvolutiveMonoid) -> (s : Setoid) ->AuxFrexTypeas
  Auxiliary monoid frex used to construct the involutive monoid frex

Totality: total
Visibility: public export
AuxFrexExtension : (a : InvolutiveMonoid) -> (s : Setoid) ->AuxExtensionTypeas
Totality: total
Visibility: public export
AuxFrexMonoid : InvolutiveMonoid->Setoid->Monoid
  The monoid part of the involutive monoid frex

Totality: total
Visibility: public export
FrexInvolutionExtension : (a : InvolutiveMonoid) -> (s : Setoid) ->AuxExtensionTypeas
  We use the following extension to define the involution on the frex

a (Bool, s)
| a.inv | bimap not id
v v
a.rev --> (AuxFrexMonoid a s).rev <--- (Bool, s)
sta.rev dyn

Totality: total
Visibility: public export
FrexInvolutionExtensionMorphism : (a : InvolutiveMonoid) -> (s : Setoid) ->AuxFrexExtensionas~>FrexInvolutionExtensionas
  The involution on the frex is given by the universal property:

a ------> FrexInvMonoid a s <------- (Bool, s)
| a.inv = | FrexInvolution a s | bimap not id
v (in Monoids) v = (in Set) v
a.rev --> (FrexInvMonoid a s).rev <--- (Bool, s)
sta.rev dyn

Totality: total
Visibility: public export
FrexInvolution : (a : InvolutiveMonoid) -> (s : Setoid) ->AuxFrexMonoidas~> (AuxFrexMonoidas) .rev
  The involution homomorphism for the frex

Totality: total
Visibility: public export
FrexInvolutionIsInvolution : (a : InvolutiveMonoid) -> (s : Setoid) -> (AuxFrexMonoidas) .Involution (FrexInvolutionas)
  The involution axiom boils down to this equation:

FrexInvMonoid a s ---------------------
| |
| FrexInvolution a s | cast (cast a).revInvolution
| |
V V
(FrexInvMonoid a s).rev -------> (FrexInvMonoid a s).rev.rev
(FrexInvolution a s).rev

Totality: total
Visibility: public export
FrexInvolutionInvolution : (a : InvolutiveMonoid) -> (s : Setoid) ->Involution (AuxFrexMonoidas)
Totality: total
Visibility: public export
FrexInvolutiveMonoid : InvolutiveMonoid->Setoid->InvolutiveMonoid
Totality: total
Visibility: public export
dataInvolutiveExtension : InvolutiveMonoid->Setoid->Type
  The reason the involutive frex works is that we can decompose an
InvolutiveExtension into a monoid extension with the following
extra data

Totality: total
Visibility: public export
Constructor: 
MkInvolutiveExtension : (MonoidExtension : AuxExtensionTypeas) -> (ModelInvolution : Involution (MonoidExtension.Model)) -> ((i : Ua) -> ((MonoidExtension.Model) .equivalence) .relation (((MonoidExtension.Embed) .H) .H (a.SemInvolute [i])) (((ModelInvolution.H) .H) .H (((MonoidExtension.Embed) .H) .Hi))) -> ((Pair (castBool) s~~>cast (MonoidExtension.Model)) .equivalence) .relation ((ModelInvolution.H) .H.MonoidExtension.Var) (MonoidExtension.Var.bimap (matenot) (ids)) ->InvolutiveExtensionas
.MonoidExtension : InvolutiveExtensionas->AuxExtensionTypeas
Totality: total
Visibility: public export
.ModelInvolution : (ext : InvolutiveExtensionas) ->Involution ((ext.MonoidExtension) .Model)
Totality: total
Visibility: public export
.PreserveInvolute : (ext : InvolutiveExtensionas) -> (i : Ua) -> (((ext.MonoidExtension) .Model) .equivalence) .relation ((((ext.MonoidExtension) .Embed) .H) .H (a.SemInvolute [i])) ((((ext.ModelInvolution) .H) .H) .H ((((ext.MonoidExtension) .Embed) .H) .Hi))
Totality: total
Visibility: public export
.VarCompatibility : (ext : InvolutiveExtensionas) -> ((Pair (castBool) s~~>cast ((ext.MonoidExtension) .Model)) .equivalence) .relation (((ext.ModelInvolution) .H) .H. (ext.MonoidExtension) .Var) ((ext.MonoidExtension) .Var.bimap (matenot) (ids))
Totality: total
Visibility: public export
InvolutiveExtensionToExtension : InvolutiveExtensionas->Extensionas
Totality: total
Visibility: public export
ExtensionToInvolutiveExtension : Extensionas->InvolutiveExtensionas
Totality: total
Visibility: public export
InvMonoidExtension : (a : InvolutiveMonoid) -> (s : Setoid) ->Extensionas
Totality: total
Visibility: public export
.Env : (ext : InvolutiveExtensionas) ->Envs ((ext.MonoidExtension) .Model) (ext.ModelInvolution)
Totality: total
Visibility: public export
ExtenderHomomorphism : (a : InvolutiveMonoid) -> (s : Setoid) ->ExtenderHomomorphism (InvMonoidExtensionas)
Totality: total
Visibility: public export
InvExtender : (a : InvolutiveMonoid) -> (s : Setoid) ->Extender (InvMonoidExtensionas)
Totality: total
Visibility: public export
Uniqueness : (a : InvolutiveMonoid) -> (s : Setoid) ->Uniqueness (InvMonoidExtensionas)
Totality: total
Visibility: public export
Frex : (a : InvolutiveMonoid) ->Frexas
Totality: total
Visibility: public export