According to the title of its handbook, Kenzo is a "Symbolic Software for Effective Homology Computation" and its main audience might be students and researchers in algebraic topology. Have a look at the overview to get a sense for what's there for you to discover.
This repository contains a repackaged version of the Kenzo program by Francis Sergeraert and collaborators. The original version of the program can be found at http://www-fourier.ujf-grenoble.fr/~sergerar/Kenzo/ . This version aims to update its infrastructure by providing the following:
- A simple regression test suite based on FiveAM
- Support for the great freely available Lisp compilers out there, including CCL, [ECL] (https://common-lisp.net/project/ecl/), SBCL, etc.
- Installation via the Quicklisp library manager
- Updated documentation and examples runnable from cl-jupyter
This work is well underway, but there are several outstanding issues.
There are several methods to get going:
- Just play with it a little! (Live)
- Just give me a Docker container!
- Local installation via Quicklisp or ASDF
To load Kenzo as provided by this repo, make sure ASDF knowns where to find the source, e.g. by creating a link to this directory at
~/.local/share/common-lisp/source/
Then in your Lisp (e.g., in ECL) type
(require :asdf)
(require :kenzo)
Assuming you have Quicklisp, there isn't really much to say here:
* (ql:quickload :kenzo)
To load "kenzo":
Install 1 Quicklisp release:
kenzo
; Fetching #<URL "http://beta.quicklisp.org/archive/kenzo/2015-08-04/kenzo-20150804-git.tgz">
; 1835.57KB
==================================================
1,879,625 bytes in 1.48 seconds (1236.91KB/sec)
; Loading "kenzo"
[package cat].....................................
..................................................
..............................
(:KENZO)
*
Similarly, you'd load Kenzo via (ql:quickload :kenzo)
.
This release contains three Kenzo versions 1.1.[7,8,9]
. For backward
compatibility, the default version is still 1.1.7
. There are separate
packages cat-[7,8,9]
for the different versions and cat
and kenzo
are package nicknames for cat-7
:
* (ql:quickload :kenzo)
To load "kenzo":
Load 1 ASDF system:
kenzo
; Loading "kenzo"
(:KENZO)
* (in-package :cat)
#<PACKAGE "CAT-7">
* (kenzo-version)
*** Kenzo-Version 1.1.7 ***
* (in-package :kenzo)
#<PACKAGE "CAT-7">
* (kenzo-version)
*** Kenzo-Version 1.1.7 ***
*
You can change that, for example, by RENAME-PACKAGE
or USE-PACKAGE
:
* (ql:quickload :kenzo)
To load "kenzo":
Load 1 ASDF system:
kenzo
; Loading "kenzo"
(:KENZO)
* (rename-package 'cat-7 'cat-old)
#<PACKAGE "CAT-OLD">
* (rename-package 'cat-9 'cat-new '(cat kenzo))
#<PACKAGE "CAT-NEW">
* (cat:kenzo-version)
*** Kenzo-Version 9 ***
*