A set of tools for parsing definitions of graded (co)algebras.
The purpose of this tool set is to provide support for importing and validating definitions for cellular chain complexes and diagonals on these complexes. A small subset of LaTeX tokens and syntax is used for the input file language. This is intended to simplify the translation between research and publication workflows. This tool set is developed as part of a joint research project of Ronald Umble (Millersville University), Barbara Nimershiem (Franklin & Marshall College), and Merv Fansler (Millersville University).
This script parses a chain complex definition, validates consistency of boundary definitions, and outputs a set out SageMath object definitions that can be used to import the definition into SageMath.
python chain2matrix.py data/mickey.tex
Output will include:
- differentials (
d1,d2,...
); - variable declarations for symbolic ring representation support (
var(...)
); and - symbolic chain group definitions (
{ 0: [...], 1: [...], ... }
).
This script parses a chain complex definition and checks the validity of the diagonal (coproduct) definition.
python validateCoproduct.py data/mickey.tex
Output computes \Delta \partial
and (1 \otimes \partial + \partial \otimes 1) \Delta
and compares the results.
The homology computed by CHomP in SageMath is not guaranteed to provide minimal (least hamming weight) generators for the equivalence classes. The methods in this script provide a naive means of attempting to search for minimal generators equivalent to those returned by CHomP.
cc_hom = exampleChainComplex.homology(generators=True)
cc_gens = extract_generators(cc_hom)
cc_min_gens = minimal_generators(cc_gens, steps=10, pruning=True)
cc_min_gens
This script parses a chain complex definition, computes homology, and applies the transfer algorithm to induce coproducts in homology from the defined coproducts. It will attempt to compute up to the 4-ary coproduct in homology, as long as the 3-ary coproduct does not vanish.
python transferPart.py data/linked.tex
Since homology definition can influence the symbolic simplification (e.g., you may get something more readable), an option to provide user-specified homology groups (and the representative for each class) is available. The -hg
flag can be used to designate a homology group definition.
Here is an example using a differential graded coalgebra:
python transferPart.py -hg data/hom_dgc.py data/dgc.tex
A central motivation for this work was to explore the application of the transfer algorithm to Brunnian link complements. Specialized scripts that compute transfer for Borromean rings are included.
python transferBR.py -hg data/hom_borromean.py data/borromean.tex
More details on this can found in the thesis document, available in the Releases section of the repository.