Advertisement

Francy - An Interactive Discrete Mathematics Framework for GAP

  • Manuel Machado Martins
  • Markus Pfeiffer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10931)

Abstract

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.

Keywords

Visualization Interaction Graphics Mathematics GAP Jupyter 

Notes

Acknowledgements

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).

References

  1. 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. 2.
    The GAP Group: Gap - groups, algorithms, and programming, version 4.9.1 (2018). https://www.gap-system.org/
  3. 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. 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. 5.
    Woodroofe, R.: Introducing gap.app (2018). https://cocoagap.sourceforge.io/
  6. 6.
    Jupyter Community: Project jupyter (2018). http://jupyter.org/
  7. 7.
    OpenDreamKit Community: Project opendreamkit (2018). http://opendreamkit.org/
  8. 8.
    Machado Martins, M.: Francy github page (2018). https://github.com/mcmartins/francy/
  9. 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. 10.
    Tucker, A.B.: Computer Science Handbook, 2nd edn. CRC Press, New York (2004)Google Scholar
  11. 11.
    Crockford, D.: The Javascript object notation (JSON) data interchange format (2018). https://tools.ietf.org/html/rfc8259
  12. 12.
    Machado Martins, M.: Francy schema github page (2018). https://github.com/mcmartins/francy/blob/master/gap/schema/francy.json
  13. 13.
    JSON Schema Community: JSON schema (2018). http://json-schema.org/
  14. 14.
    Mozilla and individual contributors: Mime types (2018). https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
  15. 15.
    Jefferson, C.: JSON - reading and writing JSON (2018). https://www.gap-system.org/Manuals/pkg/json-1.2.0/doc/chap0.html
  16. 16.
    Jupyter Community: Jupyter documentation, jupyter kernel gateway (2018). http://jupyter-kernel-gateway.readthedocs.io/en/latest/
  17. 17.
    Pfeiffer, M.: Native Jupyter kernel for gap github page (2018). https://github.com/gap-packages/JupyterKernel
  18. 18.
    Bostock, M.: Data-driven documents, d3 (2018). https://d3js.org/
  19. 19.
    Mozilla and individual contributors: Websockets (2018). https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
  20. 20.
    Jeffrey, C.: tty.js github page (2018). https://github.com/chjj/tty.js
  21. 21.
    García-Sánchez, P.A.: Francy monoids github page (2018). https://github.com/pedritomelenas/francy-monoids
  22. 22.
    Machado Martins, M.: Subgroup lattice github page (2018). https://github.com/mcmartins/subgroup-lattice
  23. 23.
    Machado Martins, M.: Interactive todd-coxeter github page (2018). https://github.com/mcmartins/interactive-todd-coxeter
  24. 24.
    Mozilla and individual contributors: Web workers API (2018). https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API
  25. 25.
    Electron Community: Build cross platform desktop apps with Javascript, HTML, and CSS (2018). https://electronjs.org/

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Universidade AbertaLisbonPortugal
  2. 2.University of St AndrewsSt AndrewsScotland

Personalised recommendations