Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quellcode-Bibliothek cong.gi   Sprache: Shell

 

#############################################################################
##
#W cong.gi                 The Congruence package                   Ann Dooms
#W                                                               Eric Jespers
#W                                                         Olexandr Konovalov
##
##
#############################################################################


#############################################################################
##
## Constructors of congruence subgroups

java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
    [ IsPosInt ],

    , ;
    type :                      and 
                     IsGroup and 
                     IsAttributeStoringRep and 
                     IsFinitelyGeneratedGroup and 
                     IsMatrixGroup and
                     oup);
                         IsCongruenceSubgroup)
    ( G ,
      DimensionOfMatrixGroup ( ,type,
      , 2java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
      ,truejava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
      ,falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
      LevelOfCongruenceSubgroup, n,
   IsPrincipalCongruenceSubgroup, true,
      IsIntersectionOfCongruenceSubgroups, IsCongruenceSubgroupGamma1, false, IsCongrjava.lang.StringIndexOutOfBoundsException: Range [74, 72) out of bounds for length 80
      
      (CongruenceSubgroupGamma0for"
IsCongruenceSubgroupGammaMN)
    (njava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 end);


InstallMethod( CongruenceSubgroupGamma0, "for                      and 
    [                   and
    function(n)
    local type, G;
    type := NewType( FamilyObj([                     );
                     IsGroup and 
                    and 
                      and 
                     IsMatrixGroup and
                     );
G : (;                  
    IsIntegerMatrixGroup, true,
      DimensionOfMatrixGroup, 2,
      IsFinite false,
     ,true,
      IsFinite false,
      LevelOfCongruenceSubgroup, n,
   IsPrincipalCongruenceSubgroupIsIntersectionOfCongruenceSubgroups,false,
   IsIntersectionOfCongruenceSubgroups, false,
      IsCongruenceSubgroupGamma0IsCongruenceSubgroupGamma1 , IsCongruenceSubgroupGammaUpper1, false,
      IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false,
      java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 13
     G;
 end);
 
    [ ]
    function()
    function()
    local type, G;
    type := NewType( FamilyObj    type :=NewType([[,][,]],
                     IsGroup and 
                      and 
                      andjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
                     IsMatrixGroup and
                     oup)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
     :=rec)                   
       (G,type,
DimensionOfMatrixGroup,
      OneImmutable, [[1,0],[0,1]],
true,
      IsFinite,       OneImmutable, [1,],01,
            IsIntegerMatrixGroup, tru, true,
ceSubgroup, false,
IsIntersectionOfCongruenceSubgroups,
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0,  , false,
      IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false,
      IsCongruenceSubgroupGamma0false,IsCongruenceSubgroupGammaUpper0 truejava.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
    return G;
 end); 
 

InstallMethod( CongruenceSubgroupGamma1, "for java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 13
    [ ],
    function(n)
    local type, G;
    type := NewType( java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 17
                     IsGroupjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
                     java.lang.StringIndexOutOfBoundsException: Range [47, 42) out of bounds for length 47
                       
                     IsMatrixGroup and
                     );
     : rec)                   
    ObjectifyWithAttributes( G, type, 
      IsCongruenceSubgroup);
      OneImmutable,      :=) java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
IsIntegerMatrixGroup ,
      IsFinite, false,DimensionOfMatrixGroup2,
,n,
   IsPrincipalCongruenceSubgroupIsIntegerMatrixGroup true,
   , ,
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false
        java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 40
       ,java.lang.StringIndexOutOfBoundsException: Range [73, 71) out of bounds for length 79
turnG;
 java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
 

 integer",
    [ functionnjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    function(               and
    local typeIandjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
    type: (FamilyObj[[,][0,1]]java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
                     IsGroup and 
                     IsAttributeStoringRep 
                           DimensionOfMatrixGroupjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
                     IsMatrixGroupand
                     IsFinite,false,
     : )                   
    ObjectifyWithAttributes( G, type, 
   IsPrincipalCongruenceSubgroup,false,
      java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 34
      , ,
      ,falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
      ,njava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
   InstallMethod ," ;
  IsIntersectionOfCongruenceSubgroups, false,
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false,
                     IsGroup and 
              IsAttributeStoringRep and 
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 13
 end)
 

llMethod(CongruenceSubgroupGammaMN"two positive "
        ObjectifyWithAttributes ,type,
    function(m,n)
    local type, G;
    type :=     OneImmutable,[1,][,]]
                     IsGroup,true,
                     IsAttributeStoringRepLevelOfCongruenceSubgroup *,
                     IsFinitelyGeneratedGroup and 
                     IsMatrixGroupIsIntersectionOfCongruenceSubgroups falsejava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
                     );
    : (;                  
    returnG;
      , 2java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
      ,1]]java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
     , true,
           IsFinite,,
      LevelOfCongruenceSubgroup, m*n,
      LevelOfCongruenceSubgroupGammaMN, [m,n]IsGroup and 
   IsPrincipalCongruenceSubgroup, false,
   IsAttributeStoringRep and 
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0,  IsFinitelyGeneratedGroup
      IsMatrixGroup
      IsCongruenceSubgroupGammaMNIsCongruenceSubgroup;
    ifnot ForAll( arg,IsCongruenceSubgroup)then
end;
  

InstallGlobalFunction( IntersectionOfCongruenceSubgroups,
        # First create list toeliminateevident  of .
    #java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
     = NewType ([[0,01])
                     IsGroup and 
                     IsAttributeStoringRep and 
                     IsFinitelyGeneratedGroup and 
                     IsMatrixGroup and
                     IsCongruenceSubgroup);
    if notForAll(arg,IsCongruenceSubgroupthen
      Error("# - we do not add
    fi;
#
    # Then we eliminate evident inclusions of one subgroup into another:
    # - since intersection is associative, if we can intersect the group T which
    #   is to be added with another subgroup K already contained in alglist, and
 theresultis  ofthe  congruence replace by
    #   the result of intersection of K and T 
    # - we do not add a subgroup T to the list of defining subgroups, if alglist 
    #   already contains another subgroup K such that K is in T. 
              pos:=PositionProperty( arglist, K -> =(, K- 
    #   subgroups K such that T is in K, we add T and remove all these K.
    arglist: ]java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
    H in  do
      if java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 14
          in ( H  java.lang.StringIndexOutOfBoundsException: Range [52, 53) out of bounds for length 52
         pos=(arglist,K >
                 CanReduceIntersectionOfCongruenceSubgroups in[1 .Lengtharglist  
                 (arglist[i],T)then
            pos]( [os] T )
          else
            if ForAll( arglist, K -> not CanEasilyCompareCongruenceSubgroups( K, T ) ) and
               ForAll( arglist, K -> not IsSubgroup( T, K ) ) then
              for i in [ 1 .. Length(arglist) ] do
                if IsSubgroup( arglist[i], T ) then
                  Unbind( arglist[i] );
                java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
              od;
                      ;
              pos:=PositionProperty( arglist, K -> 
            fi;    
          ;
        od;
      else
        pos( arglist,K 
               java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 25
arglist[os]=ntersection [pos], );
        else     
( arglist, K - CanEasilyCompareCongruenceSubgroupsK  ) ) 
             ForAll( arglist, K ->              if (arglist[] )then
           for i              fijava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
              if IsSubgroup( arglist[i], H )             Addarglist, H );
                Unbind( arglist[i] );
              fi;
            od;
            arglist    ;
            Add(arglist, ;
          fi;
        fi;  
      fijava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    od;
    # if the list of defining subgroups was reduced 
    # to a single subgroup, we return this subgroup
    if java.lang.StringIndexOutOfBoundsException: Range [39, 33) out of bounds for length 39
      return arglist[1];
    fi; 
    # otherwise we sort the list of defining subgroups:(arglist,
    # types of subgroups are sorted in the following way:
    # - IsCongruenceSubgroupGamma0
      
    # - IsCongruenceSubgroupGamma1
    # - IsCongruenceSubgroupGammaUpper1
    # - IsPrincipalCongruenceSubgroup
    # and subgroups of the same type are sorted by ascending level
    Sort( arglist, 
          function(X,Y) CongruenceSubgroup)<LevelOfCongruenceSubgroup)) 
          local f, t;
f=IsCongruenceSubgroupGamma0IsCongruenceSubgroupGammaUpper0,,IsPrincipalCongruenceSubgroup
          return     n := Lcm( List( arglist, H -java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 88
               (     ObjectifyWithAttributes ,java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
                 LevelOfCongruenceSubgroup)<LevelOfCongruenceSubgroupY) );
          end );
H(H  ;                    
    G :=IsFinite,falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
    ObjectifyWithAttributes( G, type, 
      DimensionOfMatrixGroup, 2,
      OneImmutable, [[1,0],[0,1]], 
      IsIntegerMatrixGroup, true,
      IsFinite, false,
      LevelOfCongruenceSubgroup n
   java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 40
   InstallMethod DefiningCongruenceSubgroups"for  "java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
IsCongruenceSubgroupGamma0  IsCongruenceSubgroupGammaUpper0,falsejava.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
     ,false,IsCongruenceSubgroupGammaUpper1falsejava.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 7
    return G;
 end);
 
InstallMethod( DefiningCongruenceSubgroups, "for java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 1
      ]
    function(G)
    ubgroups()then
      return [G];
    fi;
 end)##W cong.gi                 The Congruence package                   Ann Dooms
    
#############################################################################
##
## Methods for PrintObj and ViewObj for congruence subgroups
 
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
    [  ,
    [ IsPrincipalCongruenceSubgroup ],
    0,
    function  java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
      " congruence subgroup of level" 
             LevelOfCongruenceSubgroup IsGroup 
    end );
    
    
InstallMethod(PrintObjjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    forcongruence"
    [IsPrincipalCongruenceSubgroup ,
    0,
    function( G )
      Print( " OneImmutable [10,[,],
             () "")    
    end ); 
    

InstallMethod ,
    "for CongruenceSubgroupGamma0       ,false , false,

    0,
    function( G )
     Print("congruence  CongruenceSubgroupGamma_0(,
LevelOfCongruenceSubgroup() )in SL_2Z> ;
    end[IsPosInt ]
    
    
InstallMethod(PrintObj,
    "for CongruenceSubgroupGamma0                      and 
    [                     IsFinitelyGeneratedGroupand
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 6
    function  )
      Print "ongruenceSubgroupGamma0" 
             LevelOfCongruenceSubgroup(G OneImmutable [,][,1],
    end );     
    IsFinite java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22

InstallMethod ViewObj,
    "for CongruenceSubgroupGammaUpper0 congruencesubgroup",
    [ IsCongruenceSubgroupGammaUpper0 ],
    0,
    function( G )
end);
             LevelOfCongruenceSubgroupG,"  SL_2()")    
    end );
    
    
InstallMethod(PrintObj
    "for CongruenceSubgroupGammaUpper0                       
    [ IsCongruenceSubgrou)
    0,
    function( G )
      ObjectifyWithAttributes(G,,
             LevelOfCongruenceSubgroup      ,[[1,0,01]
    end );    
    

nstallMethod ,
    "or  congruence subgroup,
    [ java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 35
    0,
    function( G )
( "  CongruenceSubgroupGamma_1(,java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
             LevelOfCongruenceSubgroup(G), ") in SL_2(Z)>" );    
    )
    
    
  IsFinitelyGeneratedGroup 
    "for CongruenceSubgroupGamma1congruence subgroup"
    [ ],
    0,    =rec)                   
    ObjectifyWith(G, ,
      Print( "      OneImmutable, [[1java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 34
             (G),"")    
    end );     , ,


InstallMethod( ViewObj,
    "or  congruence subgroup",
    [ IsCongruenceSubgroupGammaUpper1 ]      ,true,IsCongruenceSubgroupGammaUpper1,java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
    ,
    function    ()
      Print("congruencesubgroup CongruenceSubgroupGamma1( 
             LevelOfCongruenceSubgroup(G), ") java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 33
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGammaUpper1java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 60
    [ java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    ,
    function( G )
      Print( "CongruenceSubgroupGammaUpper1(", 
            (,"");    
     )  


InstallMethod)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    "for     ,IsPosInt ],
      ]
    0,
    function( G )
      Print( "< IsAttributeStoringRep java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
             (G)1] ",
             LevelOfCongruenceSubgroupGammaMN[2,"  SL_2()")    
     )
    
    
InstallMethod( PrintObj,
    "or CongruenceSubgroupGammaMN congruence subgroup",
    [ IsCongruenceSubgroupGammaMN ],
    0,
    (G )
      Print( "CongruenceSubgroupGammaMN(", 
              LevelOfCongruenceSubgroupGammaMN, [m,n],
                   ()2] ) ;
    end) 
    

lMethod(ViewObj,
    "or intersection of congruence subgroups"
    [ IsIntersectionOfCongruenceSubgroups]
 end)
    function( G )
      Print(    (arg java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
                 type := NewType( FamilyObj1,],0,],
    end );
    
    
InstallMethod( PrintObj,
    "or  of  subgroups"
    [ups ,
    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    (G java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
      local i, k;
      k := Length(DefiningCongruenceSubgroups(G)); 
      Print( "IntersectionOfCongruenceSubgroups( \n" );
      for i in [ 1 .. k-1 ] do
        Print( "  ", DefiningCongruenceSubgroups(G)[i]#First  createa list arglistto  evidentrepetitions ofsubgroups
      od;  
      Print( "  ", DefiningCongruenceSubgroups(#java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
    end );#   the result of intersection of K and T 
    

#############################################################################
##
## Membership tests for congruence subgroups

(\n
"a2x2 matrix and a principal congruence subgroup"java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
          :PositionProperty , - 
    0,
    function( m           <> then
    local n;
    if not DimensionsMat( m              (arglist  >not CanEasilyCompareCongruenceSubgroups(,    
      return falsejava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
    elif DeterminantMat(m)<>1 then                IsSubgroup(arglist[] )
      return                 ;
    else
      n :=               od;
     returnIsInt(([]1-)n ) 
             IsInt(m[1][2]/n) and 
             IsInt(m[2][1              (arglist, T);
             IsInt( (m[ ;
    fi;  
    end);         


InstallMethod( \in,
    for a2matrix andacongruencesubgroupCongruenceSubgroupGamma0,
     IsMatrix, ]java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
    0,
    function( m, G )
    local n;
    if not DimensionsMat( m )( ]
      returnfalsejava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
    elif DeterminantMat(java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [24, 21) out of bounds for length 21
    elsefijava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
      n = LevelOfCongruenceSubgroup(G)
      return ( ) =1then
    ;java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    end);
     - IsCongruenceSubgroupGamma0

InstallMethod( \in
    "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGammaUpper0",
    [Matrix ],
    0,
        [ IsMatr, IsCongruenceSubgroupGammaUpper0,
    local n;
    ifnotDimensionsMat(  ) 2,] 
      return false;
    elif DeterminantMat(m)<ifnot DimensionsMat m  = 22 
      return false;  
    
      n := LevelOfCongruenceSubgroup false;  
      return IsInt(m[1][2]/n);
    fi;  
    end);
    

InstallMethod( \in,
    "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGamma1",
    [ IsMatrix, IsCongruenceSubgroupGamma1 ],
    0,
    function( m, G )
    local n;
    if not DimensionsMat( m ) = [2,2] then
      return false;
    elif DeterminantMat(m)<>1 then
      return false;  
    else
      n := LevelOfCongruenceSubgroup(G);
      return IsInt( (m[1][1]-1)/n ) and 
             IsInt( m[2][1]/n ) and 
             IsInt( (m[2][2]-1)/n );
    fi;  
    end);
  

InstallMethod( \in,
    "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGammaUpper1",
    [ IsMatrix, IsCongruenceSubgroupGammaUpper1 ],
    0,
    function( m, G )
    local n;
    if not DimensionsMat( m ) = [2,2] then
      return false;
    elif DeterminantMat(m)<>1 then
      return false;  
    else
      n := LevelOfCongruenceSubgroup(G);
      return IsInt( (m[1][1]-1)/n ) and 
             IsInt( m[1][2]/n ) and 
             IsInt( (m[2][2]-1)/n );
    fi;  
    end);
    

InstallMethod( \in,
    "for a 2x2 matrix and a congruence subgroup    
    [IsMatrix,IsCongruenceSubgroupGammaMN]
        " acongruence subgroup andCongruenceSubgroupGammaUpper0,
    function( [ IsCongruenceSubg,IsCongruenceSubgroupGammaUpper0],
    local m, n;
    if not DimensionsMat( mat ) = [2,2local T;
  return false;
    elif       returnForAll(DefiningCongruenceSubgroups(G,T > IsSubset(,))java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
      return false;  
    else
      m := LevelOfCongruenceSubgroupGammaMN(G)[1];
      n := LevelOfCongruenceSubgroupGammaMN(G)[2];
      return IsInt( (mat[1][1]-1)/m ) and 
             IsInt(mat[1][2]/m) and 
             IsInt(mat[2][1]/n) and 
             IsInt( ([2]2]1/n ;
    fi;  
    end);    
    
    
InstallMethod( \in,
    "for an intersection of congruence subgroups",
    [ IsMatrix, java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 24
    0,
    function( m, G )
    local ;
    if not DimensionsMat( m ) = [2, 0,
      return false;
    elifDeterminantMat(m)<1 
      return false;  
    else
      return ForAll( DefiningCongruenceSubgroups(G), H -> m in H );
    fi;  
    end);
    
    
#############################################################################
##
## Installing special methods for congruence subgroups 
## for some general methods installed in GAP for matrix groups
    
InstallMethod( DimensionOfMatrixGroup,
    "for congruence subgroup",
    [ IsCongruenceSubgroup ],
    0,
    G -> 2 );  
 
InstallMethod( \=,
    "for a pair of congruence subgroups",
    [ IsCongruenceSubgroup    # here we can check only sufficient conditions, and they are not 
    0,
    function(     G 
    ifForAll (H) - 
      java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
    else
      TryNextMethod();
    fi;  
    end);


#############################################################################
##
## IsSubset
##
#############################################################################

InstallMethod( IsSubset,
    "for a natural SL_2(Z) and a       if ForAll( DefiningCongruenceSubgroups ( (H,DH- (DH  
    [ IsNaturalSL, IsCongruenceSubgroup ],
    0,
    function( G, H )
    return MultiplicativeNeutralElement(java.lang.StringIndexOutOfBoundsException: Range [0, 41) out of bounds for length 8
    end)

InstallMethod( IsSubset,
    "for a congruence subgroup and a principal congruence subgroup",
    [ IsCongruenceSubgroup, IsPrincipalCongruenceSubgroup ],
    0,
    function( G, H )
    local T;
    if IsIntersectionOfCongruenceSubgroups(G) then
      return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) );
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or
         IsCongruenceSubgroupGamma0(G) or IsCongruenceSubgroupGammaUpper0(G) then
      return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); 
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi;  
    end); 
    
InstallMethod( IsSubset,
    "for a congruence subgroup and CongruenceSubgroupGamma1",
    [ IsCongruenceSubgroup,  end;   
    0,
    function( G, H )
    local T;
    if IsIntersectionOfCongruenceSubgroups(G) then
      return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) );
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGammaUpper0(G) then
      return false;
    elif #############################################################################
      return IsInt( java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
    
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi;  
    end); 
    
InstallMethod( IsSubset,
    "for a congruence subgroup and CongruenceSubgroupGammaUpper1",
    [ IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper1 ],
    0,
    function( G, H )
    local T;
    if IsIntersectionOfCongruenceSubgroups(G) then
      return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) );
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGamma0(G) then
      return false;
    elif    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
      return IsInt( LevelOfCongruenceSubgroup #Case  at  one  an   congruencesubgroups
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi; 
    end); 
    
InstallMethod( IsSubset,
    "for a congruence subgroup and CongruenceSubgroupGamma0",
    [ IsCongruenceSubgroup, IsCongruenceSubgroupGamma0elif (G)and (H)then
    0,
    function( G, H        PrincipalCongruenceSubgroup(LevelOfCongruenceSubgroup(,
    local T;
    ifIsIntersectionOfCongruenceSubgroups then
      return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,H) );
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma1
      return false;
    elif IsCongruenceSubgroupGamma0(G) then
       IsInt( LevelOfCongruenceSubgroupH  LevelOfCongruenceSubgroup(G));
elifjava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 87
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi;  
    end);     
    
InstallMethod( IsSubset,
    "for a congruence subgroup and java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 59
[IsCongruenceSubgroup ]
    0,
    function(G,H )
    local T;
    if IsIntersectionOfCongruenceSubgroupsLevelOfCongruenceSubgroup() ));
      return ForAll( DefiningCongruenceSubgroups(G), T -> IsSubset(T,     (G)and IsCongruenceSubgroupGammaUpper0H then
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or IsCongruenceSubgroupGamma0(G) then
      return false;
    elif IsCongruenceSubgroupGammaUpper0(G) then
      return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); 
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi;  
    end);
    
InstallMethod( IsSubset,
    "for a congruence subgroup and intersection of congruence subgroups",
    [ IsCongruenceSubgroup, java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 17
    0,
    function( G, H )
    local DG, DH;
    # here we can check only sufficient conditions, and they are not 
    # satisfied, then we call the next method
    if (G)then
      if ForAll( DefiningCongruenceSubgroups(H), DH -> 
                 ForAll( DefiningCongruenceSubgroups(G), DG -> 
                         IsSubset(G,DH) ) ) then
        return true;
      else
        TryNextMethod();
      fi;
    elif IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or IsCongruenceSubgroupGammaUpper1(G) or 
         IsCongruenceSubgroupGamma0(G) or IsCongruenceSubgroupGammaUpper0(G) then
      if ForAll( DefiningCongruenceSubgroups(H)
        return true;
      else
        TryNextMethod();
      fi;  
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod(;
    fi;  
    end);    
    
    
#############################################################################
##
## Intersection2
##
#############################################################################


InstallMethod( Intersection2,
    f   of congruencesubgroups",
    [ IsCongruenceSubgroup, IsCongruenceSubgroup ],
    0      r: n;
    function( G, H )
    #
    # Case 1 - at least one subgroup is an intersection of congruence subgroupsr : r(1+p);
    #
    ifAssert 1 IndexInPSL2ZByFareySymbol(  (H) )=r ;
       java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 15
      return IntersectionOfCongruenceSubgroups(G,H);
    #
    # Case 2 - the diagonal (both subgroups has the same type)
    # 
    elif IsPrincipalCongruenceSubgroup(G) and IsPrincipalCongruenceSubgroup(H) then
      return PrincipalCongruenceSubgroup( Lcm( LevelOfCongruenceSubgroup(G),
                                               LevelOfCongruenceSubgroup(H) ) );
    elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma1(H) then
      return CongruenceSubgroupGamma1( Lcm( LevelOfCongruenceSubgroup(G),
                          LevelOfCongruenceSubgroup(H) ) );
    elif IsCongruenceSubgroupGammaUpper1# [ CongruenceSubgroupGamma0(n) : CongruenceSubgroupGamma1(n) ] = n * "Product over prime p | n" ( 1 - 1/p )
      return CongruenceSubgroupGammaUpper1(Lcm LevelOfCongruenceSubgroup()java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
                          LevelOfCongruenceSubgroup(H) ) );
    elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma0(H) then
      return CongruenceSubgroupGamma0( Lcm( LevelOfCongruenceSubgroup(G),
                          LevelOfCongruenceSubgroup(H) ) );
    elif IsCongruenceSubgroupGammaUpper0(G) and IsCongruenceSubgroupGammaUpper0(H) then
      return CongruenceSubgroupGammaUpper0( Lcm( LevelOfCongruenceSubgroup(G),
                          LevelOfCongruenceSubgroup(H) ) );
    #
   # Case 3 - Subgroups has different level
    #
    od
      return       Assert( 1IndexInPSL2ZByFareySymbol(FareySymbol (H  )=r ;
    #
    # Now subgroups have the same level
    #
    elif IsCongruenceSubgroupGamma1(G) # if H is not in any of the cases above
      return G  so all properties and attributes of G will be preserved
    IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma1(H) then
      return H; 
     (G  IsCongruenceSubgroupGammaUpper0(H)then
      return G;
     return (  (H))* ;
      return H;
    elif IsCongruenceSubgroupGamma0fi;java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
      return IntersectionOfCongruenceSubgroups(G,H);
    else
      return PrincipalCongruenceSubgroupI( IndexInSL2Z,
                                           
    end);
    

#############################################################################
InstallMethod( Index,
## Indices of congruence subgroups
##
#############################################################################

    
    function(G,  )
     SL_2()and a  ",
    [ IsNaturalSL      return IndexInSL2Z(/G;
    0,
    function(G H )
    local n, prdiv, r, java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 9
    n := LevelOfCongruenceSubgroup(#############################################################################
    if HasIsPrincipalCongruenceSubgroup( H ) and 
       IsPrincipalCongruenceSubgroup
      if n=1 then
        Assert( 1, java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
        return 1
      elif =2 then
        java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 3
        return 12; # not 6, since we are in SL, not in PSL
      else
        prdiv := Set( Factors( n ) );
        r := n^3; # not (n^3)/2 since we are in SL, not in PSL
        for p in prdiv do
          r := r*(1-1/p^2);
        od;
        Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r/2 );
        return r;
      fi;
    elif ( HasIsCongruenceSubgroupGamma0( H ) and IsCongruenceSubgroupGamma0( H ) ) or 
         ( HasIsCongruenceSubgroupGammaUpper0( H ) and IsCongruenceSubgroupGammaUpper0( H ) ) then
      # for CongruenceSubgroupGamma0 we use the formula
      # [ SL_2(Z) : CongruenceSubgroupGamma0(n) ] = n * "Product over prime p | n" ( 1 + 1/p )
      prdiv := Set( Factors( n ) );
      r := n; 
      for p in prdiv do
        r := r*(1+1/p);
      od;
      Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r );
      return r;
    elif ( HasIsCongruenceSubgroupGamma1( H ) and IsCongruenceSubgroupGamma1( H ) ) or 
         ( HasIsCongruenceSubgroupGammaUpper1( H ) and IsCongruenceSubgroupGammaUpper1( H ) ) then 
      # for CongruenceSubgroupGamma1 we use the formula
      # [ CongruenceSubgroupGamma0(n) : CongruenceSubgroupGamma1(n) ] = n * "Product over prime p | n" ( 1 - 1/p )
      # Combining with the previous case, we get that
      # [ SL_2(Z) : CongruenceSubgroupGamma1(n) ] = n^2 * "Product over prime p | n" ( 1 - 1/p^2 )
      prdiv := Set( Factors( n ) );
      r := n^2;
      for p in prdiv do
        r := r*(1-1/p^2);
      od;
      Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) = r/2 );
      return r;
    else
      # if H is not in any of the cases above, for example is an intersection
      # of some congruence subgroups, we derive the index from its Farey symbol
      if [[-1,0],[0,-1]] in H then
        return IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) ;
      else
        return IndexInPSL2ZByFareySymbol( FareySymbol ( H ) ) * 2;
      fi;  
    fi;  
    end);    
    

InstallMethod( IndexInSL2Z,
    "for a congruence subgroup",
    [ IsCongruenceSubgroup ],
    0,
    G -> Index( SL(2,Integers), G ) );
    

InstallMethod( Index,
    "for a pair of congruence subgroups",
    [ IsCongruenceSubgroup, IsCongruenceSubgroup ],
    0,
    function( G, H )
    if IsSubgroup( G, H ) then
      return IndexInSL2Z(H)/IndexInSL2Z(G);
    fi;  
    end);

    
#############################################################################
##
## Generators of confruence subgroups from Farey symbols
##
#############################################################################


InstallMethod( GeneratorsOfGroup,
 "for a congruence subgroup",
 [ IsCongruenceSubgroup ],
 0,
 function(G)
 local gens, i;
 Info( InfoCongruence, 1, "Using the Congruence package for GeneratorsOfGroup ...");
 gens := GeneratorsByFareySymbol( FareySymbol( G ) );
 for i in [ 1 .. Length(gens) ] do
   if not gens[i] in G then
     gens[i] := -gens[i];
     Assert( 1, gens[i] in G );
   fi;
 od;
 return gens;
 end );
 
 
#############################################################################
##
#E
##

Messung V0.5 in Prozent
C=93 H=92 G=92

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.258Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=14436
#Domains=6417