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.

| Download

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

Views: 418346

#############################################################
#############################################################
InstallGlobalFunction("ResolutionAffineCrystGroup",
function(G, V)
local R, rG, lG, rgens, lgens;

if not (IsAffineCrystGroupOnLeft(G) or IsAffineCrystGroupOnRight(G)) then
Print("This function must be applied to an affine crystallographic group.\n");
return fail;
fi;

if  IsAffineCrystGroupOnRight(G) then
rG:=G; rgens:=GeneratorsOfGroup(G);
lgens:=List(rgens,a->TransposedMat(a));
lG:=AffineCrystGroupOnLeft(lgens);
fi;

if  IsAffineCrystGroupOnLeft(G) then
lG:=G; lgens:=GeneratorsOfGroup(G);
rgens:=List(lgens,a->TransposedMat(a));
rG:=AffineCrystGroupOnRight(rgens);
fi;
 

R:=ResolutionBieberbachGroup(rG,V);
Apply(R!.elts,TransposedMat);
R!.group:=lG;
return R;

end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallGlobalFunction("ResolutionToEquivariantCWComplex",
function(R)
local Stabilizer,T,dim,i;

#dim:=Position(List([0..Length(R)],R!.dimension),0);
#if dim=fail then
for i in [0..Length(R)] do
if R!.dimension(i)>0 then dim:=i; fi;
od;
#fi;

T:=Group(Identity(R!.group));
##########
Stabilizer:=function(n,k);
return T;
end;
##########


return Objectify(HapEquivariantCWComplex,
            rec(
            dimension:=R!.dimension,
            boundary:=R!.boundary,
            elts:=R!.elts,
            group:=R!.group,
            stabilizer:=Stabilizer,
            properties:=
            [["dimension",dim]
            ]  ));

end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallGlobalFunction("EquivariantCWComplexToResolution",
function(Y)
local Stabilizer,T,dim,n,i;

for n in [0..EvaluateProperty(Y,"dimension")] do
for i in [1..Y!.dimension(n)] do
#if Order(Y!.stabilizer(n,i))>1 then
#Print("EquivariantCWComplex is not free.\n");
#return fail;
#fi;
od;
od;
dim:=EvaluateProperty(Y,"dimension");


return Objectify(HapResolution,
            rec(
            dimension:=Y!.dimension,
            boundary:=Y!.boundary,
            elts:=Y!.elts,
            group:=Y!.group,
            homotopy:=fail,
            properties:=
            [["length",dim],
             ["characteristic",0],
             ["type","resolution"]
            ]  ));

end);
#############################################################
#############################################################


#############################################################
#############################################################
InstallGlobalFunction("EquivariantEuclideanSpace",
function(G,V)
local R,Y,dim, Stabilizer, T;

R:=ResolutionAffineCrystGroup(G,V);

return ResolutionToEquivariantCWComplex(R);

end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallGlobalFunction("EquivariantOrbitPolytope",
function(arg)
local G,V,R,Y,dim, Stabilizer;

G:=arg[1];
V:=arg[2];
if Length(arg)=2 then
R:=PolytopalComplex(G,V);
else
R:=PolytopalComplex(G,V,arg[3]);
fi;

return ResolutionToEquivariantCWComplex(R);

end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallGlobalFunction(EquivariantTwoComplex,
function(G)
local R,Stabilizer,T,F,S;

if IsFpGroup(G) then
R:=ResolutionAsphericalPresentation(G,2);
else
R:=ResolutionFiniteGroup(G,2);;
fi;

return ResolutionToEquivariantCWComplex(R);

end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallMethod(FundamentalGroupOfQuotient,
"presentation of fundamental group of equivariant CW-complex",
[IsHapEquivariantCWComplex],

function(Y) local R, P;
R:=EquivariantCWComplexToResolution(Y);
P:=PresentationOfResolution(R);
return P.freeGroup/P.relators;
end);
#############################################################
#############################################################

#############################################################
#############################################################
InstallMethod(ChainComplexOfQuotient,
"chain complex of the quotient of an equivariant CW-complex",
[IsHapEquivariantCWComplex],

function(Y) local R, P;
R:=EquivariantCWComplexToResolution(Y);
P:=TensorWithIntegers(R);
return P;
end);
#############################################################
#############################################################


#############################################################
#############################################################
InstallGlobalFunction(RestrictedEquivariantCWComplex,
function(Y,H)
local R, X;

R:=EquivariantCWComplexToResolution(Y);
R:=ResolutionSubgroup(R,H);
return ResolutionToEquivariantCWComplex(R);

end);
#############################################################
#############################################################