gap-packages
francy
Jupyter Notebook

An Interactive Discrete Mathematics Framework for GAP

Last updated Jun 30, 2026
10
Stars
8
Forks
12
Issues
0
Stars/day
Attention Score
52
Language breakdown
Jupyter Notebook 61.9%
JavaScript 23.7%
GAP 12.9%
CSS 1.0%
HTML 0.2%
Dockerfile 0.2%
Files click to expand
README

Build Workflow Test Coverage Status

Jupyter Notebook extension Jupyter Lab version

Francy

Francy is a framework for Interactive Discrete Mathematics built for GAP - Groups, Algorithms, Programming - a System for Computational Discrete Algebra.

Unlike XGAP, Francy is not linked with any GUI framework and instead, this package generates a semantic model of data structures that can be used to produce a graphical representation of these, using any other framework / language.

See Official Documentation

We provide a Javascript module able to produce graphical representations of the semantic model, that works on Jupyter environments, embedded in a Web page or as a Desktop Application (e.g. using electron).

See Graphics Interface

Binder

Jupyter Lab Binder

Binder

The following notebooks are available:

| Notebook | Description | |:--------------------------------|:--------------------------------------------------------------| | demo.ipynb | Contains examples of all features present in Francy | | francy.ipynb | First notebook ever created with Francy | | francy-features.ipynb | Contains examples of all features present in Francy | | francy-monoids.ipynb | Contains FrancyMonoids package examples | | francy-monoids-mult-three.ipynb | Contains an example of proofs used in a paper | | francy-numericalsgps.ipynb | Same as above, but the algorithms are visible in the notebook | | ICMS_2018.ipynb | Presentation notebook for the ICMS 2018 in USA | | messages.ipynb | Contains examples of how to use messages | | orbital-graphs.ipynb | Contains some research algorithms for orbital graphs | | output-widget.ipynb | Contains an example of the output of 'plain/text' elements | | subgroup-lattice.ipynb | Contains Subgroup-Lattice package examples |

Jupyter Integration

In order to use this module in JupyterLab and Notebook >=7.0.0, install it as follows:

mcmartins@local:~$ pip install -U jupyterlab-francy

If you still use the old Jupyter Notebook (<7.0.0), you should use the old extension v1.2.4:

mcmartins@local:~$ pip install -U jupyter-francy

Please note that in order to use Francy, it is required that the JupyterKernel GAP package is installed. See Jupyter GAP Kernel for more information.

Package Structure

|Directory |Description | |:-----------|:---------------------------------------------------------------| | tst | contains gap code tests | | schema | contains the francy JSON Schema | | notebooks | contains some notebooks with francy examples | | js | contains the source code of francy-js | | gap | contains the source code of francy-gap | | examples | contains examples used throughout francy-gap documentation | | doc | contains introductory documentation for francy-gap |

Other projects based or inspired by Francy

| Project | Author | Description | |:-----------------------------------------------------------|:-------------------------------------------------|:---------------------------------------------------------| | Jupyterviz | Nathan Carter | Provides general purpose visualization tools | | Francy Julia | Claus Fieker | Francy ported to Julia language | | Francy Widgets | Odile Bénassy | Francy Python adapter for representing graphs in Jupyter |

Releasing

All developments should happen on the branch develop and this should be merged into master when one is happy to release.

To release, the official ReleaseTools procedure should be followed.

Versioning

To update the JS packages version, run the following command and pick the new version:

user@local js/ $ yarn run version

To update the Python3 package version, please change it on the pyproject.toml:

  • js/packages/francy-extension-jupyterlab/pypproject.toml
To update the GAP package version, please change it on the PackageInfo.g file:
  • PackageInfo.g

CI / CD Pipelines

There are 2 workflows defined for this project:

  • CI - This workflow runs all tests (JS and GAP) for every commit/pull request on branches develop and master
  • RELEASE - This workflow runs the Python PyPi.org and NPM releases on new tags created, normally after running the ReleaseTools procedure.

License

MIT License

🔗 More in this category

© 2026 GitRepoTrend · gap-packages/francy · Updated daily from GitHub