1 2LP: Linear Programming and Logic Programming
Abstract:
The 2LP system is a step in the "Operatica Program, " a project whose grand design is to provide an elegant and powerful programming language environment for combining AI and OR methods for decision support software systems. The term "Operatica " was coined by J.L. Lassez to suggest an analogy with the Mathematica system which provides a programming environment for symbolic mathematical computation. In the dialogue between AI and OR, there are two basic themes: (1) declarative programming and the notion of logical consequence and, (2) procedural programming and the search algorithm in its many variations. Integrating AI and OR requires an environment that combines a modeling language with a logic based language. 2LP, which stands for "linear programming and logic programming, " has the simplex based search mechanism of linear programming and the backtracking mechanism of logic programming built in. 2LP is both an algebraic modeling language and a logical control language. By bringing these techniques together in a language which has standard C style syntax and treats the mathematical module in an object-oriented way, this technology provides very powerful and usable tools for decision support programming. The design decisions that led to 2LP were based on the following considerations:. For run time efficiency the system should enforce a restriction to linear constraints at compile time.. The array rather than the linked-list is the natural data structure for mathematical modeling.. Communication between the logic and the numerical solver should be primitive to the language.. A small language with standard syntax and with explicit integration of procedural programming constructs would be accessible to decision support programmers.. The power of constraint programming is such that a compact language is sufficient for the intended applications.. The system should be callable as a set of library routines.. Hooks for expandability to an or-parallel system should be built in to the system. In this paper, after discussing the relationship of 2LP to other programming paradigms and introducing some

