Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Represent the abstract product of an arbitrary collection of objects in an abstract category
| ResourceFunction["AbstractProduct"][ob,prod,proj,comp,id] represents the abstract product of the collection of objects ob, with product symbol prod, projection morphism names proj, composition symbol comp and identity symbol id. | |
| ResourceFunction["AbstractProduct"][…,obuniv,morphuniv,morphuniq] represents an abstract product with a universal property characterized by the universal object obuniv, universal morphisms morphuniv and unique morphism morphuniq. | |
| ResourceFunction["AbstractProduct"][assoc] represents an abstract product using the association of object list, product symbol, projection morphism list, composition symbol, identity symbol, universal object, universal morphism list and unique morphism assoc. | |
| ResourceFunction["AbstractProduct"][…][AbstractCategory[…]] embeds an abstract product into the specified abstract category. | |
| ResourceFunction["AbstractProduct"][ResourceFunction["AbstractProduct"][…],prod,comp,id] makes a new abstract product from an old product by imposing new product symbol prod, new composition symbol comp and new identity symbol id. | 
 ,
,  ,… is assumed. When the universal object or unique morphism symbols are omitted, Y and f are assumed by default. When the list of universal morphism names is omitted, the default naming convention of f1, f2,… is assumed.
,… is assumed. When the universal object or unique morphism symbols are omitted, Y and f are assumed by default. When the list of universal morphism names is omitted, the default naming convention of f1, f2,… is assumed.| "Objects" | list of objects in the abstract product | 
| "ObjectCount" | number of objects in the abstract product | 
| "MorphismAssociation" | association of morphism names/edges in the abstract product | 
| "MorphismNames" | list of names of morphisms in the abstract product | 
| "MorphismEdges" | list of directed edges associated to morphisms in the abstract product | 
| "MorphismCount" | number of morphisms in the abstract product | 
| "SimpleMorphismAssociation" | association of morphism names/edges in the abstract product with self-loops removed | 
| "SimpleMorphismNames" | list of names of morphisms in the abstract product with self-loops removed | 
| "SimpleMorphismEdges" | list of directed edges associated to morphisms in the abstract product with self-loops removed | 
| "SimpleMorphismCount" | number of morphisms in the abstract product with self-loops removed | 
| "UniversalObjects" | list of objects in the abstract product characterizing the universal property | 
| "UniversalObjectCount" | number of objects in the abstract product characterizing the universal property | 
| "UniversalMorphismAssociation" | association of morphism names/edges in the abstract product characterizing the universal property | 
| "UniversalMorphismNames" | list of names of morphisms in the abstract product characterizing the universal property | 
| "UniversalMorphismEdges" | list of directed edges associated to morphisms in the abstract product characterizing the universal property | 
| "UniversalMorphismCount" | number of morphisms in the abstract product characterizing the universal property | 
| "UniversalReducedMorphismAssociation" | association of morphism names/edges in the abstract product characterizing the universal property, modulo morphism equivalences | 
| "UniversalReducedMorphismNames" | list of names of morphisms in the abstract product characterizing the universal property, modulo morphism equivalences | 
| "UniversalReducedMorphismEdges" | list of directed edges associated to morphisms in the abstract product characterizing the universal property, modulo morphism equivalences | 
| "UniversalReducedMorphismCount" | number of morphisms in the abstract product characterizing the universal property, modulo morphism equivalences | 
| "UniversalSimpleMorphismAssociation" | association of morphism names/edges in the abstract product characterizing the universal property, with self-loops and multiedges removed | 
| "UniversalSimpleMorphismNames" | list of names of morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed | 
| "UniversalSimpleMorphismEdges" | list of directed edges associated to morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed | 
| "UniversalSimpleMorphismCount" | number of morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed | 
| "UniversalReducedSimpleMorphismAssociation" | association of morphism names/edges in the abstract product characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences | 
| "UniversalReducedSimpleMorphismNames" | list of names of morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences | 
| "UniversalReducedSimpleMorphismEdges" | list of directed edges associated to morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences | 
| "UniversalReducedSimpleMorphismCount" | number of morphisms in the abstract product characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences | 
| "ProductSymbol" | symbol used to denote products of objects (should be an operator of arbitrary arity) | 
| "CompositionSymbol" | symbol used to denote morphism composition (should be a binary operator) | 
| "IdentitySymbol" | symbol used to denote identity morphisms (should be a unary operator) | 
| "ProductCategory" | abstract category with morphisms representing the abstract product | 
| "UniversalProductCategory" | abstract category with morphisms characterizing the universal property of the abstract product | 
| "UniversalProductEquations" | list of equations implicitly imposed by the requirement that the universal property of the abstract product is satisfied | 
| "FullLabeledGraph" | directed graph form of the abstract product with labels on the morphisms | 
| "FullUnlabeledGraph" | directed graph form of the abstract product with no labels on the morphisms | 
| "SimpleLabeledGraph" | directed graph form of the abstract product, with self-loops removed, with labels on the morphisms | 
| "SimpleUnlabeledGraph" | directed graph form of the abstract product, with self-loops removed, with no labels on the morphisms | 
| "UniversalFullLabeledGraph" | directed graph form characterizing the universal property of the abstract product, with labels on the morphisms | 
| "UniversalFullUnlabeledGraph" | directed graph form characterizing the universal property of the abstract product, with no labels on the morphisms | 
| "UniversalReducedLabeledGraph" | directed graph form characterizing the universal property of the abstract product, modulo morphism equivalences, with labels on the morphisms | 
| "UniversalReducedUnlabeledGraph" | directed graph form characterizing the universal property of the abstract product, modulo morphism equivalences, with no labels on the morphisms | 
| "UniversalSimpleLabeledGraph" | directed graph form characterizing the universal property of the abstract product, with self-loops and multiedges removed, with labels on the morphisms | 
| "UniversalSimpleUnlabeledGraph" | directed graph form characterizing the universal property of the abstract product, with self-loops and multiedges removed, with no labels on the morphisms | 
| "UniversalReducedSimpleLabeledGraph" | directed graph form characterizing the universal property of the abstract product, with self-loops and multiedges removed, modulo morphism equivalences, with labels on the morphisms | 
| "UniversalReducedSimpleUnlabeledGraph" | directed graph form characterizing the universal property of the abstract product, with self-loops and multiedges removed, modulo morphism equivalences, with no labels on the morphisms | 
| "AssociationForm" | abstract product represented as an association of a list of objects, a product symbol, a list of projection morphism names, a composition symbol, an identity symbol, a universal object name, a list of universal morphism names and a unique morphism name | 
| "Properties" | list of properties | 
Construct a simple abstract product of objects A and B:
| In[1]:= | ![product = ResourceFunction["AbstractProduct"][{A, B}]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6591ef4a2bf427ab.png) | 
| Out[1]= |  | 
Show the full directed graph with labels on the morphisms:
| In[2]:= | ![product["FullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/705d2081cc5e4545.png) | 
| Out[2]= |  | 
Show the full directed graph without labels on the morphisms:
| In[3]:= | ![product["FullUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/0147a597440f2fdf.png) | 
| Out[3]= |  | 
Show the full directed graph characterizing the universal property with labels on the morphisms:
| In[4]:= | ![product["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/28edf13102939ee1.png) | 
| Out[4]= |  | 
Show the full directed graph characterizing the universal property without labels on the morphisms:
| In[5]:= | ![product["UniversalFullUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/03ec223505895bbe.png) | 
| Out[5]= |  | 
Show the Association of morphisms:
| In[6]:= | ![product["MorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/575b4e6258c1d559.png) | 
| Out[6]= |  | 
Show the Association of (quantified) morphisms characterizing the universal property:
| In[7]:= | ![product["UniversalMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/01beaadbc20dc0bd.png) | 
| Out[7]= |  | 
Show the list of directed edges characterizing the universal property:
| In[8]:= | ![product["UniversalMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1ee341dfa9311ecc.png) | 
| Out[8]= |  | 
Show the list of equations characterizing the universal property:
| In[9]:= | ![product["UniversalProductEquations"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/5cdef971f9f209f3.png) | 
| Out[9]= |  | 
Construct an abstract product of objects U, V and W, but with product symbol ⊗; projection morphisms p1, p2 and p3; and composition and identity symbols ⊕ and ─ and with a universal property characterized by universal object Q; universal morphisms m1, m2 and m3; and unique morphism u:
| In[10]:= | ![product = ResourceFunction["AbstractProduct"][{U, V, W}, CircleTimes, {p1, p2, p3}, CirclePlus, OverBar, Q, {m1, m2, m3}, u]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/4bfb4bade0d1ddaf.png) | 
| Out[10]= |  | 
Show the full directed graph characterizing the universal property with labels on the morphisms:
| In[11]:= | ![product["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2b34a5d4e228a7f2.png) | 
| Out[11]= |  | 
Show the full directed graph characterizing the universal property without labels on the morphisms:
| In[12]:= | ![product["UniversalFullUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1859377dd316d2b6.png) | 
| Out[12]= |  | 
Show the reduced directed graph characterizing the universal property with all equivalences between morphisms imposed and with labels on the morphisms:
| In[13]:= | ![product["UniversalReducedLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/4699a22b68d63d7a.png) | 
| Out[13]= |  | 
Show the reduced directed graph characterizing the universal property without labels on the morphisms:
| In[14]:= | ![product["UniversalReducedUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2aaca9d886590550.png) | 
| Out[14]= |  | 
Show the Association of morphisms characterizing the universal property with all equivalences between morphisms imposed:
| In[15]:= | ![product["UniversalReducedMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6f825de061259c25.png) | 
| Out[15]= |  | 
Show the list of equations characterizing the universal property:
| In[16]:= | ![product["UniversalProductEquations"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2843789d3b0c573b.png) | 
| Out[16]= |  | 
Show the association form of the abstract product:
| In[17]:= | ![product["AssociationForm"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/5fd2eb3bc7383cca.png) | 
| Out[17]= |  | 
Construct an abstract product of objects X and Y:
| In[18]:= | ![product = ResourceFunction["AbstractProduct"][{X, Y}]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2d3bd4e7150e0af5.png) | 
| Out[18]= |  | 
Construct an abstract category consisting of morphisms to X and Y from some common object Z:
| In[19]:= | ![category = ResourceFunction["AbstractCategory"][<|f -> {Z, X}, g -> {Z, Y}|>]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/464811c0ff8bcdcd.png) | 
| Out[19]= |  | 
Embed the abstract product into the abstract category (in such a way that the universal property is satisfied):
| In[20]:= | ![newCategory = product[category]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/543aa3c0df608971.png) | 
| Out[20]= |  | 
| In[21]:= | ![newCategory["FullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/51f143424d4eece2.png) | 
| Out[21]= |  | 
Validate that the universal property is indeed satisfied:
| In[22]:= | ![newCategory["ReducedLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/170f5046b1901b9c.png) | 
| Out[22]= |  | 
| In[23]:= | ![newCategory["MorphismEquivalences"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/74991428d5465ef0.png) | 
| Out[23]= |  | 
Construct a more complicated abstract category consisting of additional morphisms to X and Y from a further common object W:
| In[24]:= | ![category2 = ResourceFunction["AbstractCategory"][<|f -> {Z, X}, g -> {Z, Y}, h -> {W, X}, i -> {W, Y}|>]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/495b75324baae6b5.png) | 
| Out[24]= |  | 
Embed the abstract product into the more complicated abstract category and validate that the universal property is still satisfied:
| In[25]:= | ![newCategory2 = product[category2]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6e15e012b8574a63.png) | 
| Out[25]= |  | 
| In[26]:= | ![newCategory2["FullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/55a98e4953fb994f.png) | 
| Out[26]= |  | 
| In[27]:= | ![newCategory2["ReducedLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3342e08543b7b8f7.png) | 
| Out[27]= |  | 
| In[28]:= | ![newCategory2["MorphismEquivalences"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6b191a8e530392bd.png) | 
| Out[28]= |  | 
Compute minimal abstract category representations of the abstract product and its defining universal property, respectively:
| In[29]:= | ![product["ProductCategory"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/54343807dad64352.png) | 
| Out[29]= |  | 
| In[30]:= | ![product["UniversalProductCategory"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/51a3f1c6f4f793eb.png) | 
| Out[30]= |  | 
Abstract products can be constructed from a list of objects, a product symbol, a list of names of projection morphisms, a composition symbol and an identity symbol:
| In[31]:= | ![product = ResourceFunction["AbstractProduct"][{X, Y, Z}, CircleTimes, {p1, p2, p3}, CirclePlus, OverBar]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1b0555b5a435b982.png) | 
| Out[31]= |  | 
| In[32]:= | ![product["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/7bdefc16e6e9ed82.png) | 
| Out[32]= |  | 
A universal object symbol, a list of names of universal morphisms and a unique morphism symbol can also be specified in order to characterize the universal property fully:
| In[33]:= | ![product2 = ResourceFunction["AbstractProduct"][{X, Y, Z}, CircleTimes, {p1, p2, p3}, CirclePlus, OverBar, Q, {m1, m2, m3}, u]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/04281248bfd1b5a8.png) | 
| Out[33]= |  | 
| In[34]:= | ![product2["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/230144b1bb2248cf.png) | 
| Out[34]= |  | 
Abstract products can also be constructed directly from a list of objects and a list of names of projection morphisms (plus composition and identity symbols):
| In[35]:= | ![product3 = ResourceFunction["AbstractProduct"][{X, Y}, {g1, g2}, CircleTimes, OverBar]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/16ab14cce90936b1.png) | 
| Out[35]= |  | 
| In[36]:= | ![product3["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/38e01f656b1cbe70.png) | 
| Out[36]= |  | 
Or from an object list with product, composition and identity symbols alone:
| In[37]:= | ![product4 = ResourceFunction["AbstractProduct"][{X, Y}, CircleTimes, CirclePlus, OverBar]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2f7d27df170d02c7.png) | 
| Out[37]= |  | 
| In[38]:= | ![product4["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2b597dd6b2f3f9c8.png) | 
| Out[38]= |  | 
If any of these arguments is not explicitly specified, the appropriate defaults are assumed automatically:
| In[39]:= | ![product5 = ResourceFunction["AbstractProduct"][{U, V, W}]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/633233e7445669de.png) | 
| Out[39]= |  | 
| In[40]:= | ![product5["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/63776ce1003a9e05.png) | 
| Out[40]= |  | 
New product, composition and identity symbols can be specified for any existing abstract product:
| In[41]:= | ![product6 = ResourceFunction["AbstractProduct"][product5, CircleTimes, CirclePlus, OverBar]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/7aac5ba5a4b428c9.png) | 
| Out[41]= |  | 
| In[42]:= | ![product6["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6175095b919b831b.png) | 
| Out[42]= |  | 
From an explicit association:
| In[43]:= | ![ResourceFunction[
 "AbstractProduct"][<|"Objects" -> {A, B}, "ProductSymbol" -> CircleTimes, "ProjectionMorphismNames" -> {p1, p2}, "CompositionSymbol" -> CirclePlus, "IdentitySymbol" -> OverBar, "UniversalObjectName" -> Q, "UniversalMorphismNames" -> {f1, f2}, "UniqueMorphismName" -> u|>]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/312bf1ebbe5a6409.png) | 
| Out[43]= |  | 
Construct an abstract product of objects X, Y, Z and W:
| In[44]:= | ![product = ResourceFunction["AbstractProduct"][{X, Y, Z, W}]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3704b8e67c30ba4f.png) | 
| Out[44]= |  | 
Show the list of properties:
| In[45]:= | ![product["Properties"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1df8bb8af07e3047.png) | 
| Out[45]= |  | 
Show the list of objects in the abstract product:
| In[46]:= | ![product["Objects"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/60f8572eb1080c98.png) | 
| Out[46]= |  | 
Show the number of objects in the abstract product:
| In[47]:= | ![product["ObjectCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/75baa406769a3f23.png) | 
| Out[47]= |  | 
Show the association of morphisms in the abstract product:
| In[48]:= | ![product["MorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2e1c46660e754763.png) | 
| Out[48]= |  | 
Show the list of names of morphisms in the abstract product:
| In[49]:= | ![product["MorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/194186bc241ed9ab.png) | 
| Out[49]= |  | 
Show the list of directed edges corresponding to morphisms in the abstract product:
| In[50]:= | ![product["MorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/04f7be466a94821b.png) | 
| Out[50]= |  | 
Show the number of morphisms in the abstract product:
| In[51]:= | ![product["MorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6ee04b847dfb2462.png) | 
| Out[51]= |  | 
Show the association of simple morphisms (with all self-loops removed) in the abstract product:
| In[52]:= | ![product["SimpleMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/112d751f9edee55f.png) | 
| Out[52]= |  | 
Show the list of names of simple morphisms (with all self-loops removed) in the abstract product:
| In[53]:= | ![product["SimpleMorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6a6fa57d96104e94.png) | 
| Out[53]= |  | 
Show the list of directed edges corresponding to simple morphisms (with all self-loops removed) in the abstract product:
| In[54]:= | ![product["SimpleMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/060ae360eecd0f52.png) | 
| Out[54]= |  | 
Show the number of simple morphisms (with all self-loops removed) in the abstract product:
| In[55]:= | ![product["SimpleMorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/7ff05db5cf7f96a2.png) | 
| Out[55]= |  | 
Show the list of objects characterizing the universal property of the abstract product:
| In[56]:= | ![product["UniversalObjects"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/00b2bb267f7f9b90.png) | 
| Out[56]= |  | 
Show the number of objects characterizing the universal property of the abstract product:
| In[57]:= | ![product["UniversalObjectCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1de3886e0fc75797.png) | 
| Out[57]= |  | 
Show the association of morphisms characterizing the universal property of the abstract product:
| In[58]:= | ![product["UniversalMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/4db0360330716ed2.png) | 
| Out[58]= |  | 
Show the list of names of morphisms characterizing the universal property of the abstract product:
| In[59]:= | ![product["UniversalMorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/75d892f6b47e1e3a.png) | 
| Out[59]= |  | 
Show the list of directed edges corresponding to morphisms characterizing the universal property of the abstract product:
| In[60]:= | ![product["UniversalMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/026e42bd9aa1b3ba.png) | 
| Out[60]= |  | 
Show the number of morphisms characterizing the universal property of the abstract product:
| In[61]:= | ![product["UniversalMorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2931dd007a3b3f57.png) | 
| Out[61]= |  | 
Show the association of reduced morphisms (modded out by all morphism equivalences) characterizing the universal property of the abstract product:
| In[62]:= | ![product["UniversalReducedMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3ef6f7f76d68810d.png) | 
| Out[62]= |  | 
Show the list of names of reduced morphisms (modded out by all morphism equivalences) characterizing the universal property of the abstract product:
| In[63]:= | ![product["UniversalReducedMorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/7a296730d8151569.png) | 
| Out[63]= |  | 
Show the list of directed edges corresponding to reduced morphisms (modded out by all morphism equivalences) characterizing the universal property of the abstract product:
| In[64]:= | ![product["UniversalReducedMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/00fbb9c1c170ad7a.png) | 
| Out[64]= |  | 
Show the number of reduced morphisms (modded out by all morphism equivalences) characterizing the universal property of the abstract product:
| In[65]:= | ![product["UniversalReducedMorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/16f5a0e2afb14958.png) | 
| Out[65]= |  | 
Show the association of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract product:
| In[66]:= | ![product["UniversalSimpleMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3f1200233297fd28.png) | 
| Out[66]= |  | 
Show the list of names of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract product:
| In[67]:= | ![product["UniversalSimpleMorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/70f49295a1147b52.png) | 
| Out[67]= |  | 
Show the list of directed edges corresponding to simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract product:
| In[68]:= | ![product["UniversalSimpleMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3e562a747c0f68d8.png) | 
| Out[68]= |  | 
Show the number of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract product:
| In[69]:= | ![product["UniversalSimpleMorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2dd876509cdf9346.png) | 
| Out[69]= |  | 
Show the association of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) characterizing the universal property of the abstract product:
| In[70]:= | ![product["UniversalReducedSimpleMorphismAssociation"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/19cb825838e77c8d.png) | 
| Out[70]= |  | 
Show the list of names of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) characterizing the universal property of the abstract product:
| In[71]:= | ![product["UniversalReducedSimpleMorphismNames"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/09675876aa33e7ba.png) | 
| Out[71]= |  | 
Show the list of directed edges corresponding to reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) characterizing the universal property of the abstract product:
| In[72]:= | ![product["UniversalReducedSimpleMorphismEdges"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/4f31cfc534e89141.png) | 
| Out[72]= |  | 
Show the number of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) characterizing the universal property of the abstract product:
| In[73]:= | ![product["UniversalReducedSimpleMorphismCount"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/30a57ceb50adcec3.png) | 
| Out[73]= |  | 
Show the (arbitrary arity) symbol used to denote the abstract product operation:
| In[74]:= | ![product["ProductSymbol"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/37ec5b517ce3624f.png) | 
| Out[74]= |  | 
Show the (binary) symbol used to denote morphism composition in the abstract product:
| In[75]:= | ![product["CompositionSymbol"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/565b7d1d085c8219.png) | 
| Out[75]= |  | 
Show the (unary) symbol used to denote identity morphisms on objects in the abstract product:
| In[76]:= | ![product["IdentitySymbol"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/21798ec2109ff32b.png) | 
| Out[76]= |  | 
Compute the abstract category whose morphisms represent the abstract product:
| In[77]:= | ![product["ProductCategory"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1d8eb2d595a7a6b5.png) | 
| Out[77]= |  | 
Compute the abstract category whose morphisms characterize the universal property of the abstract product:
| In[78]:= | ![product["UniversalProductCategory"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/1f11c871608401fb.png) | 
| Out[78]= |  | 
Show the list of equations imposed implicitly by the requirement that the universal property of the abstract product is satisfied:
| In[79]:= | ![product["UniversalProductEquations"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/454348bf6b9c0af3.png) | 
| Out[79]= |  | 
Show the full directed graph with labels on the morphisms of the abstract product:
| In[80]:= | ![product["FullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2c50522066171384.png) | 
| Out[80]= |  | 
Show the full directed graph without labels on the morphisms of the abstract product:
| In[81]:= | ![product["FullUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2f70fe95b9602ff1.png) | 
| Out[81]= |  | 
Show the simple directed graph with all self-loops removed and with labels on the morphisms of the abstract product:
| In[82]:= | ![product["SimpleLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/6de81e07c2175310.png) | 
| Out[82]= |  | 
Show the simple directed graph with all self-loops removed and without labels on the morphisms of the abstract product:
| In[83]:= | ![product["SimpleUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/504b4601b0671eb5.png) | 
| Out[83]= |  | 
Show the full directed graph characterizing the universal property of the abstract product with labels on the morphisms:
| In[84]:= | ![product["UniversalFullLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/4a9514f3dc3cb08a.png) | 
| Out[84]= |  | 
Show the full directed graph characterizing the universal property of the abstract product without labels on the morphisms:
| In[85]:= | ![product["UniversalFullUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/2e67cde76ba555ad.png) | 
| Out[85]= |  | 
Show the reduced directed graph characterizing the universal property of the abstract product with all equivalences between morphisms imposed and with labels on the morphisms:
| In[86]:= | ![product["UniversalReducedLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/3e92758de0afaba4.png) | 
| Out[86]= |  | 
Show the reduced directed graph characterizing the universal property of the abstract product with all equivalences between morphisms imposed and without labels on the morphisms:
| In[87]:= | ![product["UniversalReducedUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/60955bc387ba16d1.png) | 
| Out[87]= |  | 
Show the simple directed graph characterizing the universal property of the abstract product with all self-loops and multiedges removed and with labels on the morphisms:
| In[88]:= | ![product["UniversalSimpleLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/162268a131a43d6a.png) | 
| Out[88]= |  | 
Show the simple directed graph characterizing the universal property of the abstract product with all self-loops and multiedges removed and without labels on the morphisms:
| In[89]:= | ![product["UniversalSimpleUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/655ee9702ef6e8a5.png) | 
| Out[89]= |  | 
Show the reduced simple directed graph characterizing the universal property of the abstract coproduct, with all self-loops and multiedges removed plus all equivalences between morphisms modded out and with labels on the morphisms:
| In[90]:= | ![product["UniversalReducedSimpleLabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/46b229977ae751b5.png) | 
| Out[90]= |  | 
Show the reduced simple directed graph characterizing the universal property of the abstract coproduct, with all self-loops and multiedges removed plus all equivalences between morphisms modded out and without labels on the morphisms:
| In[91]:= | ![product["UniversalReducedSimpleUnlabeledGraph"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/7f96446b6069dec0.png) | 
| Out[91]= |  | 
Show the explicit association form of the product:
| In[92]:= | ![product["AssociationForm"]](https://www.wolframcloud.com/obj/resourcesystem/images/f59/f59901b2-bab9-4d49-95c1-022617b4b4ec/28b7ccb6313e46aa.png) | 
| Out[92]= |  | 
This work is licensed under a Creative Commons Attribution 4.0 International License