Magma incorporates functions for computing the Schur index of an ordinary irreducible character over various number fields and local fields. The routines below are all based on the function SchurIndices(x), which computes the Schur Indices of the given character over all the completions of the rationals.
The algorithm is based on calculations with characters, groups and fields, and does not compute representations. The character table methods of S2 and S3 of [Fei83] are used as much as possible to avoid calculations in the group.
The algorithm was devised by Gabi Nebe and Bill Unger, with code written by Bill Unger. The extension to compute a Schur index over a number field was written by Claus Fieker.
The construction of the previous example is used in the following two intrinsics.
The Schur index of the character x over the given field. When no field is given, the Schur index over the rationals is returned. The character x must be a complex irreducible character. The field F must be an absolute number field.
Compute the Schur indices of the character x over the completions of the given field. The character x must be a complex irreducible character. The field F must be an absolute number field. When no field is specified the rational field is assumed. The last form takes the character field, C, and the output from SchurIndices(x), s, as well as a number field. This is sufficient to compute the Schur indices over the number field without repeating group and character computations when a number of fields are being considered for one character.The return value is a sequence of pairs. Each pair gives a completion at which the Schur index is not 1, followed by the Schur index over the complete field. For the rational field, a completion is specified by an integer. The integer zero specifies the archimedean completion (the real numbers), while a prime p specifies the p-adic field Qp. When a number field is given, the completions are specified by a place of the field, an object of type PlcNumElt.
If the character has Schur index 1 over the given field the return value will be an empty sequence. Otherwise, the Schur index over the given field is the least common multiple of the second entries of the tuples returned.
> T := CharacterTable(SmallGroup(8, 3)); > T[5]; ( 2, -2, 0, 0, 0 ) > SchurIndex(T[5]); 1 > SchurIndices(T[5]); []The corresponding character of the quaternion group of order 8 has non-trivial Schur index.
> T := CharacterTable(SmallGroup(8, 4)); > T[5]; ( 2, -2, 0, 0, 0 ) > SchurIndex(T[5]); 2 > SchurIndices(T[5]); [ <0, 2>, <2, 2> ]The Schur index is 2 over the real numbers and Q2. For all odd primes p, the Schur index over Qp is 1. We look at the Schur index of this character over some number fields. First we look at some cyclotomic fields.
> [SchurIndex(T[5], CyclotomicField(n)):n in [3..20]]; [ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1 ] > SchurIndices(T[5], CyclotomicField(7)); [ <Place at Prime Ideal Two element generators: [2, 0, 0, 0, 0, 0] [1, 1, 0, 1, 0, 0], 2>, <Place at Prime Ideal Two element generators: [2, 0, 0, 0, 0, 0] [1, 0, 1, 1, 0, 0], 2> ]The cyclotomic field of order 7 gives Schur index 2. An archimedean completion of this field is necessarily the field of complex numbers, hence no infinite places give Schur index greater than 1. There are now two 2-adic completions which give Schur index 2.
> P<t> := PolynomialRing(Rationals()); > F := ext<Rationals()|t^3-2>; > SchurIndex(T[5], F); 2 > SchurIndices(T[5], F); [ <1st place at infinity, 2>, <Place at Prime Ideal Two element generators: [2, 0, 0] [0, 1, 0], 2> ]For the non-normal field F, one archimedean completion is real, the other complex. Thus the real field features in the output of SchurIndices, along with the 2-adic completion.
The group G is constructed in two stages. The first stage is to construct G as a finitely presented group using the procedure described above. Then the (soluble) fp-group is converted to a group defined by a pc-presentation for further computation. We take n=6, p=7 and a = 3.
> G1 := Group<x, y|x^36, y^7, y^x = y^3>; > G, f := SolubleQuotient(G1, 36*7); > x := f(G1.1); y := f(G1.2); > C := sub<G|x^6,y>; > IsCyclic(C); true > IsNormal(G, C); true > Centralizer(G,C) eq C; true > exists(l){l:l in LinearCharacters(C)|IsFaithful(l)}; true; > c := Induction(l, G); > IsIrreducible(c); true > Degree(c); 6 > CharacterField(c); Cyclotomic Field of order 3 and degree 2 in sparse representation > SchurIndex(c); 6
Prime: RngIntElt Default:
Return a group having a faithful character with Schur index n over the rational field. The construction used is as in the previous example. The parameter Prime may be used to supply the prime p. (The necessary conditions on p are not checked. If these conditions are not met, an error is possible.) If Prime is not set, then the least prime meeting the conditions is used.
Prime: RngIntElt Default:
Return a character with Schur index n over the rational field. The construction used is as in the previous example. The second return value is the group of the character, equal to SchurIndexGroup(n). The parameter Prime is as for SchurIndexGroup.
Procedure that, given a class function x and a Boolean value b, stores with x the information that the value of the predicate IsCharacter(x) equals b.