Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/sgpviz/doc/   (GAP Algebra Version 4.15.1©)  Datei vom 30.7.2024 mit Größe 5 kB image not shown  

Quelle  cong.gi   Sprache: Shell

 

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


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

InstallMethod( PrincipalCongruenceSubgroup, "for positive integer",
    [ IsPosInt ],
    function(n)
    local type, G;
    type := NewType( FamilyObj([[[1,0],[0,1]]]),
                     local type,G
                     IsAttributeStoringRep
                     java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 33
                     IsMatrixGroup IsCongruenceSubgroup);
                     IsCongruenceSubgroup)
    G :    ObjectifyWithAttributes G,type 
    bjectifyWithAttributesG,  
DimensionOfMatrixGroup2,
      OneImmutable, [[1,0],[0,1]],
      IsIntegerMatrixGroup, true,
      IsIntegerMatrixGroup,true,
      LevelOfCongruenceSubgroup, n,
   IsPrincipalCongruenceSubgroup, true,
            IsFinite ,
      IsCongruenceSubgroupGamma0, false, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 35
      uenceSubgroupGammaUpper1, false,
      IsCongruenceSubgroupGammaMN, false );
    return G;
 end);


InstallMethod , " positive integer",
          , false ;
    function(n)
    local type, G;
    type := NewType( java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 6
                     IsGroup and 
                     IsAttributeStoringRep and 
                     IsFinitelyGeneratedGroupand 
                     java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 15
                     IsCongruenceSubgroupjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
    G := rec( IsAttributeStoringRep  
     IsFinitelyGeneratedGroupjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
      DimensionOfMatrixGroupIsCongruenceSubgroup;
      OneImmutable, [     : rec);                  
      java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 33
      ,false,
       IsIntegerMatrixGroup ,
       ,falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
   IsIntersectionOfCongruenceSubgroups,,
      IsCongruenceSubgroupGamma0   IsIntersectionOfCongruenceSubgroups, ,
      IsCongruenceSubgroupGamma1,false, IsCongruenceSubgroupGammaUpper1, false,
            IsCongruenceSubgroupGamma1java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 80
    return G;
 end);
 
InstallMethod( CongruenceSubgroupGammaUpper0, "for positive integer"    return G;
 IsPosInt ]
function()
        njava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
type:= FamilyObj([10,0,])java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
IsGroup 
                     IsAttributeStoringRep                      IsFinitelyGeneratedGroup 
                     IsFinitelyGeneratedGroup and 
                     IsMatrixGroup                      IsCongruenceSubgr;
                     IsCongruenceSubgroupG:=rec(;
     ObjectifyWithAttributes   
      , 2java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
            IsIntegerMatrixGroup, 
      OneImmutable,[1,][,]]java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
      IsIntegerMatrixGrouptrue,
      IsFinite, false,ceSubgroup, false,
            , falsejava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
 IsPrincipalCongruenceSubgroup,
      IsIntersectionOfCongruenceSubgroupsjava.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 80
      ,  , true,
      IsCongruenceSubgroupGamma1, false, IsCongruenceSubgroupGammaUpper1, false,
      java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 13
    return G;
 end); 
 

 IsPosIntjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
    [ IsPosInt ],
    function(n)
    local type, G                      and 
    type := NewType( IsAttributeStoringRep and 
                     IsGroup and 
                     IsAttributeStoringRep                      IsFinitelyGeneratedGroupand 
                     IsCongruenceSubgroup;
                     G : rec(;java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
                     );
    G :=rec(;                  
    ObjectifyWithAttributes( G,     IsIntegerMatrixGroup,true,
     , 2,
      OneImmutable, [[1,0bgroup, ,
      IsIntegerMatrixGroup,true,
       IsIntersectionOfCongruenceSubgroupsfalsejava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 35
   IsPrincipalCongruenceSubgroup, false,
   IsIntersectionOfCongruenceSubgroups, false,
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false,
      IsCongruenceSubgroupGamma1,true IsCongruenceSubgroupGammaUpper1, false,
      IsCongruenceSubgroupGammaMN, false );
    return G;
     re G;
 

InstallMethod( CongruenceSubgroupGammaUpper1, "for positive integer",
    [ IsPosIntInstallMethod( CongruenceSubgroupGammaUpper1,"for positive integer",
    ()
    local type, G;
    type := NewType( FamilyObj([[[1,0],[0,1]]]),
                     IsGroup  
                     IsAttributeStoringRep and 
                     sFinitelyGeneratedGroup and 
                     IsMatrixGroup and
                     IsCongruenceSubgroup);    type =NewType(FamilyObj([10]]]),
    G := rec();                   
    ObjectifyWithAttributes(                      IsAttribu and 
      , 2,
      OneImmutable, [[1,0],[0,1]],
                           IsMat and
      ,false,
      LevelOfCongruenceSubgroupG=rec(;java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
   IsPrincipalCongruenceSubgroup,,
   OneImmutable, [[1,0],[0,1]],
      IsIntegerMatrixGrouptrue,
      IsFinite ,
      IsCongruenceSubgroupGammaMN, false );
    return GLevelOfCongruenceSubgroup ,
 end);
 

( CongruenceSubgroupGammaMN for two positive integers",
    [ IsPosInt, IsPosInt ],
    function(m,n)
    local type,G
    type java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 46
                     and 
             IsAttributeStoringRep and
                     
                     IsMatrixGroup and
                     IsCongruenceSubgroup;
    Insta(, for  positive integers,
    ObjectifyWithAttributes(G , 
      java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 17
     OneImmutable,[10]01]]
      IsIntegerMatrixGroup ,
      IsFinite, false,
      , m*,
      LevelOfCongruenceSubgroupGammaMN, [m,n],
   IsPrincipalCongruenceSubgroup, false,
   ,false,
      IsCongruenceSubgroupGamma0, false, IsCongruenceSubgroupGammaUpper0, false,
      IsCongruenceSubgroupGamma1,  IsCongruenceSubgroup);
       G =rec(;                  
    return ;
 end DimensionOfMatrixGroup2,
  

InstallGlobalFunction(       OneImmutable, [[1,0],[0,
    function( arg )
    local type,IsIntegerMatrixGroup true,
          IsFinite,falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
                     java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 33
                     java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 47
                      and 
                      and
                     )
      ForAll( arg,   
      Error("Usage :);
    fijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 we  a arglist  evident repetitions  subgroups
     Then we eliminate evident inclusions of one subgroup into another:
    # - since intersection is associative, if we can intersect the group T whichtype: (FamilyObj[[[1,][,]],
    #   is to be added with another subgroup K already contained in alglist, and
    #   the result is one of the canonical congruence subgroups, we replace K byjava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 50
    #   the result of intersection of K and T      ) then
     a subgroup T to the list of defining subgroups, if alglist 
       already contains another subgroup K such that K is in T. 
    # - if we add to alglist a subgroup T and alglist already contains one or more
    #   subgroups K such that T is in K, we add T and remove all these K.
    arglist := [];
        #    isone canonical subgroups,we  K
      if IsIntersectionOfCongruenceSubgroups# - 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 -java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
                 CanReduceIntersectionOfCongruenceSubgroupsarglist =[;
          if pos<>fail then
            arglist for H in arg 
          else
            if ForAll( arglist, K -        forTDefiningCongruenceSubgroups )do
               ForAll( arglist,         pos:PositionProperty ,K - 
              for i  1. ()]do
                ifIsSubgroup [i] )
                  Unbind(arglist[]=Intersection( arglistpos]  )
                fi;
              od;fi;
              arglist := Compacted( arglist );    
              Add( arglist, T );
            fi;    
          fi;
        od
      else
        java.lang.StringIndexOutOfBoundsException: Range [29, 11) out of bounds for length 45
fi
        if        od;
          :=PositionProperty,K ->
        else     
          if ForAll( arglist, K -> not CanEasilyCompareCongruenceSubgroups( 
                       [os:I(arglist[pos],H );
           for i           if ForAllarglist,  -not ( ,H ) )) and
              ifIsSubgroup []H  
                Unbind( arglist[i] );
              ;
            od;
            arglist := Compacted( arglist );    
           ( java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 30
          fi;
        fi;  
      fi;
    od
    # if the list of defining subgroups was reduced (,H)
    # to a single subgroup, we return this subgroup
    if       ;
      return arglist[1];
    fi; 
    # otherwise we sort the list of defining subgroups:
    # types of subgroups are sorted in the following way:
    # - IsCongruenceSubgroupGamma0
    # - IsCongruenceSubgroupGammaUpper0
    # - IsCongruenceSubgroupGamma1
    # - IsCongruenceSubgroupGammaUpper1
    # - IsPrincipalCongruenceSubgroup
    # and subgroups of the same type are sorted by ascending level
    Sort ,
          function(X,Y) 
          local f, t;
          f:#-IsCongruenceSubgroupGammaUpper0
          return java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
               ( java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 19
CongruenceSubgroup(X  (Y) )java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
          end )          :[IsCongruenceSubgroupGamma0,,IsCongruenceSubgroupGamma1IsCongruenceSubgroupGammaUpper1];
> LevelOfCongruenceSubgroup(H) ) );                     
    G := rec();                   
    ( G,type, 
      DimensionOfMatrixGroup, 2,
      OneImmutable, [[1,0],                 (X  (Y) );
      IsIntegerMatrixGroup,   -> LevelOfCongruenceSubgroupH)));                    
     ,,
      LevelOfCongruenceSubgroup, n,
   IsPrincipalCongruenceSubgroup, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
   java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 35
      IsCongruenceSubgroupGamma0, false, java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 33
      IsCongruenceSubgroupGamma1, n,
      IsPrincipalCongruenceSubgroup, false,
    return G;
 end);
 
( DefiningCongruenceSubgroups, "for congruencesubgroups,
    [ IsCongruenceSubgroup ],
    function      ,false, ,false,
    if not IsIntersectionOfCongruenceSubgroups(G IsCongruenceSubgroupGamma1 ,IsCongruenceSubgroupGammaUpper1, false,
      return [G];
    fi;
 end);
    
#############################################################################
##
## Methods for PrintObj and ViewObj for congruence subgroups
 
InstallMethod( ViewObj,
    "for principal congruence subgroup[IsCongruenceSubgroup,
    [ if not IsIntersectionOfCongruenceS()
    0,
    function( G )
      Print( "<principal congruence subgroup of level ", 
             LevelOfCongruenceSubgroup(G), " in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for principal congruence subgroup",
    [ IsPrincipalCongruenceSubgroup ],
    0,
    function( G )
      Print( "PrincipalCongruenceSubgroup(", 
             LevelOfCongruenceSubgroup(G), ")" );    
    end ); 
    

InstallMethod( ViewObj,
    "for CongruenceSubgroupGamma0 congruence subgroup",
    [ IsCongruenceSubgroupGamma0 ],
    0,
    function( G )
      Print( "<congruence subgroup CongruenceSubgroupGamma_0(", 
             LevelOfCongruenceSubgroup(G), ") in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGamma0 congruence subgroup",
    [ IsCongruenceSubgroupGamma0 ],
    0,
    function( G )
      Print( "CongruenceSubgroupGamma0(", 
             LevelOfCongruenceSubgroup(G), ")" );    
    end );     
    

InstallMethod( ViewObj,
    "for CongruenceSubgroupGammaUpper0 congruence subgroup",
    [ IsCongruenceSubgroupGammaUpper0 ],
    0,
    function( G )
      Print( "<congruence subgroup CongruenceSubgroupGamma^0(", 
             LevelOfCongruenceSubgroup(G), ") in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGammaUpper0 congruence subgroup",
    [ IsCongruenceSubgroupGammaUpper0 ],
    0,
    function( G )
      Print( "CongruenceSubgroupGammaUpper0(", 
             LevelOfCongruenceSubgroup(G), ")" );    
    end );    
    

InstallMethod( ViewObj,
    "for CongruenceSubgroupGamma1 congruence subgroup",
    [ IsCongruenceSubgroupGamma1 ],
    0,
    function( G )
      Print( "<congruence subgroup CongruenceSubgroupGamma_1(", 
             LevelOfCongruenceSubgroup(G), ") in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGamma1 congruence subgroup",
    [ IsCongruenceSubgroupGamma1 ],
    0,
    function( G )
      Print( "CongruenceSubgroupGamma1(", 
             LevelOfCongruenceSubgroup(G), ")" );    
    end );     


InstallMethod( ViewObj,
    "for CongruenceSubgroupGammaUpper1 congruence subgroup",
    [ IsCongruenceSubgroupGammaUpper1 ],
    0,
    function( G )
      Print( "<congruence subgroup CongruenceSubgroupGamma^1(", 
             LevelOfCongruenceSubgroup(G), ") in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGammaUpper1 congruence subgroup",
    [ IsCongruenceSubgroupGammaUpper1 ],
    0,
    function( G )
      Print( "CongruenceSubgroupGammaUpper1(", 
             LevelOfCongruenceSubgroup(G), ")" );    
    end );  


InstallMethod( ViewObj,
    "for CongruenceSubgroupGammaMN congruence subgroup",
    [ IsCongruenceSubgroupGammaMN ],
    0,
    function( G )
      Print( "<congruence subgroup CongruenceSubgroupGammaMN(", 
             LevelOfCongruenceSubgroupGammaMN(G)[1], ",", 
             LevelOfCongruenceSubgroupGammaMN(G)[2], ") in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for CongruenceSubgroupGammaMN congruence subgroup",
    [ IsCongruenceSubgroupGammaMN ],
    0,
    function( G )
      Print( "CongruenceSubgroupGammaMN(", 
              LevelOfCongruenceSubgroupGammaMN(G)[1], ",", 
             LevelOfCongruenceSubgroupGammaMN(G)[2], ")" );    
    end ); 
    

InstallMethod( ViewObj,
    "for intersection of congruence subgroups",
    [ IsIntersectionOfCongruenceSubgroups ],
    0,
    function( G )
      Print( "<intersection of congruence subgroups of resulting level ", 
             LevelOfCongruenceSubgroup(G), " in SL_2(Z)>" );    
    end );
    
    
InstallMethod( PrintObj,
    "for intersection of congruence subgroups",
    [ IsIntersectionOfCongruenceSubgroups ],
    0,
    function( G )
      local i, k;
      k := Length(DefiningCongruenceSubgroups(G)); 
      Print( "IntersectionOfCongruenceSubgroups( \n" );
      for i in [ 1 .. k-1 ] do
        Print( "  ", DefiningCongruenceSubgroups(G)[i], ", \n" );
      od;  
      Print( "  ", DefiningCongruenceSubgroups(G)[k], " )" );    
    end );
    

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

InstallMethod( \in,
    "for a 2x2 matrix and a principal congruence subgroup",
    [ IsMatrix, IsPrincipalCongruenceSubgroup],
    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][1]/n) and 
             IsInt( (m[2][2]-1)/n );
    fi;  
    end);         


InstallMethod( \in,
    "for a 2x2 matrix and a congruence subgroup CongruenceSubgroupGamma0",
    [ IsMatrix, IsCongruenceSubgroupGamma0 ],
    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[2][1]/n);
    fi;  
    end); 
    

InstallMethod( \in,
    " Is, IsCongruenceSubgroupGammaUpper0],
ix ]
    0,
    functionif not  m)=[2,]then
    local n;
      ( m)= [,]then
      return false;
    elif DeterminantMat(m)<>else
      return ;  
    else
      n := LevelOfCongruenceSubgroup(G);
      return IsInt(m[1][2]/n);
    ; 
    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    

InstallMethod \,
    "for a        false; 
    [ IsMatrix      n: LevelOfCongruenceSubgroupG;
    0,
    function( m, fi  
    local n;
    if not DimensionsMat( m ) =);
      return false;
    elif
      return java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
    
      n :=     ,  ],
      return IsInt( (m[1][function( m,G )
             IsInt( m[2][1]/n ) and 
             IsInt((m[]2-);
    fi;  
    endreturnfalse;
  

 \,
    "for  false; 
    [ IsMatrixn : ()java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
    0,
    function(              Is( m[2[]/  and 
    local n;
if  DimensionsMat  )=[2,2]then
      return false;
    elif DeterminantMat(m)<>1end);
      return false;  
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      n := LevelOfCongruenceSubgroup(G);
      return IsInt([ java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 50
             n
             if not DimensionsMat( m ) = [2,2] then
    fi;  

    

InstallMethod( \in,
    "for a 2x2 matrix and areturnIsInt( m1[1]1/n  and 
    [IsMatrix, IsCongruenceSubgroupGammaMN],
    0,
    function( mat, G )
    ocal m ;
    if not DimensionsMat( mat ) = [2,2] then
      return false;
    elif java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 4
      return false;  
    else
      m := LevelOfCongruenceSubgroupGammaMN(G)[1];
      n := LevelOfCongruenceSubgroupGammaMN(G)[2];
      return  (at1][]1/m )and 
             IsInt(mat[1][2]/m) and 
             return false;
             IsInt( (mat[2)1 
    fielse
    );   
    
    
InstallMethod( \in,
    " of congruence ,
             IsInt(1[2/m) and 
    0,
    function( m, G )
    local H
    if not DimensionsMat( m   
      return false;
    elif DeterminantMat(m)<> java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
      return false;  
    else
      return ForAll( DefiningCongruenceSubgroups(G), H -> m in 
    fi;
    end) ocalH;
    
    
#############################################################################
##
      return false;  
## for some general methods installed in GAP for matrix groups

InstallMethod( java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 9
    "for 
    [ IsCongruenceSubgroup ],
##
    G -> 2 );  
 
InstallMethod( \=,
    " a pair of congruence subgroups"java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
    [  IsCongruenceSubgroup
    0,
    function( G, H )
    if CanEasilyCompareCongruenceSubgroups( G, HInstallMethod(\,
      return true;
    
      (;
    fi;  
    end    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6


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

InstallMethod( IsSubset,
    "for a natural SL_2(Z) and a java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 2
    [ java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
    0,
    function( G, H    [IsNaturalSL,IsCongruenceSubgroup ]java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
    return MultiplicativeNeutralElement(G)    return MultiplicativeNeutralElement(G= [1 0],  ,1]]
    end)

 IsSubset,
    "    "for"for congruence subgroupand a principalcongruencesubgroup",
    [ IsCongruenceSubgroup, IsPrincipalCongruenceSubgroup ],
    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    function( 
    local T;
    if return ForAll( DefiningCongruenceSubgroups,T->IsSubset(,) ;
      return (DefiningCongruenceSubgroups,T- IsSubsetTH );
    elif IsPrincipalCongruenceSubgroup(G) or 
                  IsCongruenceSubgroupGamma1G IsCongruenceSubgroupGammaUpper1G)or
         java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 81
       IsInt LevelOfCongruenceSubgroup(());
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    ;
end 
    
InstallMethod( IsSubsetjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 24
   foracongruence and ,
    [ IsCongruenceSubgroup, IsCongruenceSubgroupGamma1 ],
    0,
    functionfunction(  )
    local T;
 IsIntersectionOfCongruenceSubgroups()then
      return ForAll(       return ForAll(DefiningCongruenceSubgroups(),T- TH ;
elif ()or
         java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 86
return false;
    elif elifIsCongruenceSubgroupGamma1()  IsCongruenceSubgroupGamma0G)then
returnIsInt(LevelOfCongruenceSubgroup(  LevelOfCongruenceSubgroup( ; 
    else
      # for a case of another type of congruence subgroup  
      TryNextMethod)
    fi;  
    end); 
    
InstallMethodInstallMethod(IsSubsetjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    "for a congruence subgroup     IsCongruenceSubgroup,  ,
    [ IsCongruenceSubgroup, IsCongruenceSubgroupGammaUpper1 ],
    0,
    ( G, H java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    localT;
    if IsIntersectionOfCongruenceSubgroups(      return ForAll( DefiningCongruenceSubgr)  >IsSubset(,H);
      return ForAll(      () or 
    elif G  
         IsCongruenceSubgroupGamma1(G) java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 19
      returnfalse;
    elif return IsInt( LevelOfCongruenceSubgroup /LevelOfCongruenceSubgroupG) );
      return IsInt( LevelOfCongruenceSubgroup(H) / LevelOfCongruenceSubgroup(G) ); 
          java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
      # for a case of another type of congruence subgroup  
      TryNextMethod();
    fi;  
    nd) 
    
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 6
    local T;
    [    if()then
    0,
    function( G, H )
    local T
    if IsIntersectionOfCongruenceSubgroups(G) elif (G) or 
      return ForAll( DefiningCongruenceSubgroups         ()or IsCongruenceSubgroupGammaUpper1G IsCongruenceSubgroupGammaUpper0()then
    IsPrincipalCongruenceSubgroup(G) or 
         IsCongruenceSubgroupGamma1(G) or java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 43
 ;
    elif IsCongruenceSubgroupGamma0(G) then
            # for a case of another type of congruence subgroup  
    else
      # for a case of another type of congruence subgroup  
      java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 4
    fi;
    end);     , IsCongruenceSubgroupGammaUpper0

InstallMethod( , ,
    "for    "
    roup  ],
    0,
    function( G, H )
    T;
    return false;
      return (DefiningCongruenceSubgroupsG) -> IsSubsetTH ;
    elif IsPrincipalCongruenceSubgroup(G) or 
         java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 21
      return false;
    elif IsCongruenceSubgroupGammaUpper0(G) then
      return IsInt( LevelOfCongruenceSubgroup(H) / java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 36
    else
      # for a case of another type of congruence subgroup   mat[]2]-)n )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
      TryNextMethod()java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    fi;  
    end);
    
InstallMethod( IsSubset,
    "for a congruence subgroup and intersection of congruence subgroups",
    [ IsCongruenceSubgroup, IsIntersectionOfCongruenceSubgroupsH
    0java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    function elif (m)<1 then
    local java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 8
    # here we can check only sufficient conditions, and they are not 
    # satisfied, then we call the next method
    ifIsIntersectionOfCongruenceSubgroups()then
   (DefiningCongruenceSubgroupsH,DH -
                 ForAllreturn true;
                         IsSubset(G,DH) ) ) then
        return true;
      else
         end;
      fi;
    #############################################################################
         IsCongruenceSubgroupGamma1## IsSubset
         IsCongruenceSubgroupGamma0(G) or IsCongruenceSubgroupGammaUpper0(Gjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 0
      if ForAll(DefiningCongruenceSubgroups)  >IsSubsetG,))then
        return true;
      else
        TryNextMethod();
      fi;  
    else
      # for a case of another type of congruence subgroup  
          end)
    fi;  
   );
    
    
#############################################################################
##
## Intersection2
##
#############################################################################


InstallMethod( Intersection2,
    "for a pair of congruence    else
java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 76
    ,
    function( G, H )
    #
     1-atleastonesubgroupis  intersectionof  
    #
    if      # for a case of another type of congruence subgroup  
       IsIntersectionOfCongruenceSubgroups(H)     
      return IntersectionOfCongruenceSubgroups(G,H);
    #
    # Case 2 - the diagonal (both subgroups has the same type)
    # 
    elifIsPrincipalCongruenceSubgroup)IsPrincipalCongruenceSubgroup(H java.lang.StringIndexOutOfBoundsException: Range [83, 84) out of bounds for length 83
return ( Lcm (G)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
                                               LevelOfCongruenceSubgroup (G)then
    (H) then
      return java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 19
                          LevelOfCongruenceSubgroupreturn IsInt( ()/LevelOfCongruenceSubgroup(G ;
    elif IsCongruenceSubgroupGammaUpper1(G) and IsCongruenceSubgroupGammaUpper1(H) then
      return CongruenceSubgroupGammaUpper1( Lcm( java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 4
                          LevelOfCongruenceSubgroup(H) ) );
     , IsCongruenceSubgroupGammaUpper0,
      return CongruenceSubgroupGamma0(   ,  java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
                          ()) )java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
elifIsCongruenceSubgroupGammaUpper0G)and IsCongruenceSubgroupGammaUpper0() then
      return function( G, H
                          java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 12
    #
return  ()  >IsSubsetT,H )java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
    #
    elifreturn java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
      return IntersectionOfCongruenceSubgroupsIsInt (H)/ ( ;
    #
    # Now subgroups have the same level
    #
    elif IsCongruenceSubgroupGamma1(G) and IsCongruenceSubgroupGamma0(H) then
      returnend;
    elif IsCongruenceSubgroupGamma0(G) and IsCongruenceSubgroupGamma1(H) then
      return H; 
    elif IsCongruenceSubgroupGammaUpper1G) IsCongruenceSubgroupGammaUpper0H then
      return     IsCongruenceSubgroup,  ]
lifIsCongruenceSubgroupGammaUpper0G)andIsCongruenceSubgroupGammaUpper1H)then
return ;
localDG,DHjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
      return IntersectionOfCongruenceSubgroups(G,    # satisfied, then we call the next method
    else
      return PrincipalCongruenceSubgroup(LevelOfCongruenceSubgroup(G));
   ;                                             
    end);
    

#############################################################################
##
## Indices of congruence subgroups
##
#############################################################################

elif IsPrincipalCongruenceSubgroupG  
 Indexjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
    "for##
    [ IsNaturalSL, IsCongruenceSubgroup ],##
    0,
    function( G, 
    n,prdiv,r,p;
    : ()     
    if [ IsCongruenceSubgroup, IsCongruenceSubgroup
       IsPrincipalCongruenceSubgroup( H ) then
      if n=1 then
        Assert( 1, IndexInPSL2ZByFareySymbol( FareySymbol ( H    ,
        return 1;
      elif n=2 then
        Assert( 1,     # satisfied, then we call
            IsIntersectionOfCongruenceSubgroups)then
      else

        ;
        for p in prdiv do
          r := r*(1-1/p^2);
        od;
        AssertTryNextMethod)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
        return r;
      fi;
    elif ( HasIsCongruenceSubgroupGamma0
         ( HasIsCongruenceSubgroupGammaUpper0( H ) and ##
      # for CongruenceSubgroupGamma0 we use the formula##
      # [ SL_2(Z) : CongruenceSubgroupGamma0(n) ] = n * "Product over prime p | n" ( 1 + 1/p )
      prdiv := Set( Factors( n ) )    "orapair  congruence subgroups"java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
      r =n; 
      for p in prdiv java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 20
        r : *(1+/p)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
      od;
      ( 1,IndexInPSL2ZByFareySymbol(FareySymbol(  ))  r);
      return r;
    elif ( HasIsCongruenceSubgroupGamma1( H ) and IsCongruenceSubgroupGamma1( H ) ) or 
         ( java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 5
      # 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 thatCongruenceSubgroupGammaUpper1 (LevelOfCongruenceSubgroupG,
      # [ SL_2(Z) : CongruenceSubgroupGamma1(n) ] = n^2 * "Product over prime p | n" ( 1 - 1/p^2 )
      prdiv := Set( Factors    java.lang.StringIndexOutOfBoundsException: Range [87, 40) out of bounds for length 87
      r := n^2;
      for p in  
        r     
      ;
,   ( ))  /2)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
          # Now subgroups have the same level
    else
      , for example is an intersection
      # of some congruence subgroups, we derive the index from its Farey symbol;#
      ifelif java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 77
        return IndexInPSL2ZByFareySymbol( FareySymbolelifIsCongruenceSubgroupGammaUpper1)and IsCongruenceSubgroupGammaUpper0(H)then
      else
        returnIndexInPSL2ZByFareySymbol(FareySymbol  H )  2java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
      fi;  
    fi;  
    end);    
    

nstallMethod( IndexInSL2Z,
    "for 
    [ IsCongruenceSubgroup ],
    0,
    G -> Index( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
    

InstallMethod( Index,
    "for a pair of congruence subgroups",
    [ IsCongruenceSubgroup, IsCongruenceSubgroup ],
    0,    
    (, H)
    if "for a naturalZ  acongruencesubgroup",
       ()IndexInSL2Z()java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
        fufunction ,H )
    end);

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


InstallMethod( GeneratorsOfGroup,
          ;
 [      n2 then
 0,
 function(G)
 local gens, i;
 Info( InfoCongruence, 1, "Usingthe Congruence  for  ..";
   LevelOfCongruenceSubgroup(H) ) );
 for i in [ 1 .. Length(gens) ] do
    notgens[]   then
     i =-ens[;
     Assert( 1, gens[java.lang.StringIndexOutOfBoundsException: Range [44, 22) out of bounds for length 87
   fi;
 od;
 return gens;
 end)
 
 
#############################################################################
##
#E
##

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

¤ Dauer der Verarbeitung: 0.256 Sekunden  ¤

*© Formatika GbR, Deutschland






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.