<p>A path algebra is an algebra constructed from a field <span class="SimpleMath">\(F\)</span> (see Chapter 56 and 57 in the <strong class="pkg">GAP</strong> manual for information about fields) and a quiver <span class="SimpleMath">\(Q\)</span>. The path algebra <span class="SimpleMath">\(FQ\)</span> contains all finite linear combinations of paths of <span class="SimpleMath">\(Q\)</span>. This chapter describes the functions in <strong class="pkg">QPA</strong> that deal with path algebras and quotients of path algebras. Path algebras are algebras, so see Chapter 60: Algebras in the <strong class="pkg">GAP</strong> manual for functionality such as generators, basis functions, and mappings.</p>
<p>The only supported ordering of elements in a path algebra is length left lexicographic ordering. See <a href="chap3_mj.html#X78BBB63B828EB9FB"><span class="RefLink">3.4</span></a> for more information.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PathAlgebra</code>( <var class="Arg">F</var>, <var class="Arg">Q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Arguments: <var class="Arg">F</var> -- a field, <var class="Arg">Q</var> -- a quiver.<br /></p>
<p>Returns: the path algebra <var class="Arg">FQ</var> of <var class="Arg">Q</var> over the field <var class="Arg">F</var>.</p>
<p>For construction of fields, see the <strong class="pkg">GAP</strong> documentation. The elements of the path algebra <var class="Arg">FQ</var> will be ordered by left length-lexicographic ordering.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementOfPathAlgebra</code>( <var class="Arg">PA</var>, <var class="Arg">path</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">PA</var> -- a path algebra, <var class="Arg">path</var> -- a path in the quiver from which <var class="Arg">PA</var> was constructed.<br /></p>
<p>Returns: The embedding of <var class="Arg">path</var> into the path algebra <var class="Arg">PA</var>, or it returns false if <var class="Arg">path</var> is not an element of the quiver from which <varclass="Arg">PA</var> was constructed.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ <</code>( <var class="Arg">a</var>, <var class="Arg">b</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">a</var> and <var class="Arg">b</var> -- two elements of the same path algebra.<br /></p>
<p>Returns: True whenever <var class="Arg">a</var> is smaller than <var class="Arg">b</var>, according to the ordering of the path algebra.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LeadingTerm</code>( <var class="Arg">element</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">‣ Tip</code>( <var class="Arg">element</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">element</var> -- an element of the path algebra. <br /></p>
<p>Returns: the term in <var class="Arg">element</var> whose monomial is largest among those monomials that have nonzero coefficients (known as the "tip" of <var class="Arg">element</var>).</p>
<p><em>Note: </em> The two operations are equivalent.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MakeUniformOnRight</code>( <var class="Arg">elems</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">elems</var> -- a list of elements in a path algebra.<br /></p>
<p>Returns: a list of right uniform elements generated by each element of <var class="Arg">elems</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MappedExpression</code>( <var class="Arg">expr</var>, <var class="Arg">gens1</var>, <var class="Arg">gens2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">expr</var> -- element of a path algebra, <var class="Arg">gens1</var> and <var class="Arg">gens2</var> -- equal-length lists of generators for subalgebras.<br /></p>
<p>Returns: <var class="Arg">expr</var> as an element of the subalgebra generated by <var class="Arg">gens2</var>.</p>
<p>The element <var class="Arg">expr</var> must be in the subalgebra generated by <var class="Arg">gens1</var>. The lists define a mapping of each generator in <var class="Arg">gens1</var> to the corresponding generator in <var class="Arg">gens2</var>. The value returned is the evaluation of the mapping at <var class="Arg">expr</var>.</p>
<p>Returns: the second version returns a list of the index of the vertices such that the product from the left is non-zero, the third version returns a list of the index of the vertices such that the product from the right is non-zero, and the first version returns the both of the previous lists of indices of vertices.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ VertexPosition</code>( <var class="Arg">element</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">element</var> -- an element of the path algebra on the form <span class="SimpleMath">\(k*v\)</span>, where <span class="SimpleMath">\(v\)</span> is a vertex of the underlying quiver and <span class="SimpleMath">\(k\)</span> is an element of the field.<br /></p>
<p>Returns: the position of the vertex <var class="Arg">v</var> in the list of vertices of the quiver.</p>
<p>Returns: a set of generators for the ideal in the path algebra <span class="SimpleMath">\(kQ\)</span> from which the algebra <var class="Arg">FQ</var> was constructed. If <var class="Arg">A</var> is a path algebra, then an empty list is returned.</p>
<h4>4.6 <span class="Heading">Constructing Quotients of Path Algebras</span></h4>
<p>In the introduction we saw already one way of constructing a quotient of a path algebra. In addition to this there are at least two other ways of constructing a quotient of a path algebra; one with factoring out an ideal and one where a Groebner basis is attached to the quotient. We discuss these two next.</p>
<p>For several functions in <strong class="pkg">QPA</strong> to function properly one needs to have a Groebner basis attached to the quotient one wants to construct, or equivalently a Groebner basis for the ideal one is factoring out. For this to work the ideal must admit a finite Groebner basis. However, to our knowledge there is no algorithm for determining if an ideal has a finite Groebner basis. On the other hand, it is known that if the factor algebra is finite dimensional, then the ideal has a finite Groebner basis (independent of the ordering of the elements, see <a href="chapBib_mj.html#biBGreen">[Gre00]</a> ). In addition to having a finite Groebner basis, several functions also need that the factoring ideal is admissible. A quotient of a path algebra by an admissible ideal belongs to the category <code class="func">IsAdmissibleQuotientOfPathAlgebra</code> (<a href="chap4_mj.html#X7ACDD33087F98B88"><span class="RefLink">4.11-1</span></a>). The method used in the introduction constructs a quotient in this category. However, there are situations where it is interesting to analyze quotients of path algebras by a non-admissible ideal, so we provide also additional methods.</p>
<p>In the example below, we construct a factor of a path algebra purely with commands in <strong class="pkg">GAP</strong> (cf. also Chapter 60: Algebras in the <strong class="pkg">GAP</strong> manual on how to construct an ideal and a quotient of an algebra). Functions which use Groebner bases like <code class="func">IsFiniteDimensional</code> (<a href="chap4_mj.html#X802DB9FB824B0167"><span class="RefLink">4.11-3</span></a>), <code class="func">Dimension</code> (<a href="chap4_mj.html#X7E6926C6850E7C4E"><span class="RefLink">4.13-6</span></a>), <code class="func">IsSpecialBiserialAlgebra</code> (<a href="chap4_mj.html#X7D7AC1D07A9607DF"><span class="RefLink">4.11-19</span></a>) or a membership test <code class="func">\in</code> (<a href="chap4_mj.html#X83E8D45B82356D8E"><span class="RefLink">4.7-6</span></a>) will work properly (they simply compute the Groebner basis if it is necessary). But some "older" functions (like <code class="func">IndecProjectiveModules</code> (<a href="chap6_mj.html#X85EDCFE27F66093F"><span class="RefLink">6.5-5</span></a>)) can fail or give an incorrect answer! This way of constructing a quotient of a path algebra can be useful e.g. if we know that computing a Groebner basis will take a long time and we do not need this because we want to deal only with modules.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Q := Quiver( 1, [ [1,1,"a"], [1,1,"b"] ] );</span>
<quiver with 1 vertices and 2 arrows>
<span class="GAPprompt">gap></span> <span class="GAPinput">kQ := PathAlgebra(Rationals, Q);</span>
<Rationals[<quiver with 1 vertices and 2 arrows>]>
<span class="GAPprompt">gap></span> <span class="GAPinput">gens := GeneratorsOfAlgebra(kQ);</span>
[ (1)*v1, (1)*a, (1)*b ]
<span class="GAPprompt">gap></span> <span class="GAPinput">a := gens[2];</span>
(1)*a
<span class="GAPprompt">gap></span> <span class="GAPinput">b := gens[3];</span>
(1)*b
<span class="GAPprompt">gap></span> <span class="GAPinput">relations := [a^2,a*b-b*a, b*b];</span>
[ (1)*a^2, (1)*a*b+(-1)*b*a, (1)*b^2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">I := Ideal(kQ,relations);</span>
<two-sided ideal in <Rationals[<quiver with 1 vertices and 2 arrows>]>
, (3 generators)>
<span class="GAPprompt">gap></span> <span class="GAPinput">A := kQ/I;</span>
<Rationals[<quiver with 1 vertices and 2 arrows>]/
<two-sided ideal in <Rationals[<quiver with 1 vertices and 2 arrows>]>
, (3 generators)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">IndecProjectiveModules(A);</span>
Compute a Groebner basis of the ideal you are factoring out with before \
you form the quotient algebra, or you have entered an algebra which \
is not finite dimensional.
fail
</pre></div>
<p>To resolve this matter, we need to compute the Gröbner basis of the ideal generated by the relations in <span class="SimpleMath">\(kQ\)</span> (yes, it seems like we are going in circles here. Remember, then, that an ideal in the "mathematical sense" may exist independently of the a corresponding <code class="code">Ideal</code> object in <strong class="pkg">GAP</strong>. Also, Gröbner bases in <strong class="pkg">QPA</strong> are handled by the <strong class="pkg">GBNP</strong> package, with constructor methods not dependent on <code class="code">Ideal</code> objects. After creating the ideal <span class="SimpleMath">\(I\)</span>, we need to perform yet another Gröbner basis operation which just set a respective attribute for <span class="SimpleMath">\(I\)</span>, see <code class="func">GroebnerBasis</code> (<a href="chap5_mj.html#X7A43611E876B7560"><span class="RefLink">5.1-2</span></a>).</p>
<p>Note that the instruction <code class="code">A := kQ/relations;</code> used in Introduction is exactly an abbreviation for a sequence of instructions with Groebner basis as in above example.</p>
<p>Most <strong class="pkg">QPA</strong> operations working on algebras handle path algebras and quotients of path algebras in the same way (when this makes sense). However, there are still a few operations which does not work properly when given a quotient of a path algebra. When constructing a quotient of a path algebra one needs define the ideal one is factoring out. Above this has been done with the commands</p>
<p>Returns: Takes a quiver algebra <var class="Arg">A</var> as an argument and creates variables, say <span class="SimpleMath">\(v_1,...,v_n\)</span> for the vertices, and <span class="SimpleMath">\(a_1,...,a_t\)</span> for the arrows for the corresponding elements in <var class="Arg">A</var>, whenever the quiver for the quiver algebra <var class="Arg">A</var> is was constructed with the vertices being named <span class="SimpleMath">\(v_1,...,v_n\)</span> and the arrows being named <span class="SimpleMath">\(a_1,...,a_t\)</span>.</p>
<p>Here is an example of its use.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">AssignGeneratorVariables(kQ);</span>
#I Assigned the global variables [ v1, a, b ]
<span class="GAPprompt">gap></span> <span class="GAPinput">v1; a; b;</span>
(1)*v1
(1)*a
(1)*b
</pre></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Ideal</code>( <var class="Arg">FQ</var>, <var class="Arg">elems</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Arguments: <var class="Arg">FQ</var> -- a path algebra, <var class="Arg">elems</var> -- a list of elements in <var class="Arg">FQ</var>.<br /></p>
<p>Returns: the ideal of <var class="Arg">FQ</var> generated by <var class="Arg">elems</var> with the property <code class="func">IsIdealInPathAlgebra</code> (<a href="chap4_mj.html#X818EE2B9789BB175"><span class="RefLink">4.8-2</span></a>).</p>
<p>For more on ideals, see the <strong class="pkg">GAP</strong> reference manual (Chapter 60.6). <br /> <em>Technical info:</em> Ideal is a synonym for a global GAP function TwoSidedIdeal which calls an operation TwoSidedIdealByGenerators (synonym IdealByGenerators) for an algebra (FLMLOR).</p>
<p>Returns: a list of all paths of length two in <var class="Arg">Q</var>, sorted by <code class="code"><</code>. Fails with error message if <var class="Arg">Q</var> is not a Quiver object.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AddNthPowerToRelations</code>( <var class="Arg">FQ</var>, <var class="Arg">rels</var>, <var class="Arg">n</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">FQ</var> -- a path algebra, <var class="Arg">rels</var> -- a (possibly empty) list of elements in <var class="Arg">FQ</var>, <var class="Arg">n</var> -- a positive integer.<br /></p>
<p>Returns: the list <var class="Arg">rels</var> with the paths of length <var class="Arg">n</var> of <var class="Arg">FQ</var> appended (will change the list <var class="Arg">rels</var>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \in</code>( <var class="Arg">elt</var>, <var class="Arg">I</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">elt</var> - an element in a path algebra, <var class="Arg">I</var> - an ideal in the same path algebra (i.e. with <code class="func">IsIdealInPathAlgebra</code> (<a href="chap4_mj.html#X818EE2B9789BB175"><span class="RefLink">4.8-2</span></a>) property).<br /></p>
<p>Returns: true, if <var class="Arg">elt</var> belongs to <var class="Arg">I</var>.</p>
<p>It performs the membership test for an ideal in path algebra using completely reduced Groebner bases machinery. <br /> <em>Technical info:</em> For the efficiency reasons, it computes Groebner basis for <var class="Arg">I</var> only if it has not been computed yet. Similarly, it performs CompletelyReduceGroebnerBasis only if it has not been reduced yet. The method can change the existing Groebner basis.<br /> <em>Remark:</em> It works only in case <var class="Arg">I</var> is in the arrow ideal.</p>
<p>Returns: true whenever <var class="Arg">I</var> is an <em>admissible</em> ideal in a path algebra, i.e. <var class="Arg">I</var> is a subset of <span class="SimpleMath">\(J^2\)</span> and <var class="Arg">I</var> contains <span class="SimpleMath">\(J^n\)</span> for some <span class="SimpleMath">\(n\)</span>, where <span class="SimpleMath">\(J\)</span> is the arrow ideal.</p>
<p><em>Technical note:</em> The second condition is checked by the nilpotency index of the radical and checking if the ideal generated by the arrows to one plus this index is in the ideal of the relations (this uses Groebner bases machinery).</p>
<p>Returns: true whenever <var class="Arg">I</var> is a <em>monomial</em> ideal in a path algebra, i.e. <var class="Arg">I</var> is generated by a set of monomials (= "zero-relations").</p>
<p><em>Technical note:</em> It uses the observation: <var class="Arg">I</var> is a monomial ideal iff Groebner basis of <var class="Arg">I</var> is a set of monomials. It computes Groebner basis for <var class="Arg">I</var> only in case it has not been computed yet and a usual set of generators (GeneratorsOfIdeal) is not a set of monomials.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsQuadraticIdeal</code>( <var class="Arg">rels</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">rels</var> -- a list of elements in a path algebra.<br /></p>
<p>Returns: true whenever <var class="Arg">rels</var> is a list of elements in the linear span of degree two elements of a path algebra. It returns false whenever <var class="Arg">rels</var> is a list of elements in a path algebra, but not in the linear span of degree two of a path algebra. Otherwise it returns fail.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProductOfIdeals</code>( <var class="Arg">I</var>, <var class="Arg">J</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">I, J</var> -- two ideals in a path algebra <var class="Arg">KQ</var>.<br/></p>
<p>Returns: the ideal formed by the product of the ideals <var class="Arg">I</var> and <var class="Arg">J</var>, whenever the ideal <var class="Arg">J</var> admits finitely many nontips in <var class="Arg">KQ</var>.</p>
<p>The function checks if the two ideals are ideals in the same path algebra and that <var class="Arg">J</var> admits finitely many nontips in <var class="Arg">KQ</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuadraticPerpOfPathAlgebraIdeal</code>( <var class="Arg">rels</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Arguments: <var class="Arg">rels</var> -- a list of elements in a path algebra.<br /></p>
<p>Returns: fail if <var class="Arg">rels</var> is not a list of elements in the linear span of degree two elements of a path algebra <var class="Arg">KQ</var>. Otherwise it returns a list of length two, where the first element is a set of generators for the ideal <span class="SimpleMath">\(\textit{rels}^\perp\)</span> in opposite algebra of <var class="Arg">KQ</var> and the second element is the opposite algebra of <var class="Arg">KQ</var>.</p>
<h4>4.10 <span class="Heading">Attributes of ideals</span></h4>
<p>For many of the functions related to quotients, you will need to compute a Groebner basis of the ideal. This is done with the GBNP package. The following example shows how to set a Groebner basis for an ideal (note that this must be done before the quotient is constructed). See the next two chapters for more on Groebner bases.</p>
<p>Returns: a Groebner basis of ideal <var class="Arg">I</var> (if it has been already computed!).</p>
<p>This attribute is set only by an operation <code class="func">GroebnerBasis</code> (<a href="chap5_mj.html#X7A43611E876B7560"><span class="RefLink">5.1-2</span></a>).</p>
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 ist noch experimentell.