<p>This chapter deals with domains (see <a href="chap31.html#X7E651AC287AFDCC1"><span class="RefLink">31</span></a>) that are closed under multiplication <code class="code">*</code>. Following <a href="chapBib.html#biBBourbaki70">[Bou70]</a>, we call them <em>magmas</em> in <strong class="pkg">GAP</strong>. Together with the domains closed under addition <code class="code">+</code> (see <a href="chap55.html#X7D0D096B81365B02"><span class="RefLink">55</span></a>), they are the basic algebraic structures; every semigroup, monoid (see <a href="chap51.html#X8665D8737FDD5B10"><span class="RefLink">51</span></a>), group (see <a href="chap39.html#X8716635F7951801B"><span class="RefLink">39</span></a>), ring (see <a href="chap56.html#X81897F6082CACB59"><span class="RefLink">56</span></a>), or field (see <a href="chap58.html#X80A8E676814A19FD"><span class="RefLink">58</span></a>) is a magma. In the cases of a <em>magma-with-one</em> or <em>magma-with-inverses</em>, additional multiplicative structure is present, see <a href="chap35.html#X7E1248B186E7BB44"><span class="RefLink">35.1</span></a>. For functions to create free magmas, see <a href="chap36.html#X7F51B17983019D3E"><span class="RefLink">36.4</span></a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsMagmaWithOne</code>( <var class="Arg">obj</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>A <em>magma-with-one</em> in <strong class="pkg">GAP</strong> is a magma <span class="SimpleMath">M</span> with an operation <code class="code">^0</code> (or <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>)) that yields the identity of <span class="SimpleMath">M</span>.</p>
<p>So a magma-with-one <span class="SimpleMath">M</span> does always contain a unique multiplicatively neutral element <span class="SimpleMath">e</span>, i.e., <span class="SimpleMath">e</span><code class="code"> * </code><span class="SimpleMath">m = m = m</span><code class="code"> * </code><spanclass="SimpleMath">e</span> holds for all <span class="SimpleMath">m ∈ M</span> (see <code class="func">MultiplicativeNeutralElement</code> (<a href="chap35.html#X7EE2EA5F7EB7FEC2"><span class="RefLink">35.4-10</span></a>)). This element <span class="SimpleMath">e</span> can be computed with the operation <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>) as <code class="code">One( </code><span class="SimpleMath">M</span><code class="code"> )</code>, and <span class="SimpleMath">e</span> is also equal to <code class="code">One( </code><span class="SimpleMath">m</span><code class="code"> )</code> and to <span class="SimpleMath">m</span><code class="code">^0</code> for each element <span class="SimpleMath">m ∈ M</span>.</p>
<p><em>Note</em> that a magma may contain a multiplicatively neutral element but <em>not</em> an identity (see <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>)), and a magma containing an identity may <em>not</em> lie in the category <code class="func">IsMagmaWithOne</code> (see Section <a href="chap31.html#X7D72F11B82F4A036"><span class="RefLink">31.6</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsMagmaWithInversesIfNonzero</code>( <var class="Arg">obj</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>An object in this <strong class="pkg">GAP</strong> category is a magma-with-one <span class="SimpleMath">M</span> with an operation <code class="code">^-1</code><span class="SimpleMath">: M ∖ Z → M ∖ Z</span> that maps each element <span class="SimpleMath">m</span> of <span class="SimpleMath">M ∖ Z</span> to its inverse <span class="SimpleMath">m</span><code class="code">^-1</code> (or <code class="code">Inverse( </code><span class="SimpleMath">m</span><code class="code"> )</code>, see <code class="func">Inverse</code> (<a href="chap31.html#X78EE524E83624057"><span class="RefLink">31.10-8</span></a>)), where <span class="SimpleMath">Z</span> is either empty or consists exactly of one element of <span class="SimpleMath">M</span>.</p>
<p>This category was introduced mainly to describe division rings, since the nonzero elements in a division ring forma group; So an object <span class="SimpleMath">M</span> in <code class="func">IsMagmaWithInversesIfNonzero</code> will usually have both a multiplicative and an additive structure (see <a href="chap55.html#X7D0D096B81365B02"><span class="RefLink">55</span></a>), and the set <span class="SimpleMath">Z</span>, if it is nonempty, contains exactly the zero element (see <code class="func">Zero</code> (<a href="chap31.html#X8040AC7A79FFC442"><span class="RefLink">31.10-3</span></a>)) of <span class="SimpleMath">M</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsMagmaWithInverses</code>( <var class="Arg">obj</var> )</td><tdclass="tdright">( category )</td></tr></table></div>
<p>A <em>magma-with-inverses</em> in <strong class="pkg">GAP</strong> is a magma-with-one <span class="SimpleMath">M</span> with an operation <code class="code">^-1</code><span class="SimpleMath">: M → M</span> that maps each element <span class="SimpleMath">m</span> of <span class="SimpleMath">M</span> to its inverse <span class="SimpleMath">m</span><code class="code">^-1</code> (or <code class="code">Inverse( </code><span class="SimpleMath">m</span><code class="code"> )</code>, see <code class="func">Inverse</code> (<a href="chap31.html#X78EE524E83624057"><span class="RefLink">31.10-8</span></a>)).</p>
<p>Note that not every trivial magma is a magma-with-one, but every trivial magma-with-one is a magma-with-inverses. This holds also if the identity of the magma-with-one is a zero element. So a magma-with-inverses-if-nonzero can be a magma-with-inverses if either it contains no zero element or consists of a zero element that has itself as zero-th power.</p>
<p>This section describes functions that create magmas from generators (see <code class="func">Magma</code> (<a href="chap35.html#X839147CF813312D6"><span class="RefLink">35.2-1</span></a>), <code class="func">MagmaWithOne</code> (<a href="chap35.html#X7854B23286B17321"><span class="RefLink">35.2-2</span></a>), <code class="func">MagmaWithInverses</code> (<a href="chap35.html#X7A2B51F67EF4DA28"><span class="RefLink">35.2-3</span></a>)), the underlying operations for which methods can be installed (see <code class="func">MagmaByGenerators</code> (<a href="chap35.html#X7F629A498383A0AD"><span class="RefLink">35.2-4</span></a>), <code class="func">MagmaWithOneByGenerators</code> (<a href="chap35.html#X84DABBEB803107EB"><span class="RefLink">35.2-5</span></a>), <code class="func">MagmaWithInversesByGenerators</code> (<a href="chap35.html#X82C08CFB854E3F1A"><span class="RefLink">35.2-6</span></a>)), functions for forming submagmas (see <code class="func">Submagma</code> (<a href="chap35.html#X8268EAA47E4A3A64"><span class="RefLink">35.2-7</span></a>), <code class="func">SubmagmaWithOne</code> (<a href="chap35.html#X7F295EBC7A9CE87E"><span class="RefLink">35.2-8</span></a>), <code class="func">SubmagmaWithInverses</code> (<a href="chap35.html#X79441F1F7A277E28"><span class="RefLink">35.2-9</span></a>)), and functions that forma magma equal to a given collection (see <code class="func">AsMagma</code> (<a href="chap35.html#X84ED076D7E46AB79"><span class="RefLink">35.2-10</span></a>), <code class="func">AsSubmagma</code> (<a href="chap35.html#X87EEEC018129F0F4"><span class="RefLink">35.2-11</span></a>)).</p>
<p><code class="func">InjectionZeroMagma</code> (<a href="chap35.html#X8620878D7FD98823"><span class="RefLink">35.2-13</span></a>) creates a new magma which is the original magma with a zero adjoined.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Magma</code>( [<var class="Arg">Fam</var>, ]<var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the magma <span class="SimpleMath">M</span> that is generated by the elements in the list <var class="Arg">gens</var>, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>). The family <var class="Arg">Fam</var> of <span class="SimpleMath">M</span> can be entered as the first argument; this is obligatory if <var class="Arg">gens</var> is empty (and hence also <span class="SimpleMath">M</span> is empty).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaWithOne</code>( [<var class="Arg">Fam</var>, ]<var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the magma-with-one <span class="SimpleMath">M</span> that is generated by the elements in the list <var class="Arg">gens</var>, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) and <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>). The family <var class="Arg">Fam</var> of <spanclass="SimpleMath">M</span> can be entered as first argument; this is obligatory if <var class="Arg">gens</var> is empty (and hence <span class="SimpleMath">M</span> is trivial).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaWithInverses</code>( [<var class="Arg">Fam</var>, ]<var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the magma-with-inverses <span class="SimpleMath">M</span> that is generated by the elements in the list <var class="Arg">gens</var>, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>), <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>), and <code class="func">Inverse</code> (<ahref="chap31.html#X78EE524E83624057"><span class="RefLink">31.10-8</span></a>). The family <var class="Arg">Fam</var> of <span class="SimpleMath">M</span> can be entered as first argument; this is obligatory if <var class="Arg">gens</var> is empty (and hence <span class="SimpleMath">M</span> is trivial).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Submagma</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SubmagmaNC</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">Submagma</code> returns the magma generated by the elements in the list <var class="Arg">gens</var>, with parent the domain <var class="Arg">D</var>. <code class="func">SubmagmaNC</code> does the same, except that it is not checked whether the elements of <var class="Arg">gens</var> lie in <var class="Arg">D</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SubmagmaWithOne</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SubmagmaWithOneNC</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">SubmagmaWithOne</code> returns the magma-with-one generated by the elements in the list <var class="Arg">gens</var>, with parent the domain <var class="Arg">D</var>. <code class="func">SubmagmaWithOneNC</code> does the same, except that it is not checked whether the elements of <var class="Arg">gens</var> lie in <var class="Arg">D</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SubmagmaWithInverses</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SubmagmaWithInversesNC</code>( <var class="Arg">D</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">SubmagmaWithInverses</code> returns the magma-with-inverses generated by the elements in the list <var class="Arg">gens</var>, with parent the domain <var class="Arg">D</var>. <code class="func">SubmagmaWithInversesNC</code> does the same, except that it is not checked whether the elements of <var class="Arg">gens</var> lie in <var class="Arg">D</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; AsSubmagma</code>( <var class="Arg">D</var>, <var class="Arg">C</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Let <var class="Arg">D</var> be a domain and <var class="Arg">C</var> a collection. If <var class="Arg">C</var> is a subset of <var class="Arg">D</var> that forms a magma then <code class="func">AsSubmagma</code> returns this magma, with parent <var class="Arg">D</var>. Otherwise <code class="keyw">fail</code> is returned.</p>
<p><code class="code">IsMagmaWithZeroAdjoined</code> returns <code class="keyw">true</code> if the magma <var class="Arg">M</var> was created using <code class="func">InjectionZeroMagma</code> (<a href="chap35.html#X8620878D7FD98823"><span class="RefLink">35.2-13</span></a>) or <code class="func">MagmaWithZeroAdjoined</code> (<a href="chap35.html#X8620878D7FD98823"><span class="RefLink">35.2-13</span></a>) and returns <code class="keyw">false</code> if it was not.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; InjectionZeroMagma</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaWithZeroAdjoined</code>( <var class="Arg">M</var> )</td><tdclass="tdright">( attribute )</td></tr></table></div>
<p><code class="func">InjectionZeroMagma</code> returns an embedding from the magma <var class="Arg">M</var> into a new magma formed from <var class="Arg">M</var> by adjoining a single new element which is the multiplicative zero of the resulting magma. The elements of the new magma forma family of elements in the category <code class="func">IsMultiplicativeElementWithZero</code> (<a href="chap31.html#X8703BFC2841BBD63"><span class="RefLink">31.14-12</span></a>) and the magma itself satisfies <code class="func">IsMagmaWithZeroAdjoined</code> (<a href="chap35.html#X8553F44D8123B2C6"><span class="RefLink">35.2-12</span></a>).</p>
<p><code class="code">MagmaWithZeroAdjoined</code> is just shorthand for <code class="code">Range(InjectionZeroMagma(<var class="Arg">M</var>)))</code>.</p>
<p>If <code class="code">N</code> is a magma with zero adjoined, then the embedding used to create <code class="code">N</code> can be recovered using <code class="func">UnderlyingInjectionZeroMagma</code> (<a href="chap35.html#X7B353674859BF659"><span class="RefLink">35.2-14</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; UnderlyingInjectionZeroMagma</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="code">UnderlyingInjectionZeroMagma</code> returns the embedding used to create the magma with zero adjoined <var class="Arg">M</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">S:=Monoid(Transformation( [ 8, 7, 5, 3, 1, 3, 8, 8 ] ),</span>
<span class="GAPprompt">></span> <span class="GAPinput">Transformation( [ 5, 1, 4, 1, 4, 4, 7, 8 ] ));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">MultiplicativeZero(S);</span>
Transformation( [ 8, 8, 8, 8, 8, 8, 8, 8 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">T:=MagmaWithZeroAdjoined(S);</span>
<<transformation monoid of degree 8 with 2 generators>
with 0 adjoined>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingInjectionZeroMagma(T);</span>
MappingByFunction( <transformation monoid of degree 8 with 2
generators>, <<transformation monoid of degree 8 with 2 generators>
with 0 adjoined>, function( elt ) ... end, function( x ) ... end )
</pre></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaByMultiplicationTable</code>( <var class="Arg">A</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For a square matrix <var class="Arg">A</var> with <span class="SimpleMath">n</span> rows such that all entries of <var class="Arg">A</var> are in the range <span class="SimpleMath">[ 1 .. n ]</span>, <code class="func">MagmaByMultiplicationTable</code> returns a magma <span class="SimpleMath">M</span> with multiplication <code class="code">*</code> defined by <var class="Arg">A</var>. That is, <span class="SimpleMath">M</span> consists of the elements <span class="SimpleMath">m_1, m_2, ..., m_n</span>, and <span class="SimpleMath">m_i * m_j = m_k</span>, with <span class="SimpleMath">k =</span> <var class="Arg">A</var><span class="SimpleMath">[i][j]</span>.</p>
<p>The ordering of elements is defined by <span class="SimpleMath">m_1 < m_2 < ⋯ < m_n</span>, so <span class="SimpleMath">m_i</span> can be accessed as <code class="code">MagmaElement( <var class="Arg">M</var>, <var class="Arg">i</var> )</code>, see <code class="func">MagmaElement</code> (<a href="chap35.html#X828BED4580D28FB8"><span class="RefLink">35.3-4</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaWithOneByMultiplicationTable</code>( <var class="Arg">A</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The only differences between <code class="func">MagmaByMultiplicationTable</code> (<a href="chap35.html#X85CD1E7678295CA6"><span class="RefLink">35.3-1</span></a>) and <code class="func">MagmaWithOneByMultiplicationTable</code> are that the latter returns a magma-with-one (see <code class="func">MagmaWithOne</code> (<a href="chap35.html#X7854B23286B17321"><span class="RefLink">35.2-2</span></a>)) if the magma described by the matrix <var class="Arg">A</var> has an identity, and returns <code class="keyw">fail</code> if not.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaWithInversesByMultiplicationTable</code>( <var class="Arg">A</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">MagmaByMultiplicationTable</code> (<a href="chap35.html#X85CD1E7678295CA6"><span class="RefLink">35.3-1</span></a>) and <code class="func">MagmaWithInversesByMultiplicationTable</code> differ only in that the latter returns magma-with-inverses (see <code class="func">MagmaWithInverses</code> (<a href="chap35.html#X7A2B51F67EF4DA28"><span class="RefLink">35.2-3</span></a>)) if each element in the magma described by the matrix <var class="Arg">A</var> has an inverse, and returns <code class="keyw">fail</code> if not.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MagmaElement</code>( <var class="Arg">M</var>, <var class="Arg">i</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>For a magma <var class="Arg">M</var> and a positive integer <var class="Arg">i</var>, <code class="func">MagmaElement</code> returns the <var class="Arg">i</var>-th element of <var class="Arg">M</var>, w.r.t. the ordering <code class="code"><</code>. If <var class="Arg">M</var> has less than <var class="Arg">i</var> elements then <code class="keyw">fail</code> is returned.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MultiplicationTable</code>( <var class="Arg">elms</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MultiplicationTable</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>For a list <var class="Arg">elms</var> of elements that forma magma <span class="SimpleMath">M</span>, <code class="func">MultiplicationTable</code> returns a square matrix <span class="SimpleMath">A</span> of positive integers such that <span class="SimpleMath">A[i][j] = k</span> holds if and only if <var class="Arg">elms</var><span class="SimpleMath">[i] *</span> <var class="Arg">elms</var><span class="SimpleMath">[j] =</span> <var class="Arg">elms</var><span class="SimpleMath">[k]</span>. This matrix can be used to construct a magma isomorphic to <span class="SimpleMath">M</span>, using <code class="func">MagmaByMultiplicationTable</code> (<a href="chap35.html#X85CD1E7678295CA6"><span class="RefLink">35.3-1</span></a>).</p>
<p>For a magma <var class="Arg">M</var>, <code class="func">MultiplicationTable</code> returns the multiplication table w.r.t. the sorted list of elements of <var class="Arg">M</var>.</p>
<h4>35.4 <span class="Heading">Attributes and Properties for Magmas</span></h4>
<p><em>Note</em> that <code class="func">IsAssociative</code> (<a href="chap35.html#X7C83B5A47FD18FB7"><span class="RefLink">35.4-7</span></a>) and <code class="func">IsCommutative</code> (<a href="chap35.html#X830A4A4C795FBC2D"><span class="RefLink">35.4-9</span></a>) always refer to the multiplication of a domain. If a magma <var class="Arg">M</var> has also an <em>additive structure</em>, e.g., if <var class="Arg">M</var> is a ring (see <a href="chap56.html#X81897F6082CACB59"><spanclass="RefLink">56</span></a>), then the addition <code class="code">+</code> is always assumed to be associative and commutative, see <a href="chap31.html#X7A2914307963E370"><span class="RefLink">31.12</span></a>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; GeneratorsOfMagma</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list <var class="Arg">gens</var> of elements of the magma <var class="Arg">M</var> that generates <var class="Arg">M</var> as a magma, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) is <var class="Arg">M</var>.</p>
<p>For a free magma, each generator can also be accessed using the <code class="code">.</code> operator (see <code class="func">GeneratorsOfDomain</code> (<a href="chap31.html#X7E353DD1838AB223"><span class="RefLink">31.9-2</span></a>)).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; GeneratorsOfMagmaWithOne</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list <var class="Arg">gens</var> of elements of the magma-with-one <var class="Arg">M</var> that generates <var class="Arg">M</var> as a magma-with-one, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) and <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>) is <var class="Arg">M</var>.</p>
<p>For a free magma with one, each generator can also be accessed using the <code class="code">.</code> operator (see <code class="func">GeneratorsOfDomain</code> (<a href="chap31.html#X7E353DD1838AB223"><span class="RefLink">31.9-2</span></a>)).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; GeneratorsOfMagmaWithInverses</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a list <var class="Arg">gens</var> of elements of the magma-with-inverses <var class="Arg">M</var> that generates <var class="Arg">M</var> as a magma-with-inverses, that is, the closure of <var class="Arg">gens</var> under multiplication <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) and taking inverses (see <code class="func">Inverse</code> (<a href="chap31.html#X78EE524E83624057"><span class="RefLink">31.10-8</span></a>)) is <var class="Arg">M</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Centralizer</code>( <var class="Arg">M</var>, <var class="Arg">elm</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Centralizer</code>( <var class="Arg">M</var>, <var class="Arg">S</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Centralizer</code>( <var class="Arg">class</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>For an element <var class="Arg">elm</var> of the magma <var class="Arg">M</var> this operation returns the <em>centralizer</em> of <var class="Arg">elm</var>. This is the domain of those elements <var class="Arg">m</var> <span class="SimpleMath">∈</span> <var class="Arg">M</var> that commute with <var class="Arg">elm</var>.</p>
<p>For a submagma <var class="Arg">S</var> it returns the domain of those elements that commute with <em>all</em> elements <var class="Arg">s</var> of <var class="Arg">S</var>.</p>
<p>If <var class="Arg">class</var> is a class of objects of a magma (this magma then is stored as the <code class="code">ActingDomain</code> of <var class="Arg">class</var>) such as given by <code class="func">ConjugacyClass</code> (<a href="chap39.html#X7B2F207F7F85F5B8"><span class="RefLink">39.10-1</span></a>), <code class="func">Centralizer</code> returns the centralizer of <code class="code">Representative(<var class="Arg">class</var>)</code> (which is a slight abuse of the notation).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Centre</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Center</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">Centre</code> returns the <em>centre</em> of the magma <var class="Arg">M</var>, i.e., the domain of those elements <var class="Arg">m</var> <span class="SimpleMath">∈</span> <var class="Arg">M</var> that commute and associate with all elements of <var class="Arg">M</var>. That is, the set <span class="SimpleMath">{ m ∈ M; ∀ a, b ∈ M: ma = am, (ma)b = m(ab), (am)b = a(mb), (ab)m = a(bm) }</span>.</p>
<p><code class="func">Center</code> is just a synonym for <code class="func">Centre</code>.</p>
<p>For associative magmas we have that <code class="code">Centre( <var class="Arg">M</var> ) = Centralizer( <var class="Arg">M</var>, <var class="Arg">M</var> )</code>, see <code class="func">Centralizer</code> (<a href="chap35.html#X7A2BF4527E08803C"><span class="RefLink">35.4-4</span></a>).</p>
<p>The centre of a magma is always commutative (see <code class="func">IsCommutative</code> (<a href="chap35.html#X830A4A4C795FBC2D"><span class="RefLink">35.4-9</span></a>)). (When one installs a new method for <code class="func">Centre</code>, one should set the <code class="func">IsCommutative</code> (<a href="chap35.html#X830A4A4C795FBC2D"><span class="RefLink">35.4-9</span></a>) value of the result to <code class="keyw">true</code>, in order to make this information available.)</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; Idempotents</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The set of elements of <var class="Arg">M</var> which are their own squares.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsAssociative</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A collection <var class="Arg">M</var> of elements that can be multiplied via <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) is <em>associative</em> if for all elements <span class="SimpleMath">a, b, c ∈</span> <var class="Arg">M</var> the equality <span class="SimpleMath">(a</span><code class="code"> * </code><span class="SimpleMath">b)</span><code class="code"> * </code><span class="SimpleMath">c = a</span><code class="code"> * </code><span class="SimpleMath">(b</span><code class="code"> * </code><span class="SimpleMath">c)</span> holds.</p>
<p>An associative magma is called a <em>semigroup</em> (see <a href="chap51.html#X8665D8737FDD5B10"><span class="RefLink">51</span></a>), an associative magma-with-one is called a <em>monoid</em> (see <a href="chap51.html#X8665D8737FDD5B10"><span class="RefLink">51</span></a>), and an associative magma-with-inverses is called a <em>group</em> (see <a href="chap39.html#X8716635F7951801B"><span class="RefLink">39</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsCentral</code>( <var class="Arg">M</var>, <var class="Arg">obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="func">IsCentral</code> returns <code class="keyw">true</code> if the object <var class="Arg">obj</var>, which must either be an element or a magma, commutes with all elements in the magma <var class="Arg">M</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsCommutative</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsAbelian</code>( <var class="Arg">M</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A collection <var class="Arg">M</var> of elements that can be multiplied via <code class="func">\*</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) is <em>commutative</em> if for all elements <span class="SimpleMath">a, b ∈</span> <var class="Arg">M</var> the equality <span class="SimpleMath">a</span><code class="code"> * </code><span class="SimpleMath">b = b</span><code class="code"> * </code><span class="SimpleMath">a</span> holds. <code class="func">IsAbelian</code> is a synonym of <code class="func">IsCommutative</code>.</p>
<p>Note that the commutativity of the <em>addition</em> <code class="func">\+</code> (<a href="chap31.html#X8481C9B97B214C23"><span class="RefLink">31.12-1</span></a>) in an additive structure can be tested with <code class="func">IsAdditivelyCommutative</code> (<a href="chap55.html#X82D471327A9CA960"><span class="RefLink">55.3-1</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MultiplicativeNeutralElement</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>returns the element <span class="SimpleMath">e</span> in the magma <var class="Arg">M</var> with the property that <span class="SimpleMath">e</span><code class="code"> * </code><span class="SimpleMath">m = m = m</span><code class="code"> * </code><span class="SimpleMath">e</span> holds for all <span class="SimpleMath">m ∈</span> <var class="Arg">M</var>, if such an element exists. Otherwise <code class="keyw">fail</code> is returned.</p>
<p>A magma that is not a magma-with-one can have a multiplicative neutral element <span class="SimpleMath">e</span>; in this case, <span class="SimpleMath">e</span> <em>cannot</em> be obtained as <code class="code">One( <var class="Arg">M</var> )</code>, see <code class="func">One</code> (<a href="chap31.html#X8046262384895B2A"><span class="RefLink">31.10-2</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; MultiplicativeZero</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; IsMultiplicativeZero</code>( <var class="Arg">M</var>, <var class="Arg">z</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><code class="code">MultiplicativeZero</code> returns the multiplicative zero of the magma <var class="Arg">M</var> which is the element <code class="code">z</code> in <var class="Arg">M</var> such that <code class="code"><var class="Arg">z</var> * <var class="Arg">m</var> = <var class="Arg">m</var> * <var class="Arg">z</var> = <var class="Arg">z</var></code> for all <var class="Arg">m</var> in <var class="Arg">M</var>.</p>
<p><code class="code">IsMultiplicativeZero</code> returns <code class="keyw">true</code> if the element <var class="Arg">z</var> of the magma <var class="Arg">M</var> equals the multiplicative zero of <var class="Arg">M</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; SquareRoots</code>( <var class="Arg">M</var>, <var class="Arg">elm</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>is the proper set of all elements <span class="SimpleMath">r</span> in the magma <var class="Arg">M</var> such that <span class="SimpleMath">r * r =</span> <var class="Arg">elm</var> holds.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">an style='color: green'>8227; TrivialSubmagmaWithOne</code>( <var class="Arg">M</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the magma-with-one that has the identity of the magma-with-one <var class="Arg">M</var> as only element.</p>
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.24Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.