Hierarchical Constraint Logic Programming Language: CHAL

OVERVIEW:
A hierarchical constraint logic programming language processor
which introduces hierarchy in terms of strength of constraints.

EXPLANATION:
Hierarchical constraint logic programming language CHAL
is based on new programming paradigm ``constraint programming''
which allows user a high-level description in problem solving.
CHAL consists of constraint hierarchy solver which manipulates
various strength of constraints in various domains and
constraint language processor. User can make a program of his problem
without worrying about solving method.

(1) An Extension of Constraint Logic Programming Language]
Usual constraint logic programming languages output nothing
if there is no solution for given constraints. On the other
hand, by introducing hierarchy of strength in constraints,
CHAL ignores some weak constraints in order to output some
better solutions. This function is important in planning
and design problems.

(2) Constraints Solvers for Various Domains
CHAL provides the following constraint solvers for
various domains of users:
(a)  non-linear algebraic equations,
(b)  Boolean equations.
User can specify various strength for these constraints.

EXAMPLE
The following is an example session of P-CHAL.

?- ['meeting.cal'].
"meeting.cal" is generated.

 yes

?- meeting:meeting1.
Before considering soft constraints
m(mon) = 0 .
m(tue) = 0 .
p(mon) = 0 .
c(mon) = 0 .
c(tue) = p(tue) .
c(wed) = p(wed) .
v(mon) = 0 .
p(wed)*m(wed) = m(wed) .
p(wed)*p(tue) = 1++p(tue)++p(wed) .
v(tue)*p(tue) = v(tue) .
v(wed)*p(wed) = v(wed) .

After considering soft constraints
solution
m(mon) = 0 .
m(tue) = 0 .
m(wed) = 1 .
p(mon) = 0 .
p(tue) = 0 .
p(wed) = 1 .
c(mon) = 0 .
c(tue) = 0 .
c(wed) = 1 .
v(mon) = 0 .
v(tue) = 0 .
v(wed) = 1 .

solutionend

  1011msec

 yes

?- meeting:meeting2.
Before considering soft constraints
m(mon) = 0 .
m(tue) = 0 .
p(mon) = 0 .
c(mon) = 0 .
c(tue) = p(tue) .
c(wed) = p(wed) .
v(mon) = 0 .
v(wed) = 0 .
p(wed)*m(wed) = m(wed) .
p(wed)*p(tue) = 1++p(tue)++p(wed) .
v(tue)*p(tue) = v(tue) .

After considering soft constraints
solution
m(mon) = 0 .
m(tue) = 0 .
m(wed) = 0 .
p(mon) = 0 .
p(tue) = 1 .
p(wed) = 0 .
c(mon) = 0 .
c(tue) = 1 .
c(wed) = 0 .
v(mon) = 0 .
v(tue) = 1 .
v(wed) = 0 .

solutionend

  1143msec

 yes

?- halt.
--------------------------------------------------------------------
LIST OF FILES
chal.dvi: DVI file for a paper which explains the background of CHAL.
alg.esp: Algebraic solver
bool.esp: Interface between CHAL and boolean solver
boolgb.esp: Boolean solver
cal_pmacs.esp: CHAL pmacs window manimpulator
cal_start.esp: CHAL invoking program
chal.esp: Constraint Hierarchy manipulator
cont_inc.esp: INSTALLATION FILE
control.esp: CHAL controler
file.esp: file manipulator
gb.esp: Grobner base handler
long.esp: Long integer package
menu.esp: Menu handler
pre.esp: Preprocessor
solver.slv: Alg and Boolean solver interface
translate.esp: Translator of CHAL program into ESP program
meeting.cal: Example CHAL program for meeting scheduling problem

NOTES ON INSTALLATION
You need environment of SIMPOS/ESP.
Necessary files for intallation can be found in cont_inc.esp.

REFERENCE
Please refer a user's manual for CAL.
