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