This is a SageMath package providing functionality for investigating flexible and rigid labelings of graphs. It implements the concepts described in the papers
- Graphs with Flexible Labelings (doi:10.1007/s00454-018-0026-9),
- Graphs with Flexible Labelings allowing Injective Realizations (doi:10.1016/j.disc.2019.111713)
- On the Classification of Motions of Paradoxically Movable Graphs (doi:10.20382/jocg.v11i1a22)
by Georg Grasegger, Jan Legerský and Josef Schicho, and in the doctoral thesis Flexible and Rigid Labelings of Graphs (download here) by Jan Legerský. The construction of motions of n-fold rotationally symmetric frameworks according to the paper Flexible placements of graphs with rotational symmetry (doi:10.1007/978-3-030-91352-6_9) by Sean Dewar, Georg Grasegger and Jan Legerský is under development. Also the concepts from Bracing frameworks consisting of parallelograms (doi:10.26493/2590-9770.1379.7a4) are implemented.
The package is described in FlexRiLoG – A SageMath Package for Motions of Graphs (doi:10.1007/978-3-030-52200-1_44) by Georg Grasegger and Jan Legerský. This Jupyter notebook provides an interactive version of the paper. It includes the definitions of a flexible and rigid labeling and other implemented concepts. You can try it out online without installation:
See also demos and the webpage about movable graphs.
The package can be installed via pip
:
sage -pip install --upgrade flexrilog
In order to install the latest version, download or clone the source code from github.com/Legersky/flexrilog and run
make install
For some functions, the package phcpy or lnumber must be installed.
In case you have downloaded or cloned the package, you can execute in the root folder:
make test
or
make test-long
which runs also doctests marked long
.
To test also methods using phcpy
and lnumber
, run
make test-all
Alternatively, the following commands can be used
sage setup.py test
sage setup.py testLong
sage setup.py testAll
The html documentation can be found online or generated by
make doc
Alternatively,
make doc-pdf
produces a pdf version.
The coverage can be checked with
make coverage
The basic functionality of FlexRiLoG
is presented in the Jupyter notebook examples/FlexRiLoG_demo.ipynb:
The file examples/flexrilog_Motions_of_Graphs.ipynb is a Jupyter notebook version of the paper FlexRiLoG – A SageMath Package for Motions of Graphs (doi:10.1007/978-3-030-52200-1_44) by Georg Grasegger and Jan Legerský:
The file examples/Rotationally_symmetric_frameworks_SoCGmedia.ipynb illustrates using the package for constructing n-fold rotationally symmetric motions of graphs. It is available on Binder as well:
The file examples/BracingFrameworks.ipynb illustrates bracing of frameworks consisting of parallelograms. It is available on Binder as well:
The following notebook is associated to the paper Flexing infinite frameworks with applications to braced Penrose tilings (doi:10.1016/j.dam.2022.09.002) by Jan Legerský and Sean Dewar.