Script File
galois.at
G is a RealForm pi0(G)=order of component group of G(R) H1(G)=order of Galois cohomology H^1(Gamma,G)
Definitions in source order
square_classes
L17
square_classes (InnerClass ic) = [[int]]square_classes(ic) = list of all square classes of inner class, each a list of real form numbers square_classes(G) = list of all square classes of inner class of G
the most compact Cartan
for a RealForm just convert it to its InnerClass, Cartan(0) is the sameL19
strong_real_forms_indices
L22
strong_real_forms_indices(InnerClass ic) = [int]list of integer labels of real forms, each repeated for strong real forms
strong_real_forms
L26
strong_real_forms(InnerClass ic) = [RealForm]list of real forms, each repeated for strong real forms
print_strong_real
L30
print_strong_real (RealForm G) = voidassume you want all strong real forms, i.e. Cartan 0
implicitly convert to InnerClass
find_class
L36
find_class ([[int]] vecs, int k) = intfind(vecs,k) returns the (smallest) int j such that k in occurs in vecs[j] returns -1 otherwise
part_containing
L38
part_containing (int k) = ([[int]] parts) [int]raises error if i<0L40
central_invariant_index 2 overloads
L54
central_invariant_index (InnerClass ic, int k) = intassociated to a real form \theta is an element of Z^\theta/(1+\theta)Z (theta can be taken to be the distinguished involution delta) if theta=\theta_x then x^2\in Z^\Gamma represents this class form_number(G) is the number of the real form the central invariant index is the entry in square_classes(G) containing this number for example inner class of Sp(4,R) square_classes=([2],[1,0,0]) form_number(Sp(4,R))=2 central_invariant_index(Sp(4,R))=0 form_number(Sp(2,0))=0 form_number(Sp(1,1))=1 central_invariant_index(Sp(2,0))=central_invariant_index(Sp(1,1))=1
L56
central_invariant_index (RealForm G) = intcentral_invariant 2 overloads
L61
central_invariant(RealForm G) = ratveccentral_invariant@RealForm is the same as square@RealForm, except that we will view its values in Z^delta/(1+delta)Z
see parameters.at
L62
central_invariant(InnerClass ic,int i) = ratvectwo ratvecs in P^v, each gives an element of Z, assumed to be in Z^delta. They define the same central invariant if they are equivalent modulo (1+delta)Z+X^*L64
in_one_plus_delta_Z
L82
in_one_plus_delta_Z(InnerClass ic,ratvec v)equal_central_invariant 2 overloads
L91
equal_central_invariant(InnerClass ic,ratvec v,ratvec w) = boolonly equal rank
L94
equal_central_invariant(RealForm G,ratvec v) = boolonly equal rank
real_forms_given_central_invariant
L98
real_forms_given_central_invariant(InnerClass ic,ratvec v) = [RealForm]only equal rank
strong_real_forms_given_central_invariant
L102
strong_real_forms_given_central_invariant(InnerClass ic,ratvec v) = [RealForm]only equal rank
strong_real_forms_central_invariant_e
L110
strong_real_forms_central_invariant_e(InnerClass ic) = [RealForm]any group, strong real forms x with x^2=1 are in bijection with
strong real forms G where central_invariant(G)=central_invariant(G.quasicompact_form)
note that the central invariant might not be trivial, for example
in U(2,2) Z/Z^2={iI,-I} in atlas
strong_real_forms_same_type 2 overloads
L133
strong_real_forms_same_type (InnerClass ic, int k) = [int]strong_real_forms_same_type(ic,k) strong_real_forms_same_type(G) returns a list [int] (with multiplicity) of the real form numbers in given inner class with same x^2 as given real form real form is given by (inner class, number) or (RealForm G) if j occurs with multiplicity this means several strong real forms mapping to the given real form for example if ic=inner_class(Spin(4,4)) then strong_real_forms_type(ic,0)=[4,0,0,0,0] meaning one split strong real form and 4 compact ones
L135
strong_real_forms_same_type (RealForm G)strong_real_forms_type
L139
strong_real_forms_type(InnerClass ic,int k) = [int]strong real forms with central invariant: central element k
H1
L144
H1 (RealForm G) = intH^1(\Gamma,G)=H^1(\theta,G) is the number of strong real forms with given x^2\in Z
also defined in G2_unitary_dual.at
iterate_H1
L149
iterate_H1 (int min_rank, int max_rank) = voidcalculate H1 for all simple groups of given rank bounds, both simply connected and adjoint uses all_simple from generate_groups.at
pi0
L165
pi0 (RealForm G) = intiterate_H1 2 overloads
L166
iterate_H1 (int rank) = voidL167
iterate_H1 = @void: iterate_H1(1,8)also in this file at line 149
conjugacy_classes_involutions
L171
conjugacy_classes_involutions(RootDatum rd) = intnumber of conjugacy classes of involutions of connected complex group =# strong real forms with central invariant e
Generated from atlas-scripts at commit 7e1b958 (2026-09-17).
Commented-out code, lines 68–80 (9 lines)
set in_one_plus_delta_Z(InnerClass ic,ratvec v)=bool: find(ic.one_plus_delta_Z,map_to_center(ic,v))!=-1 set one_plus_delta_Z_der(InnerClass ic)=[ratvec]: let (ic_d,M)=ic.derived_info in {^M maps X_*(T_der) to X_*(T)} sort_u(for v in ic.derived.elements_of_center do ^M*map_to_center(ic_d,(1+^ic_d.distinguished_involution)*v) od) set in_one_plus_delta_Z_der(InnerClass ic,ratvec v)=bool: find(ic.one_plus_delta_Z_der,map_to_center(ic,v))!=-1