The coproduct of two commutative monoids is their cartesian product
import public Frexlet.Monoid.Commutative.Nat
import public Data.Vect.ExtraCoprodAlgebraStructure : CommutativeMonoid -> CommutativeMonoid -> Algebra SignatureCoprodSetoidEquivalence : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> Equivalence (U a, U b)CoprodSetoid : CommutativeMonoid -> CommutativeMonoid -> SetoidCoprodAlgebraCongruence : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> (op : Op Signature) -> CongruenceWRT (CoprodSetoid a b) ((CoprodAlgebraStructure a b) .Sem op)CoprodAlgebra : CommutativeMonoid -> CommutativeMonoid -> MonoidStructureCoprodValidate : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> Validates CommutativeMonoidTheory (CoprodAlgebra a b)Coprod : CommutativeMonoid -> CommutativeMonoid -> CommutativeMonoidCoprodLftFunction : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> U a -> U (Coprod a b)CoprodLftSetoidHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> SetoidHomomorphism (cast a) (cast (Coprod a b)) (CoprodLftFunction a b)CoprodLftHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> Homomorphism (a .Algebra) ((Coprod a b) .Algebra) (CoprodLftFunction a b)CoprodRgtFunction : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> U b -> U (Coprod a b)CoprodRgtSetoidHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> SetoidHomomorphism (cast b) (cast (Coprod a b)) (CoprodRgtFunction a b)CoprodRgtHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> Homomorphism (b .Algebra) ((Coprod a b) .Algebra) (CoprodRgtFunction a b)Coproduct : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> a <~.~> bExtenderFunction : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> ExtenderFunctionExtenderSetoidHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> ExtenderSetoidHomomorphismExtenderIsHomomorphism : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> (other : a <~.~> b) -> Homomorphism ((Coprod a b) .Algebra) ((other .Sink) .Algebra) (ExtenderFunction a b other)Extender : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> ExtendernormalForm : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> (xy : U (Coprod a b)) -> (Coprod a b) .rel ((fst xy, O1) .+. (O1, snd xy)) xyextenderUniqueness : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> (other : a <~.~> b) -> (extend : Coproduct a b ~> other) -> (xy : U (Coprod a b)) -> (other .Sink) .rel (((extend .H) .H) .H xy) ((((Extender a b other) .H) .H) .H xy)Uniqueness : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> UniquenessCoproductCospan : (a : CommutativeMonoid) -> (b : CommutativeMonoid) -> Coproduct a b