  
  [1X2 [33X[0;0YPregroups[133X[101X
  
  [33X[0;0YPregroups  are the fundamental building block of pregroup presentations used
  in the hyperbolicity tester.[133X
  
  
  [1X2.1 [33X[0;0YCreating Pregroups[133X[101X
  
  [33X[0;0YThis  section  describes  functions  to create pregroups from multiplication
  tables, free groups, and free products of finite groups.[133X
  
  [1X2.1-1 PregroupByTable[101X
  
  [33X[1;0Y[29X[2XPregroupByTable[102X( [3Xenams[103X, [3Xtable[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPregroupByTableNC[102X( [3Xarg[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA pregroup[133X
  
  [33X[0;0YIf  [3Xenams[103X  is  a  list of element names, which can be arbitrary GAP objects,
  with  the  convention that [10Xenams[1][110X is the name of the identity element, and
  [3Xtable[103X  is a square table of non-negative integers that is the multiplication
  table  of  a  pregroup,  then [2XPregroupByTable[102X and [2XPregroupByTableNC[102X return a
  pregroup in multiplication table representation.[133X
  
  [33X[0;0YBy  convention  the  elements  of  the  pregroup  are numbered [10X[1..n][110X with [10X0[110X
  denoting an undefined product in the table.[133X
  
  [33X[0;0YThe  axioms for a pregroup are checked by [2XPregroupByTable[102X and not checked by
  [2XPregroupByTableNC[102X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpregroup := PregroupByTable( "1xyY",[127X[104X
    [4X[25X>[125X [27X               [ [1,2,3,4][127X[104X
    [4X[25X>[125X [27X               , [2,1,0,0][127X[104X
    [4X[25X>[125X [27X               , [3,4,0,1][127X[104X
    [4X[25X>[125X [27X               , [4,0,1,3] ] );[127X[104X
    [4X[28X<pregroup with 4 elements in table rep>[128X[104X
  [4X[32X[104X
  
  [1X2.1-2 PregroupByRedRelators[101X
  
  [33X[1;0Y[29X[2XPregroupByRedRelators[102X( [3XF[103X, [3Xrrel[103X, [3Xinv[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA pregroup in table representation[133X
  
  [33X[0;0YConstruct  a pregroup from the list [3Xrrel[103X of red relators and the list [3Xinv[103X of
  involutions  over  the  free  group [3XF[103X. The argument [3Xrred[103X has to be a list of
  elements  of  length  3  in  the  free  group [3XF[103X, and [3Xinv[103X has to be a list of
  generators of [3XF[103X.[133X
  
  [1X2.1-3 PregroupOfFreeProduct[101X
  
  [33X[1;0Y[29X[2XPregroupOfFreeProduct[102X( [3XG[103X, [3XH[103X ) [32X operation[133X
  
  [33X[0;0YConstruct the pregroup of the free product of [3XG[103X and [3XH[103X. If [3XG[103X and [3XH[103X are finite
  groups,  then  [2XPregroupOfFreeProduct[102X  returns the pregroup consisting of the
  non-identity  elements of [3XG[103X and [3XH[103X and an identity element. A product between
  two  non-trivial  elements  is  defined  if and only if they are in the same
  group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpregroup := PregroupOfFreeProduct(SmallGroup(12,2), SmallGroup(24,4));[127X[104X
    [4X[28X<pregroup with 35 elements in table rep>[128X[104X
  [4X[32X[104X
  
  [1X2.1-4 PregroupOfFreeGroup[101X
  
  [33X[1;0Y[29X[2XPregroupOfFreeGroup[102X( [3XF[103X ) [32X function[133X
  
  [33X[0;0YReturn the pregroup of the free group [3XF[103X[133X
  
  
  [1X2.2 [33X[0;0YFilters and Representations[133X[101X
  
  [33X[0;0YThis   section   gives   an   overview  over  the  filters,  categories  and
  representations defined by [5Xwalrus[105X[133X
  
  [1X2.2-1 IsPregroup[101X
  
  [33X[1;0Y[29X[2XIsPregroup[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [1X2.2-2 IsPregroupTableRep[101X
  
  [33X[1;0Y[29X[2XIsPregroupTableRep[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YA  pregroup represented by its multiplication table, which is a square table
  of  integers  between  0 and the size of the pregroup, where 0 represents an
  undefined multiplication.[133X
  
  [1X2.2-3 IsPregroupOfFreeGroupRep[101X
  
  [33X[1;0Y[29X[2XIsPregroupOfFreeGroupRep[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YPregroup of a free group of rank [22Xk[122X. The only defined products are [22X1⋅ x = x ⋅
  1 = x[122X and [22Xxx^-1 = x^-1x = 1[122X, for all generators [22Xx[122X.[133X
  
  [1X2.2-4 IsPregroupOfFreeProductRep[101X
  
  [33X[1;0Y[29X[2XIsPregroupOfFreeProductRep[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YPregroup  of  the  free  product  of a list of groups where products between
  non-trivial  elements  [22Xg[122X,  [22Xh[122X  are  defined  if [22Xg,h[122X are contained in the same
  group.[133X
  
  
  [1X2.3 [33X[0;0YAttributes, Properties, and Operations[133X[101X
  
  [33X[0;0YThis  section  gives  an  overview  over  the  attributes,  properties,  and
  operatins defined for pregroups.[133X
  
  [1X2.3-1 [][101X
  
  [33X[1;0Y[29X[2X[][102X( [3Xpregroup[103X, [3Xi[103X ) [32X operation[133X
  
  [33X[0;0YGet  the  [3Xi[103Xth  element  of  [3Xpregroup[103X.  By  convention the [22X1[122Xst element is the
  identity element.[133X
  
  [1X2.3-2 IntermultPairs[101X
  
  [33X[1;0Y[29X[2XIntermultPairs[102X( [3Xpregroup[103X ) [32X attribute[133X
  
  [33X[0;0YReturns the set of intermult pairs of the pregroup[133X
  
  [1X2.3-3 One[101X
  
  [33X[1;0Y[29X[2XOne[102X( [3Xpregroup[103X ) [32X attribute[133X
  
  [33X[0;0YThe identity element of [3Xpregroup[103X.[133X
  
  [1X2.3-4 MultiplicationTable[101X
  
  [33X[1;0Y[29X[2XMultiplicationTable[102X( [3Xpregroup[103X ) [32X attribute[133X
  
  [33X[0;0YThe multiplication table of [3Xpregroup[103X[133X
  
  [1X2.3-5 SetPregroupElementNames[101X
  
  [33X[1;0Y[29X[2XSetPregroupElementNames[102X( [3Xpregroup[103X, [3Xnames[103X ) [32X operation[133X
  
  [33X[0;0YCan  be  used  to  set  more user-friendly display names for the elements of
  [3Xpregroup[103X. The list [3Xnames[103X has to be of length [10XSize([3Xpregroup[103X[10X)[110X.[133X
  
  [1X2.3-6 PregroupElementNames[101X
  
  [33X[1;0Y[29X[2XPregroupElementNames[102X( [3Xpregroup[103X ) [32X operation[133X
  
  [33X[0;0YReturn the list of names of elements of [3Xpregroup[103X[133X
  
  
  [1X2.4 [33X[0;0YElements of Pregroups[133X[101X
  
  [1X2.4-1 IsElementOfPregroup[101X
  
  [33X[1;0Y[29X[2XIsElementOfPregroup[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [1X2.4-2 IsElementOfPregroupRep[101X
  
  [33X[1;0Y[29X[2XIsElementOfPregroupRep[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [1X2.4-3 IsElementOfPregroupOfFreeGroupRep[101X
  
  [33X[1;0Y[29X[2XIsElementOfPregroupOfFreeGroupRep[102X( [3Xarg[103X ) [32X filter[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [1X2.4-4 PregroupOf[101X
  
  [33X[1;0Y[29X[2XPregroupOf[102X( [3Xp[103X ) [32X attribute[133X
  
  [33X[0;0YThe pregroup that the element [3Xp[103X is contained in.[133X
  
  [1X2.4-5 IsDefinedMultiplication[101X
  
  [33X[1;0Y[29X[2XIsDefinedMultiplication[102X( [3Xp[103X, [3Xq[103X ) [32X operation[133X
  
  [33X[0;0YTests  whether  the  multiplication  of  [3Xp[103X  and [3Xq[103X is defined in the pregroup
  containing [3Xp[103X and [3Xq[103X.[133X
  
  [1X2.4-6 IsIntermultPair[101X
  
  [33X[1;0Y[29X[2XIsIntermultPair[102X( [3Xp[103X, [3Xq[103X ) [32X operation[133X
  
  [33X[0;0YTests whether [22X([3Xp[103X, [3Xq[103X)[122X is an intermult pair. defined.[133X
  
  [1X2.4-7 PregroupInverse[101X
  
  [33X[1;0Y[29X[2XPregroupInverse[102X( [3Xp[103X ) [32X attribute[133X
  
  [33X[0;0YReturn the inverse of [3Xp[103X.[133X
  
  
  [1X2.5 [33X[0;0YSmall Pregroups[133X[101X
  
  [33X[0;0YThis  package  contains  a  small database of pregroups of sizes [22X1[122X to [22X7[122X. The
  database was computed by Chris Jefferson using the Minion constraint solver.[133X
  
  [33X[0;0YThese  small  pregroups  currently  used  for  testing.  Accessing the small
  pregroups database works as follows.[133X
  
  [1X2.5-1 NrSmallPregroups[101X
  
  [33X[1;0Y[29X[2XNrSmallPregroups[102X( [3Xn[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan integer.[133X
  
  [33X[0;0YReturns the number of pregroups of size [3Xn[103X available in the database.[133X
  
  [1X2.5-2 SmallPregroup[101X
  
  [33X[1;0Y[29X[2XSmallPregroup[102X( [3Xn[103X, [3Xi[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya pregroup.[133X
  
  [33X[0;0YReturns the [3Xi[103Xth pregroup of size [3Xn[103X from the database of small pregroups.[133X
  
