2. Library structure

The mgl library consists on the following files and directories:

  • One directory per language
  • abstract directory: For the abstract modules of the library
  • resources directory: Containing the general resource modules, incomplete concrete modules and generic lexicon.
  • server: Code for the mathbar demo.
  • test: Testing facilities and data
  • transfer: Haskell transfer modules.

2.1 Logical structure

At the same time, the library can be organized in three layers of increasing complexity:

  • Ground layer: it contains basic and atomic elements. Modules Ground and Variables.
  • OpenMath layer: the bulk of the library resides here: There is a module for each targeted OpenMath Content Dictionary, namely: Arith1, Arith2, Calculus1, Complex1, PlanGeo1, Fns1, Integer1, Integer2, Interval1, Limit1, LinAlg1, LinAlg2, Logic1, MinMax1, Nums1, Relation1, Rounding1, Set1, SetName1, Transc1, VecCalc1 and Quant1
  • Operations layer: the top layer is for expressing simple mathematical drills by combining an imperative (Compute, Prove, Find, etc.) with the productions of the OpenMath layer. There is also possible to express a sequence of simple computations and to set pre-conditions.