Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 521636
#(C) Graham Ellis 2005-2006

#####################################################################
InstallGlobalFunction(ResolutionAlmostCrystalQuotient,
function(arg)
local
	G,K,KK,bool,
	GhomP,P,T,Derived,i, RGD,
	pcpGD, GD, GDhomPCGD,PCGD,GhomGD, GDhomG, GDhomP, TD, gensP, RP,RTD,
        iso, isoTD;

G:=arg[1];
K:=arg[2];
KK:=arg[3];
if Length(arg)>3 then bool:=false; else bool:=true; fi; 


if not (IsAlmostCrystallographic(G) and IsPcpGroup(G)) then
Print("This function can only be applied to Almost Crystallographic pcp groups.  \n"); return fail;
fi;


GhomP:=NaturalHomomorphismOnHolonomyGroup(G);
P:=Image(GhomP);
T:=Kernel(GhomP);
Derived:=T;

for i in [2..KK] do
Derived:=CommutatorSubgroup(G,Derived);
od;

pcpGD:=Pcp(G,Derived);
GhomGD:=NaturalHomomorphism(G,Derived);
GD:=Image(GhomGD);

if IsNilpotent(GD) and bool then 

	if IsFinite(GD) then
	GDhomPCGD:=IsomorphismPermGroup(GD);
	PCGD:=Image(GDhomPCGD);
	RGD:=ResolutionNormalSeries(BigStepLCS(PCGD,4),K);
					###MIGHT WANT TO VARY THIS 4
	RGD!.quotientHomomorphism:=
	GroupHomomorphismByFunction(G,PCGD,
		x->Image(GDhomPCGD,Image(GhomGD,x)));
	return RGD;

	else
	RGD:=ResolutionNilpotentGroup(GD,K);
	fi;


else

#GDhomG:=GroupHomomorphismByImagesNC(GD,G,GeneratorsOfGroup(GD),GeneratorsOfPcp(pcpGD));

gensP:=List(GeneratorsOfPcp(pcpGD),x->Image(GhomP,x));
GDhomP:=GroupHomomorphismByImagesNC(GD,P,          
GeneratorsOfGroup(GD),gensP);

TD:=Kernel(GDhomP);

RP:=ResolutionFiniteGroup(P,K);
if 0 in AbelianInvariants(TD) then
RTD:=ResolutionNilpotentGroup(TD,K);
else
RTD:=ResolutionFiniteGroup(TD,K);
#TD:=Group(TorsionGeneratorsAbelianGroup(TD));
#iso:=IsomorphismPcGroup(TD);
#isoTD:=Image(iso);
#RTD:=ResolutionFiniteGroup(isoTD,K);
#RTD!.elts:=List(RTD!.elts,x->PreImagesRepresentative(iso,x));
fi;


RGD:=ResolutionExtension(GDhomP,RTD,RP,"Don't Test Finiteness");
fi;

RGD!.quotientHomomorphism:=GhomGD;

return RGD;
end);
#####################################################################

#####################################################################
InstallGlobalFunction(RelativeCentralQuotientSpaceGroup,
function(G,c)
local Q;
if not IsSpaceGroup(G) then
Print("This function must be applied to a space group.\n"); return fail; fi;
Q:=Image(IsomorphismPcpGroup(G));;
Q:=ResolutionAlmostCrystalQuotient(Q,0,c)!.group;;
return Q;
end);
#####################################################################