[Next] [Prev] [_____] [Left] [Up] [Index] [Root]
Set-Theoretic Operations

Set-Theoretic Operations

Subsections

Membership and Equality

g in G : GrpBBElt, GrpBB -> BoolElt
Given a straight-line program g and a blackbox group G, return true if g is an element of G, false otherwise.
g notin G : GrpBBElt, GrpBB -> BoolElt
Given an straight-line program g and a blackbox group G, return true if g is not an element of G, false otherwise.
S subset G : { GrpBBElt } , GrpBB -> BoolElt
Given an group G and a set S of elements belonging to a group H, where G and H are related, return true if S is a subset of G, false otherwise.

S notsubset G : { GrpBBElt } , GrpBB -> BoolElt
Given a group G and a set S of elements belonging to a group H, where G and H are related, return true if S is not a subset of G, false otherwise.

Set Operations

RandomProcess(G) : GrpBB -> Process
    Slots: RngIntElt                    Default: 10
    Scramble: RngIntElt                 Default: 100
Create a process to generate randomly chosen elements from the blackbox group G. The process uses an `expansion' procedure to construct a set of elements corresponding to fairly long words in the generators of G. At all times, N elements are stored where N is the maximum of n and Ngens(G) + 1. We call the location of these elements slots. Initially, these are just the generators of G and products of pairs of generators of G. Random elements are now produced by successive calls to Random(P), where P is the process created by this function. Each such call chooses two elements u and v from different slots, returns u and fills its slot with either u v or v u, chosen randomly. The Scramble parameter causes m such operations to be performed before the process is returned.

It should be noted that this process is not suitable for infinite groups, since all elements produced are products of the generators only and not their inverses. However, as long as the homomorphic image of G that is being worked with is finite, there is no problem.

Random(P) : Process -> GrpBBElt
Given a random element process P created by the function RandomProcess(G) for the blackbox group G, construct a random element of G by forming a random product over the expanded generating set stored as part of the process. The expanded generating set stored with the process is modified by replacing an existing generator by the element returned.
Rep(G) : GrpBB -> GrpBBElt
A representative element of G.

Example GrpBB_HomomorphismSpeed (H17E3)

As an illustration of the efficiency of computing homomorphisms from blackbox groups, we set up the same random expression as both a straight-line program and a linear word.

> G := BlackboxGroup(3);
> F := FreeGroup(3);
> M := GeneralOrthogonalGroup(7, 3);
> gf := hom<G -> F | F.1, F.2, F.3>;
> gm := hom<G -> M | M.1, M.2, M.3>;
> fm := hom<F -> M | M.1, M.2, M.3>;
> P := RandomProcess(G);
> x := Random(P);
> #x;
85
> // the evaluation of the straight-line program will take 85 operations in M
> w := gf(x);
> #w;
52307
> // the evaluation of the word will take 52306 multiplications in M
> time h1 := gm(x);
Time: 0.020
> time h2 := fm(w);
Time: 1.640
> h1 eq h2;
true

Coercions Between Related Groups

G ! g : GrpBB, GrpBBElt -> GrpBBElt
Given an element g belonging to a blackbox group H related to the group G, rewrite g as an element of G.
[Next] [Prev] [_____] [Left] [Up] [Index] [Root]