ExtendedIntersectionSumAgGroup( V, W )
Let V and W be ag groups with a common parent group, such that <W>
leq N(<V>). Then <V> * <W> is a subgroup and
ExtendedIntersectionSumAgGroup
returns the intersection and the sum of
V and W. The information about these groups is returned as a record
with the components intersection
, sum
and the additional information
leftSide
and rightSide
.
intersection
:
sum
:
leftSide
:
rightSide
:The function uses the Zassenhaus sum-intersection algorithm. Let V be generated by v_1, ..., v_a, W be generated by w_1, ..., w_b. Then the matrix
left(
beginarraycc
v_1 & 1
vdots & vdots
v_a & 1
w_1 & w_1
vdots & vdots
w_b & w_b
endarray
right)
is echelonized by using the sifting algorithm to produce the following matrix
left(
beginarraycc
l_1 & k_1
vdots & vdots
l_c & k_c
1 & k_c+1
vdots & vdots
1 & k_a+b
endarray
right).
Then l_1, ..., l_c is a generating sequence for the sum, while the
sequence k_{c+1}, ..., k_{a+b} is is a generating sequence for the
intersection. leftSide
is bound to a list, such that the i.th list
element is l_j, if there exists a j, such that l_j has depth i,
and IdAgWord
otherwise. rightSide
is bound to a list, such that the
i.th list element is k_j, if there exists a j less than c+1,
such that k_j has depth i, and IdAgWord
otherwise. See also
SumFactorizationFunctionAgGroup.
Note that this functions returns an incorrect result if <W> not leq N(<V>).
gap> v4_1 := AgSubgroup( s4, [ a*b, c ], true ); Subgroup( s4, [ a*b, c ] ) gap> v4_2 := AgSubgroup( s4, [ c, d ], true ); Subgroup( s4, [ c, d ] ) gap> ExtendedIntersectionSumAgGroup( v4_1, v4_2 ); rec( leftSide := [ a*b, IdAgWord, c, d ], rightSide := [ IdAgWord, IdAgWord, c, d ], sum := Subgroup( s4, [ a*b, c, d ] ), intersection := Subgroup( s4, [ c ] ) )
GAP 3.4.4