Criteria for computing orthogonal discriminants
Direct methods
od_from_atlas_group
— Functionod_from_atlas_group(chi::GAPGroupClassFunction)
Return (flag, val)
where flag
is true
if the function can compute the orthogonal discriminant of chi
. In this case, val
is a string that describes the orthogonal discriminant of chi
.
Otherwise flag
is false
and val
is ""
.
The former case happens if chi
is absolutely irreducible, has even degree and indicator +
, and the Atlas of Group Representations contains a representation affording chi
, over the character field of chi
or (in odd characteristic) a suitable extension field.
If the characteristic of chi
is $2$ then we know no better method than calling orthogonal_sign
. Otherwise we try to find an invertible skew-symmetric endomorphism w.r.t. the invariant bilinear form of the representation, with random methods.
julia> t = character_table("A6");
julia> Oscar.OrthogonalDiscriminants.od_from_atlas_group(t[7])
(true, "-1")
julia> Oscar.OrthogonalDiscriminants.od_from_atlas_group(mod(t, 3)[4])
(true, "O-")
julia> t = character_table("L2(27)");
julia> Oscar.OrthogonalDiscriminants.od_from_atlas_group(t[4])
(false, "")
Character-theoretical criteria
od_from_order
— Functionod_from_order(chi::GAPGroupClassFunction)
Return (flag, val)
where flag
is true
if the order of the group of chi
divides only one of the orders of the two orthogonal groups omega_group
(+/-1, d, q)
, where d
is the degree of chi
and q
is the order of the field of definition of chi
.
In this case, val
is "O+"
or "O-"
.
julia> t = character_table("L3(2)");
julia> Oscar.OrthogonalDiscriminants.od_from_order(mod(t, 3)[4])
(true, "O-")
julia> Oscar.OrthogonalDiscriminants.od_from_order(mod(t, 2)[4])
(false, "")
od_from_eigenvalues
— Functionod_from_eigenvalues(chi::GAPGroupClassFunction)
Return (flag, val)
where flag
is true
if there is a conjugacy class on which representing matrices for chi
have no eigenvalue $\pm 1$. In this case, if chi
is orthogonally stable (this is not checked here) then val
is a string that describes the orthogonal discriminant of chi
.
If flag
is false
then val
is equal to ""
.
This criterion works only if the characteristic of chi
is not $2$, (false, "")
is returned if the characteristic is $2$.
Examples
julia> t = character_table("A5");
julia> Oscar.OrthogonalDiscriminants.od_from_eigenvalues(t[4])
(true, "5")
julia> Oscar.OrthogonalDiscriminants.od_from_eigenvalues(mod(t, 3)[4])
(true, "O-")
julia> Oscar.OrthogonalDiscriminants.od_from_eigenvalues(mod(t, 2)[4])
(false, "")
od_for_specht_module
— Functionod_for_specht_module(chi::GAPGroupClassFunction)
Return (flag, val)
where flag
is true
if chi
is an ordinary irreducible character of a symmetric group or of an alternating group such that chi
extends to the corresponding symmetric group. In this case, if chi
is orthogonally stable (this is not checked here) then val
is a string that describes the orthogonal discriminant of chi
; the discriminant is computed using the Jantzen-Schaper formula, via gram_determinant_specht_module
.
(false, "")
is returned in all cases where this criterion is not applicable.
Examples
julia> t = character_table("A5");
julia> Oscar.OrthogonalDiscriminants.od_for_specht_module(t[4])
(true, "5")
julia> Oscar.OrthogonalDiscriminants.od_for_specht_module(mod(t, 3)[4])
(false, "")
od_from_p_subgroup
— Methodod_from_p_subgroup(chi::GAPGroupClassFunction, p::Int[, pi::GAPGroupClassFunction])
Let chi
be an irreducible (ordinary or Brauer) character of the group $G$, and p
be an odd prime integer.
Return (flag, val)
where flag
is true
if and only if enough information can be computed to prove that the restriction of chi
to a Sylow p
-subgroup $P$ is orthogonally stable. In this case, val
is a string that describes the orthogonal discriminant of chi
.
If flag
is false
then val
is equal to ""
.
If a character is given as the optional argument pi
then it is assumed that pi
is the permutation character of $G$ induced from $P$. Otherwise the function tries to compute the possible permutation characters.
Examples
julia> t = character_table("A5");
julia> Oscar.OrthogonalDiscriminants.od_from_p_subgroup(t[4], 5)
(true, "5")
julia> Oscar.OrthogonalDiscriminants.od_from_p_subgroup(mod(t, 3)[4], 5)
(true, "O-")
julia> Oscar.OrthogonalDiscriminants.od_from_p_subgroup(mod(t, 2)[4], 5)
(true, "O-")