Overview of Arom Algebraic Modeling Language

What is an Algebraic Modeling Language ?

Algebraic modeling languages (AMLs) are languages based on algebraic notations used in scientific textbooks and publications for describing mathematical models consisting of equations and/or constraints. Allowing indexed expressions, sets, variables and iterated operators like and , they provide a convenient way to form expressions such as:

AMLs have become very popular in the operations research community through languages like AMPL and GAMS.

The popularity of AMLs for numerical modeling comes from different factors. First, it is not necessary to be a computer scientist in order to use these languages: the effort to implement a model using an AML is small once the mathematical equations and/or constraints are available. Second, AMLs are declarative: each mathematical equation or constraint in a model forms an independent corpus of knowledge, and the order in which the equations and/or constraints are written is unimportant. These features make AMLs very suitable for building numerical models.

Why using an AML in Arom ?

While AMLs are very powerful for writing numerical models, several systems in the field of knowledge-based simulation and constraint programming have shown that AMLs are equally powerful for manipulating symbolic expressions. This ability of manipulating both numerical and symbolic information makes AMLs very attractive in the context of a system like Arom.

Arom AML has three purposes:

  1. a language for defining (numerical and/or symbolic) equations allowing variables of classes and associations to be computed.
  2. a language for specifying (numerical and/or symbolic) constraints which must hold within a class or within an association or between variables.
  3. a query language, allowing one to find the objects or tuples which verify a specific condition expressed using the AML.

In the present version of Arom, only the first of these possibilities is implemented. In the near future, the next two are expected to be implemented.

Equations in Arom

An Arom equation is the definition of a variable belonging to a class or to an association. An exemple is given below.

class: square
  variable: length
    type: float
  surface:
    type: float

    definition: surface = length * length