Skip to content

Commit

Permalink
version 1.57
Browse files Browse the repository at this point in the history
  • Loading branch information
grahamknockillaree committed Jul 25, 2023
1 parent 3bb9360 commit 6ae2939
Show file tree
Hide file tree
Showing 28 changed files with 527 additions and 49 deletions.
4 changes: 2 additions & 2 deletions PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ SetPackageInfo( rec(

PackageName := "HAP",
Subtitle := "Homological Algebra Programming",
Version := "1.56",
Date := "24/05/2023",
Version := "1.57",
Date := "25/07/2023",
License := "GPL-2.0-or-later",

SourceRepository := rec(
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ Please send your bug reports to graham.ellis(at)nuigalway.ie .
On a Linux machine with GAP (and optionally Polymake) installed, the HAP
library can be loaded as follows:

* First download the file hap1.56.tar.gz to the subdirectory "pkg/" of GAP. (If
* First download the file hap1.57.tar.gz to the subdirectory "pkg/" of GAP. (If
you don't have access to this, then create a directory "pkg" in your home
directory and download the file there.)

* Change to directory "pkg/" and type "gunzip hap1.56.tar.gz" followed by
"tar -xvf hap1.56.tar" .
* Change to directory "pkg/" and type "gunzip hap1.57.tar.gz" followed by
"tar -xvf hap1.57.tar" .

* Start GAP. (If you have created "pkg" in your home directory then start GAP
with the command "gap -l 'path/homedir;' " where path/homedir is the path to
Expand All @@ -46,12 +46,12 @@ your home directory.)
* In GAP type " LoadPackage("HAP"); " .

* Help on HAP can be found on the HAP home page (a version of which is
included in directory "pkg/Hap1.56/www" of this distribution).
included in directory "pkg/Hap1.57/www" of this distribution).

* Performance can be significantly improved by using a compiled version of the
HAP library. A compiled version can be created by the following steps.

1. Change to the directory "pkg/Hap1.56/" .
1. Change to the directory "pkg/Hap1.57/" .
2. Edit the file "compile" so that: PKGDIR is equal to the path to the
directory "pkg" where your GAP packages are stored; GACDIR is equal to the
path to the directory where the GAP compiler "gac" is stored.
Expand All @@ -60,4 +60,4 @@ path to the directory where the GAP compiler "gac" is stored.
The next time HAP is loaded a compiled version will be loaded.

* Should you want to return to an uncompiled version, change to the directory
"pkg/Hap1.56/" and type "./uncompile".
"pkg/Hap1.57/" and type "./uncompile".
2 changes: 1 addition & 1 deletion date
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24 May 2023
25 July 2023
42 changes: 38 additions & 4 deletions doc/Undocumented.xml
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,8 @@
<Br/>
<C>HAP_Binlisttoint</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_ChainComplexToEquivariantChainComplex</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_CocyclesAndCoboundaries</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_CongruenceSubgroupGamma0</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap11.html</Link><LinkText>1</LinkText></URL>&nbsp;
Expand All @@ -502,6 +504,8 @@
<Br/>
<C>HAP_ConjugatedCongruenceSubgroupGamma0</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_CriticalCellsDirected</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_CupProductOfPresentation</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_CupProductOfSimplicialComplex</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -614,6 +618,8 @@
<Br/>
<C>HAP_WedgeSumOfSimplicialComplexes</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_bockstein</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_coho_isoms</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>HAP_nxnMatTo2nx2nMat</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -1235,6 +1241,8 @@
<Br/>
<C>SubdivideCell</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>Suspension_alt</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>SylowSubgroupOfCatOneGroup</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>SymmetricCentre</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -1379,8 +1387,9 @@
<URL><Link>../tutorial/chap4.html</Link><LinkText>2</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>Bockstein</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>2</LinkText></URL>&nbsp;
<C>Bockstein</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>3</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>CategoryArrow</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -1603,6 +1612,13 @@
<Br/>
<C>SubspaceDimensionDegree</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>Suspension</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap6.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>4</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>5</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>TrivialGModuleAsGOuterGroup</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>3</LinkText></URL>&nbsp;,
Expand Down Expand Up @@ -2601,8 +2617,9 @@
<Br/>
<C>BaseRing</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>Bockstein</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap8.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>2</LinkText></URL>&nbsp;
<C>Bockstein</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap8.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>3</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>CategoryArrow</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -3144,6 +3161,13 @@
<Br/>
<C>SubspaceDimensionDegree</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>Suspension</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap6.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>4</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutTensorSquare.html</Link><LinkText>5</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>TensorProductOp</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
<Br/>
<C>TermsOfPolynomial</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <Br/>
Expand Down Expand Up @@ -4837,6 +4861,16 @@
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>CohomologyRing</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap4.html</Link><LinkText>2</LinkText></URL>&nbsp;,
<URL><Link>../tutorial/chap8.html</Link><LinkText>3</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutModPRings.html</Link><LinkText>4</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutNoncrossing.html</Link><LinkText>5</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutCoxeter.html</Link><LinkText>6</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutExtensions.html</Link><LinkText>7</LinkText></URL>&nbsp;,
<URL><Link>../www/SideLinks/About/aboutIntro.html</Link><LinkText>8</LinkText></URL>&nbsp;
<Br/>
<Br/>
<C>ComplexProjectiveSpace</C>&nbsp;&nbsp;&nbsp;&nbsp;<B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;
<Br/>
<Br/>
Expand Down
2 changes: 2 additions & 0 deletions lib/CohomologyOperations/cohoOps.gd
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ DeclareGlobalFunction("FundamentalMultiplesOfStiefelWhitneyClasses");
DeclareGlobalFunction("CohomologyHomomorphismOfRepresentation");
DeclareGlobalFunction("MinimizeRingRelations");
DeclareGlobalFunction("CohomologicalData");
DeclareGlobalFunction("HAP_ChainComplexToEquivariantChainComplex");
DeclareGlobalFunction("HAP_bockstein");
11 changes: 8 additions & 3 deletions lib/CohomologyOperations/cohomology_homomorphism.gi
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,14 @@ end;
##################################################
##################################################
InstallGlobalFunction(CohomologyHomomorphism,
function(phi, n)
local hom, R, G, A, B, C,D,HC,HD, hc, hd,nat, natd, p, fdelta, hcdelta, N, indhom,
#function(phi, n)
function(arg)
local phi,n,
hom, R, G, A, B, C,D,HC,HD, hc, hd,nat, natd, p, fdelta, hcdelta, N, indhom,
genshc, imgenshc, x, y, xtilde, ytilde, homdir, iso, isod;


phi:=arg[1];
n:=arg[2];

# n is a nonnegative integer
# phi is a homomomorphism phi:A-->B of G-modules represented as G-outer groups
Expand All @@ -56,7 +59,9 @@ local hom, R, G, A, B, C,D,HC,HD, hc, hd,nat, natd, p, fdelta, hcdelta, N, indho
A:=phi!.Source;
B:=phi!.Target;
G:=A!.ActingGroup;
if Length(arg)=3 then R:=arg[3]; else
R:=ResolutionFiniteGroup(G,n+1);
fi;
C:=HomToGModule(R,A);
D:=HomToGModule(R,B);
HC:=CohomologyModule(C,n);
Expand Down
146 changes: 146 additions & 0 deletions lib/CohomologyOperations/spacebockstein.gi
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@


######################################################
######################################################
InstallGlobalFunction(HAP_ChainComplexToEquivariantChainComplex,
function(C)
local R, G, Elts, Boundary, i, x, m;

G:=Group( () );
Elts:=Elements(G);

Boundary:=function(n,k)
local v, bnd;
v:=C!.boundary(n,k);
bnd:=[];

for i in [1..Length(v)] do
if v[i]<>0 then x:=[SignInt(v[i])*i,1];
for m in [1..AbsInt(v[i])] do
Add(bnd,x);
od;
fi;
od;
return bnd;
end;

R:=Objectify(HapResolution,
rec(
dimension:=C!.dimension,
boundary:=Boundary,
homotopy:=fail,
elts:=Elts,
group:=G,
vectorField:=fail,
properties:=
[["length",EvaluateProperty(C,"length")],
["reduced",true],
["type","resolution"],
["characteristic",0] ]));


return R;
end);
######################################################
######################################################


###################################################################
###################################################################
InstallGlobalFunction(HAP_bockstein,
function(A)
local G,i,prime,x,a,b,c,h,s,bhomc,B,C,psi,R,dim,cons,homs,bas,bok,gens;

G:=Group(());
prime:=Characteristic(A);
x:=[2..prime^2];
Add(x,1);
x:=PermList(x);

a:=Group(x^prime);;
b:=Group(x);;
c:=Group(x^prime);;

#bhomc:=NaturalHomomorphismByNormalSubgroup(b,a);
B:=TrivialGModuleAsGOuterGroup(G,b);
#C:=TrivialGModuleAsGOuterGroup(G,Image(bhomc));
C:=TrivialGModuleAsGOuterGroup(G,c);
bhomc:=GroupHomomorphismByImages(b,c,[x],[x^prime]);
psi:=GOuterGroupHomomorphism();
psi!.Source:=B;
psi!.Target:=C;
psi!.Mapping:=bhomc;

C:=A!.chainComplex;
dim:=Length(C);
R:=HAP_ChainComplexToEquivariantChainComplex(C);
R!.properties[1]:=["length",dim+1];

cons:=[];
for i in [1..dim-1] do
Add(cons, ConnectingCohomologyHomomorphism(psi,i,R));
od;
homs:=[];
for h in cons do
s:=Source(h);
Add(homs,s!.nat);
od;
s:=Target(h);
Add(homs,s!.nat);

bas:=Basis(A);
gens:=List(homs,h->Target(h!.Mapping));
gens:=List(gens,g->GeneratorsOfGroup(g));

########################################
bok:=function(x)
local w,ww,h,z,cnt;

w:=Coefficients(bas,x);
ww:=[];
for i in [2..Length(w)] do
Add(ww,[IntFFE(w[i]),A!.int2pair[i]]- [0,[1,0]]);
od;


ww:=Filtered(ww,x->x[2][1]<dim);

h:=[];
for i in [1..Length(ww)] do
Add(h,[ww[i][2][1]+1 ,

Image(cons[ww[i][2][1]]!.Mapping, gens[ww[i][2][1]][ww[i][2][2]])^ww[i][1]

] );
od;

h:=List(h,x->[x[1], ExtRepOfObj(
Factorization(Source(homs[x[1]]!.Mapping),
PreImagesRepresentative(homs[x[1]]!.Mapping, x[2]))
)
]);

h:=Filtered(h,z->Length(z[2])>0);
w:=0*A.1;
for z in h do
cnt:=A!.pair2int[z[1]+1][1]-1;

w:=w+
Sum(List([1..Length(z[2])/2],k-> bas[ cnt+ z[2][2*k-1] ]*z[2][2*k]));
;
od;

return w;

end;
########################################

return bok;
end);
###################################################################
###################################################################





6 changes: 6 additions & 0 deletions lib/CohomologyOperations/steenrod.gi
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,12 @@ Print("The Bockstein operation is not defined for this algebra.\n");
return fail;
fi;
####################################################
#
#### Bockstein for CW complexes ####################
if not IsBound(A!.maxdeg) then
return A!.bockstein(w);
fi;
####################################################

###### If w=0 then return 0 ########################
if IsZero(w) then return w; fi;
Expand Down
19 changes: 15 additions & 4 deletions lib/GOuterGroups/homtogouter.gi
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
InstallMethod(HomToGModule,
[IsHapResolution,IsInt,IsGOuterGroup,IsGOuterGroup,IsGOuterGroup],
function(R,n,A,M,N)
local phitmp,phi,UM,UN, act, MAT,i,x,b,fn,s;
local phitmp,phi,UM,UN, act, MAT,i,x,b,fn,s,P,p,gns,xx,g;

#M:=DirectProductGog(List([1..R!.dimension(n)],i->A));
#N:=DirectProductGog(List([1..R!.dimension(n+1)],i->A));
Expand Down Expand Up @@ -40,9 +40,20 @@ od;
end;
##########################################################

phitmp:=GroupHomomorphismByFunction(UM,UN,x->
Product(List([1..R!.dimension(n)],j->fn(j,Image(Projection(UM,j),x))))
);
#phitmp:=GroupHomomorphismByFunction(UM,UN,x->
#Product(List([1..R!.dimension(n)],j->fn(j,Image(Projection(UM,j),x))))
#);
gns:=GeneratorsOfGroup(UM);
P:=[];
for g in gns do
p:=Product(List([1..R!.dimension(n)],j->fn(j,Image(Projection(UM,j),g))));
#ADDED July 2023
if p=1 then Add(P,One(UN));
else
Add(P,p);
fi;
od;
phitmp:=GroupHomomorphismByImages(UM,UN,gns,P);

phi:=GroupHomomorphismByImagesNC(UM,UN, #ADDED 02/04/2012
GeneratorsOfGroup(UM),
Expand Down
Loading

0 comments on commit 6ae2939

Please sign in to comment.