NCL (Natural Constraint Language) is a description language with mathematical logic
as syntax. Il adopts Mixed Set Programming as algorithmic framework for modeling and solving problems.
Combinatorial problems are ubiquitous in the daily life and work. Being usually NP-hard
, they are in general very difficult to solve. The goal of designing NCL is to provide a programming language that is close to basic human reasoning which could be to a large extent symbolized by conventional mathematical logic
. In this sense, NCL is a description language with context-sensitive
(while not context-free
) syntax for solving constraint satisfaction problems
. Consequently, NCL supports implicit typing and context-based constraint reasoning and solving.
NCL stems from Constraint Programming. However its basic differences from CP systems and script style modeling languages are two-fold:
- At the parser level: NCL’s “Semantic Parser” understands natural problem formulation in mathematical logic and submits abstract models to its solver.
- At the solver level: Mixed Set Programming solves problems over a mixed domain of reals, integers, Booleans, references, and sets. The solver incorporates a simplified form of first order logic, naïve set reasoning, numerical constraints and operations research algorithms to solve problems in a cooperative manner.