# Access to precomputed OD data

`all_od_infos`

— Function`all_od_infos(L...)`

Return the array of all those entries of the known OD data (see `OD_data`

) that satisfy the conditions in `L`

.

The following conditions are supported.

`is_simple`

with value`true`

or`false`

, meaning entries only for simple or non-simple groups, respectively,`is_sporadic_simple`

with value`true`

or`false`

, meaning entries only for sporadic simple or not sporadic simple groups, respectively,`characteristic`

, with value`0`

or a prime integer, meaning entries only for this characteristic,`character_field`

, with value either a map or a vector of maps, meaning entries only for characters whose character fields (finite fields if the characteristic is positive, and subfields of cyclotomic fields in characteristic zero) have the given map(s) as embeddings into the algebraic closure or abelian closure, respectively,`degree`

, with value a positive integer, meaning entries only for characters whose character field has the given degree over its prime field,`identifier`

, with value a string denoting the name of an Atlas group, or a vector of such strings, meaning entries only for these groups,`dim`

, with value a positive integer, or a vector of such integers, meaning entries only for characters of these degrees,`orthogonal_discriminant`

, with value a string (`"O+"`

,`"O-"`

, or a string that encodes an algebraic integer), meaning entries only with this orthogonal discriminant,`comment_matches`

, with value a string (one of`"ev"`

,`"specht"`

, ...), or a vector of such strings, meaning entries whose comment contains these values.

For all conditions except the boolean valued ones, also a function can be given as value, meaning that all those entries satisfy this condition for which the function returns `true`

when applied to the stored value. For example, the condition `characteristic => is_odd`

matches all entries for characteristics different from `0`

and `2`

, and the condition `character_field => (emb -> degree(domain(emb)) == 1)`

matches all entries for which the character field is the field of rationals.

**Examples**

```
julia> length(all_od_infos(identifier => "A6"))
8
julia> length(all_od_infos(identifier => "A6", characteristic => 0))
3
julia> length(all_od_infos(identifier => "A6", characteristic => 2:5))
5
```

`orthogonal_discriminants`

— Function`orthogonal_discriminants(tbl::Oscar.GAPGroupCharacterTable)`

Return a vector of strings that describe the orthogonal discriminants of the orthogonal irreducible characters of `tbl`

of even degree.

The length of this vector is the number of irreducible characters of `tbl`

, the $i$-th entry is an empty string if the $i$-th character is not orthogonal or has odd degree, and the $i$-th entry is equal to `"?"`

if the orthogonal discriminant is unknown.

**Examples**

```
julia> t = character_table("A6");
julia> println(orthogonal_discriminants(t))
["", "", "", "1", "1", "", "-1"]
julia> println(orthogonal_discriminants(t % 3))
["", "", "", "O-", ""]
```

`orthogonal_discriminant`

— Function`orthogonal_discriminant(chi::Oscar.GAPGroupClassFunction)`

Return a string that describes the orthogonal discriminant of `chi`

:

`"?"`

if the value is unknown,- one of
`"O+"`

,`"O-"`

in positive characteristic, - something that can be evaluated with
`atlas_irrationality`

in characteristic`0`

, and `""`

if `chi is not irreducible, not orthogonal, or has odd degree.

**Examples**

```
julia> t = character_table("A6");
julia> orthogonal_discriminant(t[4])
"1"
julia> t2 = t % 2;
julia> orthogonal_discriminant(t2[4])
"O+"
```