Skip to content

Commit

Permalink
v-1.62
Browse files Browse the repository at this point in the history
  • Loading branch information
grahamknockillaree committed Feb 1, 2024
1 parent c3799c0 commit a3645e9
Show file tree
Hide file tree
Showing 72 changed files with 1,002 additions and 184 deletions.
39 changes: 0 additions & 39 deletions HowToUpdateHap.txt

This file was deleted.

8 changes: 4 additions & 4 deletions PackageInfo.g
Expand Up @@ -8,8 +8,8 @@ SetPackageInfo( rec(

PackageName := "HAP",
Subtitle := "Homological Algebra Programming",
Version := "1.61",
Date := "02/01/2024",
Version := "1.62",
Date := "01/02/2024",
License := "GPL-2.0-or-later",

SourceRepository := rec(
Expand Down Expand Up @@ -107,8 +107,8 @@ AvailabilityTest := ReturnTrue,
BannerString := Concatenation( "Loading HAP ",
String( ~.Version ), " ...\n" ),

#TestFile := "tst/testquick.g",
TestFile := "tst/testall.g",
TestFile := "tst/testquick.g",
#TestFile := "tst/testall.g",

Keywords := [ "homology", "cohomology", "resolution", "homotopy group",
"module of identities", "CW complex", "simplicial complex", "cubical complex", "permutahedral complex", "knots", "nonabelian tensor", "nonabelian exterior", "covering space" ]
Expand Down
12 changes: 6 additions & 6 deletions README.md
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.61.tar.gz to the subdirectory "pkg/" of GAP. (If
* First download the file hap1.62.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.61.tar.gz" followed by
"tar -xvf hap1.61.tar" .
* Change to directory "pkg/" and type "gunzip hap1.62.tar.gz" followed by
"tar -xvf hap1.62.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.61/www" of this distribution).
included in directory "pkg/Hap1.62/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.61/" .
1. Change to the directory "pkg/Hap1.62/" .
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.61/" and type "./uncompile".
"pkg/Hap1.62/" and type "./uncompile".
2 changes: 1 addition & 1 deletion date
@@ -1 +1 @@
02 Jan 2024
01 Feb 2024
2 changes: 2 additions & 0 deletions doc/Test.xml
Expand Up @@ -509,6 +509,7 @@
<C>IndeterminateDegrees</C><Br/>
<C>IndeterminatesOfGradedAlgebraPresentation</C><Br/>
<C>IndeterminatesOfPolynomial</C><Br/>
<C>InitialObject</C><Br/>
<C>InnerAutomorphismGroupQuandle</C><Br/>
<C>InnerAutomorphismGroupQuandleAsPerm</C><Br/>
<C>InverseRingHomomorphism</C><Br/>
Expand All @@ -535,6 +536,7 @@
<C>SourcePolynomialRing</C><Br/>
<C>SourceRelations</C><Br/>
<C>StarGraph</C><Br/>
<C>TerminalObject</C><Br/>
<C>TermsOfPolynomial</C><Br/>
<C>UnivariateMonomialsOfMonomial</C><Br/>
<C>CoefficientsRing</C><Br/>
Expand Down
183 changes: 108 additions & 75 deletions doc/Undocumented.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion doc/newCW.xml
Expand Up @@ -9,5 +9,5 @@
</Description> </ManSection>
<ManSection> <Func Name="ChainComplexOfRegularCWComplex" Arg="Y"/> <Description> <P/> Inputs a regular CW-complex <M>Y</M> and returns the cellular chain complex of <M>Y</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="FundamentalGroup" Arg="Y"/> <Func Name="FundamentalGroup" Arg="Y,n"/> <Description> <P/> Inputs a regular CW-complex <M>Y</M> and, optionally, the number of some 0-cell. It returns the fundamental group of <M>Y</M> based at the 0-cell <M>n</M>. The group is returned as a finitely presented group. If <M>n</M> is not specified then it is set <M>n=1</M>. The algorithm requires a discrete vector field on <M>Y</M>. If <M>Y</M> does not initially have a discrete vector field then one is constructed. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>12</LinkText></URL>&nbsp;
<ManSection> <Func Name="FundamentalGroup" Arg="Y"/> <Func Name="FundamentalGroup" Arg="Y,n"/> <Description> <P/> Inputs a regular CW-complex <M>Y</M> and, optionally, the number of some 0-cell. It returns the fundamental group of <M>Y</M> based at the 0-cell <M>n</M>. The group is returned as a finitely presented group. If <M>n</M> is not specified then it is set <M>n=1</M>. The algorithm requires a discrete vector field on <M>Y</M>. If <M>Y</M> does not initially have a discrete vector field then one is constructed. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap3.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap5.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap11.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPeripheral.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutQuandles.html</Link><LinkText>11</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutRandomComplexes.html</Link><LinkText>12</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>13</LinkText></URL>&nbsp;
</Description> </ManSection> </Section> </Chapter>
4 changes: 4 additions & 0 deletions doc/newCategories.xml
Expand Up @@ -17,6 +17,10 @@
</Description> </ManSection>
<ManSection> <Func Name="TerminalArrow" Arg="X"/> <Description> <P/> Inputs an object <M>X</M> in some category, and returns the arrow from <M>X</M> to the terminal object in the category. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="HasInitialObject" Arg="Name"/> <Description> <P/> Inputs the name of a category and returns true or false depending on whether the category has an initial object. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="HasTerminalObject" Arg="Name"/> <Description> <P/> Inputs the name of a category and returns true or false depending on whether the category has a terminal object. <P/><B>Examples:</B>
</Description> </ManSection>
<ManSection> <Func Name="Source" Arg="f"/> <Description> <P/> Inputs an arrow <M>f</M> in some category, and returns its source. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutNonabelian.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>11</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="Target" Arg="f"/> <Description> <P/> Inputs an arrow <M>f</M> in some category, and returns its target. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;
Expand Down
2 changes: 1 addition & 1 deletion doc/newChainComplexes.xml
Expand Up @@ -3,7 +3,7 @@
</Description> </ManSection>
<ManSection> <Func Name="ChainComplexOfPair" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex or cubical complex <M>T</M> and contractible subcomplex <M>S</M>. It returns the quotient <M>C(T)/C(S)</M> of cellular chain complexes. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="ChevalleyEilenbergComplex" Arg="X,n"/> <Description> <P/> Inputs either a Lie algebra <M>X=A</M> (over the ring of integers <M>Z</M> or over a field <M>K</M>) or a homomorphism of Lie algebras <M>X=(f:A \longrightarrow B)</M>, together with a positive integer <M>n</M>. It returns either the first <M>n</M> terms of the Chevalley-Eilenberg chain complex <M>C(A)</M>, or the induced map of Chevalley-Eilenberg complexes <M>C(f):C(A) \longrightarrow C(B)</M>. <P/> (The homology of the Chevalley-Eilenberg complex <M>C(A)</M> is by definition the homology of the Lie algebra <M>A</M> with trivial coefficients in <M>Z</M> or <M>K</M>). <P/> This function was written by <B>Pablo Fernandez Ascariz</B> <P/><B>Examples:</B>
<ManSection> <Func Name="ChevalleyEilenbergComplex" Arg="X,n"/> <Description> <P/> Inputs either a Lie algebra <M>X=A</M> (over the ring of integers <M>Z</M> or over a field <M>K</M>) or a homomorphism of Lie algebras <M>X=(f:A \longrightarrow B)</M>, together with a positive integer <M>n</M>. It returns either the first <M>n</M> terms of the Chevalley-Eilenberg chain complex <M>C(A)</M>, or the induced map of Chevalley-Eilenberg complexes <M>C(f):C(A) \longrightarrow C(B)</M>. <P/> (The homology of the Chevalley-Eilenberg complex <M>C(A)</M> is by definition the homology of the Lie algebra <M>A</M> with trivial coefficients in <M>Z</M> or <M>K</M>). <P/> This function was written by <B>Pablo Fernandez Ascariz</B> <P/><B>Examples:</B> <URL><Link>../tutorial/chap7.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="LeibnizComplex" Arg="X,n"/> <Description> <P/> Inputs either a Lie or Leibniz algebra <M>X=A</M> (over the ring of integers <M>Z</M> or over a field <M>K</M>) or a homomorphism of Lie or Leibniz algebras <M>X=(f:A \longrightarrow B)</M>, together with a positive integer <M>n</M>. It returns either the first <M>n</M> terms of the Leibniz chain complex <M>C(A)</M>, or the induced map of Leibniz complexes <M>C(f):C(A) \longrightarrow C(B)</M>. <P/> (The Leibniz complex <M>C(A)</M> was defined by J.-L.Loday. Its homology is by definition the Leibniz homology of the algebra <M>A</M>). <P/> This function was written by <B>Pablo Fernandez Ascariz</B> <P/><B>Examples:</B>
</Description> </ManSection>
Expand Down
6 changes: 3 additions & 3 deletions doc/newCubical.xml
Expand Up @@ -13,7 +13,7 @@
</Description> </ManSection>
<ManSection> <Func Name="PureCubicalComplexDifference" Arg="S,T"/> <Description> <P/> Inputs two pure cubical complexes with common dimension and array size. It returns the difference S-T. (An entry in the binary array of the difference has value 1 if and only if the corresponding entry in the binary array of S is 1 and the corresponding entry in the binary array of T is 0.) <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutKnots.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="ReadImageAsPureCubicalComplex" Arg="str,n"/> <Description> <P/> Reads an image file <M>str</M> (= "file.png", "file.eps", "file.bmp" etc) and an integer <M>n</M> between 0 and 765. It returns a 2-dimensional pure cubical complex based on the black/white version of the image determined by the threshold <M>n</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.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/aboutTDA.html</Link><LinkText>4</LinkText></URL>&nbsp;
<ManSection> <Func Name="ReadImageAsPureCubicalComplex" Arg="str,n"/> <Description> <P/> Reads an image file <M>str</M> (= "file.png", "file.eps", "file.bmp" etc) and an integer <M>n</M> between 0 and 765. It returns a 2-dimensional pure cubical complex based on the black/white version of the image determined by the threshold <M>n</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap10.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutPersistent.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCubical.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>5</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="ReadLinkImageAsPureCubicalComplex" Arg="str"/> <Func Name="ReadLinkImageAsPureCubicalComplex" Arg="str,n"/> <Description> <P/> Reads an image file <M>str</M> (= "file.png", "file.eps", "file.bmp" etc) containing a knot or link diagram, and optionally a positive integer <M>n</M>. The integer <M>n</M> should be a little larger than the line thickness in the link diagram, and if not provided then <M>n</M> is set equal to 10. The function tries to output the corresponding knot or link as a 3-dimensional pure cubical complex. Ideally the link diagram should be produced with line thickness 6 in Xfig, and the under-crossing spaces should not be too large or too small or too near one another. The function does not always succeed: it applies several checks, and if one of these checks fails then the function returns "fail". <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutLinks.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
Expand Down Expand Up @@ -67,7 +67,7 @@
</Description> </ManSection>
<ManSection> <Func Name="HomotopyEquivalentMaximalPureCubicalSubcomplex" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a pure cubical subcomplex <M>S</M>. It returns a pure cubical subcomplex <M>H</M> of <M>T</M> which contains <M>S</M> and is maximal with respect to the property that it is homotopy equivalent to <M>S</M>. <P/><B>Examples:</B>
</Description> </ManSection>
<ManSection> <Func Name="HomotopyEquivalentMinimalPureCubicalSubcomplex" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a pure cubical subcomplex <M>S</M>. It returns a pure cubical subcomplex <M>H</M> of <M>T</M> which contains <M>S</M> and is minimal with respect to the property that it is homotopy equivalent to <M>T</M>. <P/><B>Examples:</B>
<ManSection> <Func Name="HomotopyEquivalentMinimalPureCubicalSubcomplex" Arg="T,S"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> together with a pure cubical subcomplex <M>S</M>. It returns a pure cubical subcomplex <M>H</M> of <M>T</M> which contains <M>S</M> and is minimal with respect to the property that it is homotopy equivalent to <M>T</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="BoundaryOfPureCubicalComplex" Arg="T"/> <Description> <P/> Inputs a pure cubical complex <M>T</M> and returns its boundary as a pure cubical complex. The boundary consists of all cubes which have one or more facets that lie in just the one cube. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutTDA.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
Expand Down Expand Up @@ -95,7 +95,7 @@
</Description> </ManSection>
<ManSection> <Func Name="ReadImageAsFilteredPureCubicalComplex" Arg="file,n"/> <Description> <P/> Inputs a string containing the path to an image file, together with a positive integer n. It returns a filtered pure cubical complex of filtration length <M>n</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="ComplementOfFilteredPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and returns the complement as a filtered pure cubical complex. <P/><B>Examples:</B>
<ManSection> <Func Name="ComplementOfFilteredPureCubicalComplex" Arg="M"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and returns the complement as a filtered pure cubical complex. <P/><B>Examples:</B> <URL><Link>../tutorial/chap5.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection>
<ManSection> <Func Name="PersistentHomologyOfFilteredPureCubicalComplex" Arg="M,n"/> <Description> <P/> Inputs a filtered pure cubical complex <M>M</M> and a non-negative integer <M>n</M>. It returns the degree <M>n</M> persistent homology of <M> M</M> with rational coefficients. <P/><B>Examples:</B>
</Description> </ManSection> </Section> </Chapter>

0 comments on commit a3645e9

Please sign in to comment.