  
  [1X2 [33X[0;0YLiePRings in GAP[133X[101X
  
  [33X[0;0YThis  package  introduces  a new datastructure that allows one to define and
  compute with Lie [22Xp[122X-rings in GAP. We first describe this datastructure in the
  case  of ordinary Lie [22Xp[122X-rings; that is, Lie [22Xp[122X-rings for a fixed prime [22Xp[122X with
  given  structure  constants. Then we show how this datastructure can also be
  used  to  define  so-called 'generic' Lie [22Xp[122X-rings; that is, Lie [22Xp[122X-rings with
  indeterminate prime [22Xp[122X.[133X
  
  
  [1X2.1 [33X[0;0YOrdinary Lie [22Xp[122X[101X[1X-rings[133X[101X
  
  [33X[0;0YLet [22Xp[122X be a prime and let [22XL[122X be a Lie [22Xp[122X-ring of order [22Xp^n[122X. Let [22X(l_1, ..., l_n)[122X
  be  a  basis for [22XL[122X. Then there exist coefficients [22Xc_i,j,k ∈ {0, ..., p-1}[122X so
  that the following relations hold in [22XL[122X for [22X1 ≤ i,j ≤ n[122X with [22Xi ≠ j[122X:[133X
  
  
  [24X[33X[0;6Yl_i \cdot l_j = \sum_{k=i+1}^n c_{i,j,k} l_k,[133X
  
  [124X
  
  
  [24X[33X[0;6Yp l_i = \sum_{k=i+1}^n c_{i,i,k} l_k.[133X
  
  [124X
  
  [33X[0;0YThese  structure constants define the Lie [22Xp[122X-ring [22XL[122X. As the multiplication in
  a  Lie  [22Xp[122X-ring  is anticommutative, it follows that [22Xc_i,j,k = -c_j,i,k[122X holds
  for  each  [22Xk[122X  and each [22Xi ≠ j[122X. Thus the structure constants [22Xc_i,j,k[122X for [22Xi ≥ j[122X
  are sufficient to define the Lie [22Xp[122X-ring [22XL[122X.[133X
  
  [33X[0;0YThis  package  contains  the  new  datastructure [3XLiePRing[103X that allows one to
  define  Lie  [22Xp[122X-rings  via  their  structure  constants  [22Xc_i,j,k[122X. To use this
  datastructure,  we  first  collect all relevant information into a record as
  follows:[133X
  
  [8X[3Xdim[103X[8X[108X
        [33X[0;6Ythe dimension [22Xn[122X of [22XL[122X;[133X
  
  [8X[3Xprime[103X[8X[108X
        [33X[0;6Ythe prime [22Xp[122X of [22XL[122X;[133X
  
  [8X[3Xtab[103X[8X[108X
        [33X[0;6Ya  list  with  structure constants [22X[c_1,1, c_2,1, c_2,2, c_3,1, c_3,2,
        c_3,3, ...][122X.[133X
  
  [33X[0;0YEach  entry [22Xc_i,j[122X in the list [3Xtab[103X is a list [22X[k_1, c_i,j,k_1, k_2, c_i,j,k_2,
  ...][122X  so  that [22Xk_1 < k_2 < ...[122X and the entries [22Xc_i,j,k_1, c_i,j,k_2, ...[122X are
  the non-zero structure constants in the product [22Xl_i ⋅ l_j[122X. Thus if [22Xl_i ⋅ l_j
  = 0[122X, then [22Xc_i,j[122X is the empty list. If an entry in the list [3Xtab[103X is not bound,
  then it is assumed to be the empty list.[133X
  
  [1X2.1-1 LiePRingBySCTable[101X
  
  [33X[1;0Y[29X[2XLiePRingBySCTable[102X( [3XSC[103X ) [32X function[133X
  [33X[1;0Y[29X[2XLiePRingBySCTableNC[102X( [3XSC[103X ) [32X function[133X
  
  [33X[0;0YThese  functions create a [3XLiePRing[103X from the structure constants table record
  [3XSC[103X.  The  first  version  checks  that  the multiplication defined by [3Xtab[103X is
  alternating  and  satisfies  the Jacobi identity, the second version assumes
  that  this  is  the  case  and  omits these checks. These checks can also be
  carried out independently via the following function.[133X
  
  [1X2.1-2 CheckIsLiePRing[101X
  
  [33X[1;0Y[29X[2XCheckIsLiePRing[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0YThis function takes as input an object [3XL[103X created via [3XLiePRingBySCTableNC[103X and
  checks that the Jacobi identity holds in this ring.[133X
  
  [33X[0;0YThe  following  example  creates  the  Lie  [22X2[122X-ring  of  order [22X8[122X with trivial
  multiplication.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSC := rec( dim := 3, prime := 2, tab := [] );;[127X[104X
    [4X[25Xgap>[125X [27XL := LiePRingBySCTable(SC);[127X[104X
    [4X[28X<LiePRing of dimension 3 over prime 2>[128X[104X
    [4X[25Xgap>[125X [27Xl := BasisOfLiePRing(L);[127X[104X
    [4X[28X[ l1, l2, l3 ][128X[104X
    [4X[25Xgap>[125X [27Xl[1]*l[2];[127X[104X
    [4X[28X0[128X[104X
    [4X[25Xgap>[125X [27X2*l[1];[127X[104X
    [4X[28X0[128X[104X
    [4X[25Xgap>[125X [27Xl[1] + l[2];[127X[104X
    [4X[28Xl1 + l2[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe   next  example  creates  a  LiePRing  of  order  [22X5^4[122X  with  non-trivial
  multiplication.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSC := rec( dim := 4, prime := 5, tab := [ [], [3, 1], [], [4, 1]]);;[127X[104X
    [4X[25Xgap>[125X [27XL := LiePRingBySCTableNC(SC);;[127X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(L);[127X[104X
    [4X[28X[l2,l1] = l3[128X[104X
    [4X[28X[l3,l1] = l4[128X[104X
  [4X[32X[104X
  
  
  [1X2.2 [33X[0;0YGeneric Lie [22Xp[122X[101X[1X-rings[133X[101X
  
  [33X[0;0YIn  a  generic  Lie  [22Xp[122X-ring,  [22Xp[122X  is  allowed  to be an indeterminate and the
  structure  constants  are allowed to be rational functions over a polynomial
  ring  in  a  finite set of commuting indeterminates. It is generally assumed
  that  the  indeterminate with name [3Xp[103X represents the prime, the indeterminate
  with  name  [3Xw[103X  represents  the  smallest primitive root modulo the prime and
  there are further predefined indeterminates with the names [3Xx[103X, [3Xy[103X, [3Xz[103X, [3Xt[103X, [3Xj[103X, [3Xk[103X,
  [3Xm[103X,  [3Xn[103X,  [3Xr[103X,  [3Xs[103X, [3Xu[103X and [3Xv[103X. These indeterminates are used in the database of Lie
  [22Xp[122X-rings and they can be obtained via[133X
  
  [1X2.2-1 IndeterminateByName[101X
  
  [33X[1;0Y[29X[2XIndeterminateByName[102X( [3Xstring[103X ) [32X function[133X
  
  [33X[0;0Yreturns the indeterminate with the name [3Xstring[103X.[133X
  
  [33X[0;0YThe structure constants records for generic Lie [22Xp[122X-rings are similar to those
  for  ordinary  Lie  [22Xp[122X-rings,  but have the additional entry [3Xparam[103X which is a
  list  containing  all  indeterminates  used in the considered Lie [22Xp[122X-ring. We
  exhibit an example.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xp := IndeterminateByName("p");;[127X[104X
    [4X[25Xgap>[125X [27Xx := IndeterminateByName("x");;[127X[104X
    [4X[25Xgap>[125X [27XS := rec( dim := 5, [127X[104X
    [4X[25X>[125X [27X             param := [ x ], [127X[104X
    [4X[25X>[125X [27X             prime := p, [127X[104X
    [4X[25X>[125X [27X             tab := [ [ 4, 1 ], [ 3, 1 ], [ 5, x ], [ 4, 1 ], [ 5, 1 ] ] );;[127X[104X
    [4X[25Xgap>[125X [27XL := LiePRingBySCTable(S);[127X[104X
    [4X[28X<LiePRing of dimension 5 over prime p with parameters [ x ]>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(L);[127X[104X
    [4X[28Xp*l1 = l4[128X[104X
    [4X[28Xp*l2 = x*l5[128X[104X
    [4X[28X[l2,l1] = l3[128X[104X
    [4X[28X[l3,l1] = l4[128X[104X
    [4X[28X[l3,l2] = l5[128X[104X
    [4X[25Xgap>[125X [27Xl := BasisOfLiePRing(L);[127X[104X
    [4X[28X[ l1, l2, l3, l4, l5 ][128X[104X
    [4X[25Xgap>[125X [27Xp*l[1];[127X[104X
    [4X[28Xl4[128X[104X
    [4X[25Xgap>[125X [27Xl[1]+l[2];[127X[104X
    [4X[28Xl1 + l2[128X[104X
    [4X[25Xgap>[125X [27Xl[1]*l[2];[127X[104X
    [4X[28X-1*l3[128X[104X
  [4X[32X[104X
  
  
  [1X2.3 [33X[0;0YSpecialising Lie [22Xp[122X[101X[1X-rings[133X[101X
  
  [33X[0;0YA  generic Lie [22Xp[122X-ring defines a family of ordinary Lie [22Xp[122X-rings by evaluating
  the  parameters  contained in its presentation. It is generally assumed that
  the indeterminate [22Xp[122X is evaluated to a rational prime [22XP[122X and the indeterminate
  [22Xw[122X  is  evaluated  to  the  smallest  primitive  root  modulo  [22XP[122X (this can be
  determined  via  [10XPrimitiveRootMod(P)[110X).  All  other  indeterminates  can take
  arbitrary  integer  values  (usually  these values are in [22X{0, ..., P-1}[122X, but
  other  choices  are  possible as well). The following functions allow one to
  evaluate the indeterminates.[133X
  
  [1X2.3-1 SpecialiseLiePRing[101X
  
  [33X[1;0Y[29X[2XSpecialiseLiePRing[102X( [3XL[103X, [3XP[103X, [3Xpara[103X, [3Xvals[103X ) [32X function[133X
  
  [33X[0;0Ytakes  as  input  a  generic  Lie  [22Xp[122X-ring  [3XL[103X,  a rational prime [3XP[103X, a list of
  indeterminates  [3Xpara[103X  and  a corresponding list of values [3Xvals[103X. The function
  returns  a  new  Lie  [22Xp[122X-ring  in  which  the  prime [3Xp[103X is evaluated to [3XP[103X, the
  parameter  [3Xw[103X  is evaluated to [10XPrimitiveRootMod(P)[110X and the parameters in [3Xpara[103X
  are evaluated to [3Xvals[103X.[133X
  
  [1X2.3-2 SpecialisePrimeOfLiePRing[101X
  
  [33X[1;0Y[29X[2XSpecialisePrimeOfLiePRing[102X( [3XL[103X, [3XP[103X ) [32X function[133X
  
  [33X[0;0Ythis  is  a  shortcut  for [10XSpecialiseLiePRing(L, P, [], [])[110X. We exhibit some
  example applications.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xp := IndeterminateByName("p");;[127X[104X
    [4X[25Xgap>[125X [27Xw := IndeterminateByName("w");;[127X[104X
    [4X[25Xgap>[125X [27Xx := IndeterminateByName("x");;[127X[104X
    [4X[25Xgap>[125X [27Xy := IndeterminateByName("y");;[127X[104X
    [4X[25Xgap>[125X [27XS := rec( dim := 7, [127X[104X
    [4X[25X>[125X [27X             param := [ w, x, y ], [127X[104X
    [4X[25X>[125X [27X             prime := p, [127X[104X
    [4X[25X>[125X [27X             tab := [ [  ], [ 6, 1 ], [ 6, 1 ], [ 7, 1 ], [  ], [127X[104X
    [4X[25X>[125X [27X                      [ 6, x, 7, y ], [  ], [ 7, 1 ], [ 6, w ] ] );;[127X[104X
    [4X[25Xgap>[125X [27XL := LiePRingBySCTable(S);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime p with parameters [ w, x, y ]>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(L);[127X[104X
    [4X[28Xp*l2 = l6[128X[104X
    [4X[28Xp*l3 = x*l6 + y*l7[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = w*l6[128X[104X
    [4X[25Xgap>[125X [27XSpecialiseLiePRing(L, 7, [x, y], [0,0]);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime 7>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(last);[127X[104X
    [4X[28X7*l2 = l6[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = 3*l6[128X[104X
    [4X[25Xgap>[125X [27XSpecialiseLiePRing(L, 11, [x, y], [0,10]);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime 11>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(last);[127X[104X
    [4X[28X11*l2 = l6[128X[104X
    [4X[28X11*l3 = 10*l7[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = 2*l6[128X[104X
    [4X[25Xgap>[125X [27XCartesian([0,1],[0,1]);[127X[104X
    [4X[28X[ [ 0, 0 ], [ 0, 1 ], [ 1, 0 ], [ 1, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XList(last, v -> SpecialiseLiePRing(L, 2, [x,y], v));[127X[104X
    [4X[28X[ <LiePRing of dimension 7 over prime 2>, [128X[104X
    [4X[28X  <LiePRing of dimension 7 over prime 2>, [128X[104X
    [4X[28X  <LiePRing of dimension 7 over prime 2>, [128X[104X
    [4X[28X  <LiePRing of dimension 7 over prime 2> ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YIt  is not necessary to specialise all parameters at once. In particular, it
  is  possible  to leave the prime [3Xp[103X as indeterminate and specialise only some
  of the parameters. (Except for [3Xw[103X which is linked to [3Xp[103X.)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSpecialiseLiePRing(L, p, [x], [0]);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime p with parameters [ y, w ]>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(last);[127X[104X
    [4X[28Xp*l2 = l6[128X[104X
    [4X[28Xp*l3 = y*l7[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = w*l6[128X[104X
    [4X[25Xgap>[125X [27XSpecialiseLiePRing(L, p, [y], [3]);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime p with parameters [ x, w ]>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(last);[127X[104X
    [4X[28Xp*l2 = l6[128X[104X
    [4X[28Xp*l3 = x*l6 + 3*l7[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = w*l6[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIt  is  also possible to specialise the prime only, but leave all or some of
  the  parameters  indeterminate. Note that specialising [3Xp[103X also specialises [3Xw[103X.
  Again, we continue to use the generic Lie [22Xp[122X-ring [22XL[122X as above.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSpecialisePrimeOfLiePRing(L, 29);[127X[104X
    [4X[28X<LiePRing of dimension 7 over prime 29 with parameters [ y, x ]>[128X[104X
    [4X[25Xgap>[125X [27XViewPCPresentation(last);[127X[104X
    [4X[28X29*l2 = l6[128X[104X
    [4X[28X29*l3 = x*l6 + y*l7[128X[104X
    [4X[28X[l2,l1] = l6[128X[104X
    [4X[28X[l3,l1] = l7[128X[104X
    [4X[28X[l4,l2] = l7[128X[104X
    [4X[28X[l4,l3] = 2*l6[128X[104X
  [4X[32X[104X
  
  [1X2.3-3 LiePValues[101X
  
  [33X[1;0Y[29X[2XLiePValues[102X( [3XK[103X ) [32X attribute[133X
  
  [33X[0;0Yif  [22XK[122X  is  obtained by specialising, then this attribute is set and contains
  the parameters that have been specialised and their values.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27X L := LiePRingsByLibrary(6)[14];[127X[104X
    [4X[28X<LiePRing of dimension 6 over prime p with parameters [ x ]>[128X[104X
    [4X[25Xgap>[125X [27X K := SpecialisePrimeOfLiePRing(L, 5);[127X[104X
    [4X[28X<LiePRing of dimension 6 over prime 5 with parameters [ x ]>[128X[104X
    [4X[25Xgap>[125X [27XLiePValues(K);[127X[104X
    [4X[28X[ [ p, w ], [ 5, 2 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X2.4 [33X[0;0YSubrings of Lie [22Xp[122X[101X[1X-rings[133X[101X
  
  [33X[0;0YLet  [22XL[122X  be a Lie [22Xp[122X-ring with basis [22X(l_1, ..., l_n)[122X and let [22XU[122X be a subring of
  [22XL[122X. Then [22XU[122X is a Lie [22Xp[122X-ring and thus also has a basis [22X(u_1, ..., u_m)[122X. For [22X1 ≤
  i ≤ m[122X we define the coefficients [22Xa_i,j ∈ {0, ..., p-1}[122X via[133X
  
  
  [24X[33X[0;6Yu_i = \sum_{j=1}^n a_{i,j} l_j[133X
  
  [124X
  
  [33X[0;0Yand  we  denote  with [22XA[122X the matrix with entries [22Xa_i,j[122X. We say that the basis
  [22X(u_1,  ...,  u_m)[122X  is [13Xinduced[113X if [22XA[122X is in upper triangular form. Further, the
  basis  [22X(u_1,  ..., u_m)[122X is [13Xcanonical[113X if [22XA[122X is in upper echelon form; that is,
  it  is upper triangular, each row in [22XA[122X has leading entry [22X1[122X and there are [22X0[122X's
  above  the  leading  entry.  Note  that  a canonical basis is unique for the
  subring.[133X
  
  [1X2.4-1 LiePSubring[101X
  
  [33X[1;0Y[29X[2XLiePSubring[102X( [3XL[103X, [3Xgens[103X ) [32X function[133X
  
  [33X[0;0YLet  [3XL[103X  be  a  (generic  or  ordinary)  Lie  [22Xp[122X-ring and let [3Xgens[103X be a set of
  elements  in  [3XL[103X.  This function determines a canonical basis for the subring
  generated  by  [3Xgens[103X in [3XL[103X and returns the LiePSubring of [3XL[103X generated by [3Xgens[103X.
  Note  that this function may have strange effects for generic Lie [22Xp[122X-rings as
  the following example shows.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XL := LiePRingsByLibrary(6)[100];[127X[104X
    [4X[28X<LiePRing of dimension 6 over prime p>[128X[104X
    [4X[25Xgap>[125X [27Xl := BasisOfLiePRing(L);[127X[104X
    [4X[28X[ l1, l2, l3, l4, l5, l6 ][128X[104X
    [4X[25Xgap>[125X [27XU := LiePSubring(L, [5*l[1]]);[127X[104X
    [4X[28X<LiePRing of dimension 3 over prime p>[128X[104X
    [4X[25Xgap>[125X [27XBasisOfLiePRing(U);[127X[104X
    [4X[28X[ l1, l4, l6 ][128X[104X
    [4X[25Xgap>[125X [27X K := SpecialisePrimeOfLiePRing(L, 5);[127X[104X
    [4X[28X<LiePRing of dimension 6 over prime 5>[128X[104X
    [4X[25Xgap>[125X [27X b := BasisOfLiePRing(K);[127X[104X
    [4X[28X[ l1, l2, l3, l4, l5, l6 ][128X[104X
    [4X[25Xgap>[125X [27XLiePSubring(K, [5*b[1]]);[127X[104X
    [4X[28X<LiePRing of dimension 2 over prime 5>[128X[104X
    [4X[25Xgap>[125X [27X BasisOfLiePRing(last);[127X[104X
    [4X[28X[ l4, l6 ][128X[104X
    [4X[25Xgap>[125X [27XK := SpecialisePrimeOfLiePRing(L, 7);[127X[104X
    [4X[28X<LiePRing of dimension 6 over prime 7>[128X[104X
    [4X[25Xgap>[125X [27Xb := BasisOfLiePRing(K);[127X[104X
    [4X[28X[ l1, l2, l3, l4, l5, l6 ][128X[104X
    [4X[25Xgap>[125X [27XU := LiePSubring(K, [5*b[1]]);[127X[104X
    [4X[28X<LiePRing of dimension 3 over prime 7>[128X[104X
    [4X[25Xgap>[125X [27XBasisOfLiePRing(U);[127X[104X
    [4X[28X[ l1, l4, l6 ][128X[104X
  [4X[32X[104X
  
  [1X2.4-2 LiePIdeal[101X
  
  [33X[1;0Y[29X[2XLiePIdeal[102X( [3XL[103X, [3Xgens[103X ) [32X function[133X
  
  [33X[0;0Yreturn  the  ideal of [3XL[103X generated by [3Xgens[103X. This function computes an induced
  basis for the ideal.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XLiePIdeal(L, [l[1]]);[127X[104X
    [4X[28X<LiePRing of dimension 5 over prime p>[128X[104X
    [4X[25Xgap>[125X [27XBasisOfLiePRing(last);[127X[104X
    [4X[28X[ l1, l3, l4, l5, l6 ][128X[104X
  [4X[32X[104X
  
  [1X2.4-3 LiePQuotient[101X
  
  [33X[1;0Y[29X[2XLiePQuotient[102X( [3XL[103X, [3XU[103X ) [32X function[133X
  
  [33X[0;0Yreturn  a  Lie  [22Xp[122X-ring isomorphic to [22XL/U[122X where [22XU[122X must be an ideal of [22XL[122X. This
  function requires that [22XL[122X is an ordinary Lie [22Xp[122X-ring.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XLiePIdeal(K, [b[1]]);[127X[104X
    [4X[28X<LiePRing of dimension 5 over prime 7>[128X[104X
    [4X[25Xgap>[125X [27XLiePIdeal(K, [b[2]]);[127X[104X
    [4X[28X<LiePRing of dimension 4 over prime 7>[128X[104X
    [4X[25Xgap>[125X [27XLiePQuotient(K,last);[127X[104X
    [4X[28X<LiePRing of dimension 2 over prime 7>[128X[104X
  [4X[32X[104X
  
  
  [1X2.5 [33X[0;0YElementary functions[133X[101X
  
  [33X[0;0YThe  functions  described  in this section work for ordinary and generic Lie
  [22Xp[122X-rings and their subrings.[133X
  
  [1X2.5-1 PrimeOfLiePRing[101X
  
  [33X[1;0Y[29X[2XPrimeOfLiePRing[102X( [3XL[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns  the  underlying  prime.  This  can  either  be  an  integer  or  an
  indeterminate.[133X
  
  [1X2.5-2 BasisOfLiePRing[101X
  
  [33X[1;0Y[29X[2XBasisOfLiePRing[102X( [3XL[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns a basis for [22XL[122X.[133X
  
  [1X2.5-3 DimensionOfLiePRing[101X
  
  [33X[1;0Y[29X[2XDimensionOfLiePRing[102X( [3XL[103X ) [32X attribute[133X
  
  [33X[0;0Yreturns the dimension of [3XL[103X.[133X
  
  [1X2.5-4 ParametersOfLiePRing[101X
  
  [33X[1;0Y[29X[2XParametersOfLiePRing[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yreturns the list of indeterminates involved in [22XL[122X. If [22XL[122X is a subring of a Lie
  [22Xp[122X-ring defined by structure constants, then the parameters of the parent are
  returned.[133X
  
  [1X2.5-5 ViewPCPresentation[101X
  
  [33X[1;0Y[29X[2XViewPCPresentation[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yprints the presentation for [22XL[122X with respect to its basis.[133X
  
  
  [1X2.6 [33X[0;0YSeries of subrings[133X[101X
  
  [33X[0;0YLet [3XL[103X be a generic or ordinary Lie [22Xp[122X-ring or a subring of such a Lie [22Xp[122X-ring.[133X
  
  [1X2.6-1 LiePLowerCentralSeries[101X
  
  [33X[1;0Y[29X[2XLiePLowerCentralSeries[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yreturns the lower central series of [22XL[122X.[133X
  
  [1X2.6-2 LiePLowerPCentralSeries[101X
  
  [33X[1;0Y[29X[2XLiePLowerPCentralSeries[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yreturns the lower exponent-[22Xp[122X central series of [22XL[122X.[133X
  
  [1X2.6-3 LiePDerivedSeries[101X
  
  [33X[1;0Y[29X[2XLiePDerivedSeries[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yreturns the derived series of [22XL[122X.[133X
  
  [1X2.6-4 LiePMinimalGeneratingSet[101X
  
  [33X[1;0Y[29X[2XLiePMinimalGeneratingSet[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0Yreturns a minimal generating set of [22XL[122X; that is, a generating set of smallest
  possible size.[133X
  
  
  [1X2.7 [33X[0;0YThe Lazard correspondence[133X[101X
  
  [33X[0;0YThe  following function has been implemented by Willem de Graaf. It uses the
  Baker-Campbell-Hausdorff  formula as described in [CdV12] and it is based on
  the Liering package [Cd10].[133X
  
  [1X2.7-1 PGroupByLiePRing[101X
  
  [33X[1;0Y[29X[2XPGroupByLiePRing[102X( [3XL[103X ) [32X function[133X
  
  [33X[0;0YLet  [3XL[103X  be an ordinary Lie [22Xp[122X-ring with [22Xcl(L) < p[122X. Then this function returns
  the [22Xp[122X-group [22XG[122X obtained from [22XL[122X via the Lazard correspondence.[133X
  
