Quelle sl2conjugates.gi
Sprache: unbekannt
|
|
#SOME OF THESE FUNCTIONS ARE NEVER USED!
###################################################################
###################################################################
InstallGlobalFunction(HAP_GenericSL2ZConjugatedSubgroup,
function()
local type, G;
type := NewType( FamilyObj([[[1,0],[0,1]]]),
IsGroup and
IsAttributeStoringRep and
IsFinitelyGeneratedGroup and
IsMatrixGroup and
IsHapSL2ZConjugatedSubgroup);
G:=rec(
sl2Zsubgroup:=fail,
conjugator:=fail,
conjugatorInverse:=fail,
membership:= fail,
generators:= fail,
cosetRep:= fail,
cosetPos:= fail,
name:="Conjugated congruence subgroup");
ObjectifyWithAttributes(G, type,
DimensionOfMatrixGroup, 2,
IsMatrixGroup, true,
IsFinite, false,
IsHapSL2ZConjugatedSubgroup, true,
IsHapSL2ConjugatedSubgroup, true);
return G;
end);
###################################################################
###################################################################
###################################################################
###################################################################
InstallMethod(\in,
"membership test for Hap_SL2Subgroups",
[IsMatrix, IsHapSL2ConjugatedSubgroup and IsGroup],
1000000, #There must be a better way to ensure this method is used!
function(x,G)
local g,H;
g:=G!.conjugatorInverse;
return G!.membership(x);
end);
###################################################################
###################################################################
if false then
###################################################################
###################################################################
InstallMethod(GeneratorsOfGroup,
"Generating set for Hap_SL2ZSubgroups",
[IsHapSL2ConjugatedSubgroup and IsGroup],
1000000, #There must be a better way to ensure this method is used!
function(G)
local H,g;
H:=G!.sl2Zsubgroup;
g:=G!.conjugator;
return List(GeneratorsOfGroup(H),x->x^g);
end);
###################################################################
###################################################################
###################################################################
###################################################################
InstallGlobalFunction(HAP_ConjugatedCongruenceSubgroupGamma0,
function(n,g)
local H, G, gg, membership;
G:=HAP_GenericSL2ZSubgroup();
gg:=g^-1;
H:=HAP_CongruenceSubgroupGamma0(n);
###################################################
membership:=function(x);
return x^gg in H;
end;
###################################################
G!.membership:=membership;
G!.sl2Zsubgroup:=H;
G!.conjugator:=g;
G!.conjugatorInverse:=gg;
G!.name:="ConjugatedCongruenceSubgroupGamma0";
return G;
end);
###################################################################
###################################################################
###################################################################
###################################################################
InstallGlobalFunction(HAP_ConjugatedCongruenceSubgroup,
function(H,g)
local G, gg, membership;
G:=HAP_GenericSL2ZConjugatedSubgroup();
gg:=g^-1;
#H:=HAP_CongruenceSubgroupGamma0(n);
###################################################
membership:=function(x);
return x^gg in H;
end;
###################################################
G!.membership:=membership;
G!.sl2Zsubgroup:=H;
G!.conjugator:=g;
G!.conjugatorInverse:=gg;
G!.name:="ConjugatedCongruenceSubgroup";
return G;
end);
###################################################################
###################################################################
fi;
###################################################################
###################################################################
InstallGlobalFunction(HAP_IntersectionConjugatedCongruenceSubgroup,
function(H,g)
local G, gg, membership, HH;
G:=HAP_GenericSL2ZConjugatedSubgroup();
gg:=g^-1;
#H:=HAP_CongruenceSubgroupGamma0(n);
###################################################
membership:=function(x);
if not x in H then return false; fi;
return x^gg in H;
end;
###################################################
HH:=Intersection(H,H^g);
G!.membership:=membership;
#G!.sl2Zsubgroup:=HH;
SetGeneratorsOfMagmaWithInverses(G,GeneratorsOfGroup(HH));
return G;
end);
###################################################################
###################################################################
if false then
###################################################################
###################################################################
InstallGlobalFunction(ResolutionSL2ZConjugated,
function(n,g)
local R, G, gg, elts, gelts, eltfun, posfun;
R:=ResolutionSL2Z_alt(n);
G:=HAP_ConjugatedCongruenceSubgroupGamma0(1,g);
gg:=g^-1;
elts:=R!.elts;
gelts:=ElementsLazy(G);
R!.elts:=gelts;
R!.group:=G;
##############################
eltfun:=function(i)
local x;
x:=elts[i];
if x=fail then return x;
else
return elts[i]^g;
fi;
end;
##############################
##############################
posfun:=function(x);
return elts!.posfun( x^gg);
end;
##############################
gelts!.eltfun:=eltfun;
gelts!.posfun:=posfun;
return R;
end);
###################################################################
###################################################################
############################################################
############################################################
InstallOtherMethod(RightTransversal,
"right transversal for finite index subgroups of SL(2,Integers)",
[IsHapSL2ZConjugatedSubgroup,IsMatrixGroup],
100000,
function(G,GG)
local R, R2, H, K,gg,g,poscan;
H:=G!.sl2Zsubgroup;
g:=G!.conjugator;
gg:=G!.conjugatorInverse;
R:=RightTransversal(H,GG^gg);
R2:=List(R,x->x^g);
##########################################
poscan:=function(x);
return PositionCanonical(R,x^gg);
end;
##########################################
return Objectify( NewType( FamilyObj( G ),
IsHapRightTransversalSL2ZSubgroup and IsList and
IsDuplicateFreeList and IsAttributeStoringRep ),
rec( group := G,
subgroup := GG,
cosets:=R2,
poscan:=poscan ));
end);
############################################################
############################################################
fi;
[ Dauer der Verarbeitung: 0.43 Sekunden
(vorverarbeitet)
]
|
2026-04-02
|