Quelle coincidencegroup.g
Sprache: unbekannt
|
|
###############################################################################
##
## CoincidenceGroupByTrivialSubgroup( G, H, hom1, hom2 )
##
## INPUT:
## G: finite group
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Used for factoring the calculation of Coin(hom1,hom2) through
## H -> H/N -> G, with N the intersection of Ker(hom1) and Ker(hom2).
##
TWC.CoincidenceGroupByTrivialSubgroup := function( G, H, hom1, hom2 )
local N, p, q, Coin;
N := TWC.IntersectionOfKernels( hom1, hom2 );
p := IdentityMapping( G );
q := NaturalHomomorphismByNormalSubgroupNC( H, N );
Coin := TWC.InducedCoincidenceGroup( q, p, hom1, hom2 );
return PreImagesSetNC( q, Coin );
end;
###############################################################################
##
## CoincidenceGroupByFiniteQuotient( G, H, hom1, hom2, K )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
## K: finite index normal subgroup of G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Calculates Coin(hom1,hom2) by first calculating Coin(hom1N,hom2N) and
## Coin(hom1HN,hom2HN), where hom1N, hom2N: N -> K (with N normal in H)
## and hom1HN, hom2HN: H/N -> G/K.
##
TWC.CoincidenceGroupByFiniteQuotient := function( G, H, hom1, hom2, K )
local N, p, q, CoinHN, hom1N, hom2N, tc, qh, gens, dict, func, C;
N := TWC.IntersectionOfPreImages( hom1, hom2, K );
p := NaturalHomomorphismByNormalSubgroupNC( G, K );
q := NaturalHomomorphismByNormalSubgroupNC( H, N );
CoinHN := TWC.InducedCoincidenceGroup( q, p, hom1, hom2 );
hom1N := RestrictedHomomorphism( hom1, N, K );
hom2N := RestrictedHomomorphism( hom2, N, K );
tc := TwistedConjugation( hom1, hom2 );
gens := List( GeneratorsOfGroup( CoincidenceGroup2( hom1N, hom2N ) ) );
dict := NewDictionary( false, true, CoinHN );
func := function( qh, dict )
local h, n, hn;
hn := LookupDictionary( dict, qh );
if hn = fail then
h := PreImagesRepresentativeNC( q, qh );
n := RepresentativeTwistedConjugationOp(
hom1N, hom2N,
tc( One( G ), h )
);
if n <> fail then
hn := h * n;
AddDictionary( dict, qh, hn );
fi;
fi;
return hn;
end;
C := SubgroupByProperty( CoinHN, qh -> func( qh, dict ) <> fail );
for qh in SmallGeneratingSet( C ) do
Add( gens, func( qh, dict ) );
od;
return SubgroupNC( H, gens );
end;
###############################################################################
##
## CoincidenceGroupByCentre( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Used for factoring the calculation of Coin(hom1,hom2) through
## H -> G -> G/C, with C the centre of G.
##
TWC.CoincidenceGroupByCentre := function( G, H, hom1, hom2 )
local C, p, q, Coin, diff;
C := Center( G );
p := NaturalHomomorphismByNormalSubgroupNC( G, C );
q := IdentityMapping( H );
Coin := TWC.InducedCoincidenceGroup( q, p, hom1, hom2 );
diff := TWC.DifferenceGroupHomomorphisms( hom1, hom2, Coin, G );
return KernelOfMultiplicativeGeneralMapping( diff );
end;
###############################################################################
##
## CoincidenceGroupStep5( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Assumes the existence of a normal abelian subgroup A of G such that:
## - [A,[G,G]] = 1;
## - h^hom1 = h^hom2 mod A, for all h in H;
## - G = A Im(hom1) = A Im(hom2);
## - [H,H] is a subgroup of Coin(hom1,hom2);
## - Z(G) = 1.
##
TWC.CoincidenceGroupStep5 := function( G, H, hom1, hom2 )
local hi, n, tc, ai, C, i;
hi := SmallGeneratingSet( H );
n := Length( hi );
tc := TwistedConjugation( hom1, hom2 );
ai := List( [ 1 .. n ], i -> tc( One( G ), hi[i] ^ -1 ) );
C := G;
for i in [ 1 .. n ] do
C := Centraliser( C, ai[i] );
od;
# TODO: Replace this by PreImagesSet (without NC) eventually
C := NormalIntersection( C, ImagesSource( hom2 ) );
return PreImagesSetNC( hom2, C );
end;
###############################################################################
##
## CoincidenceGroupStep4( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Assumes the existence of a normal abelian subgroup A of G such that:
## - [A,[G,G]] = 1;
## - h^hom1 = h^hom2 mod A, for all h in H;
## - G = A Im(hom1) = A Im(hom2);
## - [H,H] is a subgroup of Coin(hom1,hom2).
##
TWC.CoincidenceGroupStep4 := function( G, H, hom1, hom2 )
local C, p, q, Coin, d;
C := Center( G );
if IsTrivial( C ) then
return TWC.CoincidenceGroupStep5( G, H, hom1, hom2 );
fi;
p := NaturalHomomorphismByNormalSubgroupNC( G, C );
q := IdentityMapping( H );
Coin := TWC.CoincidenceGroupStep4(
ImagesSource( p ), H,
InducedHomomorphism( q, p, hom1 ),
InducedHomomorphism( q, p, hom2 )
);
d := TWC.DifferenceGroupHomomorphisms( hom1, hom2, Coin, G );
return KernelOfMultiplicativeGeneralMapping( d );
end;
###############################################################################
##
## CoincidenceGroupStep3( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Assumes the existence of a normal abelian subgroup A of G such that:
## - [A,[G,G]] = 1;
## - h^hom1 = h^hom2 mod A, for all h in H;
## - G = A Im(hom1) = A Im(hom2).
##
TWC.CoincidenceGroupStep3 := function( G, H, hom1, hom2 )
local HH, d, p, q, Q, ind1, ind2, Coin, ci, n, tc, bi, di, gens1, gens2;
if IsNilpotentByFinite( G ) then
return CoincidenceGroup2( hom1, hom2 );
fi;
HH := DerivedSubgroup( H );
d := TWC.DifferenceGroupHomomorphisms( hom1, hom2, HH, G );
p := NaturalHomomorphismByNormalSubgroupNC( G, ImagesSource( d ) );
q := IdentityMapping( H );
Q := ImagesSource( p );
ind1 := InducedHomomorphism( q, p, hom1 );
ind2 := InducedHomomorphism( q, p, hom2 );
if IsNilpotentByFinite( Q ) then
Coin := CoincidenceGroup2( ind1, ind2 );
else
Coin := TWC.CoincidenceGroupStep4( Q, H, ind1, ind2 );
fi;
ci := SmallGeneratingSet( Coin );
n := Length( ci );
tc := TwistedConjugation( hom1, hom2 );
bi := List( [ 1 .. n ], i -> tc( One( G ), ci[i] ^ -1 ) );
di := List( [ 1 .. n ], i -> PreImagesRepresentativeNC( d, bi[i] ) );
gens1 := List( [ 1 .. n ], i -> di[i] ^ -1 * ci[i] );
gens2 := SmallGeneratingSet(
KernelOfMultiplicativeGeneralMapping( d )
);
return Subgroup( H, Concatenation( gens1, gens2 ) );
end;
###############################################################################
##
## CoincidenceGroupStep2( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Assumes the existence of a normal abelian subgroup A of G such that:
## - [A,[G,G]] = 1;
## - h^hom1 = h^hom2 mod A, for all h in H.
##
TWC.CoincidenceGroupStep2 := function( G, H, hom1, hom2 )
local A, Gr;
A := Center( DerivedSubgroup( G ) );
Gr := ClosureGroup( ImagesSource( hom1 ), A );
return TWC.CoincidenceGroupStep3(
Gr, H,
RestrictedHomomorphism( hom1, H, Gr ),
RestrictedHomomorphism( hom2, H, Gr )
);
end;
###############################################################################
##
## CoincidenceGroupStep1( G, H, hom1, hom2 )
##
## INPUT:
## G: infinite PcpGroup
## H: infinite PcpGroup
## hom1: group homomorphism H -> G
## hom2: group homomorphism H -> G
##
## OUTPUT:
## coin: subgroup of H consisting of h for which h^hom1 = h^hom2
##
## REMARKS:
## Assumes G is nilpotent-by-abelian, and uses induction on the upper
## central series of [G,G].
##
TWC.CoincidenceGroupStep1 := function( G, H, hom1, hom2 )
local A, p, q, Coin, hom1r, hom2r;
A := Center( DerivedSubgroup( G ) );
p := NaturalHomomorphismByNormalSubgroupNC( G, A );
q := IdentityMapping( H );
Coin := TWC.InducedCoincidenceGroup( q, p, hom1, hom2 );
hom1r := RestrictedHomomorphism( hom1, Coin, G );
hom2r := RestrictedHomomorphism( hom2, Coin, G );
return TWC.CoincidenceGroupStep2( G, Coin, hom1r, hom2r );
end;
[ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
]
|
2026-04-02
|