  
  [1X5 [33X[0;0YAfter successful recognition[133X[101X
  
  [33X[0;0YThis  chapter  explains,  what  one  can  do  with recognition nodes after a
  successful recognition (and possibly verification).[133X
  
  [33X[0;0YOf  course,  one  can  inspect  the  whole tree of recognition nodes just by
  looking  at  the  stored attribute values. Moreover, constructive membership
  tests  can  be  performed using the function [2XSLPforElement[102X ([14X3.2-15[114X), thereby
  writing  an  arbitrary  element  in  terms of the nice generators, which are
  stored  in  the  attribute  [2XNiceGens[102X  ([14X3.2-8[114X). If [9Xfail[109X is returned, then the
  element  in question does not lie in the recognised group or the recognition
  made an error.[133X
  
  [33X[0;0YHere is an example of a successful recognition tree:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xg := DirectProduct(SymmetricGroup(12),SymmetricGroup(5));[127X[104X
    [4X[28XGroup([ (1,2,3,4,5,6,7,8,9,10,11,12), (1,2), (13,14,15,16,17), (13,14) ])[128X[104X
    [4X[25Xgap>[125X [27Xri := RecogniseGroup(g);[127X[104X
    [4X[28X#I  Finished rank 90 method "NonTransitive": success.[128X[104X
    [4X[28X#I  Going to the image (depth=0, try=1).[128X[104X
    [4X[28X#I  Finished rank 95 method "MovesOnlySmallPoints": success.[128X[104X
    [4X[28X#I  Back from image (depth=0).[128X[104X
    [4X[28X#I  Calculating preimages of nice generators.[128X[104X
    [4X[28X#I  Creating 20 random generators for kernel.[128X[104X
    [4X[28X....................[128X[104X
    [4X[28X#I  Going to the kernel (depth=0).[128X[104X
    [4X[28X#I  Finished rank 80 method "Giant": success.[128X[104X
    [4X[28X#I  Back from kernel (depth=0).[128X[104X
    [4X[28X<recognition node NonTransitive[128X[104X
    [4X[28X F:<recognition node MovesOnlySmallPoints Size=120>[128X[104X
    [4X[28X K:<recognition node Giant Size=479001600>>[128X[104X
  [4X[32X[104X
  
  [33X[0;0YOne  sees  that  the  recursive  process  runs,  first  it  finds  that  the
  permutation  action  is  not  transitive, a homomorphism is found by mapping
  onto  the  action  on  one of the orbits. The image is recognised to permute
  only  a few points. The kernel is recognised to be a full symmetric group in
  its natural action on at least 10 points (recognised as [21XGiant[121X).[133X
  
  [33X[0;0YAfter this, we can write arbitrary group elements in the group [10Xg[110X in terms of
  the nice generators:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xx := PseudoRandom(g);[127X[104X
    [4X[28X(1,12)(2,5,9,11,10,3,4)(7,8)(13,14,16,15,17)[128X[104X
    [4X[25Xgap>[125X [27Xslp := SLPforElement(ri,x);[127X[104X
    [4X[28X<straight line program>[128X[104X
    [4X[25Xgap>[125X [27XResultOfStraightLineProgram(slp,NiceGens(ri));[127X[104X
    [4X[28X(1,12)(2,5,9,11,10,3,4)(7,8)(13,14,16,15,17)[128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that  this  example  only  works by using also the [5Xrecog[105X package which
  contains the necessary recognition methods.[133X
  
  
  [1X5.1 [33X[0;0YFunctions and methods for recognition nodes[133X[101X
  
  [33X[0;0YIf  you  need  an  element  explicitly  written  in  terms  of  the original
  generators, you can use the following function:[133X
  
  [1X5.1-1 SLPforNiceGens[101X
  
  [33X[1;0Y[29X[2XSLPforNiceGens[102X( [3Xri[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan SLP expressing the nice generators in the original ones[133X
  
  [33X[0;0YThis  function  assembles  a  possibly  quite  large  straight  line program
  expressing  the  nice  generators in terms of the original ones by using the
  locally stored information in the recognition tree recursively.[133X
  
  [33X[0;0YYou  can  concatenate straight line programs in the nice generators with the
  result  of  this  function  to  explicitly  write an element in terms of the
  original generators.[133X
  
  [1X5.1-2 \in[101X
  
  [33X[1;0Y[29X[2X\in[102X( [3Xx[103X, [3Xri[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X[133X
  
  [33X[0;0YThis method tests, whether the element [3Xx[103X lies in the group recognised by the
  recognition  node  [3Xri[103X.  Note that this is only a convenience method, in fact
  [2XSLPforElement[102X  ([14X3.2-15[114X)  is  used and the resulting straight line program is
  thrown away.[133X
  
  [1X5.1-3 Size[101X
  
  [33X[1;0Y[29X[2XSize[102X( [3Xri[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Ythe size of the recognised group[133X
  
  [33X[0;0YThis  method  calculates the size of the recognised group by multiplying the
  size  of the image and the kernel recursively. It is assumed that leaf nodes
  know already or can calculate the size of their group.[133X
  
  [1X5.1-4 DisplayCompositionFactors[101X
  
  [33X[1;0Y[29X[2XDisplayCompositionFactors[102X( [3Xri[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ynothing[133X
  
  [33X[0;0YThis   function  displays  a  composition  series  by  using  the  recursive
  recognition  tree.  It  only works, if the usual operation [2XCompositionSeries[102X
  ([14XReference: CompositionSeries[114X) works for all leaves. THIS DOES CURRENTLY NOT
  WORK FOR PROJECTIVE GROUPS AND THUS FOR MATRIX GROUPS![133X
  
