= p_group_cohomology =

== Description ==

Modular Cohomology Rings of Finite Groups

The package is located at http://users.minet.uni-jena.de/cohomology/,
that's to say the tarball p_group_cohomology-x.y.tar.gz can be found
there and the documentation of the package is provided at
http://users.minet.uni-jena.de/cohomology/documentation/

== License ==

Copyright (C) 2018 Simon A. King  <simon.king@uni-jena.de>
Copyright (C) 2011 Simon A. King  <simon.king@uni-jena.de>
Copyright (C) 2009 Simon A. King  <simon.king@nuigalway.ie> and
                   David J. Green <david.green@uni-jena.de>

Distributed under the terms of the GNU General Public License (GPL),
version 2 or later (at your choice).

   This code is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

The full text of the GPL is available at:

                http://www.gnu.org/licenses/

The package includes a data base of cohomology rings of the groups of
order 64 and provides access to a data base of cohomology rings of the
groups of order 128 and 243, located at
  http://cohomology.uni-jena.de/db/
These data bases are distributed under the Creative Commons
Attribution-Share Alike 3.0 License. The full text of this licence is
available at
  http://creativecommons.org/licenses/by-sa/3.0/

== SPKG Maintainers ==

Simon A. King <simon.king@uni-jena.de>

== Upstream Contact ==

Simon A. King  <simon.king@uni-jena.de>
David J. Green <david.green@uni-jena.de>

== Acknowledgements ==

The development of the initial version of this SPKG was funded by
the German Science Foundation, DFG project GR 1585/4.1, and was
accomplished at the Friedrich Schiller University Jena.

Since version 1.0.1, the further work on this SPKG was funded
by Marie Curie grant MTKD-CT-2006-042685 and was pursued at
the National University of Ireland, Galway. Since Novermber 2010,
it is moved back to Jena.

We thank William Stein for giving us access to various computers
on which we could build test the SPKG and on which some huge computations
could be completed, and acknowledge the support by National Science
Foundation Grant No. DMS-0821725.

We thank Mathieu Dutour Sikirić for hints on how to use GAP
more efficiently.

We owe Peter Symonds the idea of using the Poincaré series in a
rather efficient completeness criterion.

== Dependencies ==

- The SmallGroups library needs to be installed in GAP, as a runtime dependency
  This can be met by installing the database_gap spkg
- The SharedMeatAxe needs to be installed, as a build time dependency.
  This can be met by installing the meataxe spkg

== Testing ==

Our package provides a very short test suite for David Green's routines
for the computation of minimal projective resolutions. The majority of
this package's tests is formed by doc tests in the Cython code. In
fact, any class, method and function is covered by tests.

Note that internet access is required for these tests, as it is attempted to
download cohomology rings from a public data base in the web.

The script ``spkg-check`` calls `sage -t --force_lib` on the files
in `pGroupCohomology`.

== Documentation ==

The documentation of this package is automatically built, if the environment
variable SAGE_SPKG_INSTALL_DOCS is yes (do "export SAGE_SPKG_INSTALL_DOCS=yes"
on the command line before installation). The documents are put into
SAGE_ROOT/local/share/doc/p_group_cohomology/.

== Changelog ==

  * 3.0 (Simon King, January/February 2018):
    - The MeatAxe has been removed from this package and has been replaced
      by "SharedMeatAxe", as an external package.
    - David Green's C code for the computation of minimal projective resolutions
      is now using autotools and is now providing a library.
    - The Python/Cython part of this package is now pip installable.
    - Remove some experimental options
    - Drop support for Singular versions < 3-1-0
    - Drop the old test script, as `sage -t` now works for this package.
    - Drop the old doc builder, as building the docs is now closer to
      Sage's documentation than before.
    - Cope with an API change in SageMath.
  * 2.1.5 (Simon King, Mai 2015):
    - Cope with removal of the ._domain attribute of maps and with changed import locations.
    - Improved computation of the nil-radical, including degree-wise computation
    - Methods is_nilpotent and nilpotency_degree for cohomology ring elements
    - Improved computation of Poincaré series.
    - Hilbert-driven computations for depth and filter degree type.
    - For computing depth, only use filter degree type if it has been previously computed.
  * 2.1.4 (Simon King, April 2013):
    Computational techniques:
    - find_small_last_parameter will now construct a parameter of the cohomology
      ring, by studying the restriction to maximal elementary abelian
      subgroups. In previous version, we could only find parameters of the ring
      approximation. The additional advantage: The computations are easier, since
      the complicated relations of the ring approximation do not need to be
      considered.
    - Compute a complete Gröbner basis, if there was no relation in the previous
      degree. This is an essential speed-up for computing the mod-3 cohomology of
      the third Janko group.

    Coping with changes in Sage:
    - tmp_filename -> tmp_dir
    - SAGE_DATA -> SAGE_SHARE
    - Replace double underscore by single underscore attributes, to avoid name
      mangling
    - Change tests according to GAP's changed random generator

    Miscellaneae:
    - Increase optimization level. If the gcc version is too old, David
      Green's programs won't work in this optimization level. However,
      functionality will be tested before finishing installation of the package.
    - Remove the indentation parameter of RESL. The protocol output first prints
      a short descriptor of the instance whose methods are being called (the descriptor
      is only printed when the active instance changes).
    - Use utilities from os.path, for better portability
    - Unlink symbolic links before saving data
    - Use urllib2
    - Some methods changed from temporary_result to permanent_result. But old data
      remain legible. Most important example: Construction of parameters.
    - Address of Simon King changed from Galway to Jena
  * 2.1.3 (Simon King, July 2012):
    - Improve the heuristic of choosing between Hilbert-Poincaré and Symonds
      criteria. If the computation of parameters in small degrees by lifting
      the Dickson invariants using elimination seems too difficult
      to the user, then this computation can be interrupted with
      Ctrl-c, and then other completion tests (perhaps in higher
      degree) are automatically attempted, without the need of further
      manual intervention.
    - Cope with Cython's new name mangling, by avoiding double underscore
      attributes.
    - If a "permanent result" is indexed by data in the Gap interface,
      then these results can now be pickled, provided that the data
      in Gap can be reconstructed from string representation.
    - Use a lower bound for the depth, if the actual depth is too difficult
      to obtain.
    - Switch the public web repository to a new location.
    - Fix the creation of symbolic links from a private data base to
      a public data base.
    - Fix comparison of MTX matrices (comparison with None used to fail).
  * 2.1.2 (Simon King, March 2012):
    - Some fixes needed with the new version of Cython used by sage-5.0.
    - Some fixes needed with Singular 3-1-3.
    - Using the coercion framework in a better way.
    - Small improvements in the MeatAxe code.
    - Include the docs in the spkg.
    - Improved construction of dependent parameters for Symonds' test.
  * 2.1.1 (Simon King, September 2010):
    - Cohomology data are now by default only created in the private
      database.
    - Data in the public database are accessed via symbolic links
    - Code restructured: The cohomology ring constructor is modularised.
    - Parallel testing now only if the patch of ticket #10004 is applied.
  * 2.1 (Simon King, September 2010):
    - Full doctest coverage and a parallel test script.
    - Cleaning up code in order to reduce the number of compiler
      warnings.
    - Builds and tests on little and big endian machines.
    - Uses features of Singular-3-1-1, but still works with
      Singular-3-1-0.
    - Support for setting random seeds. If the same random seed is
      used, the resulting ring presentation is computationally
      unique and machine independent.
    - Kernels/preimages of induced homomorphisms; Essential and Depth
      Essential ideal.
    - Decorators for methods that cache results that may change if the
      ring structure changes, resp. that cache results that will not
      change once computed. The cached results are preserved under
      pickling. KeyboardInterrupts are cached as well, but a re-computation
      can be forced.
    - Improved use of the Symonds and the Hilbert-Poincaré criteria, using
      algebraically *dependent* parameters.
  * 2.0 (Simon King, April 2010):
    - Modular cohomology rings for *any* finite groups (not just for
      p-groups). This is implemented in a new module
      pGroupCohomology.modular_cohomology, that builds on top of the
      old pGroupCohomology.cohomology module.
    - The build process now uses environment
    variables such as $MAKE or $MKDIR, in order to increase portability.
  * 1.2.p0 (Dima Pasechnik and Simon King, March 2010):
    Adding .hgignore (ignoring src/db and mtxoriginal).
    Adding a robuster test for the existence of the SmallGroups library.
  * 1.2 (Simon King, October 2009):
    - Modified printing for cocycles
    - Minor bug fixes and code improvements.
    - The data base at sage.math has moved.
    - New: Persistent Group Cohomology (bar codes), based on ideas of Graham
      Ellis and Simon King.
  * 1.1 (Simon King August 2009):
    - Yoneda cocomplex
    - Restricted Massey powers and general Massey products.
  * 1.0.2 (Simon King, July 2009):
    - Fixing a computation time regression and two minor bugs.
    - Changing Simon King's email address
  * 1.0.1 (Simon King, July 2009):
    - Licensing GPL 2 or later
  * 1.0 (Simon King and David Green July 2009):
    - First public version
