Modularity and composability in Mathematical Computation

Nicolas M. Thiéry et al.

Tetrapod: Modular Knowledge workshop

FLoC 2018, Oxford, July 13th of 2018


Abstract

Over the last decades, a huge amount of computational software was developed for pure mathematics, in particular to support research and education. As for any complex ecosystem of software components, the ability to compose them has a multiplier effect on the expressive power, flexibility, and range of applications.

The purpose of this session is to share experience on the many barriers to composability in computational mathematics, and how they are being tackled. Of particular interest will be the exploitation of knowledge to leverage some of the barriers. feedback from neighbor fields (proofs, data, knowledge) will be most welcome.


A collaborative document

This document, hosted on: https://hackmd.io/IZESWGzKSOCKJiC_tIP3pw, benefited from edits and comments from the participants of the workshop, including:


Composability for Math software?

For the sake of simplicity, we will mostly focus on two aspects of composability: the ability to transfer data and run procedures across “systems” (two different software, two instances of the same software on different machines, two libraries within a system, …).


Data transfers


Procedure calls


Barriers faced by the computational pure maths community?


Semantic barriers


The good news

We can afford not to be completely formal; best effort is usually ok


Social barriers


Technical barriers


Tendencies


Knowledge for in-system modularity


Knowledge for cross-system modularity


A tension when (attempting to) modularize large systems


Open discussion


Appendix: some case studies and tentative solutions


OpenMath

After twenty years, little adoption


The Math-in-the-Middle approach


Categories in GAP, Axiom, MuPAD, SageMath


Case Study: libsemigroups:, a library for computing with semigroups

Author: James B. Mitchel et al.


Case Study: the Sage / GAP interface