Difference between revisions of "ApCoCoA-1:NC.KernelOfHomomorphism"

From ApCoCoAWiki
m (replaced <quotes> tag by real quotes)
 
(29 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
{{Version|1}}
 
<command>
 
<command>
 
<title>NC.KernelOfHomomorphism</title>
 
<title>NC.KernelOfHomomorphism</title>
 
<short_description>
 
<short_description>
Computing (partial) Groebner basis of kernel of <tt>K</tt>-algebra homomorphism.
+
The kernel of an algebra homomorphism.
 
</short_description>
 
</short_description>
<syntax>
+
<syntax></syntax>
NC.KernelOfHomomorphism(X_1:STRING, X_2:STRING, Images:LIST[, DegreeBound:INT, LoopBound:INT, Flag:INT]):LIST
 
</syntax>
 
 
<description>
 
<description>
<em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them.
+
<em>Proposition (Kernel of an Algebra Homomorphism):</em> Let <tt>I</tt> be a two-sided ideal in the free monoid ring <tt>K&lt;x[1],...,x[n]&gt;</tt>, and let <tt>J</tt> be a two-sided ideal in the free monoid ring <tt>K&lt;y[1],...,y[m]&gt;</tt>. Moreover, let <tt>g_1,...,g_m</tt> be polynomials in <tt>K&lt;x[1],...,x[n]&gt;</tt>, and let <tt>phi: K&lt;y[1],...,y[m]&gt;/J--&gt;K&lt;x[1],...,x[n]&gt;/I</tt> be a homomorphism of <tt>K</tt>-algebras defined by <tt>phi(y[i]+J)=g_i+I</tt> for <tt>i=1,...,m</tt>. We form the free monoid ring <tt>K&lt;x[1],...,x[n],y[1],...,y[m]&gt;</tt>, and let <tt>D</tt> be the diagonal ideal generated by the set <tt>{y[1]-g_1,...,y[m]-g_m}</tt>. Then we have <tt>ker(phi)=((D+J) intersets K&lt;y[1],...,y[m]&gt;)+I</tt>.
<par/>
 
Before calling the function, please set coefficient field <tt>K</tt> through the functions <ref>NC.SetFp</ref>(Prime) (or <ref>NC.UnsetFp</ref>()). Default coefficient field is <tt>Q</tt>. For more information, please check the relevant functions.
 
<itemize>
 
<item>@param <em>X_1:</em> a STRING which is an alphabet (indeterminates) of a free associative <tt>K</tt>-algebra. Every letter in <tt>X_1</tt> should occurrence only once. Note that the order of letters in <tt>X_1</tt> is important since it induces an admissible ordering and defines a <tt>K</tt>-algebra homomorphism as well.</item>
 
<item>@param <em>X_2:</em> a STRING which is another alphabet (indeterminates) of another free associative <tt>K</tt>-algebra.</item>
 
<item>@param <em>Images:</em>a LIST of polynomials generating a two-sided ideal in <tt>K&lt;X_2&gt;</tt>. Each polynomial in <tt>K&lt;X_2&gt;</tt> is represented as a LIST of LISTs, which are pairs of form [c, w] where c is in <tt>K</tt> and w is a word in <tt>(X_2)*</tt>. Unit in <tt>(X_2)*</tt> is empty word represented as an empty STRING <quotes></quotes>. <tt>0</tt> polynomial is represented as an empty LIST []. For example, X_2:=<quotes>xy</quotes>; F:=[[1,<quotes>xy</quotes>], [-1, <quotes>y</quotes>], [1,<quotes></quotes>]]; means polynomial <tt>F:=xy-y+1</tt> in <tt>K&lt;x,y&gt;</tt>. Note that the order of polynomials in <tt>Images</tt> is important since it defines a <tt>K</tt>-algebra homomorphism.</item>
 
</itemize>
 
Since the algorithm used in this function is based on Groebner basis computation, we refer users to <tt>NC.GB</tt> for information on optional parameters.
 
 
<example>
 
<example>
X_1 := <quotes>abc</quotes>;  
+
Use QQ[x[1..2],y[1..2],a,b];
X_2 := <quotes>xy</quotes>;  
+
NC.SetOrdering("ELIM"); -- we want to eliminate x[1..2],y[1..2]
F1 := [[1,<quotes>x</quotes>], [1,<quotes>y</quotes>]];  
+
-- Group ring Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; with the triangle group of order 576
F2 := [[1,<quotes>xx</quotes>],[1,<quotes>xy</quotes>]];  
+
F11:=[[a^2], [-1]];
F3 := [[1,<quotes>yy</quotes>],[1,<quotes>yx</quotes>]];  
+
F12:=[[b^3], [-1]];
Images :=[F1, F2, F3]; -- a |-> F1; b |-> F2; c |-> F3
+
F13:=[[a,b,a,b,a,b^2,a,b^2,a,b,a,b,a,b^2,a,b^2], [-1]];
NC.KernelOfHomomorphism(X_1, X_2, Images);
+
-- Group ring Q&lt;x[1],y[1],x[2],y[2]&gt;/&lt;F21,F22,F23,F24,F25,F26&gt; with the fundamental group of 3-manifold of order 72
[[[1, <quotes>ab</quotes>], [-1, <quotes>ba</quotes>], [1, <quotes>ac</quotes>], [-1, <quotes>ca</quotes>]], [[1, <quotes>aa</quotes>], [-1, <quotes>b</quotes>], [-1, <quotes>c</quotes>]]]
+
F21:=[[x[1]^3],[y[1]^3]]; --x[1]^3=y[1]^3
 +
F22:=[[x[1]^3],[-y[1],x[2],y[1],x[2]]]; --x[1]^3p=(y[1]x[1]^-1)^2
 +
F23:=[[x[2],x[1]],[-1]];
 +
F24:=[[x[1],x[2]],[-x[2],x[1]]];
 +
F25:=[[y[2],y[1]],[-1]];
 +
F26:=[[y[1],y[2]],[-y[2],y[1]]];
 +
-- Q-group algebra homomorphism phi: Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; --&gt;Q&lt;x[1],y[1],x[2],y[2]&gt;/&lt;F21,F22,F23,F24,F25,F26&gt;  
 +
-- defined by mapping a to x[1] and b to 0
 +
D1:=[[a],[-x[1]]]; -- map a to x[1]
 +
D2:=[[b]]; -- map b to 0
 +
G:=[D1,D2,F21,F22,F23,F24,F25,F26];
 +
Gb:=NC.GB(G);
 +
KGb:=NC.FindPolys(Gb,[a,b]);
 +
Concat(KGb,[F11,F12,F13]); -- a generating sy[1]stem of the ker(phi)
 +
 
 +
[[[b]], [[a^18], [-1]], [[a^2], [-1]], [[b^3], [-1]],  
 +
[[a, b, a, b, a, b^2, a, b^2, a, b, a, b, a, b^2, a, b^2], [-1]]]
 
-------------------------------
 
-------------------------------
 
</example>
 
</example>
 +
<em>Corollary (Minimal Polynomial):</em> Let <tt>phi: K[y]--&gt;K&lt;x[1],...,x[n]&gt;/I</tt> be a <tt>K</tt>-algebra homomorphism given by <tt>phi(y)=g+I</tt>. Then <tt>g+I</tt> is algebraic over <tt>K</tt> if and only if <tt>ker(phi)</tt> is not zero. Moreover, if <tt>g+I</tt> is algebraic over <tt>K</tt>, then the unique monic generating polynomial of the ideal <tt>ker(phi)</tt> is the minimal polynomial of <tt>g+I</tt> over <tt>K</tt>.
 +
<example>
 +
-- The following example shows that a is transcendental over Q in the algebra Q&lt;a,b&gt;/&lt;b^2-1,(ab)^2-1&gt;,
 +
-- hence the group &lt;a,b: b^2=(ab)^2=1&gt; is infinite.
 +
Use QQ[a,b,y];
 +
NC.SetOrdering("ELIM"); -- we want to eliminate a and b
 +
F1:=[[b^2],[-1]]; -- b^2-1
 +
F2:=[[a,b,a,b],[-1]]; -- (ab)^2-1
 +
-- Construct a Q-algebra homomorphism phi: Q[y]--&gt; Q&lt;a,b&gt;/&lt;b^2-1,(ab)^2-1&gt;
 +
-- defined by mapping y to a
 +
D:=[[y],[-a]]; -- y-a
 +
G:=[D,F1,F2];
 +
Gb:=NC.GB(G);
 +
Gb;
 +
NC.FindPolys(Gb,[y]);
 +
 +
[[[a], [-y]], [[b^2], [-1]], [[y, b, y], [-b]]]
 +
-------------------------------
 +
[ ]
 +
-------------------------------
 +
Use QQ[a,b,y];
 +
NC.SetOrdering("ELIM"); -- we want to eliminate a and b
 +
G1:=[[a^3],[-1]]; -- a^3-1
 +
G2:=[[b^2],[-1]]; -- b^2-1
 +
G3:=[[a,b,a,b],[-1]]; -- (ab)^2-1
 +
-- Construct a Q-algebra homomorphism phi: Q[y]--&gt; Q&lt;a,b&gt;/&lt;a^3-1,b^2-1,(ab)^2-1&gt;
 +
-- defined by mapping y to bab
 +
D:=[[y],[-b,a,b]]; -- y-bab
 +
G:=[D,G1,G2,G3];
 +
Gb:=NC.GB(G);
 +
NC.FindPolys(Gb,[y]);
 +
 +
[[[y^3], [-1]]]
 +
-------------------------------
 +
</example>
 +
<par/>
 
</description>
 
</description>
 
<seealso>
 
<seealso>
<see>NC.Add</see>
+
<see>ApCoCoA-1:Use|Use</see>
<see>NC.BP</see>
+
<see>ApCoCoA-1:NC.FindPolys|NC.FindPolys</see>
<see>NC.Deg</see>
+
<see>ApCoCoA-1:NC.GB|NC.GB</see>
<see>NC.GB</see>
+
<see>ApCoCoA-1:NC.SetOrdering|NC.SetOrdering</see>
<see>NC.Intersection</see>
+
<see>ApCoCoA-1:Introduction to CoCoAServer|Introduction to CoCoAServer</see>
<see>NC.IsGB</see>
 
<see>NC.LC</see>
 
<see>NC.LT</see>
 
<see>NC.LTIdeal</see>
 
<see>NC.MinimalPolynomial</see>
 
<see>NC.Multiply</see>
 
<see>NC.NR</see>
 
<see>NC.SetFp</see>
 
<see>NC.SetOrdering</see>
 
<see>NC.SetRelations</see>
 
<see>NC.SetRules</see>
 
<see>NC.SetX</see>
 
<see>NC.Subtract</see>
 
<see>NC.UnsetFp</see>
 
<see>NC.UnsetOrdering</see>
 
<see>NC.UnsetRelations</see>
 
<see>NC.UnsetRules</see>
 
<see>NC.UnsetX</see>
 
<see>NC.MRAdd</see>
 
<see>NC.MRBP</see>
 
<see>NC.MRIntersection</see>
 
<see>NC.MRKernelOfHomomorphism</see>
 
<see>NC.MRMinimalPolynomials</see>
 
<see>NC.MRMultiply</see>
 
<see>NC.MRSubtract</see>
 
<see>Introduction to CoCoAServer</see>
 
 
</seealso>
 
</seealso>
 
<types>
 
<types>
 
<type>apcocoaserver</type>
 
<type>apcocoaserver</type>
 +
<type>ideal</type>
 
<type>groebner</type>
 
<type>groebner</type>
 +
<type>non_commutative</type>
 
</types>
 
</types>
<key>gbmr.KernelOfHomomorphism</key>
+
<key>ncpoly.KernelOfHomomorphism</key>
 
<key>NC.KernelOfHomomorphism</key>
 
<key>NC.KernelOfHomomorphism</key>
 
<key>KernelOfHomomorphism</key>
 
<key>KernelOfHomomorphism</key>
<wiki-category>Package_gbmr</wiki-category>
+
<wiki-category>ApCoCoA-1:Package_ncpoly</wiki-category>
 
</command>
 
</command>

Latest revision as of 13:34, 29 October 2020

This article is about a function from ApCoCoA-1.

NC.KernelOfHomomorphism

The kernel of an algebra homomorphism.

Syntax

Description

Proposition (Kernel of an Algebra Homomorphism): Let I be a two-sided ideal in the free monoid ring K<x[1],...,x[n]>, and let J be a two-sided ideal in the free monoid ring K<y[1],...,y[m]>. Moreover, let g_1,...,g_m be polynomials in K<x[1],...,x[n]>, and let phi: K<y[1],...,y[m]>/J-->K<x[1],...,x[n]>/I be a homomorphism of K-algebras defined by phi(y[i]+J)=g_i+I for i=1,...,m. We form the free monoid ring K<x[1],...,x[n],y[1],...,y[m]>, and let D be the diagonal ideal generated by the set {y[1]-g_1,...,y[m]-g_m}. Then we have ker(phi)=((D+J) intersets K<y[1],...,y[m]>)+I.

Example

Use QQ[x[1..2],y[1..2],a,b];
NC.SetOrdering("ELIM"); -- we want to eliminate x[1..2],y[1..2]
-- Group ring Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; with the triangle group of order 576
F11:=[[a^2], [-1]];
F12:=[[b^3], [-1]];
F13:=[[a,b,a,b,a,b^2,a,b^2,a,b,a,b,a,b^2,a,b^2], [-1]];
-- Group ring Q&lt;x[1],y[1],x[2],y[2]&gt;/&lt;F21,F22,F23,F24,F25,F26&gt; with the fundamental group of 3-manifold of order 72
F21:=[[x[1]^3],[y[1]^3]]; --x[1]^3=y[1]^3
F22:=[[x[1]^3],[-y[1],x[2],y[1],x[2]]]; --x[1]^3p=(y[1]x[1]^-1)^2
F23:=[[x[2],x[1]],[-1]];
F24:=[[x[1],x[2]],[-x[2],x[1]]];
F25:=[[y[2],y[1]],[-1]];
F26:=[[y[1],y[2]],[-y[2],y[1]]];
-- Q-group algebra homomorphism phi: Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; --&gt;Q&lt;x[1],y[1],x[2],y[2]&gt;/&lt;F21,F22,F23,F24,F25,F26&gt; 
-- defined by mapping a to x[1] and b to 0
D1:=[[a],[-x[1]]]; -- map a to x[1]
D2:=[[b]]; -- map b to 0
G:=[D1,D2,F21,F22,F23,F24,F25,F26];
Gb:=NC.GB(G);
KGb:=NC.FindPolys(Gb,[a,b]);
Concat(KGb,[F11,F12,F13]); -- a generating sy[1]stem of the ker(phi)

[[[b]], [[a^18], [-1]], [[a^2], [-1]], [[b^3], [-1]], 
[[a, b, a, b, a, b^2, a, b^2, a, b, a, b, a, b^2, a, b^2], [-1]]]
-------------------------------

Corollary (Minimal Polynomial): Let phi: K[y]-->K<x[1],...,x[n]>/I be a K-algebra homomorphism given by phi(y)=g+I. Then g+I is algebraic over K if and only if ker(phi) is not zero. Moreover, if g+I is algebraic over K, then the unique monic generating polynomial of the ideal ker(phi) is the minimal polynomial of g+I over K.

Example

-- The following example shows that a is transcendental over Q in the algebra Q&lt;a,b&gt;/&lt;b^2-1,(ab)^2-1&gt;,
-- hence the group &lt;a,b: b^2=(ab)^2=1&gt; is infinite.
Use QQ[a,b,y];
NC.SetOrdering("ELIM"); -- we want to eliminate a and b
F1:=[[b^2],[-1]]; -- b^2-1
F2:=[[a,b,a,b],[-1]]; -- (ab)^2-1
-- Construct a Q-algebra homomorphism phi: Q[y]--&gt; Q&lt;a,b&gt;/&lt;b^2-1,(ab)^2-1&gt;
-- defined by mapping y to a
D:=[[y],[-a]]; -- y-a
G:=[D,F1,F2];
Gb:=NC.GB(G);
Gb;
NC.FindPolys(Gb,[y]);

[[[a], [-y]], [[b^2], [-1]], [[y, b, y], [-b]]]
-------------------------------
[ ]
-------------------------------
Use QQ[a,b,y];
NC.SetOrdering("ELIM"); -- we want to eliminate a and b
G1:=[[a^3],[-1]]; -- a^3-1
G2:=[[b^2],[-1]]; -- b^2-1
G3:=[[a,b,a,b],[-1]]; -- (ab)^2-1
-- Construct a Q-algebra homomorphism phi: Q[y]--&gt; Q&lt;a,b&gt;/&lt;a^3-1,b^2-1,(ab)^2-1&gt;
-- defined by mapping y to bab
D:=[[y],[-b,a,b]]; -- y-bab
G:=[D,G1,G2,G3];
Gb:=NC.GB(G);
NC.FindPolys(Gb,[y]);

[[[y^3], [-1]]]
-------------------------------


See also

Use

NC.FindPolys

NC.GB

NC.SetOrdering

Introduction to CoCoAServer