GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#(C) Graham Ellis, 2005-2006
IsHapChain:=NewFilter("IsHapChain");
IsHapCochain:=NewFilter("IsHapCochain");
IsHapMap:=NewFilter("IsHapMap");
IsHapComplex:=NewFilter("IsHapComplex");
#####################################################################
#####################################################################
DeclareCategory("IsHapResolution",IsObject);
DeclareRepresentation( "IsHapResolutionRep",
IsComponentObjectRep
and IsHapComplex,
["dimension",
"boundary",
"homotopy",
"group",
"elts",
"properties"]);
HapResolutionFamily:=NewFamily( "HapResolutionFamily",
IsHapResolution,
IsHapResolution);
HapResolution:=NewType(HapResolutionFamily,IsHapResolutionRep);
InstallMethod( ViewObj,
"for HapResolution",
[IsHapResolution],
function(R)
Print("Resolution of length ", EvaluateProperty(R,"length"),
" in characteristic ", EvaluateProperty(R,"characteristic"),
" for "); ViewObj(R!.group); Print(" . \n");
if R!.homotopy=fail then
Print("No contracting homotopy available. \n");
fi;
if "partialHomotopy" in NamesOfComponents(R) then
Print("A partial contracting homotopy is available. \n");
fi;
end);
InstallMethod( PrintObj,
"for HapResolution",
[IsHapResolution],
function(R)
Print("Resolution of length ", EvaluateProperty(R,"length"),
" in characteristic ", EvaluateProperty(R,"characteristic"),
" for ", R!.group," . \n");
if R!.homotopy=fail then
Print("No contracting homotopy available. \n");
fi;
if "partialHomotopy" in NamesOfComponents(R) then
Print("A partial contracting homotopy is available. \n");
fi;
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapEquivariantChainMap",IsObject);
DeclareRepresentation( "IsHapEquivariantChainMapRep",
IsComponentObjectRep
and IsHapMap,
["source",
"target",
"mapping",
"properties"]);
HapEquivariantChainMapFamily:=NewFamily( "HapEquivariantChainMapFamily",
IsHapEquivariantChainMap,
IsHapEquivariantChainMap);
HapEquivariantChainMap:=NewType(HapEquivariantChainMapFamily,
IsHapEquivariantChainMapRep);
InstallMethod( ViewObj,
"for HapEquivariantChainMap",
[IsHapEquivariantChainMap],
function(R)
Print("Equivariant Chain Map between resolutions of length ",
Minimum(EvaluateProperty(R!.source,"length"),
EvaluateProperty(R!.target,"length")), " . \n");
end);
InstallMethod( PrintObj,
"for HapEquivariantChainMap",
[IsHapEquivariantChainMap],
function(R)
Print("Equivariant Chain Map \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapChainComplex",IsObject);
DeclareRepresentation( "IsHapChainComplexRep",
IsComponentObjectRep
and IsHapChain
and IsHapComplex,
["dimension",
"boundary",
"properties"]);
HapChainComplexFamily:=NewFamily( "HapChainComplexFamily",
IsHapChainComplex,
IsHapChainComplex);
HapChainComplex:=NewType(HapChainComplexFamily,IsHapChainComplexRep);
InstallMethod( ViewObj,
"for HapChainComplex",
[IsHapChainComplex],
function(R)
Print("Chain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic"), " . \n");
end);
InstallMethod( PrintObj,
"for HapChainComplex",
[IsHapChainComplex],
function(R)
Print("Chain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic"), " . \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapFilteredChainComplex",IsObject);
DeclareRepresentation( "IsHapFilteredChainComplexRep",
IsComponentObjectRep
and IsHapComplex and IsHapChain and
IsHapChainComplex,
["dimension",
"filteredDimension",
"boundary",
"properties"]);
HapFilteredChainComplexFamily:=NewFamily( "HapFilteredChainComplexFamily",
IsHapFilteredChainComplex,
IsHapFilteredChainComplex);
HapFilteredChainComplex:=NewType(HapFilteredChainComplexFamily,IsHapFilteredChainComplexRep);
InstallMethod( ViewObj,
"for HapFilteredChainComplex",
[IsHapFilteredChainComplex],
function(R)
Print("Filtered chain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic"), " . \n");
end);
InstallMethod( PrintObj,
"for HapFilteredChainComplex",
[IsHapFilteredChainComplex],
function(R)
Print("Filtered chain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic"), " . \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapCochainComplex",IsObject);
DeclareRepresentation( "IsHapCochainComplexRep",
IsComponentObjectRep
and IsHapCochain
and IsHapComplex,
["dimension",
"boundary",
"properties"]);
HapCochainComplexFamily:=NewFamily( "HapCochainComplexFamily",
IsHapCochainComplex,
IsHapCochainComplex);
HapCochainComplex:=NewType(HapCochainComplexFamily,IsHapCochainComplexRep);
InstallMethod( ViewObj,
"for HapCochainComplex",
[IsHapCochainComplex],
function(R)
Print("Cochain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic"), " . \n");
end);
InstallMethod( PrintObj,
"for HapCochainComplex",
[IsHapCochainComplex],
function(R)
Print("Cochain complex of length ",
EvaluateProperty(R,"length"), " in characteristic ",
EvaluateProperty(R,"characteristic") , " . \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapChainMap",IsObject);
DeclareRepresentation( "IsHapChainMapRep",
IsComponentObjectRep
and IsHapChain
and IsHapMap,
["source",
"target",
"mapping",
"properties"]);
HapChainMapFamily:=NewFamily( "HapChainMapFamily",
IsHapChainMap,
IsHapChainMap);
HapChainMap:=NewType(HapChainMapFamily, IsHapChainMapRep);
InstallMethod( ViewObj,
"for HapChainMap",
[IsHapChainMap],
function(R)
Print("Chain Map between complexes of length ",
Minimum(EvaluateProperty(R!.source,"length"),
EvaluateProperty(R!.target,"length")), " . \n");
end);
InstallMethod( PrintObj,
"for HapChainMap",
[IsHapChainMap],
function(R)
Print("Chain Map between complexes of length ",
Minimum(EvaluateProperty(R!.source,"length"),
EvaluateProperty(R!.target,"length")), " . \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapCochainMap",IsObject);
DeclareRepresentation( "IsHapCochainMapRep",
IsComponentObjectRep
and IsHapCochain
and IsHapMap,
["source",
"target",
"mapping",
"properties"]);
HapCochainMapFamily:=NewFamily( "HapCochainMapFamily",
IsHapCochainMap,
IsHapCochainMap);
HapCochainMap:=NewType(HapCochainMapFamily, IsHapCochainMapRep);
InstallMethod( ViewObj,
"for HapCochainMap",
[IsHapCochainMap],
function(R)
Print("Cochain Map between complexes of length ",
Minimum(EvaluateProperty(R!.source,"length"),
EvaluateProperty(R!.target,"length")), " . \n");
end);
InstallMethod( PrintObj,
"for HapCochainMap",
[IsHapCochainMap],
function(R)
Print("Cochain Map between complexes of length ",
Minimum(EvaluateProperty(R!.source,"length"),
EvaluateProperty(R!.target,"length")), " . \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
IsHapNonFreeResolution:=NewFilter("IsHapNonFreeResolution");;
HapNonFreeResolution:=NewType(FamilyObj(rec()),
IsHapNonFreeResolution
and IsComponentObjectRep
and IsHapComplex);;
InstallMethod( ViewObj,
"for HapNonFreeResolution",
[IsHapNonFreeResolution],
function(R)
Print("Non-free resolution in characteristic ", EvaluateProperty(R,"characteristic"),
" for "); ViewObj(R!.group); Print(" . \n");
if R!.homotopy=fail then
Print("No contracting homotopy available. \n");
fi;
end);
InstallMethod( PrintObj,
"for HapNonFreeResolution",
[IsHapNonFreeResolution],
function(R)
Print("Non-free resolution of length ",
EvaluateProperty(R,"length"),
" in characteristic ", EvaluateProperty(R,"characteristic"),
" for ", R!.group," . \n");
if R!.homotopy=fail then
Print("No contracting homotopy available. \n");
fi;
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
InstallTrueMethod(IsHapChain,IsHapChainComplex);
InstallTrueMethod(IsHapChain,IsHapChainMap);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
IsHapFPGModule:=NewFilter("IsHapFPGModule");;
HapFPGModule:=NewType(FamilyObj(rec()),
IsHapFPGModule
and IsComponentObjectRep);;
InstallMethod( ViewObj,
"for HapFPGModule",
[IsHapFPGModule],
function(M)
Print("Module of dimension "); ViewObj(M!.dimension);
Print(" over the group ring of "); ViewObj(M!.group);
Print(" in characteristic ", (M!.characteristic), " \n");
end);
InstallMethod( PrintObj,
"for HapFPGModule",
[IsHapFPGModule],
function(M)
Print("Module of dimension ", M!.dimension, " over the group ring of ", M!.group,
" in characteristic ", M!.characteristic, " \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
IsHapFPGModuleHomomorphism:=NewFilter("IsHapFPGModuleHomomorphism");;
HapFPGModuleHomomorphism:=NewType(FamilyObj(rec()),
IsHapFPGModuleHomomorphism
and IsComponentObjectRep);;
InstallMethod( ViewObj,
"for HapFPGModuleHomomorphism",
[IsHapFPGModuleHomomorphism],
function(M)
Print("FpG-module homomorphism ");
end);
InstallMethod( PrintObj,
"for HapFPGModuleHomomorphism",
[IsHapFPGModuleHomomorphism],
function(M)
Print("FpG-module homomorphism from ", M!.source, " to ", M!.target,
" \n");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapCatOneGroup",IsObject);
DeclareRepresentation( "IsHapCatOneGroupRep",
IsComponentObjectRep,
["sourceMap",
"targetMap"
]);
HapCatOneGroupFamily:=NewFamily( "HapCatOneGroupFamily",
IsHapCatOneGroup,
IsHapCatOneGroup);
HapCatOneGroup:=NewType(HapCatOneGroupFamily,
IsHapCatOneGroupRep);
InstallMethod( ViewObj,
"for HapCatOneGroup",
[IsHapCatOneGroup],
function(R)
Print("Cat-1-group with underlying group ",
Source(R!.sourceMap),
" . \n");
end);
InstallMethod( PrintObj,
"for HapCatOneGroup",
[IsHapCatOneGroup],
function(R)
Print("Cat-1-group with underlying group ",
Source(R!.sourceMap),
" . \n");
end);
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapGraph",IsObject);
DeclareRepresentation( "IsHapGraphRep",
IsComponentObjectRep,
["incidenceMatrix",
]);
HapGraphFamily:=NewFamily( "HapGraphFamily",
IsHapGraph,
IsHapGraph);
HapGraph:=NewType(HapGraphFamily,
IsHapGraphRep);
InstallMethod( ViewObj,
"for HapGraph",
[IsHapGraph],
function(R)
Print("Graph on ", EvaluateProperty(R,"numberofvertices")," vertices.\n");
end);
InstallMethod( PrintObj,
"for HapGraph",
[IsHapGraph],
function(R)
Print("Graph on ", EvaluateProperty(R,"numberofvertices")," vertices.\n");
end);
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapFilteredGraph",IsObject);
DeclareRepresentation( "IsHapFilteredGraphRep",
IsComponentObjectRep,
["incidenceMatrix",
]);
HapFilteredGraphFamily:=NewFamily( "HapFilteredGraphFamily",
IsHapFilteredGraph,
IsHapFilteredGraph);
HapFilteredGraph:=NewType(HapFilteredGraphFamily,
IsHapFilteredGraphRep);
InstallMethod( ViewObj,
"for HapFilteredGraph",
[IsHapFilteredGraph],
function(R)
Print("Filtered graph on ", EvaluateProperty(R,"numberofvertices")," vertices.\n");
end);
InstallMethod( PrintObj,
"for HapFilteredGraph",
[IsHapFilteredGraph],
function(R)
Print("Filtered graph on ", EvaluateProperty(R,"numberofvertices")," vertices.\n");
end);
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapOppositeElement",IsMultiplicativeElementWithInverse);
DeclareRepresentation( "IsHapOppositeElementRep",
IsComponentObjectRep,
IsMultiplicativeElementWithInverse,
["oppositeElement",
]);
HapOppositeElementFamily:=NewFamily( "HapOppositeElementFamily",
IsHapOppositeElement,
IsHapOppositeElement);
HapOppositeElement:=NewType(HapOppositeElementFamily,
IsHapOppositeElementRep);
InstallMethod( ViewObj,
"for HapOppositeElement",
[IsHapOppositeElement],
function(R)
Print(R!.element, "_op ");
end);
InstallMethod( PrintObj,
"for HapOppositeElement",
[IsHapOppositeElement],
function(R)
Print(R!.element, "_op ");
end);
#####################################################################
#####################################################################
#####################################################################
DeclareCategory("IsHapQuotientElement",IsMultiplicativeElementWithInverse);
DeclareRepresentation( "IsHapQuotientElementRep",
IsComponentObjectRep,
IsMultiplicativeElementWithInverse,
["oppositeElement",
]);
HapQuotientElementFamily:=NewFamily( "HapQuotientElementFamily",
IsHapQuotientElement,
IsHapQuotientElement);
HapQuotientElement:=NewType(HapQuotientElementFamily,
IsHapQuotientElementRep);
InstallMethod( ViewObj,
"for HapQuotientElement",
[IsHapQuotientElement],
function(R)
Print(R!.element, "_quotient ");
end);
InstallMethod( PrintObj,
"for HapQuotientElement",
[IsHapQuotientElement],
function(R)
Print(R!.element, "_quotient ");
end);
#####################################################################
#####################################################################
#####################################################################
#####################################################################
IsHapGChainComplex:=NewFilter("IsHapGChainComplex");;
HapGChainComplex:=NewType(FamilyObj(rec()),
IsHapGChainComplex
and IsComponentObjectRep
and IsHapComplex);;
InstallMethod( ViewObj,
"for HapGChainComplex",
[IsHapGChainComplex],
function(R)
Print("G-chain complex in characteristic ", EvaluateProperty(R,"characteristic"),
" for "); ViewObj(R!.group); Print(" . \n");
end);
InstallMethod( PrintObj,
"for HapGChainComplex",
[IsHapGChainComplex],
function(R)
Print("G-chain complex of length ",
EvaluateProperty(R,"length"),
" in characteristic ", EvaluateProperty(R,"characteristic"),
" for ", R!.group," . \n");
end);
#####################################################################
#####################################################################