|
Model and Language
|
|
|
Model and Language
The data model for constraint calculus is adapted from constraint spatio-temporal (CST) objects, that may hold spatio-temporal constraint data, conceptually represented by constraints (i.e. symbolic expressions). In the current version, linear arithmetic constraints (i.e. inequalities and equations) over reals are implemented. New CST objects are constructed using logical connectives, existential quantifiers and variable renaming, within a mutli-typed constraint algebra. The constraint module also provides predicates such as for testing satisfiability, implication etc, that are used as selecting conditions in hosting monoid comprehension queries. The general framework of the CCUBE language is the monoid comprehensions language, in which CST objects serve as a special data type, and are implemented as a library of interrelated C++ classes. The data model for monoid comprehensions is based on the notion of monoid, which is a conceptual data type capturing uniformly aggregations, collections, and other types over which one can ``iterate''. This includes disjunctions and conjunctions of constraints. The ability to treat disjunctive and conjunctive constraints uniformly as collections is a very important feature of CCUBE: it allows to express and implement many constraint operations through nested monoid comprehensions, i.e. in the same language as hosting queries. For example, the satisfiability test of a disjunction of conjunctions of linear inequalities is expressed as a monoid comprehension query that iterates over the disjuncts (each being a conjunction), and tests the satisfiability of every conjunction (using the simplex algorithm).
|
|
presentation created by Victor E. Segal |