|
Finite fp-groups are often of interest and so a small number of intrinsics
are provided for such groups.
Intrinsics:
IsFinite (G) : Returns true if G is proved to be finite, false if unknown.
If G is found to be finite, its order is also returned.
Order (G) : Given a finite fp-group G return the order of G. If the
order cannot be determined or is found to be infinite, then the value zero or
Infinity, respectively, is returned.
PermutationGroup (G) : Given a finite fp-group G return a permutation
group P that is isomorphic to G together with the isomorphism
φ: G -> P.
CayleyGraph (G) : If G is an fp-group with generating set X return
the Cayley graph CG of G with respect to the generating set X. The
Cayley graph is returned as a Magma directed graph with its vertices and
edges labelled. A parameter Labelled can be set to false to prevent
the edges and vertices being labelled.
Notes:
Note that the intrinsics IsFinite, Order, PermutationGroup,
and CayleyGraph may need to construct the coset table of G over the
identity and hence are generally restricted to groups of order less than a
million. The exact limit is determined by the amount of memory available.
The intrinsic Order is invoked without any parameter settings to
compute the order of the group
G = < a, b | a 8, b 7, (ab) 2, (ab - 1) 3 >
> G<a, b> := FPGroup<a,b | a^8, b^7, (a*b)^2, (a*b^-1)^3>;
> G;
Finitely presented group G on 2 generators
Relations
a^8 = Id(G)
b^7 = Id(G)
(a * b)^2 = Id(G)
(a * b^-1)^3 = Id(G)
> Order(G);
10752
Now the Cayley graph of the group defined in the previous example is
constructed. Next the greatest distance between any pair of vertices (the
diameter) is found.
> G<a, b> := FPGroup<a, b | a^8, b^7, (a*b)^2, (a*b^-1)^3>;
> CG := CayleyGraph(G);
> Diameter(CG);
22
Finally, something more sophisticated is demonstrated. First the shortest
path g (geodesic) between vertex 1 and vertex 1000 is found. Then the
labels on the edges of this path are multiplied together yielding the
element of G corresponding to vertex 1000.
> V := Vertices(CG);
> E := Edges(CG);
> g := Geodesic(V!1, V!1000);
> g;
[ 1, 2, 6, 16, 38, 33, 73, 82, 163, 309, 168, 318, 579, 999, 1642, 1000 ]
> w := &*[ Label(E![g[i], g[i+1]]) : i in [1.. #g-1] ];
> w;
a^5 * b * a^3 * b^4 * a * b
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|