Elements

Construction of Elements

Unless otherwise stated, the operations in this section apply to fp-abelian groups and generic abelian groups.

A ! [a₁, ... ,aₙ]: GrpAb, [RngIntElt] -> GrpAbElt
A ! [a₁, ... ,aₙ]: GrpAbGen, [RngIntElt] -> GrpAbGenElt

Given an abelian group \(A\) with generators \(e_1, \ldots, e_r\) and a sequence \(Q = [a_1, \cdots, a_r]\) of integers, construct the element \(a_1 e_1 + \cdots + a_r e_r\) of \(A\).

A ! e: GrpAbGen, Elt -> GrpAbGenElt

Given a generic abelian group \(A\) and an element \(e\) of the domain over which it is defined, return \(e\) as an element of \(A\). If \(A\) is a proper subset of its underlying domain, then \(e\) must be a linear combination of the generators (which may be user-supplied) of \(A\).

A ! g: GrpAbGen, GrpAbGenElt -> GrpAbGenElt

Given a generic abelian group \(A\) and an element \(g\) of the underlying set \(X\) of \(A\), return \(g\) as an element of \(A\).

A ! n: GrpAb, RngIntElt -> GrpAbElt

Given an abelian group \(A\) with exactly one generator \(x\), construct the element \(n x\).

Random(A): GrpAbGen -> GrpAbGenElt

Given either a finite fp-abelian group or a generic abelian group \(A\), return a random element of \(A\).

Identity(A): GrpAb -> GrpAbElt
Id(A): GrpAb -> GrpAbElt
A ! 0: GrpAb, RngIntElt -> GrpAbElt

Construct the identity element (empty word) for the abelian group \(A\).

Let \(A\) be a generic abelian group defined in the universe \(U\) of \(A\). If \(g\) is an element of \(A\), then \(U!g\) is an element of \(U\).

Representation of an Element

An element \(g\) of an abelian group \(A\) can be represented as a linear combination with respect to a given generating sequence. The coefficients appearing in this linear combination provide an alternative representation for \(g\). If \(A\) is a fp-group, the generating set will be the one on which the group was defined. In the case of a generic group, the generating set can either be that obtained when constructing a presentation for \(A\) or a user-supplied generating set.

Representation(g): GrpAbGenElt -> [RngIntElt]
ElementToSequence(g): GrpAbGenElt -> [RngIntElt]
Eltseq(g): GrpAbGenElt -> [RngIntElt]

Let \(A\) be an abelian group with generating set \(e_1, \ldots, e_n\) and suppose \(g\) is an element of \(A\), where \(g = a_1 e_1 + \ldots + a_n e_n\). These functions return the sequence \(Q\) of \(n\) integers defined by \(Q[i] = {a_i}\), for \(i = 1,\ldots,n\). Moreover, each \(a_i\), \(i = 1,\ldots,n\), is the integer residue modulus the order of the \(i\)th generator.

UserRepresentation(g): GrpAbGenElt -> [RngIntElt]

Let \(A\) be a generic abelian group with a user-supplied set of generators \(u_1, \ldots, u_n\) and suppose \(g\) is an element of \(A\), where \(g = a_1 u_1 + \ldots + a_n u_n\). This function returns the sequence \(Q\) of \(n\) integers defined by \(Q[i] = {a_i}\), for \(i = 1,\ldots,n\). Moreover, each \(a_i\), \(i = 1,\ldots,n\), is the integer residue modulus the order of the \(i\)th generator.

Representation(S, g): SeqEnum, GrpAbGenElt -> [RngIntElt], RngIntElt

Let \(A\) be a generic abelian group and let \(S = [s_1, \dots, s_m]\) be any sequence of elements of \(A\). Assume \(g\) is an element of \(A\) such that \(b g = a_1 s_1 + \ldots + a_m s_m\). This function returns as its first value the sequence \(Q\) of \(m\) integers defined by \(Q[i] = {a_i}\), for \(i = 1,\ldots,m\). The second value returned is the coefficient \(b\) of \(g\). Note that \(b\) might not be 1.

Example: Creating and Representing Elements (ex-f86c65)

Run in calculator (opens in a new tab)

We use the quadratic forms example considered above to illustrate these functions.

> Generators(QF);
[ <2,2,500001>, <206,-102,4867> ]
> g := QF ! [5, 6];
> g;
<837,-766,1370>
> Representation(g);
[ 1, 6 ]
>
> g := Random(QF);
> Representation(g);
[ 1, 270 ]
>
> UserRepresentation(g);
[ 377, 0, 515, 0, 0, 0, 0, 0, 0, 0 ]
>
> S := [];
> for i in [1..3] do
>     d := Random(QF);
>     Include(~S, d);
> end for;
> seq, coeff := Representation(S, g);
> seq; coeff;
[ -170, -3, 0 ]
1

Run in calculator (opens in a new tab)

Arithmetic with Elements

If the generic abelian group \(A\) has been constructed with the flag UseRepresentation set true, then arithmetic with elements of \(A\) is trivial.

u + v: GrpAbElt, GrpAbElt -> GrpAbElt

Given elements \(u\) and \(v\) belonging to the same abelian group \(A\), return the sum of \(u\) and \(v\).

- u: GrpAbElt -> GrpAbElt

The inverse of element \(u\).

u - v: GrpAbElt, GrpAbElt -> GrpAbElt

Given elements \(u\) and \(v\) belonging to the same abelian group \(A\), return the sum of \(u\) and the inverse of \(v\).

m * u: RngIntElt, GrpAbElt -> GrpAbElt
u * m: GrpAb, RngIntElt -> GrpAbElt

Given an integer \(m\), return the element \(w+w+\cdots w\) (\(|m|\) summands), where \(w = u\), if \(m\) is positive and \(w = -u\) if \(m\) is negative.