-------------------------------- CONGRUENCE SUBGROUPS OF PSL(2,Z) -------------------------------- (c) by C Cummins and S Pauli OVERVIEW OF THE MAGMA FUNCTIONS ------------------------------- The files pre.m, csg.m, func.m, table.m, and html.m contain the functions we used to compute the tables of congruence subgroups. The congruence subgroups ar represented by a record of type CongSubGrp. In the parameters of the functions described below G and H denote congruence subgroups and L denotes a list of congruence subgroups. The names of functions (and procedures) that take a group (or two) as parameters start with csg, the names of those that take a list L of groups as a parameter start with csg_list. Note that although the groups are represented as subgroups of SL(2,Z) and SL(2,Z/mZ), some of the functions only give correct results if the subgroups are regarded as subgroups of PSL(2,Z). ----------------------------------------------------------------------------- Let S and T denote the following matrices: S = [[0,1],[-1,0]] T = [[1,1],[0,1]] A congruence subgroup G of PSL(2,Z) is represented by the following record: CongSubGrp := recformat ; ----------------------------------------------------------------------------- ----- pre.m ----- We precompute permutation representations of the groups PSL(2,Z/mZ) and GL(2,Z/mZ), which are needed frequently in other computations. The global variable MAXGENUS determines how many groups should be precomputed. ----- csg.m ----- Here you find the functions for computing a raw list of congruence subgroups, that contains only the index, genus, and level of the group and its generators. Important functions are: csg(maxgenus) ------------- Returns all congruence subgroups of PSL(2,Z). csg_perm_group(G) ----------------- returns G as a subgroup of SL(2,Z/mZ) in permutation representation, where m is the level of G. ------ func.m ------ The functions that compute other invariants of a congruence subgroup are in func.m. csg_compare(G,H) ---------------- compares two congruence subgroups. It gives the ordering used in the tables, for which it is used combined with Sort: Sort(L,csg_compare). csg_is_subgroup(g,h) -------------------- returns true if g is a subgroup of h, false otherwise csg_matrix_generators(G) ------------------------ returns the generators of G as a subgroups of PSL(2,Z/mZ), where m is the level of G, as matrices. csg_c3(G) csg_c2(G) --------- return the lengths of the orbits of S and S*T in the coset represenation. number_of_fixed_points(list) ---------------------------- returns the number of fixed points of order 2 or 3 when called with the output of csg_c3(G) or csg_c2(G) respectively. csg_length(G) ------------- computes the number of conjugates of G in PSL(2,Z). csg_GLZ_conj(G) --------------- returns the GL(2,Z) conjugate of G. csg_galois_conjugates(G) ------------------------ returns the value for the record entry gc, see the explanation of the record above. ------- table.m ------- Most functions in this file take a list L of groups as a parameter. csg_list_by_genus(L,g) ---------------------- returns all groups in L with genus g. csg_list_by_index(L,n) ---------------------- returns all groups in L with index n. csg_list_by_level(L,l) ---------------------- returns all groups in L with level m. csg_list_with_special_name(L) ----------------------------- returns all groups in L that have a special name. csg_list_by_name(L,s) ------------------------ returns the group with name s, where s is a string of the form (level)(label)(genus) as used in the tables. csg_list_tree_to_subgroups(~L) ------------------------------ uses the information form treename and treesupergroups to obtain the complete super/subgroupstructure. The entries supergroups and subgroups do NOT contain all super/subgroups of the groups. They include enough information to conpute the direct supergroups. csg_list_direct_subgroups(~L) ----------------------------- adds lists of direct to the groups in the list L. csg_list_sort(~L) ----------------- sorts the list L, using the criteria from csg_compare. csg_list_label(L) ----------------- returns a new list, which includes the group names of the form (level)(label)(genus) as used in the tables. csg_list_complete_data(~L) -------------------------- sets the number of PSL(2,Z) conjugates, the cusp width, the numbers of classes of elements of order 2 and 3, the matrix generators and the galois conjugates. csg_list_special_names(~L) -------------------------- adds special names to some of the groups in L; the special names are added in TeX and HTML formats. csg_list_fill(~L) ----------------- sets the entries for GL(2,Z/mZ) conjugates (and removes the GL(2,Z/mZ) conjugates from L), calls csg_list_complete_data(~L), sets the names and special names, sorts the list of groups and adds the super/subgroup structure. ------ html.m ------ csg_list_to_html(L) ------------------- Converts a list of groups into nice html format. Before running it a second time you should remove the html files (they are called csgN.html, where N is the genus of the groups in the list) output by this function. Otherwise the new code will be appended to the files output previously. -------------------------------------------------------------------------