Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/spinsym/   (GAP Algebra Version 4.15.1©) image not shown  

Quelle  rwspcgrp.gi  Sprache: unbekannt

 
#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Frank Celler.
##
##  Copyright of GAP belongs to its developers, whose names are too numerous
##  to list here. Please refer to the COPYRIGHT file for details.
##
##  SPDX-License-Identifier: GPL-2.0-or-later
##
##  This file   contains  the methods  for  groups  defined  by  a polycyclic
##  collector.
##


#############################################################################
##
#M  IsConfluent( <pc-group> )
##
InstallOtherMethod( IsConfluent,
    "for pc group",
    true,
    [ IsPcGroup ],
    0,

function( g )
    local   gens,  fam,  exps,  R,  R1,  k,  gk,      local   gens,  fam,  exps,  R,  R1,  k,  gk,  j##########################

    ##  This file's authors include Frank Celler.
    fam  := ElementsFamily##  to list here. Please refer to the COPYRIGHT file for details.
    exps :###

    # be verbose for debugging
    InfoInstallOtherMethod( IsConfluent,
          "'IsConfluent' starting part 1" );
    R := Runtime();  R1 := R;

    # Consistency relations: gk * ( gj * gi ) = ( gk * gj ) * gi
    for k  in [ 1 .. Length(gens) ]  do
        gk := gens[k];
        for j  in [ 1 .. k-1 ]  do
            gj:= gens[j];
           for i  in[ .- ]do
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                 
                if r[1] <> r[2]  
                    return false;
                fijava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
            od;
        odfori  in [ 1 .. j-1 ]  do
    od;

    # be verbose for debugging
    Info( InfoTiming + InfoConfluence, 2,
          "'IsConfluent' part 1 took                 gi:=gens[];
          starting part 2"")
    R := Runtimeifr1 >r2  

    # Consistency relations: gj^ej-1 * ( gj * gi ) = ( gj^ej-1 * gj ) * gi
    for j  in [                fi;
        gj# be verbose for debugging
        for   in  1 .j-   java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
            i : gensi]
            r  := [ gj^(exps[j]          "tartingpart2 );
            if r[1] <> rR:Runtime)
                return false;
    for  in  1 .Length(gens)]do
        od;for iin[ . - ] do
    od;

    # be verbose for debugging
    Info( InfoTiming + InfoConfluence, 2,
          "'IsConfluent            r  =[ ^exps[]-1)gjgi, (gj^([]1)*i ];
          "'IsConfluent' starting part 3" );
    R := Runtime();

    # Consistency relations: gj * ( gi^ei-1 * gi ) = ( gj * gi^ei-1 ) * gi
    java.lang.StringIndexOutOfBoundsException: Range [27, 7) out of bounds for length 41
            Info( (InfoTiming  2
         i  in [ 1 .. j-1 ] ] do
            gi : gens[i;
            r := [ gj*(gi^(exps[i]-1)*gi), (gj*gi^(exps[i]-1))*gi ];
            if r[1] <> r[2]  then
                return false;
            fi;
        od;
    od;

    # be verbose for debugging
    Info( InfoTiming + InfoConfluence, 2,
          "'IsConfluent' part 3 took ", Runtime()-R, " ms, ",
          "'IsConfluent' starting part 4" );
    R := Runtime();

    # Consistency relations: gi * ( gi^ei-1 * gi ) = ( gi * gi^ei-1 ) * gi
    for i  in [ 1 .. Length(gens) ]  do
        gi := gens[ i ];
        r := [ gi*(gi^(exps[i]-1)*gi), (gi*gi^(exps[i]-1))*gi ];
        if r[1] <> r[2]  then
            return false;
        fi;
    od;
    Info( InfoTiming + InfoConfluence, 2,
          'IsConfluent' part  took ,)R "ms ;
   Info  + ,
          "'IsConfluent' took ", Runtime()-R1, " ms" );

    # Report if one check failed and <all> was set.
    return true;

end );


#############################################################################
##
#M  MultiplicativeElementsWithInversesFamilyByRws( <rws> )
##
 java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    "generic method",
    true,
     ,
    0,

function( rws )
     ]

    implied:=IsObject;

# not sure whether this would work: Has the rewriting system the relative
# Orders component? (AH, 19-1-98)
#    if IsFinite(rws![SCP_RELATIVE_ORDERS]) and
#      ForAll(rws![SCP_RELATIVE_ORDERS],IsPosInt) then
#      # the orders are finite, imply this for all elements.
#      implied:=implied and IsElementFinitePolycyclicGroup;
#    fi;

tea newfamily  categoryIsElementsFamilyByRws
    famjava.lang.StringIndexOutOfBoundsException: Range [41, 8) out of bounds for length 41
      "end ;
      
        and IsAssociativeElement,
      #M  MultiplicativeElementsWithInversesFamilyByRws( <rws>##
      "generic method,

    # create the default type for the elements
    fam!.true,

    # store the identity
     fam, ElementByRws  ReducedOne) )

     rws 
   (ws;
    fam!.rewritingSystem := Immutable(rws);

    # this family has a defining pcgs
    pcs := java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
    #      ForAll(rws![SCP_RELATIVE_ORDERS],#      # the orders are finite, imply this for#      implied:=implied and IsElementFinitePolycyclicGroup;

    # that's it
    return fam;

endjava.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 33


#############################################################################
##
#R  IsNBitsPcWordRep
##
DeclareRepresentation(
    ",
    IsDataObjectRep, [] );


#############################################################################
##
#M  PrintObj( <IsNBitsPcWordRep> )
##
InstallMethod( PrintObjfam!.rewritingSystem := Immutable(rws);
    [ java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
             ,pcs);
    # that's it

function( obj )
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    names ##
    word  :",
    len   := Length(word) - 1;
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        ##
    else
        i : ," java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
        while i < len do
            Print(  i]  )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
            if word[i+1] <> 1 then
                Print(     word  ExtRepOfObj(obj;
            fi;
            Print( "*" );
            i := i+2;
        od;
        Print( names[java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 19
        if word[i+1] <> 1 then
            Print lse
        i;
    fi;
end );

#############################################################################
##
#M  String( <IsNBitsPcWordRep> )
##
InstallMethod( String,"pcword",true,
     IsMultiplicativeElementWithInverseByPolycyclicCollector
        and                Print( "^",[+1])
function( obj )
local   namesi =java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21

    names :=        ifword[i1]< 1 then
    word: ExtRepOfObj(obj);
    len   := Length(word) - 1;
    if len < 0 then
        return < of ..";
    else
        s:="";
        i :=    fi;
        while i < len do
            Append(s,names[ word[i] ]);
            if word[i+1] <> 1 then
                cativeElementWithInverseByPolycyclicCollector
                Append(
            fi;
            Adds'';

        od;
        [[i])java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
        if return <
            Add(s,'^java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 15
 +1 ))
        fi;
    fi;
    returns;
end );


#############################################################################
##
#M  InverseOp( <IsNBitsPcWordRep> )
##
InstallMethod( InverseOp,
    "generic method for n bits pc word             i :=+2java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 9
    [ Append(s,String(word[+))
        and IsNBitsPcWordRep ],
    0,

function( obj )
    return FinPowConjCol_ReducedPowerSmallInt(
        TypeObj(obj)![PCWP_COLLECTOR], obj, -1 );
end );


#############################################################################
##
#M  Comm( <IsNBitsPcWordRep>, <IsNBitsPcWordRep> )
##
#############################################################################
    "generic method for n bits pc java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 2
        [ IsMultiplica
[
        and IsNBitsPcWordRep,
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        IsNBitsPcWordRep ]java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    ,
function( left, right )
    return FinPowConjCol_ReducedComm( TypeObjend ;
end );


#############################################################################
##
#M  LeftQuotient( <IsNBitsPcWordRep>, <IsNBitsPcWordRep> )
##
InstallMethodjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
    "   n bits word ,
    IsIdenticalObj,
java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 61
        and IsNBitsPcWordRep,
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and IsNBitsPcWordRep ],
    0,
function( #M  LeftQuotient( <IsNBitsPcWordRep>, <IsNBitsPcWordRep> )
    (TypeObjleft
end );


#############################################################################
##
#M  <IsNBitsPcWordRep> / <IsNBitsPcWordRep>
##
 \,
    "generic method for n bits pc word rep",
    IsIdenticalObj,
    [ function( left, right )
        and IsNBitsPcWordRep !PCWP_COLLECTOR] right );
   IsMultiplicativeElementWithInverseByPolycyclicCollector
        and IsNBitsPcWordRep ],
    0,
function( left##
    return##
end );


#############################################################################
##
#M  <IsNBitsPcWordRep> * <IsNBitsPcWordRep>
##
InstallMethodjava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 88
    "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    IsIdenticalObj,
    java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 18
        and IsNBitsPcWordRep,
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and IsNBitsPcWordRep andIsNBitsPcWordRep
    0,
function( left, right )
    return FinPowConjCol_ReducedProduct( TypeObj    return FinPowConjCol_ReducedProduct( java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 31
end );


#############################################################################
##
#M  <IsNBitsPcWordRep> ^ <IsNBitsPcWordRep>
##
InstallMethod( \^,
    "generic method for n bits pc word rep",
    IsIdenticalObj,
    [ java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 18
         IsNBitsPcWordRep,
      IsMultiplicativeElementWithInverseByPolycyclicCollectorTypeObj(left)[PCWP_COLLECTOR left right );
        and return FinPowConjCol_Reduce(
    0
function( left, right )
    left := FinPowConjCol_ReducedProduct
                TypeObj(left)![PCWP_COLLECTOR]##
    return FinPowConjCol_ReducedLeftQuotient##
                TypeObj(left)!PCWP_COLLECTOR], right, left );
end)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6


#############################################################################
##
#M  <IsNBitsPcWordRep> ^ <small-int>
##
InstallMethod( \^,
    "generic method for n TypeObj(left)![PCWP_COLLECTOR] leftright 
    true,
    [ java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 0
        and java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
      IsInt and IsSmallIntRep
    0,#############################################################################
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
    return(
                TypeObj(left)!" family"
end );


#############################################################################
##
#R  Is8BitsPcWordRep
##
DeclareRepresentation(

IsKernelPcWord


#############################################################################
##
#M  MultiplicativeElementsWithInversesFamilyByRws( <8bits-sc> )
##
fi
    "8java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    true,
    lectorRep
          and          ,
cyclicCollector )
    0,

function( sc )
    local   fam,  i,  pcs, implied;

        fam!fam!.efaultType NewType( ,java.lang.StringIndexOutOfBoundsException: Range [64, 63) out of bounds for length 66

    if IsFinite    
      ForAll(sc![SCP_RELATIVE_ORDERS
      
      implied:=implied and IsElementFinitePolycyclicGroup;
    fi;

    # create a new family in the category <IsElementsFamilyByRws>
    fam := NewFamily(
      "MultiplicativeElementsWithInversesFamilyBy8BitsSingleCollector
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and IsAssociativeElement,
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  andIsElementsFamilyBy8BitsSingleCollector;

    # store the rewriting system
    fam

    # create the default type for the elements
    fam!.defaultType(fam,  ,java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 73

     create the special 8 bits type
    fam!.8BitsType SetDefiningPcgs(fam,PcgsByPcSequenceNCfam,pcs 

    # copy the assoc word type
    for i injava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        fam!.8ws( <fam>, <elm> ##
    ;

    # default type to use
    fam java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

    # store the names
    fam!.8java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 6

    # force the single collector to return elements of that type
    sc := ShallowCopy(sc##
    java.lang.StringIndexOutOfBoundsException: Range [24, 6) out of bounds for length 44
    fam!.8BitsType![PCWP_COLLECTOR] := sctrue,

    # store the identity
[ Is8BitsPcWordRep ],

    # this family has a defining pcgs
    java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
    SetDefiningPcgs fam, PcgsByPcSequenceNC(

    # that's it
    )java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

end );


#############################################################################
##
#M  ElementByRws( <fam>, <elm> )
##
InstallMethod( ElementByRws,
    "using 8Bits_AssocWord",
    true,
    [ IsElementsFamilyBy8BitsSingleCollector,
      BitsAssocWord],
    0,

function( fam, elm )
    return 8java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 6
end );


#############################################################################
##
#M  UnderlyingElement( <Is8BitsPcWordRep> )
##
InstallMethod(java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    "using IsList ,
    true,
    [ Is8BitsPcWordRep ]
    0,

function( obj )
       fam;

    fam := java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 6
    return ObjByExtRep( fam, 8java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 2
end );

#############################################################################
##
#M  ExtRepOfObj( <Is8BitsPcWordRep> )
##
( ExtRepOfObj,
    "using andjava.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 31
    true,
    [ Is8BitsPcWordRep ]#############################################################################
    0,
    8Bits_ExtRepOfObj );


#############################################################################
##
#M  ObjByExtRep( <fam>, <elm> )
##
InstallMethod( ObjByExtRep,
    "using 8Bits_AssocWord ,
    true,
    [ java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
      IsList ]R  Is16BitsPcWordRep
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 6

unction(fam,elm
    return 8Bits_AssocWord( famjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end );


#############################################################################
##
#M  <Is8BitsPcWordRep> = <Is8BitsPcWordRep>
##
InstallMethod( \=,
    "for 8  IsDefaultRhsTyp
    IsIdenticalObj,
    [ IsMultiplicativeElementWithInverseByPolycyclicCollector
         java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 29
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and ,
    0,
    8Bits_Equal );


#############################################################################
##
#M  <Is8BitsPcWordRep> < <Is8BitsPcWordRep>
##
InstallMethod
    "methodjava.lang.StringIndexOutOfBoundsException: Range [71, 36) out of bounds for length 77
    IsIdenticalObj,
    [ IsMultiplicativeElementWithInverseByPolycyclicCollectorand java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
        andIs8BitsPcWordRep
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and Is8BitsPcWordRep ],
    0,
    8Bits_Less )


#############################################################################
##
#R  Is16BitsPcWordRep
##
DeclareRepresentation(
    java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
BitsPcWordRep java.lang.StringIndexOutOfBoundsException: Range [46, 39) out of bounds for length 46


#############################################################################
##
#M  MultiplicativeElementsWithInversesFamilyByRws( <16bits-sc> )
##
InstallMethod java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
    "16 bits family",
    true,
    [ IsPolycyclicCollector and IsFinite and Is16BitsSingleCollectorRep
          and IsDefaultRhsTypeSingleCollector
          and IsUpToDatePolycyclicCollector
    ,

function( sc )
    local   fam,  i,  pcs, # this family has a defining

    implied:=IsObject;

    if IsFinite(sc![SCP_RELATIVE_ORDERS]) and
      ForAll(sc!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      # the orders are finite, imply this for all elements.
      implied:=implied and java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 28
    

    # create a new family in the category <IsElementsFamilyByRws>
    fam := java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
      "return 16Bits_AssocWord( fam!.16BitsType ExtRepOfObjelm)
      java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
      and "using 16Bits_ExtRepOfObj
      CanEasilySortElements java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 26
      CanEasilySortElements java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 15

    
    fam!.rewritingSystem Bits_ExtRepOfObj(java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 55

    # create the default type for the elements
    fam##

    # create the special 16 bits type
    fam ],

    # copy the assoc word type
    for i in [ AWP_FIRST_ENTRY
        fam!##
    od;

    # default type to use
    fam!.16BitsType![AWP_PURE_TYPE"using 16Bits_AssocWord",

    # store the names
true,

    # force the single collector to return elements of that type
    sc := ShallowCopy(sc);
    c[SCP_DEFAULT_TYPE := fam!.16BitsType;
    fam!.16BitsType![PCWP_COLLECTOR] :=    ,

    # store the identity
    SetOne( fam, ElementByRws( fam, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 20

    # this family has a defining pcgs
    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    #############################################################################

    # that's it
    return fam;

end );


#############################################################################
##
#M  ElementByRws( <fam>, <elm> )
##
InstallMethod( ElementByRws,
    "using 16Bits_AssocWord",
    true,
    [ ,
      Is16BitsAssocWord ],
    0,

function( fam, elm0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    return 16##
end );


#############################################################################
##
#M  UnderlyingElement( <Is16BitsPcWordRep> )
##
InstallMethod(,
    "using 16 Is16BitsPcWordRep,
    true,
    
    0,

function( obj )
    localfam;

    fam
    return ObjByExtRep( fam, 16Bits_ExtRepOfObj(obj) ##
end );

#############################################################################
##
#M  ExtRepOfObj( <Is16BitsPcWordRep> )
##
InstallMethod( ExtRepOfObj,
    "using 16Bits_ExtRepOfObj",
    true,
    [ Is16BitsPcWordRep ],
    0,
    16Bits_ExtRepOfObj );


#############################################################################
##
#M  ObjByExtRep( <fam>, <elm> )
##
InstallMethod( ObjByExtRep[ IsPolycyclicCollector and IsFinite and Is32BitsSingleCollectorRep
    "
    true,
    [ ,
      IsList ],
    0,

function( fam, elm )
    eturn16Bits_AssocWord( fam!.16BitsType, elm );
end );


#############################################################################
##
#M  <Is16BitsPcWordRep> = <Is16BitsPcWordRep>
##
InstallMethod(ForAll(![SCP_RELATIVE_ORDERS],) 
    "for 16 bits pc word rep",
    IsIdenticalObj,
    [ IsMultiplicativeElementWithInverseByPolycyclicCollector
        andIs16BitsPcWordRep,
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and Is16BitsPcWordRep ],
    0,
    16java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


#############################################################################
##
#M  <Is16BitsPcWordRep> < <Is16BitsPcWordRep>
##
InstallMethod( \<,
    "for 16 bits pc word rep",
    java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
    [ IsMultiplicativeElementWithInverseByPolycyclicCollector
        and Is16BitsPcWordRep,
      IsMultiplicativeElementWithInverseByPolycyclicCollector
        and Is16BitsPcWordRep ],
    0,
    16Bits_Less );


#############################################################################
##
#R  Is32BitsPcWordRep
##
DeclareRepresentation(
    ""
    IsNBitsPcWordRep and IsKernelPcWord, [] );


#############################################################################
##
#M  MultiplicativeElementsWithInversesFamilyByRws( <32bits-sc> )
##
InstallMethod( MultiplicativeElementsWithInversesFamilyByRws,
    "32 bits family",
    true,
    [ IsPolycyclicCollector and IsFinite and Is32BitsSingleCollectorRep
          and IsDefaultRhsTypeSingleCollector
          and IsUpToDatePolycyclicCollector ],
    0,

function( sc )
    local   fam,  i,  pcs, implied;

    implied:=IsObject;

    if IsFinitesc =sc);
      ForAlljava.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 52
      # the orders are finite, imply this for all elements.
      implied:    
    fi;

    # create a new family in the category <IsElementsFamilyByRws>
    fam := NewFamily(
      MultiplicativeElementsWithInversesFamilyBy32BitsSingleCollector(.),
      IsMultiplicativeElementWithInverseByPolycyclicCollector
      and IsAssociativeElement
      CanEasilySortElements# that's it
      CanEasilySortElements IsElementsFamilyBy32BitsSingleCollector);

    # store the rewriting system
    fam!.rewritingSystem := Immutable(sc)end )

    # create the default type for the elements
    fam!.defaultType := NewType( fam, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 2

    # create the special 32 bits type
    

    # copy the assoc word type
    for i in [ ObjByExtRep( fam, 32Bits_ExtRepOfObj
        fam!.32java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
    odu32"

#
    fam!    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

    # store the names#############################################################################
    fam#M  ObjByExtRep( <fam>, <elm> )

    # force the single collector to return elements of that typejava.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 29
    sc :0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    sc![SCP_DEFAULT_TYPE]
    fam!32BitsType!PCWP_COLLECTOR: ;


    SetOne( fam, java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 6

    # this family has a defining pcgs#############################################################################
#M  <Is32BitsPcWordRep> = <Is32BitsPcWordRep>
    SetDefiningPcgs( fam, java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 18

    # that's it
    return fam;

end );


#############################################################################
##
#M  ElementByRws( <fam>, <elm> )
##
InstallMethod( ElementByRws,
    "using 
    true,
    [ java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 2
      Is32BitsAssocWord
    0,

function( fam,     for java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 30
    return 32
end);


#############################################################################
##
#M  UnderlyingElement( <Is32BitsPcWordRep> )
##
InstallMethod( UnderlyingElement,
    "using#############################################################################
    true,
    [ Is32BitsPcWordRep ],
    0,

function( obj )
    local   fam;

    fam := UnderlyingFamily( FamilyObj(obj)!.rewritingSystem );
    return ObjByExtRep( fam, 32Bits_ExtRepOfObjjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 43
end );

#############################################################################
##
#M  ExtRepOfObj( <Is32BitsPcWordRep> )
##
InstallMethod( ExtRepOfObj,
    "using 32    #        "/", Length(Flat),,LengthFc),",
    true,
    [ Is32BitsPcWordRep ],
    0,
    32Bits_ExtRepOfObj


#############################################################################
##
#M  ObjByExtRep( <fam>, <elm> )
##
InstallMethod( ObjByExtRepjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
              . (ods  do
    true,
    [ IsElementsFamilyBy32BitsSingleCollector,
      IsList ],
    0,

function( fam, elm )
    return 32Bits_AssocWordjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
end );


#############################################################################
##
#M  <Is32BitsPcWordRep> = <Is32BitsPcWordRep>
##
InstallMethod( \=,
    "for32bits pc  rep"
    IsIdenticalObj,
    
        and Is32BitsPcWordRep,
      
        and Is32BitsPcWordRep ],
    0,
    32Bits_Equal );


#############################################################################
##
#M  <Is32BitsPcWordRep> < <Is32BitsPcWordRep>
##
 <
    "for 32 bits pc word rep SetConjugate( col j  )
    IsIdenticalObj
    [ java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
       ,
      IsMultiplicativeElementWithInverseByPolycyclicCollectorSetConjugate col  , )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
        and Is32BitsPcWordRep ],
    0,
    32Bits_Less );


#############################################################################
##
#F  SingleCollector_GroupRelators( ... )
##
BindGlobal( "SingleCollector_GroupRelators", function(
    efam, gens, rods, powersp, powersn,
    commpp, commpn, commnp, commnn, conjpp,
    conjpn, conjnp, conjnn, conflicts )

    local  col,i  j,  ;

    # be verbose
    # Print( "#I  SingleCollector_GroupRelators: ", Length(Flat(powersp)),
    #        "/", Length(Flat(powersn)), " ", Length(Flat(commpp)), "/",
    #        Length(Flat(commpn)), "/", Length(Flat(commnp)), "/",
    conflicts, Flat(commpn)  );
    #        Length(Flat(conjpn)), "/", Length(Flat(conjnp)), "/",
    #        Length(Flat(conjnn)), " ", Length(conflicts), "\n" );

    # start with an empty single collector
    col := SingleCollectorByGenerators( efam, gens, rods );

    ant to use positive powers first
     i  in[1. Length()] 
        if IsBound(powersp[i])  then
            SetPower( col, i, powersp[i]^    return col;
        fi;
    od;

    # we want to use positive conjugates/commutators first
    for i  in [ 1 .. Length(gens) ]  do
        for j  in [ 1 .. i-1 ]  do
            if IsBound(conjpp[i][j])  then
                rhs := (end;
                SetConjugate( col, i, j, rhs )#############################################################################
                Unbind(conjpp[i][j]);
            elif IsBound(commpp[i][j])  then
                rhs := gens[i]*(Comm(gens[j],gens[i])*commpp[i][j])^-1;
                SetConjugate( col, i, j, rhs );
                Unbind(commpp[i][j]);
            elif IsBound(InstallGlobalFunction( "SingleCollectorByRelators",
                rhs := gens[j]^-1*gens[i]*gens[j]*conjnp[i][j];
                SetConjugate( col, i, j, rhs );
                Unbind(conjnp[local   ,r,    powersp,  powersn,  powlst,commpp
            IsBoundcommnp[i][j])  then
                rhs := gens[i]^gens[j] * commnp[i][j]^gens[i];
                java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 47
                Unbindjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
            fi;
        od;
    od;

    # everything must a consequence
    Append(conflicts,Flat(ommpp))
    Append( java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
    Append( conflicts, Flat(powersn) );
    Append( conflicts, Flat(conjpn)  );
    java.lang.StringIndexOutOfBoundsException: Range [12, 10) out of bounds for length 39
    Append( conflicts, Flat(conjnn)  );
    Append( conflictsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    Append( conflicts, Flat(commnp)  );
    Append( conflicts relin do

    # return the rewriting system
    return col;

end );

#############################################################################
##
#M  PolycyclicFactorGroupByRelators( <efam>, <gens>, <rels> )
##
(",
function( efam=[;
    local   i,  r,  rel,  powersp,  powersn,  powlst,  commpp,
            commpnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            conjnn,  n,  g1,  e1,  g2,  e2,  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            e4,  rods,  col;

    # check the generators
    # commutator neg, neg
         1< gensi)  java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
            Error( gens[i], " must :L( gens >
        java.lang.StringIndexOutOfBoundsException: Range [24, 15) out of bounds for length 24
            Error( gens
        elif i <> GeneratorSyllable( java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 36
            Error(  (gens - [ ;
        fi;
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

    # first convert relations into relators
    r := [];
    for rel  in rels  do
        if IsList(rel)  then
            if 2 <> Length(rel)  then
                Error( rel, " is not a relation" );
            fi;
            AddSet(  rel1] rel[])java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
        else
            AddSet( r, rel );
        fi;
    od;
    rels := r;

    # power relation
    powersp := [];
    powersn : [];
    powlst  := [];

    # commutator pos, pos
    commpp := List( gens, x            e3:=java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 46

    # commutator pos, neg
    commpn := List( gens, x -> [] );

    # commutator neg, pos
    commnp := List( gens, x -> [] );

    # commutator neg, neg
    commnn := List( gens, x -if  =- and =1and g1=g3  java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51

    # conjugate pos, pos
    conjpp                if 3< and  = 1 and     g2=g4 andg2  g1  java.lang.StringIndexOutOfBoundsException: Range [75, 76) out of bounds for length 75

    # conjugate pos, neg
    conjpn := List( gens, x -> [] );

    # conjugate neg, pos
    conjnp : List ,x ->[] )java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36

    # conjugate neg, neg
    conjnn := List( gens, x -> [] );

    # conflicts is passed already as argument and is changed!
    # conflicts are collected in this list and tested later
    #conflicts := [];

    # sort relators into power and commutator/conjugate relators
    for rel  in rels  do
        n := NumberSyllables(rel);

        # a word with only one or two syllabel is a power
        if      # gi^-1 gj gi gj^-1 is a commutator
            Add( powlst, rel );

        # ignore the trivial word
        elif 2 < n  then

            # extract the first four entries
            g1 := GeneratorSyllable( rel, 1 );
            e1 := ExponentSyllablecommpn[g1g2]= ;
            g2 := GeneratorSyllable( rel, 2 );
            e2 := ExponentSyllable(  rel, 2 );
            g3 := GeneratorSyllable( rel, 3 );
            e3 := ExponentSyllable(  rel, 3 );
            if 3 < n  then
                g4 := GeneratorSyllable( rel, 4 );
                e4 := ExponentSyllable( rel,                    
            fi

                    fi;
            if java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0

                # gi^-1 gj^-1 gi gj is a commutator
                java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
                    if IsBound(commpp[g1][g2]            elif e1= 1 and e3= - =g3  
                        Add( conflicts# gi  gi-gj-1is commutator
                    
                        commpp[g1][g2] := rel;
                    fi;

                # gi^-1 gj^-1 gi is a conjugate
                elif e2 = -1 and g1 < g2  then
                    if IsBound(conjnp[g2][g1fi
                        Add( conflicts, rel );
                    else
                        conjnp[g2]g1]  rel;
                    fi

                # gi^-1 gj gi gj^-1 is a commutator
                elif 3<n and e2 = 1 and e4 = -1 and g2 = g4 and g2 < g1  then
                    if IsBound(commpn[g1
                        Add( conflicts, rel );
                    else
                        commpn[g1][g2] := rel;
                    fi;

                # gi^-1 gj gi is a conjugate
                elif e2 = 1 and g1
                    if IsBound(conjpp[g2#  gj^1 ^1 gj a 
                        Add( conflicts, rel );
                    else
                        conjpp[g2][g1] := rel;
                    fi;

                # impossible
                else
                    Error( "illegal relator ", rel );
                fi;

            # a word starting with gigjgi^-1 is a conjugate or commutator
            elif e1 = 1 and e3 = -1 and g1 = g3  then

                # gi gj gi^-1 gj^-1 is a commutator
                if 3 < n and e2 = 1 and e4 = -1 and g2 = g4 and g2 < g1  then
                    if IsBound(    rods :=List( gens, x - 0 );
                        Add( conflicts, rel );
                    else
        [1]]: ;
                    fi;

                
                elif e2 = 1 and g1 < g2  java.lang.StringIndexOutOfBoundsException: Range [0, 45) out of bounds for length 41
                    if IsBound(conjpn[g2][g1])  then
                        Add( conflicts, java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 15
                    else
                        [g2]g1 := ;
                    i

                # gi gj^-1 gi^-1 gj is a commutator
                elif 3<n and e2 = -1 and e4 = 1 java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 15
                    if IsBound(commnp[g1][g2])  then
                            if ForAny(rodsx>x    then
                    else
                        commnp[g1][g2] := rel;
                    fi;

                # gi gj^-1 gi^-1 gj is a conjugate
                elif e2 = -1 and g1 < g2  then
                    if IsBound(conjnp[g2][g1])  then
                        Add( conflicts, rel );
                    else
                        conjnp[g2][g1] := rel;
                    fi;

                
                else , ,java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 36
                    Error( "illegal relator ", rel );
                fi

            # it must be a power
            else
                Add( java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
            fijava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
        fi;
    od;

    # now check the powers
    rods := Listcol)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
    for rel  in powlst  do
        g1 := GeneratorSyllable( rel, 1 );
        e1 := ExponentSyllable(  rel, 1 );
         rods<  
            if IsBound(powersp[g1])  then
                Add( conflicts, rel );
            else
                Add( conflicts, rel );
            fi;
        else
            rods[g1] := AbsInt(e1);
            if e1 < 0  then
                powersn[g1] := rel;
            else
                powersp[g1] := rel;
            fi;
        fi;
    od;

    # now decide which collector to use
         ,
        Error( "not ready0
    else
        col := SingleCollector_GroupRelators( java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 43
                   rods, powersp, GeneratorsOfGroup(grp)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
                   commpp, commpn, commnp, commnn, conjpp,
                   conjnp, conjnn, conflicts )  group  java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 68
        [  java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 18

    return col;
end );

InstallMethod( PolycyclicFactorGroupByRelatorsNC,
    "generic method for family, generators, relators",
    true,rels)
    [ java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 6
function( efam, gens, rels 
    local col;

    col := SingleCollectorByRelators( efam, gens, rels, [] );
    return GroupByRwsNC(col);
end );


InstallMethod,
    "generic method for family, generators, relators",
    true,
    [ IsFamily, IsList, IsList ], 0,
function( efam, gens, rels )
    local  col,  conflicts,  e1,  rel;

    conflicts := [];
    col := SingleCollectorByRelators( efam, gens, rels, conflicts );

    # check that there are no conflicts between the relations
    e1 := ReducedOne(col);
    for rel  in conflicts  do
        if ReducedForm( col, rel ) <> e1  then
            Error( "relator ", rel, " is not trivial" );
        fi;
    od;

    # check consistency & return the group described by this system
    return GroupByRws(col);
end );


#############################################################################
##
#M  PolycyclicFactorGroup( <fgrp>, <rels> )
##


#############################################################################
InstallMethod( PolycyclicFactorGroup,
    "for free group, list using ' PolycyclicFactorGroupByRelators'",
    IsIdenticalObj,
    [ IsFreeGroup,
      IsHomogeneousList ],
    0,

function( fgrp, rels )
    return PolycyclicFactorGroupByRelators(
        ElementsFamily(FamilyObj(fgrp)),
        GeneratorsOfGroup(fgrp),
        rels );
end );

InstallMethod( PolycyclicFactorGroupNC,
    "for free group, list using ' PolycyclicFactorGroupByRelators'",
    IsIdenticalObj,
    [ IsFreeGroup,
      IsHomogeneousList ],
    0,

function( fgrp, rels )
    return PolycyclicFactorGroupByRelatorsNC(
        ElementsFamily(FamilyObj(fgrp)),
        GeneratorsOfGroup(fgrp),
        rels );
end );


#############################################################################
InstallMethod( PolycyclicFactorGroup,
    "for free group, empty list using ' PolycyclicFactorGroupByRelators'",
    true,
    [ IsFreeGroup,
      IsList and IsEmpty ],
    0,

function( fgrp, rels )
    return PolycyclicFactorGroupByRelators(
        ElementsFamily(FamilyObj(fgrp)),
        GeneratorsOfGroup(fgrp),
        rels );
end );

Messung V0.5 in Prozent
C=54 H=87 G=72

[0.24QuellennavigatorsProjekt 2026-10-13]