<!-- ------------------------------------------------------------------- --> <!-- --> <!-- mwo.xml Gpd documentation Chris Wensley --> <!-- --> <!-- $Id: mwo.xml,v 1.05 2008/11/21 gap Exp $ --> <!-- --> <!-- ------------------------------------------------------------------- --> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- $Id: mwo.xml,v 1.05 Exp $ --> <Chapter Label="chap-mwp"> <Heading>Many-object structures</Heading> A <E>magma with objects</E> <M>M</M> consists of a set of <E>objects</E> Ob<M>(M)</M>, and a set of <E>arrows</E> Arr<M>(M)</M> together with <E>tail</E> and <E>head</E> maps <M>t,h :</M> Arr<M>(M) \to</M> Ob<M>(M)</M>, and a <E>partial multiplication</E> <M>* :</M> Arr<M>(M) \to </M> Arr<M>(M)</M>, with <M>a*b</M> defined precisely when the head of <M>a</M> coincides with the tail of <M>b</M>. We write an arrow <M>a</M> with tail <M>u</M> and head <M>v</M> as <M>(a : u \to v)</M>. <P/> When this multiplication is associative we obtain a <E>semigroup with objects</E>. <P/> A <E>loop</E> is an arrow whose tail and head are the same object. An <E>identity arrow</E> at object <M>u</M> is a loop <M>(1_u : u \to u)</M> such that <M>a*1_u=a</M> and <M>1_u*b=b</M> whenever <M>u</M> is the head of <M>a</M> and the tail of <M>b</M>. When <M>M</M> is a semigroup with objects and every object has an identity arrow, we obtain a <E>monoid with objects</E>, which is just the usual notion of mathematical category. <P/> An arrow <M>(a : u \to v)</M> in a monoid with objects has <E>inverse</E> <M>(a^{-1} : v \to u)</M> provided <M>a*a^{-1} = 1_u</M> and <M>a^{-1}*a = 1_v</M>. A monoid with objects in which every arrow has an inverse is a <E>group with objects</E>, usually called a <E>groupoid</E>. <P/> For the definitions of the standard properties of groupoids we refer to R. Brown's book ``Topology'' <Cite Key="BrTop" />, recently revised and reissued as ``Topology and Groupoids'' <Cite Key="BrTopGpd" />. <Section><Heading>Magmas with objects</Heading> <ManSection> <Func Name="MagmaWithObjects" Arg="args" /> <Attr Name="ObjectList" Arg="mwo" /> <Func Name="SemigroupithObjects" Arg="args" /> <Func Name="MonoidWithObjects" Arg="args" /> <Description> The simplest construction for a magma with objects is to take a magma <M>m</M> and form arrows <M>(u,x,v)</M> for every <M>x</M> in <M>m</M> and every pair of objects <M>(u,v)</M>. Multiplication is defined by <M>(u,x,v)*(v,y,w) = (u,x*y,w)</M>. <P/> Any finite, ordered set is in principle acceptable as the objects of <M>M</M>, but we will restrict ourselves to sets of negative integers here. <P/> </Description> </ManSection> <Example> <![CDATA[ gap> tm := [[1,2,4,3],[1,2,4,3],[3,4,2,1],[3,4,2,1]];; Display( tm ); [ [ 1, 2, 4, 3 ], [ 1, 2, 4, 3 ], [ 3, 4, 2, 1 ], [ 3, 4, 2, 1 ] ] gap> m := MagmaByMultiplicationTable( tm ); <magma with 4 generators> gap> SetName( m, "m" ); gap> m1 := MagmaElement(m,1);; gap> m2 := MagmaElement(m,2);; gap> m3 := MagmaElement(m,3);; gap> m4 := MagmaElement(m,4);; gap> One(m); fail gap> M78 := MagmaWithObjects( [-8,-7], m ); Magma with objects :- objects = [ -8, -7 ] magma = m gap> [ IsAssociative(M78), IsCommutative(M78) ]; [ false, false ] ]]> </Example> <ManSection> <Oper Name="MultiplicativeElementWithObjects" Arg="mwo,elt,tail,head" /> <Description> Elements in a magma with objects lie in the category <C>IsMultiplicativeElementWithObjects</C>. An attempt to multiply two arrows which do not compose resuts in <C>fail</C> being returned. <P/> </Description> </ManSection> <Example> <![CDATA[ gap> a78 := MultiplicativeElementWithObjects( M78, m4, -7, -8 ); [m2 : -7 -> -8] gap> b87 := MultiplicativeElementWithObjects( M78, m3, -8, -7 ); [m3 : -8 -> -7] gap> ba := b87*a78; [m4 : -8 -> -8] gap> ab := a78*b87; [m4 : -7 -> -7] gap> a78^2; fail gap> ba^2; [m1 : -8 -> -8] ]]> </Example> <ManSection> <Prop Name="IsSinglePiece" Arg="mwo" /> <Prop Name="IsDirectProductWithCompleteGraph" Arg="mwo" /> <Description> If the partial composition is forgotten, then a digraph is left (usually with multiple edges and loops). Thus the notion of <E>connected component</E> may be inherited by magmas with objects from digraphs. Unfortunately the terms <C>Component</C> and <C>Constituent</C> are already in considerably use in &GAP;, so (for now?) we use the term <C>IsSinglePiece</C> to describe a connected magma with objects. <P/> </Description> </ManSection> <Example> <![CDATA[ gap> IsSinglePiece( M78 ); true gap> IsDirectProductWithCompleteGraph( M78 ); true ]]> </Example> </Section> </Chapter>