Closure( U, g )
Let U be a group with parent group G and let g be an element of
G. Then Closure
returns the closure C of U and g as subgroup of
G. The closure C of U and g is the subgroup generated by U and
g.
gap> s4 := Group( (1,2,3,4), (1,2 ) ); Group( (1,2,3,4), (1,2) ) gap> s2 := Subgroup( s4, [ (1,2) ] ); Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2) ] ) gap> Closure( s2, (3,4) ); Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2), (3,4) ] )
The default function GroupOps.Closure
returns U if U is a parent
group, or if g or its inverse is a generator of U, or if the set of
elements is known and g is in this set, or if g is trivial.
Otherwise the function constructs a new subgroup C which is generated
by the generators of U and the element g.
Note that if the set of elements of U is bound to U.elements
then
GroupOps.Closure
computes the set of elements for C and binds it to
C.elements
.
If U is known to be non-abelian or infinite so is C. If U is known to be abelian the function checks whether g commutes with every generator of U.
Closure( U, S )
Let U and S be two group with a common parent group G. Then
Closure
returns the subgroup of G generated by U and S.
gap> s4 := Group( (1,2,3,4), (1,2 ) ); Group( (1,2,3,4), (1,2) ) gap> s2 := Subgroup( s4, [ (1,2) ] ); Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2) ] ) gap> z3 := Subgroup( s4, [ (1,2,3) ] ); Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2,3) ] ) gap> Closure( z3, s2 ); Subgroup( Group( (1,2,3,4), (1,2) ), [ (1,2,3), (1,2) ] )
The default function GroupOps.Closure
returns the parent of U and S
if U or S is a parent group. Otherwise the function computes the
closure of U under all generators of S.
Note that if the set of elements of U is bound to U.elements
then
GroupOps.Closure
computes the set of elements for the closure C and
binds it to C.elements
.
GAP 3.4.4