Notation for working with involutive monoids (mostly boilerplate)
interface Involutive : Type -> Type
.inv : a -> a
(Involutive a, {_:8320}) -> Involutive a
({_:8334}, Involutive a) -> Involutive a
.inv : Involutive a => a -> a
.Involutive : (monoid : InvolutiveMonoid) -> Involutive (U monoid)
fstInvulotive : (Involutive a, {_:8320}) -> Involutive a
sndInvolutive : ({_:8334}, Involutive a) -> Involutive a
InvMult1 : Type -> Type
InvMult2 : Type -> Type
InvMult3 : Type -> Type
.Notation1 : (monoid : InvolutiveMonoid) -> InvMult1 (U monoid)
.Notation2 : (monoid : InvolutiveMonoid) -> InvMult2 (U monoid)
.Notation3 : (monoid : InvolutiveMonoid) -> InvMult3 (U monoid)
notationSyntax : Involutive (Term (InvolutiveMonoidTheory .signature) x)
notation1 : InvMult1 (Term (InvolutiveMonoidTheory .signature) (Either a (Fin n)))
multiplicative1 : (0 n : Nat) -> InvMult1 (Term (InvolutiveMonoidTheory .signature) (Fin n))