Script File
basic.at
Definitions in source order
GENERIC TYPE CONSTRUCTORS L1
Pair type
set_type Pair<S,T> = ( S fst , T snd ) !
Fields: fst, snd
One_of type
set_type One_of<S,T> = ( S fail | T succeed ) !
Fields: fail, succeed
Maybe type
set_type Maybe<T> = ( void none | T some ) !
Fields: none, some
Often failure needs no extra information; then |One_of| becomes |Maybe|. It is important that, like in |One_of|, failure is the first alternative, but calling it |fail| would create an ambiguous overload of that name; therefore we use a different and in this case more evocative label |none| here.
Iterator type
set_type Iterator<T> = ((->Maybe<T>) get, (->) incr) !
Fields: get, incr
A process producing a stream of |T| can be presented as a |Iterator<T>| value. In each state (including the initial one) the |get| method tries to produce a |T| value, but it may find out there are none left. This may or may not have a side effect, but |get| is not responsible for advancing in the sequence; to do that, call |incr| which moves beyond the current value (it should only be called after |get| succeeding). Although usually not done, calling |get| twice in succession without intervening |incr| should produce the same value.
AffineSubspace type
set_type AffineSubspace = ( vec base_point, int denom, mat tangent_basis )
Fields: base_point, denom, tangent_basis
Give a name |LinearSolution| to the type returned by built-in |linear_solve|. The type |AffineSubspace| and its field names only serve as documentation.
LinearSolution type
set_type LinearSolution = ( void empty_set | AffineSubspace solution )
Fields: empty_set, solution
auxiliary functions for |One_of<S,T>|: test just the tag and strip failureL29
succeeds
fails
as_list
requisition 2 overloads
insist upon succeeding; don't take |fail| for an answer
auxiliary functions for |Maybe<T>| and for |Iterator<T>|L42
can
|can(v)| just means |succeeds(v)|, but |if can(solve(eqn)) then| sounds nice
collect
gather actual items from a list of potential contributions
take
iterate, but bound number of iterations to at most |n|
!
iterate exhaustively, but only print results without storing them
count
iterate exhaustively, but just count the number of iterations
run through iteration, counting
in |int| context, |while| loop counts
to_list
iterate exhaustively and store all results in a list
TIMING, DIAGNOSTICS, PRINTING, AND TESTING ASSERTIONS L79
time
where
print_lines
prints_lines
!
allow printing any list line-by-line as |list!|
seat_belt_on
seat_belt_on = truewhether runtime tests are activated
assert 3 overloads
assert ((->bool,string)f) = voidthe fastest form when disabled
assert ((->bool)b,string message) = voidfor easier conversion
assert ((->bool)b) = voidSOME DEFINITIONS USEFUL FOR AVOIDING OR RESOLVING AMBIGUITIES L106
distributing a relation over lists, almost as in |map(rel)(zip(a,b)).all|L108
!
== 2 overloads
== = =@(int,int)!Some concrete instaces of distribution of an equality relation over a list. Proximity with certain built-in tests forbids calling these |=|, so instead we use |==| or |===|. WHen safe, using |=| (with implicit conversion) is faster.
make comparison of two |[int]| available as |==|
== = =@(vec,vec)!make comparison of two |[int]| available as |==|
===
=== = ==@([int],[int])!comparison of two |[[int]]| available as |===|
append
append = #@ T ([[T]],[T])one more ambiguity avoiding definition: make an alias for a |#| instance
so |LL append:= []| is unambiguous
ITERATION AND LIST SUPPORT FUNCTIONS L126
minus_1
!minus_1 = -1used to be more efficient than |-1|, now equally efficient
#
# (int n) = [int][0,1,...,n-1]
also in this file at line 135, line 767, line 768, line 1880; also defined in W_reps.at
indices
faster than |for @i in a do i od|
also defined in stable.at
#
# (bool b) = intIverson symbol
also in this file at line 130, line 767, line 768, line 1880; also defined in W_reps.at
sign
sign (bool b) = int|(-1)^#b|, i.e.:
also in this file at line 317, line 497; also defined in tits_centralizer.at, coherent_irreducible.at
range
range (int a, int b) = [int]^
^ = !=@(bool,bool)simple exclusive or
also in this file at line 771, line 772, line 776, line 827, line 1085, line 1710
count
count (int limit,(int->bool) predicate) = intall
all ([bool] p) = boolany
any ([bool] p) = boolnone
none ([bool] p) = boolfirst
first ([bool] p) = intalso in this file at line 167, line 180, line 195, line 885; also defined in sommers.at
last
last ([bool] p) = intalso in this file at line 169, line 182, line 197, line 886; also defined in sommers.at
count
count ([bool] p) = intcount (sum) number of truths in list
XOR
XOR ([bool] p) = boolexclusive or (sum modulo 2) of all truths in list
all
all ([(->bool)] p) = boolif evaluating conditions is expensive, procedure them with '@:' and call:
any
any ([(->bool)] p) = boolnone
none ([(->bool)] p) = boolfirst
first ([(->bool)] p) = intalso in this file at line 151, line 180, line 195, line 885; also defined in sommers.at
last
last ([(->bool)] p) = intthis is somewhat more efficient than first
also in this file at line 153, line 182, line 197, line 886; also defined in sommers.at
there are no lazy versions of |count| and |XOR|L171
all
all (int limit,(int->bool) predicate) = boolif cases to test are produced as predicates of an integer, one can use:
any
any (int limit,(int->bool) predicate) = boolnone
none (int limit,(int->bool) predicate) = boolfirst
first (int limit,(int->bool) predicate) = intalso in this file at line 151, line 167, line 195, line 885; also defined in sommers.at
last
last (int limit,(int->bool) predicate) = intalso in this file at line 153, line 169, line 197, line 886; also defined in sommers.at
With values stored in an array, similar functions can be applied to it. As the row value already exists, directly looping over it is efficient here.L185
all
any
none
first
also in this file at line 151, line 167, line 180, line 885; also defined in sommers.at
last
also in this file at line 153, line 169, line 182, line 886; also defined in sommers.at
get_first
also in this file at line 207
get_last
also in this file at line 209
get_first
also in this file at line 200
get_last
also in this file at line 202
for_some
test for being in a relation to some/none/all of the elements of a list
for_none
for_all
Generic functions on any type with a provided total orderingL222
min
minimum or maximum of 2 candidates
also in this file at line 322, line 324, line 326, line 509, line 511, line 513
max
also in this file at line 323, line 325, line 327, line 510, line 512, line 514
min_list
extensions of these to lists of any posiitve length
max_list
min_init
versions seeded with a "limit value" to use in case of an empty list
max_init
mindex
position of first occurrence of minimum, or -1
maxdex
reverse
also defined in coherent_irreducible.at
MEMBERSHIP TESTING AND SEARCHING L262
is_member
also in this file at line 419, line 546, line 638, line 1604
isnt_member
also in this file at line 420, line 547, line 639, line 1605
binary_search_first
binary_search_first ((int->bool)pred, int low, int high) = intbinary search first |i| in [low,high) with |pred(i)|, or |high| if none
of course |pred| is assumed monotonic here: $pred(i)\implies pred(i+1)$
binary_search_in 2 overloads
binary_search_get
binary_lookup
binary_lookup_by
binary_lookup 2 overloads
binary_lookup = (int,[int]->Maybe<int>)binary_lookup = (string,[string]->Maybe<int>)also in this file at line 292
locate_sorted
locate_sorted ([int] v,int lwb) = intfirst index of entry >= |lwb|
from_stops
from_stops ([int] stops) = (int->int)transform "stops" representation of weakly increasing function to function
find first excess, then back up 1L309
BASIC NON BUILT-IN FUNCTIONALITY FOR SPECIFIC TYPES L312
IntegersL314
abs
abs (int k) = intalso in this file at line 499
sign
sign (int k) = intalso in this file at line 136, line 497; also defined in tits_centralizer.at, coherent_irreducible.at
is_odd
is_odd (int n) = boolis_even
is_even (int n) = boolmin
min = min(<=@(int,int))also in this file at line 226, line 324, line 326, line 509, line 511, line 513
max
max = max(<=@(int,int))also in this file at line 227, line 325, line 327, line 510, line 512, line 514
min
min = min_list(<=@(int,int))also in this file at line 226, line 322, line 326, line 509, line 511, line 513
max
max = max_list(<=@(int,int))also in this file at line 227, line 323, line 327, line 510, line 512, line 514
min
min = min_init(<=@(int,int))also in this file at line 226, line 322, line 324, line 509, line 511, line 513
max
max = max_init(<=@(int,int))also in this file at line 227, line 323, line 325, line 510, line 512, line 514
min_loc
min_loc = mindex(<=@(int,int))also in this file at line 515
max_loc
max_loc = maxdex(<=@(int,int))also in this file at line 516
gcd
gcd = (int,int->int)greatest common divisor; no size limit
also in this file at line 809
gcd_big
gcd_big([int] v) = intthe following cannot be called |gcd|: too close to built-in |gcd@vec|
lcm 2 overloads
lcm (int a,int b) = intlcm ([int] v) = int=
= ((int,int)(x0,y0),(int,int)(x1,y1)) = boolalso in this file at line 764, line 1816; also defined in combinatorics.at, modules.at
!=
!= ((int,int)(x0,y0),(int,int)(x1,y1)) = boolalso defined in combinatorics.at
*
* (int c,[int] r) = [int]scalar multiplication of list (note: *@(vec,int) returning vec is built-in)
also in this file at line 522, line 525, line 550, line 557, line 789, line 980, line 981, line 995, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
sum
sum ([int] r) = intsum, product of a list of values
also in this file at line 518, line 650, line 794, line 800, line 915, line 987, line 1098, line 2125, line 2410; also defined in sommers.at
product
product ([int] r) = inthalf
half (int n) = intexact_divide
exact_divide (int a, int b) = intint_format
int_format = to_string@intbitsets encoded as functions (int->bool) together with upper bound |limit|L364
exp_2
exp_2 (int n) = int2^n, but more efficient
full_bitset
full_bitset (int n) = intto_bitset(#n), but more efficient
is_member_bitset
is_member_bitset (int i,int B) = boolisnt_member_bitset
isnt_member_bitset (int i,int B) = boolis_member_fast
is_member_fast (vec L) = (int->bool)isnt_member_fast
isnt_member_fast (vec L) = (int->bool)list
list (int limit, (int->bool) predicate) = [int]also defined in coherent_irreducible.at
complement 2 overloads
complement (int limit,(int->bool) predicate) = [int]complement (int n, vec list) = [int]sort_u_below
sort_u_below (int n) = ([int] L) [int]sorting lists of relatively small natural numbers can be done fast
is_subset
is_subset (vec S,vec L) = boolis_disjoint
is_disjoint (vec S,vec L) = boolcontains 2 overloads
contains (vec S) = (vec->bool)contains (int s) = (vec->bool)is_subset_of
is_subset_of (vec L) = (vec->bool)is_disjoint_from
is_disjoint_from (vec L) = (vec->bool)first_set_bit
first_set_bit (int n) = intunset_first_set_bit
unset_first_set_bit (int n) = intset_bit_positions 2 overloads
set_bit_positions (int n) = vecset_bit_positions (int n,int limit) = vecfirst_unset_bit
first_unset_bit (int n) = intset_first_unset_bit
set_first_unset_bit (int n) = intunset_bit_positions 2 overloads
unset_bit_positions (int n) = vecunset_bit_positions (int n,int limit) = vecbitwise_intersection
bitwise_intersection ([int] ns) = intbitwise_union
bitwise_union ([int] ns) = intis_member
is_member = ([int]->(int->bool))also in this file at line 265, line 546, line 638, line 1604
isnt_member
isnt_member = ([int]->(int->bool))also in this file at line 266, line 547, line 639, line 1605
is_member_sorted
is_member_sorted ([int] v) = (int->bool)when |v| is known to be sorted (and long), this can be done faster
isnt_member_sorted
isnt_member_sorted ([int] v) = (int->bool)is_subset_of_sorted
is_subset_of_sorted ([int] sorted) = ([int]->bool)is_disjoint_from_sorted
is_disjoint_from_sorted ([int] sorted) = ([int]->bool)factorial
factorial (int n) = int!
! = factorial@intallo conventional factorial notation
to_base_poly
to_base_poly (int b) = (int->vec)convert to base n as polynomial: small coef polynomial evaluating to k at n
to_base_fixed_length
to_base_fixed_length (int b, int l) = (int->vec )of length |l|
get |l| finals digits, regardlessL459
to_base
to_base (int b, (int->string) digit) = (int->string)also defined in tits_centralizer.at
binary
binary = (int->string)digits36
digits36 = (int->string)map digits in base up to 36 to a letter
hexadecimal
hexadecimal = (int->string)some transformations of sequences of numbersL478
cumulate_forward
cumulate_forward ([int] seq) = [int]cumulate_backward
cumulate_backward ([int] seq) = [int]forward_differences
forward_differences ([int] seq) = [int]inverse of |cumulate_forward|
backward_differences
backward_differences ([int] seq) = [int]inverse of |cumulate_backward|
Rational numbersL491
numer
numer (rat a)also in this file at line 976
denom
denom (rat a)also in this file at line 977
is_integer
is_integer (rat r) = boolalso in this file at line 1001
sign
sign (rat a) = intdenominator is always positive
also in this file at line 136, line 317; also defined in tits_centralizer.at, coherent_irreducible.at
abs
abs (rat a) = ratalso in this file at line 316
\
\ ((rat,rat)p) = int\% 2 overloads
\% ((rat,int)p) = (int,rat)shouldn't these two be built-in?
\% ((rat,rat)p) = (int,rat)also in this file at line 1058
floor
floor ([rat] v) = vecthese are mostly for ratvec arguments, but [rat] avoids coercion from vec
ceil
ceil ([rat] v) = vecmin
min = min(<=@(rat,rat))also in this file at line 226, line 322, line 324, line 326, line 511, line 513
max
max = max(<=@(rat,rat))also in this file at line 227, line 323, line 325, line 327, line 512, line 514
min
min = min_list(<=@(rat,rat))also in this file at line 226, line 322, line 324, line 326, line 509, line 513
max
max = max_list(<=@(rat,rat))also in this file at line 227, line 323, line 325, line 327, line 510, line 514
min
min = min_init(<=@(rat,rat))also in this file at line 226, line 322, line 324, line 326, line 509, line 511
max
max = max_init(<=@(rat,rat))also in this file at line 227, line 323, line 325, line 327, line 510, line 512
min_loc
min_loc = mindex(<=@(rat,rat))also in this file at line 328
max_loc
max_loc = maxdex(<=@(rat,rat))also in this file at line 329
sum
sum ([rat] r) = ratalso in this file at line 355, line 650, line 794, line 800, line 915, line 987, line 1098, line 2125, line 2410; also defined in sommers.at
product
product ([rat] r) = rat* 2 overloads
* ([rat] v, [rat] w) = ratextend built-in scalar product of vectors to list of rationals case
* ([int] v, [rat] w) = ratalso in this file at line 352, line 550, line 557, line 789, line 980, line 981, line 995, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
rat_as_int
rat_as_int (rat r) = intmake a rational into an integer if possible
with_decimals
with_decimals (int n) = (rat->string)StringsL540
new_line
!new_line = ASCII(10)including this in a string passes to a new line
char_index
char_index (string c, string s) = intis_member
is_member = ([string]->(string->bool))also in this file at line 265, line 419, line 638, line 1604
isnt_member
isnt_member = ([string]->(string->bool))also in this file at line 266, line 420, line 639, line 1605
+
+ = ##@(string,string)+ aliases string concatenation "ax" ## "is"
also in this file at line 559, line 560, line 562, line 2121, line 2132, line 2406, line 2417; also defined in extParamPol.at, modules.at
* 2 overloads
* = (string,int->string)repeat string; use recursive doubling
* (int n,string s) = stringallow factor to come first
also in this file at line 352, line 522, line 525, line 789, line 980, line 981, line 995, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
+ 3 overloads
+ (string s, int i) = string+ (int i, string s) = string+ (string s, (int,int)(x,y))also in this file at line 549, line 2121, line 2132, line 2406, line 2417; also defined in extParamPol.at, modules.at
plural 2 overloads
plural (int n) = stringplural (int n,string s) = stringconcat
concat = ##@[string]join
join ([string] elts, string sep, string unit) = stringl_adjust
l_adjust (int w, string s) = stringr_adjust
r_adjust (int w, string s) = stringc_adjust
c_adjust (int w, string s) = stringwidth
width (int n) = intsplit
split (string S) = [string]also in this file at line 609
split_lines
split_lines (string text) = [string]is_substring
is_substring (string key, string text) = boolfgrep
fgrep (string s, string text) = [string]compact_string
compact_string (ratvec v) = stringGenericsL601
filter
map
also in this file at line 2135, line 2137, line 2140, line 2142, line 2421, line 2424; also defined in hermitian.at
split
also in this file at line 582
zip
unzip
transpose
also defined in combinatorics.at
matrix_assign
change one entry, in list-of-rows format
VectorsL629
vector
vector (int n,(int->int)f) = vecalso defined in K_Nilpotent.at
identity_row
identity_row (int n,int i) = vecstandard basis in rank n
ones
ones (int n) = vecis_member
is_member = ([vec]->(vec->bool))also in this file at line 265, line 419, line 546, line 1604
isnt_member
isnt_member = ([vec]->(vec->bool))also in this file at line 266, line 420, line 547, line 1605
~
~ (vec v) = veclower
lower (int k,vec v) = vecalso in this file at line 1011
upper
upper (int k,vec v) = vecalso in this file at line 1012
drop_lower
drop_lower (int k,vec v) = vecalso in this file at line 1013
drop_upper
drop_upper (int k,vec v) = vecalso in this file at line 1014
<=
<= (vec v) = boolanti-dominance (in fundamental weight coords)
also in this file at line 908, line 1017; also defined in combinatorics.at
<
< (vec v) = boolstrict anti-dominance
sum
sum (int l,[vec] list) = vecsum of vecs of constant length l
also in this file at line 355, line 518, line 794, line 800, line 915, line 987, line 1098, line 2125, line 2410; also defined in sommers.at
for large sums |sum(l#list)|, using |sum@mat|, might be marginally fasterL652
all_words
all_words ([vec] alphabets) = matall words with letter |i| running over elements of |alphabets[i]|
convert list of vectors to matrix with |size| rowsL665
we can do the same for other types than integersL667
all_words
if any alphabet is empty, the result is an empty list, forgetting #alphabetsL679
all_words
all_words ([int] limits) = matall words of length |#limits|, with letter |i| running over |#limits[i]|
all_0_1_vecs
all_0_1_vecs (int n) = [vec]power_set 2 overloads
indices where 0_1_vecs have 1
choices_from
all $k$-subsets of $S$
multiplicity
also defined in sommers.at
all_0_1_vecs_with_sum
all_0_1_vecs_with_sum (int n,int k) = [vec]mixed_radix_nr
mixed_radix_nr([int] radix) = (vec->int)index of |word| in |all_words(radix)|
mixed_radix_word
mixed_radix_word([int] radix) = (int->vec)its inverse, in other words, the function |f=mixed_radix_word(radix)| is such that |all_words(radix)| is equal to |for i:product(radix) do f(i) od|
number of times n occurs in [int] SL726
pad
pad ([int] v,int N) = vecadd zeros to make total length =N
also in this file at line 2643
MatricesL733
matrix
matrix ((int,int)(r,c),(int,int->int) f) = matmatrix defined by its dimension and expression for general entry
also in this file at line 1718
n_rows
n_rows (mat m) = intn_columns
n_columns = #@matthis one is built in as a # operator overload
as_column
as_column (vec v) = matinterpret v as single column
as_row
as_row = ^@vecinterpret v as single row
~
~ (mat A) = matreverse rows and reverse columns
transform 45 = 36 + 9, rows&cols reversed
block_matrix 2 overloads
block_matrix (mat A,mat B) = matblock_matrix ([mat] list) = matmain_diagonal
main_diagonal (mat A) = vec=
= (mat m,int k) = booltest matrix against a multiple of the identity
also in this file at line 348, line 1816; also defined in combinatorics.at, modules.at
# 2 overloads
# (mat m, vec v) = matadd a column to a matrix, which is not predefined as operator #
require size match
# (vec v, mat m) = matrequire size match
also in this file at line 130, line 135, line 1880; also defined in W_reps.at
^ 2 overloads
^ (mat m, vec v) = matadd row to a matrix, which is similar; use operator ^ for it
^ (vec v, mat m) = matalso in this file at line 140, line 776, line 827, line 1085, line 1710
##
## (mat A, mat B) = matconcatenate horizontally, must have same depth
^
^ (mat A, mat B) = matconcatenate vertically, must have same width
also in this file at line 140, line 771, line 772, line 827, line 1085, line 1710
##
## (int n,[mat] L) = matconcatenate horizontally a list of matrices; each of n rows
map_on
map_on (mat m) = ((int->int)->mat)apply a function to all matrix entries
*
* (int c,mat m) = matscalar multiplication
also in this file at line 352, line 522, line 525, line 550, line 557, line 980, line 981, line 995, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
-
- (mat m) = mattransform 36+128=164: 128 means negate entries
also in this file at line 2110, line 2119, line 2122, line 2133, line 2392, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
sum 2 overloads
sum ((int,int) shape, [mat] L) = matsum of list of matrices, with given shape for when list is empty
sum (int n,[mat] L) = matsquare matrices are frequent, so there is a special case of |sum| for them
also in this file at line 355, line 518, line 650, line 915, line 987, line 1098, line 2125, line 2410; also defined in sommers.at
product
product (int n, [mat] L) = matproduct left-to-right of list of square matrices, all square of size |n|
gcd
gcd(mat M) = intalso in this file at line 331
\
\ (mat m,int d) = matinteger division
%
% (mat m,int d) = matentrywise modulo
also in this file at line 1064; also defined in extParamPol.at
Smith_basis
Smith_basis (mat M) = matinv_fact
inv_fact (mat M) = vecimage
image (mat M) = mat^
^ = (mat,int->mat)matrix exponentiation
also in this file at line 140, line 771, line 772, line 776, line 1085, line 1710
inverse
inverse (mat M) = matalso in this file at line 1709; also defined in combinatorics.at
/
/ = inverse@matso |/M| is the same as |M^-1|, but more direct
also in this file at line 1062
rank
rank (mat A) = intalso defined in combinatorics.at, sommers.at
det
det (mat A) = inttrace
trace (mat A) = intchar_poly
char_poly (mat A) = veccharacteristic polynomial of integer matrix
cokernel
cokernel (mat M)minimal matrix wose kernel is our image
saturated_span
saturated_span (mat M) = boolwhether columns span saturated sublattice
all invariant factors are 1? test last one, if anyL877
test all vectors in a listL879
all
all (mat m,(vec->bool) pred) = boolany
any (mat m,(vec->bool) pred) = boolnone
none (mat m,(vec->bool) pred) = boolfirst
first (mat m,(vec->bool) pred) = intalso in this file at line 151, line 167, line 180, line 195; also defined in sommers.at
last
last (mat m,(vec->bool) pred) = intalso in this file at line 153, line 169, line 182, line 197; also defined in sommers.at
columns_with 3 overloads
columns_with ((int,vec->bool) p,mat m) = matcolumns_with ((vec->bool) p,mat m) = matcolumns_with ((int->bool) p,mat m) = mata_column_with
a_column_with ((vec->bool) p,mat m) = Maybe<vec>rows_with 3 overloads
rows_with ((int,vec->bool) p,mat m) = matrows_with ((vec->bool) p,mat m) = matrows_with ((int->bool) p,mat m) = mata_row_with
a_row_with ((vec->bool) p,mat m) = Maybe<vec>>=
>=([vec] m) = boolnon-negative (dominant) columns only
>
>([vec] m) = boolstrictly positive (dominant) columns only
<=
<=([vec] m) = boolalso in this file at line 647, line 1017; also defined in combinatorics.at
<
<([vec] m) = boollookup_column
lookup_column (vec v,mat m) = intlookup_row
lookup_row (vec v,mat m) = intsum
sum (mat m) = vecsum of columns of a matrix; this is so neat, avoid calling it sum_columns
also in this file at line 355, line 518, line 650, line 794, line 800, line 987, line 1098, line 2125, line 2410; also defined in sommers.at
solve 2 overloads
solve (mat A,vec b) = Maybe<vec>solve(mat A,vec b): find a |vec| solution x of A*x=b, or indicate none exists Method: - write A*C = M using echelon, with C an invertible matrix and, M echelon - solve M*y = b (possibly finding none); this is easy using the echelon form - if a solution is found, return x = C*y
solve (mat A,mat B) = Maybe<mat>matrix |X| satisfying |A*X=B|, if any
also in this file at line 1023
required_solution 2 overloads
required_solution ((mat,vec) system) = vecrequired_solution ((mat,mat) system) = matsystem (A,B) means solving AX = B
also in this file at line 1038
order
order (mat !M) = intmultiplicative order of a matrix, hangs unless finite
also in this file at line 1622; also defined in all_finite_order.at
Rational vectorsL974
numer
numer (ratvec a) = vecalso in this file at line 493
denom
denom (ratvec a) = intalso in this file at line 494
* 2 overloads
* (int i,ratvec v) = ratvecallow scalar multiplication form left; from right it is built-in
* (rat r,ratvec v) = ratvecalso in this file at line 352, line 522, line 525, line 550, line 557, line 789, line 995, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
## 2 overloads
## (ratvec a,ratvec b) = ratvecconcatenate ratvec values: use conversion to and from [rat]
## ([ratvec] rs) = ratvecsum
sum (int l,[ratvec] list) = ratvecsum of ratvecs of constant length l
also in this file at line 355, line 518, line 650, line 794, line 800, line 915, line 1098, line 2125, line 2410; also defined in sommers.at
*
* ([ratvec] M,ratvec v) = ratvecmultiply rational matrix represented as list of columns by a rational vector the m*n matrix M is given as a list of n ratvec values of size m v is a ratvec of size n, the result is a ratvec of size m
also in this file at line 352, line 522, line 525, line 550, line 557, line 789, line 980, line 981, line 1611, line 1612, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
is_integer
is_integer (ratvec v) = boolequivalently =(v%1)
also in this file at line 496
\
\ (ratvec v, int k) = vecvector floor of quotient by int operation; makes vector from rational vector
ratvec_as_vec
ratvec_as_vec (ratvec v) = vecdo as |v.numer| (or |\ %v|) would do, but check that denominator is 1
~
~ (ratvec v) = ratveclower
lower (int k,ratvec v) = ratvecalso in this file at line 642
upper
upper (int k,ratvec v) = ratvecalso in this file at line 643
drop_lower
drop_lower (int k,ratvec v) = ratvecalso in this file at line 644
drop_upper
drop_upper (int k,ratvec v) = ratvecalso in this file at line 645
<=
<= (ratvec v) = booldominance conditions
also in this file at line 647, line 908; also defined in combinatorics.at
<
< (ratvec v) = boolsolve
solve (mat A, ratvec b) = Maybe<ratvec>solve(mat A,ratvec b): find a solution ratvec x of A*x=b, or indicate that none exists. Solution as in vec case, but exact division requirement is OK.
required_solution
required_solution ((mat,ratvec) system) = ratvecSplit integersL1042
s
!s = Split! means it is a constant
split_1
!split_1 = Splitdo conversion now
split_minus_1
!split_minus_1 = Splitone_minus_s
!one_minus_s = Splitone_plus_s
!one_plus_s = Splitnear idempotents
int_part
int_part (Split x) = ints_part
s_part (Split x) = ints_to_1
s_to_1 (Split x) = intlet (a,b)=%x in a+b
s_to_minus_1
s_to_minus_1 (Split x) = intlet (a,b)=%x in a-b
times_s
times_s (Split x)split_as_int
split_as_int (Split x) = int\%
\% (Split x, int n) = (Split,Split)half
half (Split w) = Splitdivide Split by integer, quotient of \% but requiring rest to be zero
/
/ (Split w,int n) = Splitalso in this file at line 847
%
% (Split w,int n) = Splitalso in this file at line 819; also defined in extParamPol.at
exp_s
exp_s(int n) = Splitis_pure
is_pure (Split w) = boola Split coefficient is pure if it has at most one nonzero component
test if product of both components is zero
split_format
split_format (Split w) = stringnicer display of Splits
split_factor_format
split_factor_format (Split w) = stringsame formatting, but supplying parentheses when necessary if used as factor
^
^ = (Split,int->Split)exponentiation of split integers
also in this file at line 140, line 771, line 772, line 776, line 827, line 1710
sum
sum ([Split] list) = Splitalso in this file at line 355, line 518, line 650, line 794, line 800, line 915, line 987, line 2125, line 2410; also defined in sommers.at
Lie typesL1101
Lie_type
Lie_type (string code, int rank) = LieTypesemisimple_rank
semisimple_rank (LieType t) = intcentral_torus_rank
central_torus_rank (LieType t) = intalso in this file at line 1167
factors
factors (LieType t) = [string,int]semisimple
semisimple (LieType t) = LieTypederived_is_simple
derived_is_simple (LieType t) = boolalso in this file at line 1173
is_simple
is_simple (LieType t) = boolalso in this file at line 1174
adjoint_2rho
adjoint_2rho (LieType t) = veccompute |t.semisimple.adjoint.two_rho| without constructing a |RootDatum|
$2\rho$ on basis of simple roots
simply_connected_2rho_check
simply_connected_2rho_check (LieType t) = vecsimilarly $2\check\rho$ on basis of simple coroots
str
str (LieType t) = stringRoot dataL1162
root_indices
root_indices (RootDatum rd) = [int]list of all legal root indices
central_torus_rank
central_torus_rank (RootDatum rd) = intalso in this file at line 1108
dimension
dimension (RootDatum rd) = intalso in this file at line 2006
provide default values for coroot preference when building root dataL1171
derived_is_simple
derived_is_simple(RootDatum rd) = boolalso in this file at line 1118
is_simple
is_simple(RootDatum rd) = boolalso in this file at line 1119
root_datum
root_datum (mat simple_roots, mat simple_coroots) = RootDatumby default prefer roots
also in this file at line 1182, line 1208, line 1211, line 1215, line 1882, line 2068, line 2101, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
torus_datum
torus_datum (int rank) = RootDatumroot_datum
root_datum (LieType type, mat lattice) = RootDatumby default prefer roots
also in this file at line 1176, line 1208, line 1211, line 1215, line 1882, line 2068, line 2101, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
simply_connected
simply_connected (LieType type) = RootDatumby default prefer coroots here
also in this file at line 1191
adjoint
adjoint (LieType type) = RootDatumby default prefer roots here
also in this file at line 1193
simply_connected
simply_connected (RootDatum rd) = RootDatumalso in this file at line 1185
adjoint
adjoint (RootDatum rd) = RootDatumchange weight basis to simple roots
also in this file at line 1188
sub_datum
sub_datum (RootDatum rd, [int]S) = RootDatumin |sub_datum| the (co)roots at indices |S| must give a valid Cartan matrix, but they need not be positive, and will be taken in the order specified. indices: [-n,...,0,1,...,n-1] where n is the number of positive roots simple roots are numbered [0,1,...,rank-1] In particular any subset of simple roots taken in any order will be valid.
also in this file at line 1476
root_datum 3 overloads
root_datum ([vec] simple_roots, [vec] simple_coroots, int r) = RootDatumbackwards compatibility function; used to be the built-in prototype
root_datum (LieType t, [ratvec] gens) = RootDatumroot_datum (LieType t, ratvec gen) = RootDatumallow single kernel generator in root datum construction
also in this file at line 1176, line 1182, line 1882, line 2068, line 2101, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
all_simples
all_simples (RootDatum rd) = [int]list of indices of all simple roots or coroots
all_posroots
all_posroots (RootDatum rd) = [int]all_roots
all_roots (RootDatum rd) = [int]is_root
is_root ((RootDatum,vec) (rd,):p) = boolthe following uses that root_index(rd,v)=nr_of_posroots(rd) for a non-root v
is_coroot
is_coroot ((RootDatum,vec) (rd,):p) = boolis_posroot
is_posroot ((RootDatum,vec)(rd,):p) = boolis_poscoroot
is_poscoroot ((RootDatum,vec)(rd,):p) = boolis_negroot
is_negroot ((RootDatum,vec)(rd,):p) = boolis_negcoroot
is_negcoroot ((RootDatum,vec)(rd,):p) = boolposroot_index
posroot_index ((RootDatum,vec)p) = intfold roots to positive
poscoroot_index
poscoroot_index ((RootDatum,vec)p) = intfold coroots to positive
Cartan_matrix
Cartan_matrix (RootDatum rd,[int] simples) = matNB strange convention
rho
rho (RootDatum rd) = ratvecrho_check
rho_check (RootDatum rd) = ratvecsee also rho_i@KGBElt and rho_r@KGBElt defined belowL1247
two_rho
two_rho (RootDatum rd,(int->bool) select) = vecsum of selected posroots
also in this file at line 1254
two_rho_check
two_rho_check (RootDatum rd,(int->bool) select) = vecalso in this file at line 1258
two_rho
two_rho (RootDatum rd,[int] simples) = vecalso in this file at line 1249
two_rho_check
two_rho_check (RootDatum rd,[int] simples) = vecalso in this file at line 1251
is_positive_root
is_positive_root (RootDatum rd) = (vec->bool)these functions assume the vec alpha or alphav is a root resp. coroot
also in this file at line 1275
is_positive_coroot
is_positive_coroot (RootDatum rd) = (vec->bool)also in this file at line 1277
is_negative_root
is_negative_root (RootDatum rd) = (vec->bool)also in this file at line 1279
is_negative_coroot
is_negative_coroot (RootDatum rd) = (vec->bool)also in this file at line 1281
is_positive_root
is_positive_root (RootDatum rd,vec alpha) = booluncurried versions of the previous four; again being root/coroot is assumed
also in this file at line 1265
is_positive_coroot
is_positive_coroot (RootDatum rd,vec alphav) = boolalso in this file at line 1267
is_negative_root
is_negative_root (RootDatum rd,vec alpha) = boolalso in this file at line 1269
is_negative_coroot
is_negative_coroot (RootDatum rd,vec alphav) = boolalso in this file at line 1271
roots_all_positive
roots_all_positive (RootDatum rd) = (mat->bool)test whether all columns, being assumed root/coots, are positive
no negative roots
coroots_all_positive
coroots_all_positive (RootDatum rd) = (mat->bool)no negative coroots
among_posroots
among_posroots (RootDatum rd) = (mat M)boolthe following test rather than assume that columns are roots/cooroots
all columns M posroots?
among_poscoroots
among_poscoroots (RootDatum rd) = (mat M)boolall columns M poscoroots?
negative_system
negative_system (mat posroots) = matthe missing half of the root system
172= 36+8+128: reverse cols,neg
roots
roots (RootDatum rd) = mathaving _all_ roots can be useful
coroots
coroots (RootDatum rd) = matroot
root (RootDatum rd, vec alpha_v) = vecthe correspondence between roots and coroots
coroot
coroot (RootDatum rd, vec alpha) = vecis_orthogonal 3 overloads
is_orthogonal (RootDatum rd, int i, int j) = boolis_orthogonal (RootDatum rd, vec alpha, vec beta) = boolis_orthogonal (RootDatum rd, [int] S, int j) = boolreflection 2 overloads
reflection (RootDatum rd, int i) = matreflection action of roots
i indexes a root/coroot pair
reflection ((RootDatum,vec)(rd,):p) = matspecify root (not coroot)
reflection_co
reflection_co ((RootDatum,vec)(rd,):p) = matspecify coroot (not root)
reflect 2 overloads
reflect (RootDatum rd, int i, vec v) = vecapply reflection(rd,i)*v
more efficient than matrix multiply
reflect (RootDatum rd, vec alpha, vec v) = vecreflection(rd,alpha)*v
coreflect 2 overloads
coreflect (RootDatum rd, vec v, int i) = vecapply v*reflection(rd,i)
coreflect (RootDatum rd, vec v, vec alpha) = vecv*reflection(rd,alpha)
reflect 2 overloads
reflect (RootDatum rd, int i, ratvec v) = ratvecreflect (RootDatum rd, vec alpha, ratvec v) = ratveccoreflect 2 overloads
coreflect (RootDatum rd, ratvec v, int i) = ratveccoreflect (RootDatum rd, ratvec v, vec alpha) = ratvecleft_reflect 2 overloads
left_reflect (RootDatum rd, int i, mat M) = matin matrix version reflect becomes left_reflect and coreflect right_reflect
reflection(rd,i)*M
left_reflect (RootDatum rd, vec alpha, mat M) = matright_reflect 2 overloads
right_reflect (RootDatum rd, mat M, int i) = matM*reflection(rd,i)
right_reflect (RootDatum rd, mat M, vec alpha) = matconjugate 2 overloads
conjugate (RootDatum rd, int i, mat M) = matr*M*r where r=reflection
conjugate (RootDatum rd, vec alpha, mat M) = matroot_span_projector
root_span_projector (RootDatum rd ,[int] S) = (mat,int)orthogonal projection on span of subset of simple roots, a rational matrix
wall_projector
wall_projector ((RootDatum,[int]) arg) = (mat,int)complementary orthogonal projection, to intersection of walls
singular_simple_indices
singular_simple_indices (RootDatum rd,ratvec v) = [int]for (anti)dominant |v|, find simple generators of its singular subsystem
is_imaginary
is_imaginary (mat theta) = (vec->bool)is_real
is_real (mat theta) = (vec->bool)is_complex
is_complex (mat theta) = (vec->bool)also in this file at line 1939, line 1953, line 2022; also defined in complex.at, sub_cells.at
imaginary_roots
imaginary_roots (RootDatum rd, mat theta) = matthese functions are just for convenience; posroot versions are more useful
real_roots
real_roots (RootDatum rd, mat theta) = matimaginary_coroots
imaginary_coroots (RootDatum rd, mat theta) = matfor coroots we need to use the transpose matrix
real_coroots
real_coroots (RootDatum rd, mat theta) = matimaginary_posroots
imaginary_posroots (RootDatum rd,mat theta) = matpositive (co)roots versions are actually more useful
also in this file at line 1956
real_posroots
real_posroots (RootDatum rd,mat theta) = matalso in this file at line 1958
imaginary_poscoroots
imaginary_poscoroots (RootDatum rd,mat theta) = matalso in this file at line 1960
real_poscoroots
real_poscoroots (RootDatum rd,mat theta) = matalso in this file at line 1962
imaginary_sys
imaginary_sys ((RootDatum,mat)p) = (mat,mat)also in this file at line 1964
real_sys
real_sys ((RootDatum,mat)p) = (mat,mat)also in this file at line 1967
is_dominant
is_dominant (RootDatum rd, ratvec v) = boolwhether v is a weakly dominant weight for rd
also in this file at line 1418
is_strictly_dominant
is_strictly_dominant (RootDatum rd, ratvec v) = boolalso in this file at line 1420
is_regular
is_regular (RootDatum rd,ratvec v) = booltests all positive coroots
is_integral
is_integral (RootDatum rd, ratvec v) = boolintegral on all coroots
also in this file at line 1424
and |is_integrally_dominant@(RootDatum,ratvec)| is built-inL1415
is_dominant
is_dominant (ratvec v, RootDatum rd) = boolreversing order, similar questions about coweight v
also in this file at line 1407
is_strictly_dominant
is_strictly_dominant (ratvec v,RootDatum rd) = boolalso in this file at line 1409
is_regular
is_regular (ratvec v, RootDatum rd) = booltests all positive roots
is_integral
is_integral (ratvec v, RootDatum rd) = boolintegral on all roots
also in this file at line 1413
is_integrally_dominant
is_integrally_dominant (ratvec v,RootDatum rd) = boolalso in this file at line 2194
radical_basis
radical_basis (RootDatum rd) = matthe following should replace the needlessly complicated built-ins they use
columns are coweights
drop coroots part
coradical_basis
coradical_basis (RootDatum rd) = matcolumns are weights
drop roots part
is_semisimple
is_semisimple (RootDatum rd) = boolderived_is_simply_connected
derived_is_simply_connected (RootDatum rd) = boolhas_connected_center
has_connected_center (RootDatum rd) = boolis_simply_connected
is_simply_connected (RootDatum rd) = boolis_adjoint
is_adjoint (RootDatum rd) = boolderived
derived (RootDatum rd) = RootDatumthe following functions give but partial information; giving a more complete definition for InnerClass values needs more work (see group_operations.at)
mod_central_torus
mod_central_torus (RootDatum rd) = RootDatumis_simple_for
is_simple_for (vec dual_two_rho) = (vec->bool)from appropriate (subsystem) dual 2rho value, deduce test for being simple
simple_system_from_positive
simple_system_from_positive (mat posroots,mat poscoroots) = (mat,mat)get generating simple system from set of matching posroots and poscoroots
root_datum_from_positive
root_datum_from_positive ( (mat,mat) (posroots,poscoroots):pair, bool prefer_coroots ) = RootDatumsub_datum
sub_datum(RootDatum rd, (int->bool) select ) = RootDatum|sub_datum| with predicate argument preserves positivity of (co)roots
from posroot indices
also in this file at line 1201
some code proceeds by "simple factor", isolating a |sub_datum| for each; functions that expect a specific simple type can call |test_simple_type|L1484
test_simple_type
test_simple_type(string T, RootDatum rd) = [int]test |rd| for being of simple type T (a letter in "ABCDEFG"), and return (as a list of integers) a map from standard diagram labelling to |rd| simple roots
fundamental_weights
fundamental_weights (RootDatum rd) = [ratvec]fundamental_coweights
fundamental_coweights (RootDatum rd) = [ratvec]singular_root_datum
singular_root_datum(RootDatum rd,ratvec gamma) = RootDatumroot datum of singular roots
project_to_dominant_cone
project_to_dominant_cone (RootDatum rd, ratvec gamma) = (ratvec,int)(nearest dominant vector to |gamma|, facet identification nr
(highest_root_indices, highest_coroot_indices)
(highest_root_indices,highest_coroot_indices) = ((RootDatum->[int]),(RootDatum->[int]))highest_roots
highest_roots (RootDatum rd) = [vec]list of all highest roots (one for each simple factor)
highest_coroots
highest_coroots (RootDatum rd) = [vec]lowest_roots
lowest_roots (RootDatum rd) = [vec]lowest_coroots
lowest_coroots (RootDatum rd) = [vec]simple_root_labels
simple_root_labels (RootDatum rd) = vecsimple_coroot_labels
simple_coroot_labels (RootDatum rd) = vechighest_root
highest_root (RootDatum rd) = vecsingle highest root, or error if |rd| has not exactly one simple factor
Weyl groupL1602
is_member
is_member = ([WeylElt]->(WeylElt->bool))isnt_member
isnt_member = ([WeylElt]->(WeylElt->bool))id_W
id_W (RootDatum rd) = WeylEltW_gen
W_gen (RootDatum rd, int s)W_gens
W_gens (RootDatum rd) = [WeylElt]* 2 overloads
* (WeylElt w,mat theta) = mat* (mat theta,WeylElt w) = matalso in this file at line 352, line 522, line 525, line 550, line 557, line 789, line 980, line 981, line 995, line 1696, line 1697; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
for_dual_datum
for_dual_datum(WeylElt w) = WeylEltmorphism W(rd)->W(dual(rd)), involves transpose inverse on matrices
product
product (RootDatum rd, [WeylElt] L) = WeylEltproduct of Weyl group elements respects Left (index 0) and Right; compute LtR
order
order (WeylElt !w) = intalso in this file at line 967; also defined in all_finite_order.at
rho_diff
rho_diff (WeylElt w) = vecrho_check_diff
rho_check_diff (WeylElt w) = vecpositive_to_negative
positive_to_negative (WeylElt w) = [int]the set of posroots that w maps to negative roots, as a bitset
posroot_sum
posroot_sum (RootDatum rd,[int] select) = vecposcoroot_sum
poscoroot_sum (RootDatum rd,[int] select) = vecfrom_dominant 4 overloads
from_dominant (RootDatum rd, [int] S, vec v) = (WeylElt,vec)make dominant for a Levi subsystem, and find a witness for returning
from_dominant (RootDatum rd, [int] S, ratvec rv) = (WeylElt,ratvec)from_dominant (vec v, RootDatum rd, [int] S) = (vec,WeylElt)from_dominant (ratvec rv, RootDatum rd, [int] S) = (ratvec,WeylElt)chamber
chamber ((RootDatum,vec) rd_lambda) = WeylEltalso in this file at line 1661, line 1666, line 1670, line 1700, line 1705
dominant
dominant ((RootDatum,vec) rd_lambda) = vecalso in this file at line 1663, line 1668, line 1672, line 1701, line 1706
chamber
chamber ((RootDatum,[int],vec) triple) = WeylEltalso in this file at line 1657, line 1666, line 1670, line 1700, line 1705
dominant
dominant ((RootDatum,[int],vec) triple) = vecalso in this file at line 1659, line 1668, line 1672, line 1701, line 1706
chamber
chamber ((vec,RootDatum) lambda_rd) = WeylEltalso in this file at line 1657, line 1661, line 1670, line 1700, line 1705
dominant
dominant ((vec,RootDatum) lambda_rd) = vecalso in this file at line 1659, line 1663, line 1672, line 1701, line 1706
chamber
chamber ((vec,RootDatum,[int]) triple) = WeylEltalso in this file at line 1657, line 1661, line 1666, line 1700, line 1705
dominant
dominant ((vec,RootDatum,[int]) triple) = vecalso in this file at line 1659, line 1663, line 1668, line 1701, line 1706
permuted_root
permuted_root (WeylElt w, int alpha) = intpermuted_coroot
permuted_coroot (int alpha,WeylElt w) = intfrom_dominant_root
from_dominant_root(RootDatum rd, [int]S, int alpha) = (WeylElt,int)w0
w0 (RootDatum rd)* 2 overloads
* (WeylElt w, ratvec gamma) = ratvec* (ratvec gamma, WeylElt w) = ratvecalso in this file at line 352, line 522, line 525, line 550, line 557, line 789, line 980, line 981, line 995, line 1611, line 1612; also defined in extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at
from_dominant
from_dominant (RootDatum rd, ratvec gamma) = (WeylElt,ratvec)also in this file at line 1637, line 1644, line 1647, line 1654, line 1703
chamber
chamber (RootDatum rd, ratvec gamma) = WeylEltalso in this file at line 1657, line 1661, line 1666, line 1670, line 1705
dominant
dominant ((RootDatum,ratvec) rd_gamma) = ratvecalso in this file at line 1659, line 1663, line 1668, line 1672, line 1706
from_dominant
from_dominant (ratvec gamma,RootDatum rd) = (ratvec,WeylElt)also in this file at line 1637, line 1644, line 1647, line 1654, line 1698
chamber
chamber (ratvec gamma,RootDatum rd) = WeylEltalso in this file at line 1657, line 1661, line 1666, line 1670, line 1700
dominant
dominant ((ratvec,RootDatum) gamma_rd) = ratvecalso in this file at line 1659, line 1663, line 1668, line 1672, line 1701
inverse
inverse (WeylElt w) = WeylEltalso in this file at line 843; also defined in combinatorics.at
^
^ = (WeylElt,int->WeylElt)also in this file at line 140, line 771, line 772, line 776, line 827, line 1085
matrix
matrix (WeylElt w) = matalso in this file at line 736
W_elt
W_elt (RootDatum rd, mat M) = WeylEltW_elt_of_reflection 2 overloads
W_elt_of_reflection(RootDatum rd,int root) = WeylEltW_elt_of_reflection(RootDatum rd,vec alpha) = WeylEltconvert_to
convert_to (RootDatum rd, WeylElt w) = WeylElt|convert_to| serves when |rd| differs from |w.root_datum|, but nonetheless |W_elt(rd,matrix(w)| is defined; it computes that value more efficiently
Inner classesL1732
involution
involution (LieType lt, string ict) = matinner_class
inner_class (RootDatum rd, string ict) = InnerClassget inner class of G symbolically from root datum and inner class type Use the complex reductive group given by the root datum, but compute the distinguished involution from the string describing it symbolically.
also in this file at line 1750, line 1883, line 2069, line 2157
construct inner class from explicit involutionL1748
inner_class
inner_class (LieType lt, [ratvec] gens, string ict) = InnerClassalso in this file at line 1740, line 1883, line 2069, line 2157
twist
twist (InnerClass ic) = vecautomorphism of Dynkin diagram, mapped
dual_integral
dual_integral (InnerClass ic, ratvec gamma) = InnerClassintegrality inner class (dual side) defined by inf. character and involution
big_block
big_block (InnerClass ic) = BlockCartan classesL1767
Cartan_classes
Cartan_classes (InnerClass ic) = [CartanClass]print_Cartan_info
print_Cartan_info (CartanClass cc) = voidfundamental_Cartan
fundamental_Cartan (InnerClass ic) = CartanClassmost_split_Cartan
most_split_Cartan (InnerClass ic) = CartanClassimplicitly fundamental_Cartan(RealForm f) = fundamental_Cartan(InnerClass:f)
also most_split_Cartan@RealForm is built-in, but is not that of inner classL1795
compact_rank
compact_rank (CartanClass cc) = intin the following, Complex factors count as half-compact, half-split
also in this file at line 1803
split_rank
split_rank (CartanClass cc) = intalso in this file at line 1804
compact_rank
compact_rank (InnerClass ic) = intalso in this file at line 1798
split_rank
split_rank (RealForm G) = intalso in this file at line 1800
is_equal_rank
is_equal_rank (InnerClass ic) = boolwhether distinguished_involution=1
implicitly is_equal_rank (RealForm G) = bool: is_equal_rank(InnerClass:G)L1808
is_split 2 overloads
is_split (RealForm G) = boolwhether most split Cartan has theta = -1
is_split (InnerClass ic) = boolavoid implicit conversion RealForm->InnerClass: would give wrong answer
=
= (CartanClass H,CartanClass J) = boolequality of Cartan classes
also in this file at line 348, line 764; also defined in combinatorics.at, modules.at
compare their twisted involutionsL1818
number
number(CartanClass H,RealForm G) = intnumber of the Cartan class H in the list of those for the real form G
also in this file at line 1881
Real formsL1824
form_name
form_name (RealForm f) = stringreal_forms
real_forms (InnerClass ic) = [RealForm]dual_real_forms 2 overloads
dual_real_forms (InnerClass ic) = [RealForm]dual_real_forms (RealForm G) = [RealForm]is_quasisplit
is_quasisplit (RealForm G) = boolis_quasicompact
is_quasicompact (RealForm G) = boolsplit_form 2 overloads
split_form (RootDatum r) = RealFormsplit_form (LieType t) = RealFormsplit form of a Lie type is taken simply connected (times a split torus)
quasicompact_form
quasicompact_form (InnerClass ic) = RealFormquasisplit_form@InnerClass is built-inL1846
compact_form
compact_form (RootDatum r) = RealFormcompact_torus
compact_torus (int rank) = RealFormsplit_torus
split_torus (int rank) = RealFormreal_complex_torus
real_complex_torus (int complex_rank) = RealFormtorus
torus(CartanClass C) = RealFormalso defined in nilpotent_centralizer.at
is_compatible
is_compatible (RealForm f, RealForm g) = boolis_compact
is_compact (RealForm G) = boolreal form 0 in equal rank inner class
KGB elementsL1877
real_form
real_form (KGBElt x)also defined in weak_packets_precomputed_cell_traces.at
#
# (KGBElt x)also in this file at line 130, line 135, line 767, line 768; also defined in W_reps.at
number
number = #@KGBEltalso in this file at line 1821
root_datum
root_datum (KGBElt x) = RootDatumalso in this file at line 1176, line 1182, line 1208, line 1211, line 1215, line 2068, line 2101, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
inner_class
inner_class (KGBElt x) = InnerClassalso in this file at line 1740, line 1750, line 2069, line 2157
KGB
KGB (RealForm rf) = [KGBElt]also in this file at line 1892
in_distinguished_fiber
in_distinguished_fiber (KGBElt x) = booldistinguished_fiber
distinguished_fiber (RealForm G) = [KGBElt]KGB
KGB (CartanClass H,RealForm G) = [KGBElt]all KGB elements of G mapping to its Cartan class H
also in this file at line 1885
KGB_elt
KGB_elt ((InnerClass, mat, ratvec) (,theta,v):all) = KGBEltfind KGB element within rfL1897
KGB_elt 2 overloads
KGB_elt (RootDatum rd, mat theta, ratvec v) = KGBEltKGB_elt (InnerClass ic, KGBElt x) = KGBElttransfer to other inner class (or real form) that shares coordinates, this can be used for instance to embed the KGB set of a Levi subgroup
also in this file at line 1895
Cartan_class
Cartan_class (InnerClass ic, mat theta) = CartanClassBruhat_order
Bruhat_order (RealForm G) = (KGBElt,KGBElt->bool)use the following as follows: |set <= = Bruhat_order(G)|
cross 2 overloads
cross (WeylElt w,KGBElt x) = KGBEltcross (KGBElt x,WeylElt w) = KGBEltalso in this file at line 1923, line 2220, line 2223; also defined in coherent_irreducible.at
status
status (vec alpha,KGBElt x) = intalso in this file at line 2273, line 2281; also defined in modules.at
cross
cross (vec alpha,KGBElt x) = KGBEltalso in this file at line 1914, line 1917, line 2220, line 2223; also defined in coherent_irreducible.at
Cayley
Cayley (vec alpha,KGBElt x) = KGBEltW_cross
W_cross (WeylElt w,KGBElt x) = KGBEltKGB_status_text
KGB_status_text (int i) = stringstatus_text 2 overloads
status_text ((int,KGBElt)p) = stringstatus_text ((vec,KGBElt)p) = stringstatus_texts
status_texts (KGBElt x) = [string]also in this file at line 2290
is_complex
is_complex ((int,KGBElt)p)also in this file at line 1377, line 1953, line 2022; also defined in complex.at, sub_cells.at
is_real
is_real ((int,KGBElt)p)is_imaginary
is_imaginary ((int,KGBElt)p)is_noncompact
is_noncompact ((int,KGBElt)p)also in this file at line 1989
is_compact
is_compact ((int,KGBElt)p)is_descent
is_descent ((int,KGBElt)p)is_ascent
is_ascent ((int,KGBElt)p)is_strict_descent
is_strict_descent ((int,KGBElt)p)is_descent(p) and not is_compact(p)
status of general roots for a KGBElt (which here just represents its fiber)L1949
is_imaginary
is_imaginary (KGBElt x) = (vec->bool)is_real
is_real (KGBElt x) = (vec->bool)is_complex
is_complex (KGBElt x) = (vec->bool)also in this file at line 1377, line 1939, line 2022; also defined in complex.at, sub_cells.at
imaginary_posroots
imaginary_posroots (KGBElt x) = matalso in this file at line 1393
real_posroots
real_posroots (KGBElt x) = matalso in this file at line 1395
imaginary_poscoroots
imaginary_poscoroots (KGBElt x) = matalso in this file at line 1397
real_poscoroots
real_poscoroots (KGBElt x) = matalso in this file at line 1399
imaginary_sys
imaginary_sys (KGBElt x) = (mat,mat)also in this file at line 1401
real_sys
real_sys (KGBElt x) = (mat,mat)also in this file at line 1403
rho_i
rho_i (KGBElt x) = ratvecalso in this file at line 1976
rho_r
rho_r (KGBElt x) = ratvecalso in this file at line 1978
rho_check_i
rho_check_i (KGBElt x) = ratvecalso in this file at line 1980
rho_check_r
rho_check_r (KGBElt x) = ratvecalso in this file at line 1982
rho_i
rho_i ((RootDatum,mat) rd_theta) = ratvecalso in this file at line 1971
rho_r
rho_r ((RootDatum,mat) rd_theta) = ratvecalso in this file at line 1972
rho_check_i
rho_check_i ((RootDatum,mat) rd_theta) = ratvecalso in this file at line 1973
rho_check_r
rho_check_r ((RootDatum,mat) rd_theta) = ratvecalso in this file at line 1974
is_compact
is_compact (KGBElt x) = (vec->bool)compact/noncompact status for a given KGBElt of general imaginary roots
is_noncompact
is_noncompact (KGBElt x) = (vec->bool)also in this file at line 1942
is_compact_imaginary
is_compact_imaginary (KGBElt x) = (vec->bool)for roots not known to be imaginary, use these functions instead
is_noncompact_imaginary
is_noncompact_imaginary (KGBElt x) = (vec->bool)compact_posroots
compact_posroots (KGBElt x) = matnoncompact_posroots
noncompact_posroots (KGBElt x) = matdimension
dimension (KGBElt x) = intdimension as $K$-orbit on $G/B$
also in this file at line 1169
codimension
codimension(KGBElt x) = intcodimension as $K$-orbit on $G/B$
also in this file at line 2171
rho_ci
rho_ci (KGBElt x) = ratvecrho_nci
rho_nci (KGBElt x) = ratvecis_imaginary
is_imaginary (vec v,KGBElt x) = boolis_real
is_real (vec v,KGBElt x) = boolis_complex
is_complex (vec v,KGBElt x) = boolalso in this file at line 1377, line 1939, line 1953; also defined in complex.at, sub_cells.at
is_compact_imaginary
is_compact_imaginary (vec v,KGBElt x) = boolis_noncompact_imaginary
is_noncompact_imaginary (vec v,KGBElt x) = boolprint_KGB
print_KGB (KGBElt x) = voidno_Cminus_roots
no_Cminus_roots (KGBElt x) = boolno_Cplus_roots
no_Cplus_roots (KGBElt x) = boolBlocksL2036
blocks 2 overloads
blocks (RealForm rf) = [Block]blocks (InnerClass ic) = [Block]raw_KL
raw_KL ((RealForm,RealForm) p) = (mat,[vec],vec)dual_KL
dual_KL ((RealForm,RealForm) p) = (mat,[vec],vec)print_block
print_block ((RealForm,RealForm) p) = voidprint_blocku
print_blocku ((RealForm,RealForm) p) = voidprint_blockd
print_blockd ((RealForm,RealForm) p) = voidprint_KL_basis
print_KL_basis ((RealForm,RealForm) p) = voidprint_prim_KL
print_prim_KL ((RealForm,RealForm) p) = voidprint_KL_list
print_KL_list ((RealForm,RealForm) p) = voidprint_W_cells
print_W_cells ((RealForm,RealForm) p) = voidprint_W_graph
print_W_graph ((RealForm,RealForm) p) = voidK-typesL2066
root_datum
root_datum (KType t) = RootDatumalso in this file at line 1176, line 1182, line 1208, line 1211, line 1215, line 1882, line 2101, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
inner_class
inner_class (KType t) = InnerClassalso in this file at line 1740, line 1750, line 1883, line 2157
x
x (KType t) = KGBEltalso in this file at line 2162
lambda_minus_rho
lambda_minus_rho (KType t) = vecalso in this file at line 2163
lambda_rho
lambda_rho = lambda_minus_rho@KTypeshorter name allowed
lambda
lambda (KType t) = ratvecalso in this file at line 2164
theta_plus_1_lambda
theta_plus_1_lambda (KType t) = vecalso in this file at line 2166
K_type_lambda
K_type_lambda (KGBElt x, ratvec lambda) = KTypethis constructor could be called |K_type|, but that would be confusing
Cartan_class
Cartan_class (KType t) = CartanClassnon_dominant_simples
non_dominant_simples (KType t) = [int]list or poscoroot indices that exhibit non-dominance of the parameter
also in this file at line 2180
is_noncompact_imaginary
is_noncompact_imaginary (int i,KType t) = boolquestions about status of x component with respect to full datum simple root
is_compact_imaginary
is_compact_imaginary (int i,KType t) = boolinvolution
involution (KType t) = matPolynomials in K-typesL2099
root_datum
root_datum (KTypePol P) = RootDatumalso in this file at line 1176, line 1182, line 1208, line 1211, line 1215, line 1882, line 2068, line 2156, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
K_type_formula
K_type_formula (KType t) = KTypePolno cutoff
null_module 2 overloads
null_module (KType t) = KTypePolavoid useless conversion to KTypePol
null_module (KTypePol P) = KTypePolbuilt-in does this efficiently
null_K_module 2 overloads
null_K_module = null_module@KTypeallow more explicit name
null_K_module = null_module@KTypePolallow more explicit name
-
-(KTypePol P) = KTypePolalso in this file at line 790, line 2119, line 2122, line 2133, line 2392, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
first_K_type
first_K_type (KTypePol P) = KTypelast_K_type
last_K_type (KTypePol P) = KTypes_to_1
s_to_1 (KTypePol P) = KTypePols_to_minus_1
s_to_minus_1 (KTypePol P) = KTypePol-
- (KTypePol a, (Split,KType) (c,p)) = KTypePolcounterpart to built-in +@(KTypePol,(Split,KType))
also in this file at line 790, line 2110, line 2122, line 2133, line 2392, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
+
+ (KTypePol P, [KType] ps) = KTypePolalso in this file at line 549, line 559, line 560, line 562, line 2132, line 2406, line 2417; also defined in extParamPol.at, modules.at
-
- (KTypePol P, [KType] ps) = KTypePolalso in this file at line 790, line 2110, line 2119, line 2133, line 2392, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
sum
sum = (RealForm,[KTypePol]->KTypePol)|KTypePol| summation by divide and conquer to privilege balanced additions
also in this file at line 355, line 518, line 650, line 794, line 800, line 915, line 987, line 1098, line 2410; also defined in sommers.at
+
+ (KTypePol P,[KTypePol] Ps) = KTypePolalso in this file at line 549, line 559, line 560, line 562, line 2121, line 2406, line 2417; also defined in extParamPol.at, modules.at
-
- (KTypePol P,[KTypePol] Ps) = KTypePolalso in this file at line 790, line 2110, line 2119, line 2122, line 2392, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
map 4 overloads
map ((KType->KType)f, KTypePol P) = KTypePolmap ((Param->KType)f, ParamPol P) = KTypePolmap ((KType->KTypePol)f, KTypePol P) = KTypePolmap ((Param->KTypePol)f, ParamPol P) = KTypePolalso in this file at line 607, line 2421, line 2424; also defined in hermitian.at
half
half (KTypePol P) = KTypePoldivide_by
divide_by (int n, KTypePol P) = KTypePolinverse of multiplication *@(int,KTypePol); don't confuse with scaling
also in this file at line 2429
as_pol 2 overloads
as_pol (KType p) = KTypePolfor making implicit conversion explicit
as_pol (RealForm G, [KType] ps) = KTypePolalso in this file at line 2431, line 2432; also defined in modules.at
DON'T define as_pol ([KType] pp): cannot be correctly defined when #pp=0L2152
Module parametersL2154
root_datum
root_datum (Param p) = RootDatumalso in this file at line 1176, line 1182, line 1208, line 1211, line 1215, line 1882, line 2068, line 2101, line 2389; also defined in W_reps.at, K_Nilpotent.at, sommers.at
inner_class
inner_class (Param p) = InnerClassalso in this file at line 1740, line 1750, line 1883, line 2069
null_module
null_module (Param p) = ParamPolavoid useless conversion to ParamPol
x
x (Param p) = KGBEltalso in this file at line 2071
lambda_minus_rho
lambda_minus_rho (Param p) = vecalso in this file at line 2072
lambda
lambda (Param p) = ratvecalso in this file at line 2074
infinitesimal_character
infinitesimal_character (Param p) = ratvecalso in this file at line 2470; also defined in modules.at, sommers.at
theta_plus_1_lambda
theta_plus_1_lambda (Param p) = vecalso in this file at line 2075
d_lambda
d_lambda (Param p) = ratvecnu
nu (Param p) = ratvecCartan_class
Cartan_class (Param p) = CartanClasscodimension
codimension (Param p) = intalso in this file at line 2014
integrality_datum
integrality_datum (Param p) = RootDatumroot datum whose coroots are those integral on p.infinitesimal_character
integrality_rank
integrality_rank (Param p) = intnon_dominant_simples
non_dominant_simples (Param p) = [int]list or poscoroot indices that exhibit non-dominance of the parameter
also in this file at line 2085
non_integrally_dominant_simples
non_integrally_dominant_simples (Param p) = [vec]list of integrally simple poscoroots that exhibit integral-non-dominance
is_integrally_dominant
is_integrally_dominant (Param p) = boolwhether gamma integrally dominant
also in this file at line 1426
is_noncompact_imaginary
is_noncompact_imaginary (int i,Param p) = boolquestions about status of x component with respect to full datum simple root
is_compact_imaginary
is_compact_imaginary (int i,Param p) = boolinvolution
involution (Param p) = matis_regular
is_regular (Param p) = boolis_strongly_regular
is_strongly_regular (Param p) = boolTest whether (the infinitesimal character of) a parameter is strongly regular.
survives
survives = (Param->bool)whether irreducible rpn survives translation functor from regular inf.char.
defined to mean exactly that
x_open
x_open (RealForm G) = KGBElttrivial
trivial (RealForm G) = Paramparameter for the trivial representation
cross 2 overloads
cross (WeylElt w,Param p) = Paramcross (Param p,WeylElt w) = Paramalso in this file at line 1914, line 1917, line 1923; also defined in coherent_irreducible.at
K_type_pol
K_type_pol (Param p) = KTypePolrestrict, implicitly convert
param_pol
param_pol (KType t) = ParamPolalso in this file at line 2394
parameter 2 overloads
parameter (RealForm G,int x,ratvec lambda,ratvec nu) = Paramparameter(G,x,lambda,nu)=param(KGB(G,x),lambda-rho(G),nu), so you can enter lambda without the rho shift; lambda may have denominator 2 or be a vec
parameter (KGBElt x,ratvec lambda,ratvec nu) = Paramalso defined in L_packet.at
parameter_gamma
parameter_gamma (KGBElt x, ratvec lambda, ratvec gamma) = Paramset parameter ensuring (upon success) that the infinitesimal char. is |gamma|; achieve this by ignoring |(1+theta)*lambda|, replace it by |(1+theta)*gamma|
singular_block
singular_block (Param p) = ([Param],int)variation of built-in |block@Param| that weeds out non-starred block elts
block_of
block_of (Param p) = [Param]get just the parameters from a block, just a shortcut to: (params,)=block(p)
singular_block_of
singular_block_of (Param p) = [Param]status of parameter with respect to integrality generator s, or root alphaL2255
imaginary_type
imaginary_type (int s, Param p) = intalso in this file at line 2260
real_type
real_type (int s,Param p) = intalso in this file at line 2262
imaginary_type
imaginary_type (vec alpha, Param p) = intalso in this file at line 2257
real_type
real_type (vec alpha, Param p) = intalso in this file at line 2258
is_nonparity
is_nonparity (int s,Param p) = boolalso in this file at line 2268
is_parity
is_parity (int s,Param p) = boolalso in this file at line 2270
is_nonparity
is_nonparity (vec alpha,Param p) = boolalso in this file at line 2265
is_parity
is_parity (vec alpha,Param p) = boolalso in this file at line 2266
status 2 overloads
status (vec alpha,Param p) = intenum: C-, ic, r1, r2, C+, rn, i1, i2
status (int s,Param p) = intthis is NOT related to status(s,x(p))
also in this file at line 1921; also defined in modules.at
block_status_text
block_status_text (int i) = stringstatus_text
status_text (int s,Param p) = stringstatus_texts
status_texts (Param p) = [string]also in this file at line 1936
status_text
status_text ((vec,Param) ap) = stringparity_poscoroots
parity_poscoroots (Param p) = matset of positive real parity coroots
nonparity_poscoroots
nonparity_poscoroots (Param p) = matpositive real nonparity coroots
is_descent
is_descent (int s,Param p) = booltau_bitset
tau_bitset (Param p) = (int,(int->bool))tau
tau (Param p) = [int]also defined in modules.at, sub_cells.at
tau_complement
tau_complement (Param p) = [int]also defined in modules.at
is_descent
is_descent ((vec,Param) ap) = boolis_ascent 2 overloads
is_ascent ((int,Param) ip) = boolis_ascent ((vec,Param) ap) = boolalso in this file at line 1945
orientation_nr_term
orientation_nr_term = (int,Param->Split)(moved from hermitian.at) orientation_number_term(orientation_nr(p),q) =
s^{[\ell_0(p)-\ell_0(q)]/2} which should be defined and gives 1 or s
Extended blocksL2324
extended_status_texts
extended_status_texts = [string]print_extended_block
print_extended_block = (Param,mat->)Polynomials in module parametersL2387
root_datum
root_datum (ParamPol P) = RootDatumalso in this file at line 1176, line 1182, line 1208, line 1211, line 1215, line 1882, line 2068, line 2101, line 2156; also defined in W_reps.at, K_Nilpotent.at, sommers.at
null_module
null_module (ParamPol P) = ParamPolbuilt-in does this efficiently
-
-(ParamPol P) = ParamPolalso in this file at line 790, line 2110, line 2119, line 2122, line 2133, line 2404, line 2407, line 2418; also defined in extParamPol.at, modules.at
param_pol
param_pol (KTypePol P) = ParamPolalso in this file at line 2228
first_param
first_param (ParamPol P) = Paramlast_param
last_param (ParamPol P) = Params_to_1
s_to_1 (ParamPol P) = ParamPols_to_minus_1
s_to_minus_1 (ParamPol P) = ParamPol-
- (ParamPol a, (Split,Param) (c,p)) = ParamPolcounterpart to built-in +@(ParamPol,(Split,Param))
also in this file at line 790, line 2110, line 2119, line 2122, line 2133, line 2392, line 2407, line 2418; also defined in extParamPol.at, modules.at
+
+ (ParamPol P, [Param] ps) = ParamPolalso in this file at line 549, line 559, line 560, line 562, line 2121, line 2132, line 2417; also defined in extParamPol.at, modules.at
-
- (ParamPol P, [Param] ps) = ParamPolalso in this file at line 790, line 2110, line 2119, line 2122, line 2133, line 2392, line 2404, line 2418; also defined in extParamPol.at, modules.at
sum
sum = (RealForm,[ParamPol]->ParamPol)|ParamPol| summation by divide and conquer to privilege balanced additions
also in this file at line 355, line 518, line 650, line 794, line 800, line 915, line 987, line 1098, line 2125; also defined in sommers.at
+
+ (ParamPol P,[ParamPol] Ps) = ParamPolalso in this file at line 549, line 559, line 560, line 562, line 2121, line 2132, line 2406; also defined in extParamPol.at, modules.at
-
- (ParamPol P,[ParamPol] Ps) = ParamPolalso in this file at line 790, line 2110, line 2119, line 2122, line 2133, line 2392, line 2404, line 2407; also defined in extParamPol.at, modules.at
map 2 overloads
map ((Param->Param)f, ParamPol P) = ParamPolmap ((Param->ParamPol)f, ParamPol P) = ParamPolalso in this file at line 607, line 2135, line 2137, line 2140, line 2142; also defined in hermitian.at
half
half (ParamPol P) = ParamPoldivide_by
divide_by (int n, ParamPol P) = ParamPolinverse of multiplication *@(int,ParamPol); don't confuse with scaling
also in this file at line 2147
as_pol 2 overloads
as_pol (Param p) = ParamPolfor making implicit conversion explicit
as_pol (RealForm G, [Param] ps) = ParamPolalso in this file at line 2149, line 2150; also defined in modules.at
DON'T define as_pol ([Param] pp): cannot be correctly defined when #pp=0L2434
branch 2 overloads
branch (KTypePol P, KType t) = Splitbranch to get only the coefficient of a specific K-type
branch (ParamPol P, KType t) = Splitalso defined in modules.at
full_deform
full_deform (ParamPol P) = KTypePolalso defined in extParamPol.at
deform_to_height
deform_to_height (ParamPol P, int height) = KTypePolpol_format 2 overloads
pol_format (KTypePol P) = stringnice output of KTypePol and ParamPol: split_format the coefficients
pol_format (ParamPol P) = stringinfinitesimal_character
infinitesimal_character(ParamPol P) = ratvecfind what should be unique infinitesimal character shared by all terms
also in this file at line 2165; also defined in modules.at, sommers.at
height_split 2 overloads
height_split ((KTypePol,int)(P,):pair) = (KTypePol,KTypePol)split up a KTypePol or ParamPol into terms below a given height and others
height_split ((ParamPol,int)(P,):pair) = (ParamPol,ParamPol)separate_by_infinitesimal_character
separate_by_infinitesimal_character (ParamPol P) = [(ratvec,ParamPol)]more generally, groups terms into different ParamPol, by value of gamma
is_pure_1
is_pure_1 ([Split] L) = boolwhether all coefficients are integer respectively integer multiples of |s|
is_pure_s
is_pure_s ([Split] L) = boolis_pure
is_pure ([Split] L) = boolis_pure_1
is_pure_1 (KTypePol P) = boola module is considered pure if either all coefficients are integer of if all coefficients are integer multiples of s; stronger than all coefficients pure
is_pure
is_pure (KTypePol P) = boolis_pure_1
is_pure_1 (ParamPol P) = boolis_pure
is_pure (ParamPol P) = boolpurity
purity (KTypePol P) = (int,int,int)report number of integer, purely s, and mixed terms
monomials 2 overloads
monomials (KTypePol P) = [KType]moved these earlier to use in no_reps
for user convenience; a ParamPol is an associative array ParamPol->Split so selecting its monomials (Param values) by position is not reliable, but allowing so is useful in user sessions to pick terms from a computed result
monomials (ParamPol P) = [Param]also in this file at line 2671, line 2672, line 2678, line 2686
monomial 2 overloads
monomial (KTypePol P,int i) = KTypemonomial (ParamPol P,int i) = ParamRapid look-up in certain fixed structuresL2528
no_reps 2 overloads
no_reps([vec] L) = [vec]remove repetitions from a list of vecs, assumed all same size
no_reps([ratvec] L) = [ratvec]remove repetitions from a list of ratvecs, assumed all same size
index_in 3 overloads
index_in = ([vec]->(vec->int))index_in ([ratvec] L) = (ratvec->int)equal size vectors
index_in ([Param] L) = (Param->int)an efficiency hack:
lookup
lookup (Param p, [Param] block) = intalso defined in hodge_K_type_formula.at
MiscellaneousL2591
Miscellaneous find functionsL2593
find index of item in list, or -1 if not found; |first| does thisL2595
present_in
find
also in this file at line 2604, line 2605, line 2606, line 2607, line 2608, line 2609; also defined in tits_centralizer.at
find_in
delete
also in this file at line 2611, line 2612; also defined in hodge_K_type_formula.at
find 6 overloads
find = find(=@(int,int))find = find(=@((int,int),(int,int)))find = find(=@(vec,vec))find = find(=@(ratvec,ratvec))find = find(=@(KGBElt,KGBElt))find = find(=@(Param,Param))also in this file at line 2599; also defined in tits_centralizer.at
delete 2 overloads
delete (vec v, int i) = vecdelete (mat M, int j) = matalso in this file at line 2601; also defined in hodge_K_type_formula.at
No version for finding [int] due to potential ambiguity with vec version. Note that |find(L,x)| has alternative |first(for y in L do x=y od)| which can be used for all types having =, without separate definition of |find|L2614
in_string_list
in_string_list (string s,[string] S) = boolpositive_imaginary_roots_and_coroots 2 overloads
positive_imaginary_roots_and_coroots = imaginary_sys@(RootDatum,mat)positive_imaginary_roots_and_coroots = imaginary_sys@KGBEltimaginary_roots_and_coroots 2 overloads
imaginary_roots_and_coroots ((RootDatum, mat)p) = (mat,mat)imaginary_roots_and_coroots (KGBElt x) = (mat,mat)positive_real_roots_and_coroots 2 overloads
positive_real_roots_and_coroots = real_sys@(RootDatum,mat)positive_real_roots_and_coroots = real_sys@KGBEltreal_roots_and_coroots 2 overloads
real_roots_and_coroots ((RootDatum, mat)p) = (mat,mat)real_roots_and_coroots (KGBElt x) = (mat,mat)complex_posroots 2 overloads
complex_posroots (RootDatum rd,mat theta) = matcomplex_posroots (KGBElt x) = matpad
pad (string s,int width) = stringpad string with blanks (for lining up columns in tables)
also in this file at line 729
min_height 2 overloads
min_height (KTypePol P) = Maybe<int>min_height (ParamPol P) = Maybe<int>max_height 2 overloads
max_height (KTypePol P) = Maybe<int>max_height (ParamPol P) = Maybe<int>height 2 overloads
height (KTypePol P) = intheight of polynomial is that of highest term, or -1 for an empty polynomial
height (ParamPol P) = intmin_height
min_height([Param] params) = [Param]keep only minimal height terms
monomials 2 overloads
monomials (KTypePol P) = [KType]for user convenience; a ParamPol is an associative array ParamPol->Split so selecting its monomials (Param values) by position is not reliable, but allowing so is useful in user sessions to pick terms from a computed result
monomials (ParamPol P) = [Param]also in this file at line 2522, line 2523, line 2678, line 2686
monomial 2 overloads
monomial (KTypePol P,int i) = KTypemonomial (ParamPol P,int i) = Parammonomials 2 overloads
monomials([KTypePol] list) = [KType]Convert a list of KTypePol into the list of distinct parameters occurring; careful: don't let terms cancel!
monomials([ParamPol] list) = [Param]also in this file at line 2522, line 2523, line 2671, line 2672
min_height
min_height([Param] params) = [Param]keep only minimal height terms
assert 3 overloads
assert (bool b,(->string) report) = voidfor script backward compatibility, but we should wean off using these:
assert (bool b) = voiddefault message
assert (bool b,string message) = voidGenerated from atlas-scripts at commit 7e1b958 (2026-09-17).