Home » GAP » Why do we need OpenMath?

Why do we need OpenMath?

How do you denote the dihedral group of order n?

This is not a question of “vim or emacs” or “tabs or spaces” sort, but still there are two notations in use. Some sources use Dn to denote a dihedral group of order n, and some others – a dihedral group of order 2n. Both notations are also reflected in mathematical software.

For example, in GAP DihedralGroup(n) returns a group of order n:

gap

and in SageMath – a group of order 2n:

sagemath

Let us look at other systems:

  • Magma online calculator

magma

  • Maple

maple

  • Mathematica

mathematica

  • Matlab
  • matlabSymPy

sympy

  • WolframAlpha “knows” about both notations and suggest to choose one:

WolframAlpha

These examples show that one should not assume that similarly named functions have the same semantics while designing interfaces between computer algebra systems. They may differ in many things – for example, in the range of acceptable arguments, in the output type, etc. Even more, all of this may suddenly change in the next version of the system.

Here comes OpenMath. For example, the documentation for the OpenMath symbol for the dihedral group says:

OpenMathContentDictionary

GAP supports OpenMath through the OpenMath package. In the example below, it parses OpenMath code for the dihedral group of order 8 and returns the correct group:

gap_reads_openmath

OpenMath package provides functionality for the conversion between GAP and OpenMath. It is enhanced by the SCSCP package that implements the framework for remote procedure calls in which both data and instructions are encoded using OpenMath. SCSCP stands for the Symbolic Computation Software Composability Protocol. Using it, one could connect any SCSCP-compliant software – you may find the list at the SCIEnce project’s website.