ApCoCoA-1:NCo.KernelOfHomomorphism

From ApCoCoAWiki
Revision as of 15:01, 9 May 2013 by Xiu (talk | contribs) (New page: <command> <title>NCo.KernelOfHomomorphism</title> <short_description> Enumerate a (partial) Groebner basis of the kernel of a <tt>K</tt>-algebra homomorphism. </short_description> <syntax>...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

NCo.KernelOfHomomorphism

Enumerate a (partial) Groebner basis of the kernel of a K-algebra homomorphism.

Syntax

NCo.KernelOfHomomorphism(X1:STRING, X2:STRING, Images:LIST):LIST
NCo.KernelOfHomomorphism(X1:STRING, X2:STRING, Images:LIST, DegreeBound:INT, LoopBound:INT, Flag:INT):LIST

Description

Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.

Please set the coefficient field K via the function NCo.SetFp before calling the function. The default coefficient field is Q. For more information, please check the relevant function.

  • @param X1: a finite alphabet or finite set of indeterminates. It is of STRING type. Note that every letter in X1 MUST appear only once.The order of letters in X1 is very important, since X1 together with Images determinates a K-algebra homomorphism.

  • @param X2: another finite alphabet or finite set of indeterminates. It is of STRING type. Note that X1 and X2 are disjoint.

  • @param Images: a LIST of polynomials in K<X2>. Each polynomial is represented as a LIST of monomials, which are pairs of the form [C, W] where W is a word in <X2> and C is the coefficient of W. For example, the polynomial F=xy-y+1 is represented as F:=[[1,"xy"], [-1, "y"], [1,""]]. The zero polynomial 0 is represented as the empty LIST []. Note that the number of polynomials in Images should be equal to the number of letters in X1. Also note that the order of polynomials in Images is very important, since Images together with X1 defines a K-algebra homomorphism. For example, X1:="abc"; X2:="xy"; F1 := [[1,"x"], [1,"y"]]; F2 := [[1,"xx"],[1,"xy"]]; F3 := [[1,"yy"],[1,"yx"]]; Images := [F1, F2, F3]; then the K-algebra homomorphism is defined by mapping a to F1, b to F2 and c to F3.

Since this function is based on Groebner basis computations, we refer users to NCo.GB or NCo.ReducedGB for information about the following three optional parameters:

  • @param DegreeBound

  • @param LoopBound

  • @param Flag

  • @return: a LIST of polynomials, which is a Groebner basis of the kernel of the K-algebra homomorphism if a finite Groebner basis exists, and is a partial Groebner basis otherwise.

Example

X1 := <quotes>abc</quotes>; 
X2 := <quotes>xy</quotes>; 
F1 := [[1,<quotes>x</quotes>], [1,<quotes>y</quotes>]]; 
F2 := [[1,<quotes>xx</quotes>],[1,<quotes>xy</quotes>]]; 
F3 := [[1,<quotes>yy</quotes>],[1,<quotes>yx</quotes>]]; 
Images :=[F1, F2, F3]; -- a |-> F1; b |-> F2; c |-> F3 
NCo.KernelOfHomomorphism(X1, X2, Images);

[[[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>]]]
-------------------------------

Theorem: Let I be an ideal of K<X>, let Y= {y1,...,ym} be another alphabet, let K<Y> be the free monoid ring generated by Y over K, and let J be an ideal of K<Y>. Moreover, let g1,...,gm be polynomals in K<X>, and let f: K<Y>/J -> K<X>/I be a homomorphism of K-algebras defined by f(yi)=gi for i=1,...,m. We form the free monoid ring K<X,Y> over K, and let D be the diagonal ideal in K<X,Y> generated by the set {y1-g1,...,ym−gm}. Then we have ker(f)=((D + I) intersect K<Y>)+J.

Example

-- Group ring Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; with the triangle group of order 576
F11:=[[1,<quotes>aa</quotes>], [-1,<quotes></quotes>]];
F12:=[[1,<quotes>bbb</quotes>], [-1,<quotes></quotes>]];
F13:=[[1,<quotes>abababbabbabababbabb</quotes>], [-1,<quotes></quotes>]];
-- Group ring Q&lt;x,y,X,Y&gt;/&lt;F21,F22,F23,F24,F25,F26&gt; with 
-- the fundamental group of 3-manifold of order 72
F21:=[[1,<quotes>xxx</quotes>],[1,<quotes>yyy</quotes>]]; --x^3=y^3
F22:=[[1,<quotes>xxx</quotes>],[-1,<quotes>yXyX</quotes>]]; --x^3p=(yx^-1)^2
F23:=[[1,<quotes>Xx</quotes>],[-1,<quotes></quotes>]];
F24:=[[1,<quotes>xX</quotes>],[-1,<quotes>Xx</quotes>]];
F25:=[[1,<quotes>Yy</quotes>],[-1,<quotes></quotes>]];
F26:=[[1,<quotes>yY</quotes>],[-1,<quotes>Yy</quotes>]];
-- K-group algebra homomorphism from Q&lt;a,b&gt;/&lt;F11,F12,F13&gt; to 
-- Q&lt;x,y,X,Y&gt;/&lt;F21,F22,F23,F24,F25,F26&gt; defined by mapping a to x2+1 and b to 0
D1:=[[1,<quotes>a</quotes>],[-1,<quotes>x</quotes>]]; -- map a to x
D2:=[[1,<quotes>b</quotes>]]; -- map b to 0
G:=[D1,D2,F21,F22,F23,F24,F25,F26];
NCo.SetX(<quotes>xyXYab</quotes>);
NCo.SetOrdering(<quotes>ELIM</quotes>); -- we want to eliminate x,y,X and Y
Gb:=NCo.ReducedGB(G);
Gb;
KGb:=NCo.FindPolynomials(<quotes>ab</quotes>,Gb);
Concat(KGb,[F11,F12,F13]); -- the kernel of K-group algebra homomorphism

[[[1, <quotes>b</quotes>]], [[1, <quotes>aaaaaaaaaaaaaaaaaa</quotes>], [-1, <quotes></quotes>]], [[1, <quotes>Yaaa</quotes>], [-1, <quotes>aaaY</quotes>]], [[1, <quotes>YY</quotes>], [1, <quotes>aYa</quotes>]], 
[[1, <quotes>YaY</quotes>], [-1, <quotes>aaaaaaaaaaaaaa</quotes>]], [[1, <quotes>YaaY</quotes>], [1, <quotes>aaaaaaaaaaaYaa</quotes>]], [[1, <quotes>X</quotes>], [-1, <quotes>aaaaaaaaaaaaaaaaa</quotes>]], 
[[1, <quotes>y</quotes>], [-1, <quotes>aaaaYa</quotes>]], [[1, <quotes>x</quotes>], [-1, <quotes>a</quotes>]]]
-------------------------------
[[[1, <quotes>b</quotes>]], [[1, <quotes>aaaaaaaaaaaaaaaaaa</quotes>], [-1, <quotes></quotes>]], [[1, <quotes>aa</quotes>], [-1, <quotes></quotes>]], [[1, <quotes>bbb</quotes>], [-1, <quotes></quotes>]], 
[[1, <quotes>abababbabbabababbabb</quotes>], [-1, <quotes></quotes>]]]
-------------------------------

See also

NCo.Add

NCo.Deg

NCo.FindPolynomials

NCo.GB

NCo.HF

NCo.Interreduction

NCo.Intersection

NCo.IsFinite

NCo.IsGB

NCo.IsHomog

NCo.KernelOfHomomorphism

NCo.LC

NCo.LT

NCo.LTIdeal

NCo.MB

NCo.MinimalPolynomial

NCo.Multiply

NCo.NR

NCo.ReducedGB

NCo.SetFp

NCo.SetOrdering

NCo.SetRelations

NCo.SetRules

NCo.SetX

NCo.Subtract

NCo.TruncatedGB

NCo.UnsetFp

NCo.UnsetOrdering

NCo.UnsetRelations

NCo.UnsetRules

NCo.UnsetX

Introduction to CoCoAServer