Source and supporting material for Representing Finite Lattices as Congruence
Lattices of Finite Algebras, by William DeMeo, Ralph Freese and Peter Jipsen.
The LaTeX source of the article is in article/.
It asks which finite lattices are congruence lattices of finite algebras, and answers it for the small ones: Section 4 tabulates 35 lattices of at most seven elements and, for 29 of them, a unary algebra representing each one.
These instructions assume you have Nix installed and you know how to use the command line in a terminal. If you don't have Nix, go to https://nixos.org/ and install it.
One command sets up everything, and installs nothing permanently on your system:
nix develop
That command lands you in a Nix "devShell" with all the tools you need:
GAP with its Small Groups Library, a JDK, the Universal Algebra Calculator,
TeX Live, Jython, Python, make and gh, all pinned by flake.lock, so that
everyone builds the paper with the same software.
Once you're in the devShell,
make paper build article/SmallLatticeReps.pdf
make verify run the computational checks that gate a change; CI runs this and nix flake check
make check-catalog check every algebra against the lattice drawn beside it
make uacalc-smoke check that the calculator comes up (Linux only)
make help list every target
uacalc opens the calculator on an algebra file, uacalc-cli is its Jython
command line, and docs/CHECKING-AN-ALGEBRA.md is how to satisfy
yourself about a single algebra by hand, in either engine.
article/ |
the LaTeX source of the article |
lattice-lists/ |
Peter Jipsen's catalogs of small lattices and their congruence representations |
misc/ |
background papers by Aschbacher, Pálfy, and Pálfy and Pudlák |
talks/ |
slides from talks about this work |
programs/ |
see programs/README.md: the GAP programs now live in UniversalAlgebra/fin-lat-rep-gap |
uacalc-files/ |
see uacalc-files/README.md: the algebra files now live in UACalc/AlgebraFiles |
The overalgebras construction is in williamdemeo/Overalgebras; the closure
algorithm, the article's workhorse, is BasicPartition.java in
UACalc/uacalcsrc.
CONTRIBUTING.md has the git workflow, how to add a BibTeX entry, and what
to do when the shell or the LaTeX build misbehaves; the roadmap is
docs/GITHUB_PROJECT.md. Questions and suggestions are welcome as
issues.