A user manual for the solvers can be found at

	http://www.ai.univie.ac.at/clpqr/

Usage in a nutshell:

	lib(clpq).	% load clp(q)

	{2*A-3*B=11}	% wrap constraints with {}/1




Differences between the SICStus and the Eclipse ports
of the clp(q,r) solver modules:


	-) In general there are many ways to express the same
	   linear relationship. The solver does not care which
	   linear variables are expressed in terms of which other 
	   variables. The actual syntactical form depends on the
	   construction history of the terms, i.e. the constraints
	   fed to the solver. You might experience this effect
	   if you use history mechanism in Eclipse.

	-) $=/2 and friends are available for compatibility

	-) The SICStus predicate call_residue/2 has currently no
	   counterpart in Eclipse because the semantics need some
	   discussion first.

	-) The syntax for rational constants is rat(N,D) in SICStus
	   corresponds to N_D in Eclipse. The explicit use of numeric
	   constants is discouraged. Use {A=2/3} instead of A=2_3.
	   This allows you to switch between clp(q) and clp(r) and
	   Eclipse and SICStus.

	-) Nonlinear residues simply print as delayed goals in Eclipse
	   as opposed to floundered goals of the (non existing) nonlinear
	   solver in the SICStus version:

	       [eclipse 8]: {sin(X)=cos(X)}.

	       X = X

	       Delayed goals:
		       {sin(X) - cos(X) = 0}


	
The file structure
------------------

The following layout has been chosen to meet the
requirements of f-compilation in SICStus and the loading
of shared code into independent modules in SICStus
and Eclipse. Each host prolog x {q,r} pair provides a
self contained view of the source files through soft links
which point to the shared sources.


     lib/

	clpqr/				% code shared by r,q, and all host prologs
		eclipse/		% host prolog specific shared code
		sicstus/
		examples/
		test/			% driver for examples &
					% reference output

	clpq/				% clp(q) specific code, host dispatch
		eclipse/
		sicstus/
	clpr/				% clp(r) specific code, host dispatch
		eclipse/
		sicstus/

The SICStus branches may be populated to some degree but
the merge are not been completed yet.

At load/compile time we use current_module/1 to recognize
our host environment. The load specification is the same
for all host prologs:

	use_module(library(clpq)) 
	use_module(library(clpr))


Simultaneous use of clp(q) and clp(r):
--------------------------------------

This is work in progress. Currently you should either load
clpq OR clpr. Future versions will allow the two solvers
to co-exist.
