true
or false.
IsMagmaWithZeroAdjoined
returns true if the magma M was created using or and returns false if it was not. gap> S:=Semigroup(Transformation([1,1,1]), Transformation([1,3,2]));; gap> IsMagmaWithZeroAdjoined(S); false gap> M:=MagmaWithZeroAdjoined(S); <<transformation semigroup on 3 pts with 2 generators> with 0 adjoined> gap> IsMagmaWithZeroAdjoined(M); true
InjectionZeroMagma
returns an embedding from the magma M into a new magma formed from M by adjoining a single new element which is the multiplicative zero of the resulting magma. The elements of the new magma form a family of elements in the category and the magma itself satisfies .

MagmaWithZeroAdjoined
is just shorthand for Range(InjectionZeroMagma(M))).

If N is a magma with zero adjoined, then the embedding used to create N can be recovered using .

gap> S:=Monoid(Transformation( [ 7, 7, 5, 3, 1, 3, 7 ] ), > Transformation( [ 5, 1, 4, 1, 4, 4, 7 ] ));; gap> MultiplicativeZero(S); Transformation( [ 7, 7, 7, 7, 7, 7, 7 ] ) gap> T:=MagmaWithZeroAdjoined(S); <<transformation monoid on 7 pts with 2 generators> with 0 adjoined> gap> map:=UnderlyingInjectionZeroMagma(T);; gap> x:=Transformation( [ 7, 7, 7, 3, 7, 3, 7 ] );; gap> x^map; <monoid with 0 adjoined elt: Transformation( [ 7, 7, 7, 3, 7, 3, 7 ] )> gap> PreImage(map, x^map)=x; true
UnderlyingInjectionZeroMagma
returns the embedding used to create the magma with zero adjoined M. gap> S:=Monoid(Transformation( [ 8, 7, 5, 3, 1, 3, 8, 8 ] ), > Transformation( [ 5, 1, 4, 1, 4, 4, 7, 8 ] ));; gap> MultiplicativeZero(S); Transformation( [ 8, 8, 8, 8, 8, 8, 8, 8 ] ) gap> T:=MagmaWithZeroAdjoined(S); <<transformation monoid on 8 pts with 2 generators> with 0 adjoined> gap> UnderlyingInjectionZeroMagma(T); MappingByFunction( <transformation monoid on 8 pts with 2 generators> , <<transformation monoid on 8 pts with 2 generators> with 0 adjoined>, function( elt ) ... end, function( x ) ... end )