# Constraint Programming in Lisp (a query)

```    Date: Sun, 9 Sep 90 21:35:20 PDT
From: tcipro!ramu@unix.sri.com (Ramu Iyer)

I'd like to know if there is any code out there
that will help me solve constraints -- actually a
set of linear inequalities -- in Lisp.  I am told
there is such a scheme in Scheme (no pun intended :-).

...

--Ramu

Email: ramu%tcipro.uucp@unix.sri.com

I guess I don't understand the problem.  Are you willing to write a
straightforward Simplex funtion yourself? I've done things such as the
singular value decomposition of matrices using Lisp as a programming
language augmented by a few of the built-in matrix functions. For
example, (MAKE-ARRAY (LIST NROWS NCOLUMNS) ... ) creates what you and
I think of as a matrix having NROWS rows and NCOLUMNS columns which
can be treated using AREF and (SETF (AREF ... )) to implement typical
row-column operations.

Also, there are a small number of functions documented in the
"Operations on Matrices Section" which handle some operations quickly;
I suggest you rely on them when possible. For example, given a MATRIX,
(MATH:MULTIPLY-MATRICES (MATH:TRANSPOSE-MATRIX MATRIX) MATRIX) is a
quick and simple way to compute a typical form.

One aspect of style that is appropriate when you're analyzing a few
large matrices is based on the observation that matrix programming
often requires the re-use of certain matrix forms, e.g., the
"transpose times itself" above. One way to deal with this is to create
Flavors or Classes representing matrices; have one Matrix Instance
slot point to the matrix itself and others point to saved computed
matrices that you expect will be needed over and over.

-- Bud Frawley

```