Function Repository Resource:

AbstractPushout

Source Notebook

Represent the abstract pushout of a collection of morphisms with common domain in an abstract category

Contributed by: Jonathan Gorard

ResourceFunction["AbstractPushout"][span,push,inj,comp,id]

represents the abstract pushout of the (generalized) span span, with pushout symbol push, injection morphism names inj, composition symbol comp and identity symbol id.

ResourceFunction["AbstractPushout"][,obuniv,morphuniv,morphuniq]

represents an abstract pushout with a universal property characterized by the "universal object“ obuniv, "universal morphisms“ morphuniv and "unique morphism“ morphuniq.

ResourceFunction["AbstractPushout"][assoc]

represent an abstract pushout using the association of (generalized) span, pushout symbol, injection morphism list, composition symbol, identity symbol, "universal object", "universal morphism" list and "unique morphism“ assoc.

ResourceFunction["AbstractPushout"][][AbstractCategory[]]

embeds an abstract pushout into the specified abstract category.

ResourceFunction["AbstractPushout"][ResourceFunction["AbstractPushout"][],push,comp,id]

makes a new abstract pushout from an old pushout by imposing new pushout symbol push, new composition symbol comp and new identity symbol id.

Details

The pushout of a span (i.e. a pair of morphisms with common domain) consists of a distinguished object (the pushout object) together with a family of incoming morphisms to this object (the injection morphisms), one for each codomain in the span, in such a way that the resulting diagram commutes and that a certain universal property is satisfied. The universal property essentially indicates that the pushout object is the "most general" such object that can exist, by asserting that any other object with injection morphisms from the codomains in the span that causes the resulting diagram to commute must also have a unique morphism from the pushout object that causes the resulting diagram to commute.
The wide pushout of a generalized span is an extension of the above construction to an arbitrary collection of morphisms with common domain. An ordinary span is thus a generalized span of size 2, and an ordinary (binary) pushout is a wide pushout over a generalized span of size 2.
Abstract coproducts correspond to a special case of abstract pushouts in which the common domain object is an initial object.
Abstract pushouts are categorically dual to abstract pullbacks.
Abstract pushouts capture many familiar constructions from mathematics such as tensor products of rings (in the category of commutative rings), free products with amalgamation (in the category of groups), direct sums with gluing (in the category of abelian groups), adjunction and identification spaces (in the category of topological spaces), etc., and generalize them to arbitrary categories.
An abstract pushout may be characterized formally as a colimit taken over a span (i.e. an index category consisting of a pair of morphisms with a common domain); abstract wide pushouts may, accordingly, be characterized formally as colimits taken over generalized spans (i.e. index categories consisting of collections of morphisms with a common domain).
An abstract presentation of a (wide) pushout can therefore be given in terms of a collection of morphisms corresponding to a (generalized) span, a pushout symbol, a composition symbol, an identity symbol, and a collection of injection morphisms from the codomains in the span to the pushout object, together with symbols for a "universal object", a collection of "universal morphisms" from the codomains in the span to the "universal object", and a "unique morphism" from the pushout object to the "universal object", in order to characterize the universal property.
ResourceFunction["AbstractPushout"] supports the specification of abstract pushouts either by eight associations/lists/symbols (an association of morphisms corresponding to a generalized span span, a pushout symbol push, a list of injection morphism names inj, a composition symbol comp, an identity symbol id, a "universal object" symbol obuniv, a list of "universal morphism" names morphuniv and a "unique morphism" name morphuniq) or by an explicit association of the form <|"MorphismNames"morph,"MorphismImages"img,"CommonDomain"dom,"PushoutSymbol"push,"InjectionMorphismNames"inj,"CompositionSymbol"comp,"IdentitySymbol"id,"UniversalObjectName"obuniv,"UniversalMorphismNames"morphuniv,"UniqueMorphismName"morphuniq|>.
Where specified, the pushout symbol push should be an operator of arbitrary arity, the composition symbol comp should be a binary operator and the identity symbol id should be a unary operator.
When specifying an abstract pushout by a collection of associations/lists/symbols, ResourceFunction["AbstractPushout"] allows one to omit the pushout symbol, the list of injection morphism names, the composition symbol, the identity symbol, the "universal object" symbol, the list of "universal morphism" names or the "unique morphism" name (or certain combinations of the above). When the pushout symbol, the composition symbol or the identity symbol is omitted, Times (×), CircleDot () and OverTilde () are assumed by default. When the list of injection morphism names is omitted, the default naming convention of i1, i2, is assumed. When the "universal object" or "unique morphism" symbols are omitted, Q and u are assumed by default. When the list of "universal morphism" names is omitted, the default naming convention of j1, j2, is assumed.
If the function succeeds in constructing the specified abstract pushout, it will return an ResourceFunction["AbstractPushout"] expression.
Objects and morphisms that form part of the defining universal property of the abstract pushout are indicated using ForAll () and Exists () quantifiers, as appropriate. Unique morphisms are designated using the special-purpose ∃! quantifier, and are indicated in all directed graph representations using dashed (rather than solid) lines. When commutativity of one diagram depends upon the commutativity of another, this is indicated within the governing equations using Implies ().
ResourceFunction["AbstractPushout"] expressions can be applied to AbstractCategory expressions in order to embed the corresponding pushout within the specified category (in such a way that the universal property is satisfied).
In ResourceFunction["AbstractPushout"], the following properties are supported:
"Objects"list of objects in the abstract pushout
"ObjectCount"number of objects in the abstract pushout
"MorphismAssociation"association of morphism names/edges in the abstract pushout
"MorphismNames"list of names of morphisms in the abstract pushout
"MorphismEdges"list of directed edges associated to morphisms in the abstract pushout
"MorphismCount"number of morphisms in the abstract pushout
"ReducedMorphismAssociation"association of morphism names/edges in the abstract pushout, modulo morphism equivalences
"ReducedMorphismNames"list of names of morphisms in the abstract pushout, modulo morphism equivalences
"ReducedMorphismEdges"list of directed edges associated to morphisms in the abstract pushout, modulo morphism equivalences
"ReducedMorphismCount"number of morphisms in the abstract pushout, modulo morphism equivalences
"SimpleMorphismAssociation"association of morphism names/edges in the abstract pushout, with self-loops and multiedges removed
"SimpleMorphismNames"list of names of morphisms in the abstract pushout, with self-loops and multiedges removed
"SimpleMorphismEdges"list of directed edges associated to morphisms in the abstract pushout, with self-loops and multiedges removed
"SimpleMorphismCount"number of morphisms in the abstract pushout, with self-loops and multiedges removed
"ReducedSimpleMorphismAssociation"association of morphism names/edges in the abstract pushout, with self-loops and multiedges removed, and modulo morphism equivalences
"ReducedSimpleMorphismNames"list of names of morphisms in the abstract pushout, with self-loops and multiedges removed, and modulo morphism equivalences
"ReducedSimpleMorphismEdges"list of directed edges associated to morphisms in the abstract pushout, with self-loops and multiedges removed, and modulo morphism equivalences
"ReducedSimpleMorphismCount"number of morphisms in the abstract pushout, with self-loops and multiedges removed, and modulo morphism equivalences
"UniversalObjects"list of objects in the abstract pushout characterizing the universal property
"UniversalObjectCount"number of objects in the abstract pushout characterizing the universal property
"UniversalMorphismAssociation"association of morphism names/edges in the abstract pushout characterizing the universal property
"UniversalMorphismNames"list of names of morphisms in the abstract pushout characterizing the universal property
"UniversalMorphismEdges"list of directed edges associated to morphisms in the abstract pushout characterizing the universal property
"UniversalMorphismCount"number of morphisms in the abstract pushout characterizing the universal property
"UniversalReducedMorphismAssociation"association of morphism names/edges in the abstract pushout characterizing the universal property, modulo morphism equivalences
"UniversalReducedMorphismNames"list of names of morphisms in the abstract pushout characterizing the universal property, modulo morphism equivalences
"UniversalReducedMorphismEdges"list of directed edges associated to morphisms in the abstract pushout characterizing the universal property, modulo morphism equivalences
"UniversalReducedMorphismCount"number of morphisms in the abstract pushout characterizing the universal property, modulo morphism equivalences
"UniversalSimpleMorphismAssociation"association of morphism names/edges in the abstract pushout characterizing the universal property, with self-loops and multiedges removed
"UniversalSimpleMorphismNames"list of names of morphisms in the abstract pushout characterizing the universal property, with self-loops and multiedges removed
"UniversalSimpleMorphismEdges"list of directed edges associated to morphisms in the abstract pushout characterizing the universal property, with self-loops and multiedges removed
"UniversalSimpleMorphismCount"number of morphisms in the abstract pushout characterizing the universal property, with self-loops and multiedges removed
"UniversalReducedSimpleMorphismAssociation"association of morphism names/edges in the abstract pushout characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences
"UniversalReducedSimpleMorphismNames"list of names of morphisms in the abstract pushout 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 pushout characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences
"UniversalReducedSimpleMorphismCount"number of morphisms in the abstract pushout characterizing the universal property, with self-loops and multiedges removed, and modulo morphism equivalences
"PushoutSymbol"symbol used to denote pushout 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)
"PushoutCategory"abstract category with morphisms representing the abstract pushout
"UniversalPushoutCategory"abstract category with morphisms characterizing the universal property of the abstract pushout
"PushoutEquations"list of equations required to force the pushout diagram to commute
"UniversalPushoutEquations"list of equations required to force the pushout diagram to commute, plus those implicitly imposed by the requirement that the universal property of the abstract pushout is satisfied
"FullLabeledGraph"directed graph form of the abstract pushout with labels on the morphisms
"FullUnlabeledGraph"directed graph form of the abstract pushout with no labels on the morphisms
"ReducedLabeledGraph"directed graph form of the abstract pushout, modulo morphism equivalences, with labels on the morphisms
"ReducedUnlabeledGraph"directed graph form of the abstract pushout, modulo morphism equivalences, with no labels on the morphisms
"SimpleLabeledGraph"directed graph form of the abstract pushout, with self-loops and multiedges removed, with labels on the morphisms
"SimpleUnlabeledGraph"directed graph form of the abstract pushout, with self-loops and multiedges removed, with no labels on the morphisms
"ReducedSimpleLabeledGraph"directed graph form of the abstract pushout, with self-loops and multiedges removed, modulo morphism equivalences, with labels on the morphisms
"ReducedSimpleUnlabeledGraph"directed graph form of the abstract pushout, with self-loops and multiedges removed, modulo morphism equivalences, with no labels on the morphisms
"UniversalFullLabeledGraph"directed graph form characterizing the universal property of the abstract pushout, with labels on the morphisms
"UniversalFullUnlabeledGraph"directed graph form characterizing the universal property of the abstract pushout, with no labels on the morphisms
"UniversalReducedLabeledGraph"directed graph form characterizing the universal property of the abstract pushout, modulo morphism equivalences, with labels on the morphisms
"UniversalReducedUnlabeledGraph"directed graph form characterizing the universal property of the abstract pushout, modulo morphism equivalences, with no labels on the morphisms
"UniversalSimpleLabeledGraph"directed graph form characterizing the universal property of the abstract pushout, with self-loops and multiedges removed, with labels on the morphisms
"UniversalSimpleUnlabeledGraph"directed graph form characterizing the universal property of the abstract pushout, with self-loops and multiedges removed, with no labels on the morphisms
"UniversalReducedSimpleLabeledGraph"directed graph form characterizing the universal property of the abstract pushout, 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 pushout, with self-loops and multiedges removed, modulo morphism equivalences, with no labels on the morphisms
"AssociationForm"abstract pushout represented as an association of a list of (generalized) span morphism names, a list of (generalized) span morphism images, a common domain object, a pushout symbol, a list of injection 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

Examples

Basic Examples (3) 

Construct a simple abstract pushout of morphisms f and g from a common object T to objects A and B:

In[1]:=
pushout = ResourceFunction["AbstractPushout"][<|f -> {T, A}, g -> {T, B}|>]
Out[1]=

Show the full directed graph with labels on the morphisms:

In[2]:=
pushout["FullLabeledGraph"]
Out[2]=

Show the full directed graph without labels on the morphisms:

In[3]:=
pushout["FullUnlabeledGraph"]
Out[3]=

Show the reduced directed graph, with all equivalences between morphisms imposed and with labels on the morphisms, illustrating that the pushout diagram commutes:

In[4]:=
pushout["ReducedLabeledGraph"]
Out[4]=

Show the reduced directed graph without labels on the morphisms:

In[5]:=
pushout["ReducedUnlabeledGraph"]
Out[5]=

Show the full directed graph characterizing the universal property, with labels on the morphisms:

In[6]:=
pushout["UniversalFullLabeledGraph"]
Out[6]=

Show the full directed graph characterizing the universal property, without labels on the morphisms:

In[7]:=
pushout["UniversalFullUnlabeledGraph"]
Out[7]=

Show the Association of morphisms:

In[8]:=
pushout["MorphismAssociation"]
Out[8]=

Show the Association of (quantified) morphisms characterizing the universal property:

In[9]:=
pushout["UniversalMorphismAssociation"]
Out[9]=

Show the list of directed edges characterizing the universal property:

In[10]:=
pushout["UniversalMorphismEdges"]
Out[10]=

Show the list of equations required to force the pushout diagram to commute:

In[11]:=
pushout["PushoutEquations"]
Out[11]=

Show the list of equations required to force the pushout diagram to commute, plus the equations characterizing the universal property:

In[12]:=
pushout["UniversalPushoutEquations"]
Out[12]=

Construct an abstract (wide) pushout of morphisms f, g and h from a common object P to objects U, V and W, but with pushout symbol , injection morphisms n1, n2 and n3, composition and identity symbols and ─, and with a universal property characterized by universal object Y, universal morphisms o1, o2 and o3, and unique morphism o:

In[13]:=
pushout = ResourceFunction[
  "AbstractPushout"][<|f -> {P, U}, g -> {P, V}, h -> {P, W}|>, CirclePlus, {n1, n2, n3}, CircleTimes, OverBar, Y, {o1, o2, o3}, o]
Out[13]=

Show the full directed graph characterizing the universal property, with labels on the morphisms:

In[14]:=
pushout["UniversalFullLabeledGraph"]
Out[14]=

Show the full directed graph characterizing the universal property, without labels on the morphisms:

In[15]:=
pushout["UniversalFullUnlabeledGraph"]
Out[15]=

Show the reduced directed graph characterizing the universal property, with all equivalences between morphisms imposed and with labels on the morphisms:

In[16]:=
pushout["UniversalReducedLabeledGraph"]
Out[16]=

Show the reduced directed graph characterizing the universal property, without labels on the morphisms:

In[17]:=
pushout["UniversalReducedUnlabeledGraph"]
Out[17]=

Show the Association of morphisms, with all equivalences between morphisms imposed:

In[18]:=
pushout["ReducedMorphismAssociation"]
Out[18]=

Show the Association of morphisms characterizing the universal property, with all equivalences between morphisms imposed:

In[19]:=
pushout["UniversalReducedMorphismAssociation"]
Out[19]=

Show the list of equations required to force the (wide) pushout diagram to commute, plus the equations characterizing the universal property:

In[20]:=
pushout["UniversalPushoutEquations"]
Out[20]=

Show the association form of the abstract (wide) pushout:

In[21]:=
pushout["AssociationForm"]
Out[21]=

Construct an abstract pushout of morphisms f and g from a common object Z to objects X and Y:

In[22]:=
pushout = ResourceFunction["AbstractPushout"][<|f -> {Z, X}, g -> {Z, Y}|>]
Out[22]=

Construct an abstract category consisting of f and g, plus morphisms from X and Y to some common object U:

In[23]:=
category = ResourceFunction["AbstractCategory"][<|i -> {X, U}, j -> {Y, U}, f -> {Z, X}, g -> {Z, Y}|>]
Out[23]=

Embed the abstract pushout into the abstract category:

In[24]:=
newCategory = pushout[category]
Out[24]=

Note that, since the commutativity condition on morphisms i and j is not satisfied, the universal property is not invoked:

In[25]:=
newCategory["FullLabeledGraph"]
Out[25]=
In[26]:=
newCategory["MorphismEquivalences"]
Out[26]=

Force the commutativity condition on morphisms i and j to be satisfied:

In[27]:=
category2 = ResourceFunction["AbstractCategory"][<|i -> {X, U}, j -> {Y, U}, f -> {Z, X}, g -> {Z, Y}|>, {}, {CircleDot[i, f] == CircleDot[j, g]}]
Out[27]=

Embed the abstract pushout into the new abstract category (in such a way that the universal property is satisfied):

In[28]:=
newCategory2 = pushout[category2]
Out[28]=
In[29]:=
newCategory2["FullLabeledGraph"]
Out[29]=

Validate that the universal property is indeed satisfied:

In[30]:=
newCategory2["ReducedLabeledGraph"]
Out[30]=
In[31]:=
newCategory2["MorphismEquivalences"]
Out[31]=

Construct a more complicated abstract category consisting of additional morphisms from X and Y to some further common object V (such that these new morphisms also satisfy the requisite commutativity conditions):

In[32]:=
category3 = ResourceFunction["AbstractCategory"][<|i -> {X, U}, j -> {Y, U}, k -> {X, V}, l -> {Y, V}, f -> {Z, X}, g -> {Z, Y}|>, {}, {CircleDot[i, f] == CircleDot[j, g], CircleDot[k, f] == CircleDot[l, g]}]
Out[32]=

Embed the abstract pushout into the more complicated abstract category and validate that the universal property is still satisfied:

In[33]:=
newCategory3 = pushout[category3]
Out[33]=
In[34]:=
newCategory3["FullLabeledGraph"]
Out[34]=
In[35]:=
newCategory3["ReducedLabeledGraph"]
Out[35]=
In[36]:=
newCategory3["MorphismEquivalences"]
Out[36]=

Compute the minimal abstract category representations of the abstract pushout and its defining universal property, respectively:

In[37]:=
pushout["PushoutCategory"]
Out[37]=
In[38]:=
pushout["UniversalPushoutCategory"]
Out[38]=

Scope (2) 

Abstract pushouts can be constructed from an association of morphisms with a common domain (i.e. a generalized span), a pushout symbol, a list of names of injection morphisms, a composition symbol and an identity symbol:

In[39]:=
pushout = ResourceFunction[
  "AbstractPushout"][<|f -> {W, X}, g -> {W, Y}, h -> {W, Z}|>, CirclePlus, {n1, n2, n3}, CircleTimes, OverBar]
Out[39]=
In[40]:=
pushout["UniversalFullLabeledGraph"]
Out[40]=

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[41]:=
pushout2 = ResourceFunction[
  "AbstractPushout"][<|f -> {W, X}, g -> {W, Y}, h -> {W, Z}|>, CirclePlus, {n1, n2, n3}, CircleTimes, OverBar, U, {o1, o2, o3}, o]
Out[41]=
In[42]:=
pushout2["UniversalFullLabeledGraph"]
Out[42]=

Abstract pushouts can also be constructed directly from an association of morphisms with a common domain (i.e. a generalized span) and a list of names of injection morphisms (plus composition and identity symbols):

In[43]:=
pushout3 = ResourceFunction[
  "AbstractPushout"][<|f -> {Z, X}, g -> {Z, Y}|>, {g1, g2}, CircleTimes, OverBar]
Out[43]=
In[44]:=
pushout3["UniversalFullLabeledGraph"]
Out[44]=

Or from a morphism association (for the generalized span) with pushout, composition and identity symbols alone:

In[45]:=
pushout4 = ResourceFunction["AbstractPushout"][<|f -> {Z, X}, g -> {Z, Y}|>, CirclePlus, CircleTimes, OverBar]
Out[45]=
In[46]:=
pushout4["UniversalFullLabeledGraph"]
Out[46]=

If any of these arguments is not explicitly specified, the appropriate defaults are assumed automatically:

In[47]:=
pushout5 = ResourceFunction[
  "AbstractPushout"][<|f -> {P, U}, g -> {P, W}, h -> {P, V}|>]
Out[47]=
In[48]:=
pushout5["UniversalFullLabeledGraph"]
Out[48]=

New pushout, composition and identity symbols can be specified for any existing abstract pushout:

In[49]:=
pushout6 = ResourceFunction["AbstractPushout"][pushout5, CirclePlus, CircleTimes, OverBar]
Out[49]=
In[50]:=
pushout6["UniversalFullLabeledGraph"]
Out[50]=

From an explicit association:

In[51]:=
ResourceFunction[
 "AbstractPushout"][<|"MorphismNames" -> {f, g}, "MorphismImages" -> {A, B}, "CommonDomain" -> P, "PushoutSymbol" -> CirclePlus, "InjectionMorphismNames" -> {i1, i2},
   "CompositionSymbol" -> CircleTimes, "IdentitySymbol" -> OverBar, "UniversalObjectName" -> Y, "UniversalMorphismNames" -> {f1, f2}, "UniqueMorphismName" -> u|>]
Out[51]=

Construct an abstract pushout of morphisms f, g, h and i from a common object T to objects X, Y, Z and W:

In[52]:=
pushout = ResourceFunction[
  "AbstractPushout"][<|f -> {T, X}, g -> {T, Y}, h -> {T, Z}, i -> {T, W}|>]
Out[52]=

Show the list of properties:

In[53]:=
pushout["Properties"]
Out[53]=

Show the list of objects in the abstract pushout:

In[54]:=
pushout["Objects"]
Out[54]=

Show the number of objects in the abstract pushout:

In[55]:=
pushout["ObjectCount"]
Out[55]=

Show the association of morphisms in the abstract pushout:

In[56]:=
pushout["MorphismAssociation"]
Out[56]=

Show the list of names of morphisms in the abstract pushout:

In[57]:=
pushout["MorphismNames"]
Out[57]=

Show the list of directed edges corresponding to morphisms in the abstract pushout:

In[58]:=
pushout["MorphismEdges"]
Out[58]=

Show the number of morphisms in the abstract pushout:

In[59]:=
pushout["MorphismCount"]
Out[59]=

Show the association of reduced morphisms, modded out by all morphism equivalences, in the abstract pushout:

In[60]:=
pushout["ReducedMorphismAssociation"]
Out[60]=

Show the list of names of reduced morphisms, modded out by all morphism equivalences, in the abstract pushout:

In[61]:=
pushout["ReducedMorphismNames"]
Out[61]=

Show the list of directed edges corresponding to reduced morphisms, modded out by all morphism equivalences, in the abstract pushout:

In[62]:=
pushout["ReducedMorphismEdges"]
Out[62]=

Show the number of reduced morphisms, modded out by all morphism equivalences, in the abstract pushout:

In[63]:=
pushout["ReducedMorphismCount"]
Out[63]=

Show the association of simple morphisms (with all self-loops and multiedges removed) in the abstract pushout:

In[64]:=
pushout["SimpleMorphismAssociation"]
Out[64]=

Show the list of names of simple morphisms (with all self-loops and multiedges removed) in the abstract pushout:

In[65]:=
pushout["SimpleMorphismNames"]
Out[65]=

Show the list of directed edges corresponding to simple morphisms (with all self-loops and multiedges removed) in the abstract pushout:

In[66]:=
pushout["SimpleMorphismEdges"]
Out[66]=

Show the number of simple morphisms (with all self-loops and multiedges removed) in the abstract pushout:

In[67]:=
pushout["SimpleMorphismCount"]
Out[67]=

Show the association of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) in the abstract pushout:

In[68]:=
pushout["ReducedSimpleMorphismAssociation"]
Out[68]=

Show the list of names of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) in the abstract pushout:

In[69]:=
pushout["ReducedSimpleMorphismNames"]
Out[69]=

Show the list of directed edges corresponding to reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) in the abstract pushout:

In[70]:=
pushout["ReducedSimpleMorphismEdges"]
Out[70]=

Show the number of reduced simple morphisms (with all self-loops and multiedges removed, plus all morphism equivalences modded out) in the abstract pushout:

In[71]:=
pushout["ReducedSimpleMorphismCount"]
Out[71]=

Show the list of objects characterizing the universal property of the abstract pushout:

In[72]:=
pushout["UniversalObjects"]
Out[72]=

Show the number of objects characterizing the universal property of the abstract pushout:

In[73]:=
pushout["UniversalObjectCount"]
Out[73]=

Show the association of morphisms characterizing the universal property of the abstract pushout:

In[74]:=
pushout["UniversalMorphismAssociation"]
Out[74]=

Show the list of names of morphisms characterizing the universal property of the abstract pushout:

In[75]:=
pushout["UniversalMorphismNames"]
Out[75]=

Show the list of directed edges corresponding to morphisms characterizing the universal property of the abstract pushout:

In[76]:=
pushout["UniversalMorphismEdges"]
Out[76]=

Show the number of morphisms characterizing the universal property of the abstract pushout:

In[77]:=
pushout["UniversalMorphismCount"]
Out[77]=

Show the association of reduced morphisms, modded out by all morphism equivalences, characterizing the universal property of the abstract pushout:

In[78]:=
pushout["UniversalReducedMorphismAssociation"]
Out[78]=

Show the list of names of reduced morphisms, modded out by all morphism equivalences, characterizing the universal property of the abstract pushout:

In[79]:=
pushout["UniversalReducedMorphismNames"]
Out[79]=

Show the list of directed edges corresponding to reduced morphisms, modded out by all morphism equivalences, characterizing the universal property of the abstract pushout:

In[80]:=
pushout["UniversalReducedMorphismEdges"]
Out[80]=

Show the number of reduced morphisms, modded out by all morphism equivalences, characterizing the universal property of the abstract pushout:

In[81]:=
pushout["UniversalReducedMorphismCount"]
Out[81]=

Show the association of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract pushout:

In[82]:=
pushout["UniversalSimpleMorphismAssociation"]
Out[82]=

Show the list of names of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract pushout:

In[83]:=
pushout["UniversalSimpleMorphismNames"]
Out[83]=

Show the list of directed edges corresponding to simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract pushout:

In[84]:=
pushout["UniversalSimpleMorphismEdges"]
Out[84]=

Show the number of simple morphisms (with all self-loops and multiedges removed) characterizing the universal property of the abstract pushout:

In[85]:=
pushout["UniversalSimpleMorphismCount"]
Out[85]=

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 pushout:

In[86]:=
pushout["UniversalReducedSimpleMorphismAssociation"]
Out[86]=

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 pushout:

In[87]:=
pushout["UniversalReducedSimpleMorphismNames"]
Out[87]=

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 pushout:

In[88]:=
pushout["UniversalReducedSimpleMorphismEdges"]
Out[88]=

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 pushout:

In[89]:=
pushout["UniversalReducedSimpleMorphismCount"]
Out[89]=

Show the (arbitrary arity) symbol used to denote the abstract pushout operation:

In[90]:=
pushout["PushoutSymbol"]
Out[90]=

Show the (binary) symbol used to denote morphism composition in the abstract pushout:

In[91]:=
pushout["CompositionSymbol"]
Out[91]=

Show the (unary) symbol used to denote identity morphisms on objects in the abstract pushout:

In[92]:=
pushout["IdentitySymbol"]
Out[92]=

Compute the abstract category whose morphisms represent the abstract pushout:

In[93]:=
pushout["PushoutCategory"]
Out[93]=

Compute the abstract category whose morphisms characterize the universal property of the abstract pushout:

In[94]:=
pushout["UniversalPushoutCategory"]
Out[94]=

Show the list of equations required to force the abstract pushout diagram to commute:

In[95]:=
pushout["PushoutEquations"]
Out[95]=

Show the list of equations required to force the abstract pushout diagram to commute, plus the equations implicitly imposed by the requirement that the universal property of the abstract pushout is satisfied:

In[96]:=
pushout["UniversalPushoutEquations"]
Out[96]=

Show the full directed graph with labels on the morphisms of the abstract pushout:

In[97]:=
pushout["FullLabeledGraph"]
Out[97]=

Show the full directed graph without labels on the morphisms of the abstract pushout:

In[98]:=
pushout["FullUnlabeledGraph"]
Out[98]=

Show the reduced directed graph, with all equivalences between morphisms imposed and with labels on the morphisms of the abstract pushout:

In[99]:=
pushout["ReducedLabeledGraph"]
Out[99]=

Show the reduced directed graph, with all equivalences between morphisms imposed and without labels on the morphisms of the abstract pushout:

In[100]:=
pushout["ReducedUnlabeledGraph"]
Out[100]=

Show the simple directed graph, with all self-loops and multiedges removed and with labels on the morphisms of the abstract pushout:

In[101]:=
pushout["SimpleLabeledGraph"]
Out[101]=

Show the simple directed graph, with all self-loops and multiedges removed and without labels on the morphisms of the abstract pushout:

In[102]:=
pushout["SimpleUnlabeledGraph"]
Out[102]=

Show the reduced simple directed graph, with all self-loops and multiedges removed, plus all equivalences between morphisms modded out and with labels on the morphisms of the abstract pushout:

In[103]:=
pushout["ReducedSimpleLabeledGraph"]
Out[103]=

Show the reduced simple directed graph, with all self-loops and multiedges removed, plus all equivalences between morphisms modded out and without labels on the morphisms of the abstract pushout:

In[104]:=
pushout["ReducedSimpleUnlabeledGraph"]
Out[104]=

Show the full directed graph characterizing the universal property of the abstract pushout, with labels on the morphisms:

In[105]:=
pushout["UniversalFullLabeledGraph"]
Out[105]=

Show the full directed graph characterizing the universal property of the abstract pushout, without labels on the morphisms:

In[106]:=
pushout["UniversalFullUnlabeledGraph"]
Out[106]=

Show the reduced directed graph characterizing the universal property of the abstract pushout, with all equivalences between morphisms imposed and with labels on the morphisms:

In[107]:=
pushout["UniversalReducedLabeledGraph"]
Out[107]=

Show the reduced directed graph characterizing the universal property of the abstract pushout, with all equivalences between morphisms imposed and without labels on the morphisms:

In[108]:=
pushout["UniversalReducedUnlabeledGraph"]
Out[108]=

Show the simple directed graph characterizing the universal property of the abstract pushout, with all self-loops and multiedges removed and with labels on the morphisms:

In[109]:=
pushout["UniversalSimpleLabeledGraph"]
Out[109]=

Show the simple directed graph characterizing the universal property of the abstract pushout, with all self-loops and multiedges removed and without labels on the morphisms:

In[110]:=
pushout["UniversalSimpleUnlabeledGraph"]
Out[110]=

Show the reduced simple directed graph characterizing the universal property of the abstract pushout, with all self-loops and multiedges removed, plus all equivalences between morphisms modded out and with labels on the morphisms:

In[111]:=
pushout["UniversalReducedSimpleLabeledGraph"]
Out[111]=

Show the reduced simple directed graph characterizing the universal property of the abstract pushout, with all self-loops and multiedges removed, plus all equivalences between morphisms modded out and without labels on the morphisms:

In[112]:=
pushout["UniversalReducedSimpleUnlabeledGraph"]
Out[112]=

Show the explicit association form of the pushout:

In[113]:=
pushout["AssociationForm"]
Out[113]=

Publisher

Jonathan Gorard

Version History

  • 1.0.0 – 25 April 2022

Source Metadata

Related Resources

License Information