File: arithVarious.gi

package info (click to toggle)
gap-hap 1.74%2Bds-1
  • links: PTS
  • area: main
  • in suites: sid
  • size: 58,664 kB
  • sloc: xml: 16,678; sh: 197; javascript: 155; makefile: 121; ansic: 47; perl: 24
file content (78 lines) | stat: -rw-r--r-- 2,129 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

##########################################################################
#0
#F  ConjugateSL2ZGroup
##
##  This function will create a conjugation of group SL2Z[1/m]
##  by a matrix P by giving its generator and also set name for that 
##  group of conjugation.
##
##  Input: An Arithmetic group G=SL2Z(1/m) and 
##         a invertible 2x2 matrix P 
##  Output: Conjugation group of G by matrix P 
##             
##
InstallGlobalFunction(ConjugateSL2ZGroup,
function(H,P)
local m,gens,i,j, G,gensG,NameH,p;
    p:=P[2][2];
    if H=SL(2,Integers) then 
        return SL2Z(p);
    fi;
    NameH:=Name(H);
    i:=Position(NameH,'/');
    j:=Position(NameH,']');
    m:=Int(NameH{[i+1..j-1]});

    gens:=GeneratorsOfGroup(SL2Z(1/m));
    gensG:=List(gens,x->P*x*(P^-1));
    G:=Group(gensG);
    SetName(G,Concatenation("SL(2,Z[",String(1/m),"])^",
                                              String(P))  );
    G!.coprimes:=[m,p];
    SetIsHAPRationalMatrixGroup(G,true);
    SetIsHAPRationalSpecialLinearGroup(G,true);

    return G;
end);
################### end of ConjugateSL2ZGroup ############################






##########################################################################
#0
#F  CongruenceSubgroup
##
##  This function will create a congruence subgroup gamma 0 of 
##  the arithmetic group SL2Z[1/m] of level p. It is also
##  set a name and some properties for such a group.
##
##  Input: A pair of positive integers (m,p) 
##         
##  Output: The congruence subgroup of SL2Z(1/m) of level p
##             
##
InstallGlobalFunction(CongruenceSubgroup,
function(m,p)
local H,K,G;
    if m=1 then 
        return CongruenceSubgroupGamma0(p);
    fi;
    H:=SL2Z(1/m);
    K:=ConjugateSL2ZGroup(H,[[1,0],[0,p]]);
    G:=Intersection(H,K);
    SetName(G,Concatenation("CongruenceSubgroup of ",Name(H)," level ",
                                                           String(p)));
    G!.levels:=[m,p];
    SetIsHAPRationalMatrixGroup(G,true);
    SetIsHAPRationalSpecialLinearGroup(G,true);
    return G;
end);
##
################### end of CongruenceSubgroup ############################