This is to present the NCL Natural Constraint Language.
A paper on an old NCL prototype was published in Journal of Logic Programming (2000). Recently a book "The NCL Natural Constraint Language" was published by Springer (2012)(www.springer.com/computer/swe/book/978-3-642-23844-4).
NCL is a description language in conventional mathematical logic for modeling and solving constraint satisfaction problems. It models problems naturally in a simplified form of first-order logic with quantifiers, boolean logic, numeric constraints, set reasoning, logical functions, and date/time operations; it solves problems by mixed set programming over the mixed domain of real numbers, integers, booleans, dates/times, references, and in particular sets.
In addition to intelligent parsing and mixed set programming, NCL uses search rules to specify a solution strategy in a straightforward way; this facilitates the use of heuristics and business rules.
Another feature of NCL is its logical function in addition to sub-model and included file. Programmer can define user functions and use them like conventional functions such as cosine. Logical function not only enables recursive definition, but can also encapsulate controls such as input, output, query, optimization objective and even a whole solver in a logical manner,
which is especially useful in local optimization and iterative optimization.
As a practical programming language, NCL still contains: a message system, debugging facilities (expectation constraints, programmed break, custom messages), embedded SQL, etc. Furthermore, it allows low-level access to a variable's partial information and jump at input/output state.
By "simplified first-order logic", NCL differs from other declarative languages: It is different from Prolog (predicate logic), CLP (Prolog + constraints), CHIP (Prolog + constraints, in particular global constraints), AMPL (modeling language, MP), OPL (algebraic modeling, MP+CP), and Oz (functional constraint programming), just to name a few.
Compared to (algebraic) modeling languages, NCL adopts quantifier logic instead of loop, mixed domain instead of mainly numeric domain, and logical function instead of procedure. The grammar of NCL conforms to mathematical logic conventions (coding formulas in TeX); typing in NCL is implicit though NCL also supports explicit typing; mixed set programming highlights the expressive and algorithmic power of set theoretic reasoning; types and operations of date/time make planning and scheduling more natural.
[ comp.ai is moderated ... your article may take a while to appear. ]