Francy - An Interactive Discrete Mathematics Framework for GAP
Data visualization and interaction with large data sets is known to be essential and critical in many businesses today, and the same applies to research and teaching, in this case, when exploring large and complex mathematical objects. GAP is a computer algebra system for computational discrete algebra with an emphasis on computational group theory. The existing XGAP package for GAP works exclusively on the X Window System. It lacks abstraction between its mathematical and graphical cores, making it difficult to extend, maintain, or port. In this paper, we present Francy, a graphical semantics package for GAP. Francy is responsible for creating a representational structure that can be rendered using many GUI frameworks independent from any particular programming language or operating system. Building on this, we use state of the art web technologies that take advantage of an improved REPL environment, which is currently under development for GAP. The integration of this project with Jupyter provides a rich graphical environment full of features enhancing the usability and accessibility of GAP.
KeywordsVisualization Interaction Graphics Mathematics GAP Jupyter
We are grateful to James D. Mitchell, Pedro A. García-Sánchez, João Araújo and Francesca Fusco for their suggestions that led to a much improved version of the paper.
We are also very grateful to the anonymous referees for their careful reviews and helpful suggestions.
The first author is grateful to CoDiMa (CCP in the area of Computational Discrete Mathematics - EPSRC EP/M022641/1, 01/03/2015-29/02/2020) for supporting the attendance at the event Computational Mathematics with Jupyter 2017 in Edinburgh, in which some of this research was done. The second author has received funding from the European Union project Open Digital Research Environment Toolkit for the Advancement of Mathematics (EC Horizon 2020 project 676541, 01/09/2015-31/08/2019).
- 1.Berg, J.: Visual Leap: A Step-by-Step Guide to Visual Learning for Teachers and Students. Bibliomotion Incorporated, San Francsico (2015)Google Scholar
- 2.The GAP Group: Gap - groups, algorithms, and programming, version 4.9.1 (2018). https://www.gap-system.org/
- 3.Neunhöffer, M., Celler, F.: XGAP documentation, what is XGAP? (2018). https://www.gap-system.org/Manuals/pkg/xgap-4.26/htm/CHAP002.htm
- 4.Neubüser, J., Felsch, V., Hippe, L.: ITC documentation, what is ITC? (2018). https://www.gap-system.org/Manuals/pkg/itc/htm/CHAP001.htm
- 5.Woodroofe, R.: Introducing gap.app (2018). https://cocoagap.sourceforge.io/
- 6.Jupyter Community: Project jupyter (2018). http://jupyter.org/
- 7.OpenDreamKit Community: Project opendreamkit (2018). http://opendreamkit.org/
- 8.Machado Martins, M.: Francy github page (2018). https://github.com/mcmartins/francy/
- 9.De Beule, J., Jonušas, J., Mitchell, J.D., Torpey, M., Wilson, W.A.: Digraphs - gap package, version 0.12.1, April 2018. https://doi.org/10.5281/zenodo.596465
- 10.Tucker, A.B.: Computer Science Handbook, 2nd edn. CRC Press, New York (2004)Google Scholar
- 12.Machado Martins, M.: Francy schema github page (2018). https://github.com/mcmartins/francy/blob/master/gap/schema/francy.json
- 13.JSON Schema Community: JSON schema (2018). http://json-schema.org/
- 14.Mozilla and individual contributors: Mime types (2018). https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
- 15.Jefferson, C.: JSON - reading and writing JSON (2018). https://www.gap-system.org/Manuals/pkg/json-1.2.0/doc/chap0.html
- 16.Jupyter Community: Jupyter documentation, jupyter kernel gateway (2018). http://jupyter-kernel-gateway.readthedocs.io/en/latest/
- 17.Pfeiffer, M.: Native Jupyter kernel for gap github page (2018). https://github.com/gap-packages/JupyterKernel
- 18.Bostock, M.: Data-driven documents, d3 (2018). https://d3js.org/
- 19.Mozilla and individual contributors: Websockets (2018). https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
- 20.Jeffrey, C.: tty.js github page (2018). https://github.com/chjj/tty.js
- 21.García-Sánchez, P.A.: Francy monoids github page (2018). https://github.com/pedritomelenas/francy-monoids
- 22.Machado Martins, M.: Subgroup lattice github page (2018). https://github.com/mcmartins/subgroup-lattice
- 23.Machado Martins, M.: Interactive todd-coxeter github page (2018). https://github.com/mcmartins/interactive-todd-coxeter
- 24.Mozilla and individual contributors: Web workers API (2018). https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API