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 asndInvolutive : ({_:8334}, Involutive a) -> Involutive aInvMult1 : Type -> TypeInvMult2 : Type -> TypeInvMult3 : 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))