Euclid is a programming language trying to merge two different programming paradigms: (constraint) logic programming and algebraic manipulation packages. Its syntax is close to that of any CLP system but it offers many more mathematically oriented data structures and domains of computation than a standard CLP system. Among these data structures are reals, real intervals, real symbolic functions and vectors as well as user-defined structures containing domain constructs.
The purpose of Euclid is to create system under which knowledge that uses mathematics can be easily represented (i.e. mathematical models in physics, economics or engineering). The system is intended mainly for problem solving; the main difference with standard CLP systems is that it prefers hard calculations to a great number of simple ones.
Theoretically Euclid is an instance of the Domain Logic Programming Scheme, a multi-domain extension to constraint logic programming. Formal correctness and completeness can be proven in that scheme.
A Euclid program is a collection of constraint clauses. Each constraint clause is a statement about the problem in hand. Constraint clauses have a standard form, which is based on the constraint normal form. Clauses do not offer the full expresionality of the logic but they offer easy computational manipulation.
constraint, domain, variables, terms, euclid, d-domain, system, logic, domains, clauses, term, tagged, symbols, structures, standard, programming, number, made, form, different, constants, clp, classic, vectors, variable, take, symbolic, statement, specific, scheme, reals, real, program, problem, offer, mixed