The classowary Reference Manual

Next: , Previous: , Up: (dir)   [Contents][Index]

The classowary Reference Manual

This is the classowary Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Thu Sep 15 04:20:20 2022 GMT+0.

Table of Contents


1 Introduction

## About Classowary
Classowary is an implementation of the linear constraint solver toolkit "Cassowary"(https://overconstrained.io). It is a variant of the simplex solver algorithm, specifically designed to allow adding, removing, and updating constraints quickly. This makes it a good candidate for layout computations.

## How To
After loading Classowary you will likely want to create a local nickname in your package for ``org.shirakumo.classowary``. We will assume that this nickname is called ``cass`` for this tutorial.

:: common lisp
(defvar *solver* (cass:make-solver))

(cass:with-variables (a b c) *solver*
  (cass:constrain *solver* (<= 0 a))
  (cass:constrain *solver* (<= a 10))
  (cass:constrain *solver* (= b (* (+ 1 a) 5)))
  (cass:constrain *solver* (= (+ 3 (* 2 c)) (+ a b)))
  (cass:update-variables *solver*)
  (values (cass:value a) (cass:value b) (cass:value c)))
;; => 0 5 1
::

As you can see, the solver picked only one of many possible solutions. When the system is underconstrained, it isn't predictable which solution you will get, but it should always fulfil all constraints that were given. If the system is overconstrained, Cassowary will try to match them as closely as possible according to each constraint's strength.

Cassowary also allows you to "suggest" a value for a variable. This means that the solver will try to keep the variable to this value if possible.

:: common lisp
(cass:with-variables (a b c) *solver*
  (cass:make-suggestable a)
  (cass:suggest a 5)
  (cass:update-variables *solver*)
  (values (cass:value a) (cass:value b) (cass:value c)))
;; => 5 30 16
::

This is typically how you will want to impose additional constraints imposed by the user such as when they explicitly move or resize something.

Naturally you can impose additional constraints at a later point as well.

:: common lisp
(cass:with-variables (a b c) *solver*
  (cass:constrain *solver* (<= a (/ c 4)) :name 'a)
  (cass:update-variables *solver*)
  (values (cass:value a) (cass:value b) (cass:value c)))
;; => 1 10 4
::

As you can see, with this additional constraint the solver was no longer able to fulfil our suggested value exactly. We can easily remove the offending constraint again.

:: common lisp
(cass:delete-constraint (cass:find-constraint 'a *solver*))
::

Instead of using the ``constrain`` and ``with-variables`` macros, you can also dynamically build the variables and constraints through ``make-variable``, ``make-constraint``, ``add-term``, ``relation``, and ``add-constraint``. When building constraints and variables, you should make sure to pass the ``:name`` argument so that you can retrieve them from the solver later, or keep references of your own somewhere.

Should a solver or constraint get into a bad state, you can attempt to clear their state out with ``reset-solver`` and ``reset-constraint`` respectively.

## Further Reading
The Cassowary algorithm is described in the paper "The Cassowary Linear Arithmetic Constraint Solving Algorithm: Interface and Implementation" by Badros and Borning[1]. You can find the website of the original implementation "here"(https://constraints.cs.washington.edu/cassowary/).

This implementation is largely based on the "Amoeba implementation"(https://github.com/starwing/amoeba) by Xavier Wang.

[1]: https://constraints.cs.washington.edu/cassowary/cassowary-tr.pdf


2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 classowary

An implementation of the Cassowary linear constraint solver toolkit

Maintainer

Nicolas Hafner <shinmera@tymoon.eu>

Author

Nicolas Hafner <shinmera@tymoon.eu>

Home Page

https://github.com/Shinmera/classowary

License

zlib

Version

1.0.0

Dependency

documentation-utils (system).

Source

classowary.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp   [Contents][Index]

3.1.1 classowary/classowary.asd

Source

classowary.asd.

Parent Component

classowary (system).

ASDF Systems

classowary.


3.1.2 classowary/package.lisp

Source

classowary.asd.

Parent Component

classowary (system).

Packages

org.shirakumo.classowary.


3.1.3 classowary/toolkit.lisp

Dependency

package.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Public Interface
Internals

3.1.4 classowary/conditions.lisp

Dependency

toolkit.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Public Interface
Internals

when-ok (macro).


3.1.5 classowary/symbol.lisp

Dependency

conditions.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Internals

3.1.6 classowary/expression.lisp

Dependency

symbol.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Public Interface
Internals

3.1.7 classowary/constraint.lisp

Dependency

expression.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Public Interface
Internals

3.1.8 classowary/cassowary.lisp

Dependency

constraint.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).

Public Interface
Internals

3.1.9 classowary/documentation.lisp

Dependency

cassowary.lisp (file).

Source

classowary.asd.

Parent Component

classowary (system).


4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 org.shirakumo.classowary

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Public Interface


Next: , Previous: , Up: Public Interface   [Contents][Index]

5.1.1 Constants

Constant: +medium+

Constant for constraints with a medium weight.

Corresponds to 1e3. You can also specify the keyword :medium instead of this constant wherever strengths are accepted.

Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Constant: +none+

Constant for constraints with no weight.

Corresponds to 0e0. You can also specify the keyword :none instead of this constant wherever strengths are accepted.

Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Constant: +required+

Constant for constraints with a very high weight.

Corresponds to 1e9. You can also specify the keyword :required instead of this constant wherever strengths are accepted.

Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Constant: +strong+

Constant for constraints with a high weight.

Corresponds to 1e6. You can also specify the keyword :strong instead of this constant wherever strengths are accepted.

Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Constant: +weak+

Constant for constraints with a weak weight.

Corresponds to 1e0. You can also specify the keyword :weak instead of this constant wherever strengths are accepted.

Package

org.shirakumo.classowary.

Source

toolkit.lisp.


5.1.2 Macros

Macro: constrain (solver constraint &rest args &key name strength)

Constrain the linear system in the solver.

The constraint should be an expression of the following form:

CONSTRAINT ::= (RELATION EXPRESSION EXPRESSION)
RELATION ::= <= | = | >=
EXPRESSION ::= TERM | COMPOUND
COMPOUND ::= (+ EXPRESSION*)
| (- EXPRESSION+)
| (* EXPRESSION*)
| (/ EXPRESSION+)
TERM ::= variable | real | (quote quoted)
variable — A CL variable binding name.
quoted — A symbol naming a solver variable.
real — A real number.

If a quoted variable is used, the variable is retrieved from the solver, or created if it does not exist yet. It will have the name of the quoted symbol. Otherwise the variable denotes a CL variable whose value must be of type VARIABLE.

If the expression contains non-linear terms, such as the multiplication of two variables, or the division by a variable, an error is signalled at macro-expansion-time.

This macro is a short-hand to create constraint, add terms, set the relation, and add the constraint to the solver.

The new constraint instance is returned.

See CONSTRAINT (type)
See SOLVER (type)
See MAKE-CONSTRAINT
See ADD-TERM
See RELATION
See ADD-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Macro: with-variables (vars solver &body body)

Convenience macro to create and bind multiple variables at once.

Each binding must follow this structure:

BINDING ::= variable | (variable name? strength?)
variable — The CL variable the solver variable is bound to. name — The name of the solver variable as a symbol.
This can later be used to retrieve the variable. If no explicit name is given, the CL variable name is used. strength — The strength of the variable if it is newly created.

If a variable with the given name already exists in the solver, it is returned. Otherwise, a new variable of the given name is created. If NAME is NIL, a new variable is always created.

Note that the variables are /not/ deleted on exit from the body.

See VARIABLE (type)
See SOLVER (type)
See FIND-VARIABLE
See MAKE-VARIABLE

Package

org.shirakumo.classowary.

Source

constraint.lisp.


5.1.3 Compiler macros

Compiler Macro: add-term (constraint multiplier &optional variable)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Compiler Macro: remove-term (constraint multiplier &optional variable)
Package

org.shirakumo.classowary.

Source

constraint.lisp.


5.1.4 Ordinary functions

Function: add-constraint (constraint)

Adds the constraint to its solver.

Without this, the constraint will not apply.

If the solver is AUTO-UPDATE, the variables will be updated after this operation.

See SOLVER
See CONSTRAINT (type)
See REMOVE-CONSTRAINT

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: add-term (constraint multiplier &optional variable)

Adds the given term description to the constraint.

This corresponds to a term of either
number
or
number*variable
being added to the constraint depending on whether the variable is given.

Note that adding or removing terms can automatically cancel out as soon as either the constant term of the expression reaches zero, or the multiplier of a variable term reaches zero. In the latter case, the variable term is automatically removed from the expression.

Returns the updated constraint.

See CONSTRAINT (type)
See VARIABLE (type)
See REMOVE-TERM

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: auto-update (solver)

Accessor to whether the solver automatically updates variables on changes.

See SOLVER (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: (setf auto-update) (solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: clone-constraint (other &key strength)

Return a copy of the given constraint.

This will copy the constraint including its terms into a fresh instance.

See CONSTRAINT (type)
See MAKE-CONSTRAINT
See DELETE-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: constrain-with (solver constraint &key name strength)

Constrain the linear system in the solver.

This is like CONSTRAIN, except that this is a function and can thus accept run-time expressions. Instead of variables being either literal symbols or quoted symbols, you can pass VARIABLE instances or symbols to achieve the equivalent effects.

The new constraint instance is returned.

See CONSTRAIN
See VARIABLE (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: constrained-p (constraint)

Returns true if the constraint is additionally constrained through a variable.

See CONSTRAINT (TYPE)

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: delete-constraint (constraint)

Deletes the constraint completely from the solver.

This will render the constraint useless. Operating on it beyond this point results in undefined behaviour.

See CONSTRAINT (type)
See MAKE-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: delete-variable (variable)

Deletes the variable completely from the solver.

This will remove the variable and all terms in all expressions that include it.

See MAKE-VARIABLE
See VARIABLE (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: find-constraint (symbol solver)

Returns the constraint associated with the given name, if any.

Note that you are /not/ permitted to SETF this place.

See CONSTRAINT (type)
See SOLVER (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: (setf find-constraint) (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: find-variable (symbol solver)

Returns the variable associated with the given name, if any.

Note that you are /not/ permitted to SETF this place.

See VARIABLE (type)
See SOLVER (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: (setf find-variable) (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: make-constraint (solver &key name strength)

Returns a new constraint for the solver.

The STRENGTH designates how strongly this constraint is adhered. By default the strength is +REQUIRED+.

The NAME is an optional identifier for the constraint. The name may be a string or a symbol. If it is a symbol, the constraint can later be retrieved by the same symbol again, using FIND-CONSTRAINT.

See STRENGTH (type)
See DELETE-CONSTRAINT
See FIND-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: make-solver (&key auto-update)

Returns a new solver instance.

If AUTO-UPDATE is T, the solver will automatically call UPDATE-VARIABLES when constraints or variables change.

See SOLVER (type)
See AUTO-UPDATE
See RESET-SOLVER
See MAKE-CONSTRAINT
See CONSTRAIN
See MAKE-VARIABLE
See WITH-VARIABLES

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: make-suggestable (variable &optional strength)

Make the variable suggestable.

This means that you can edit the variable and suggest a value that the solver should try to keep steady when solving its system. Typically this is used for variables that are constrained by the user somehow.

In order to use SUGGEST, a variable must first be made suggestable.

If the variable is already suggestable, its strength is updated via (SETF STRENGTH).

If the variable was not already suggestable, it is suggested to the current value of the variable.

The strength of the suggestion is capped to +STRONG+. Any value above will automatically be reduced to +STRONG+.

Returns the variable.

See STRENGTH
See VARIABLE (type)
See MAKE-UNSUGGESTABLE
See SUGGESTABLE-P
See SUGGEST
See STRENGTH

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: make-unsuggestable (variable)

Makes the variable unsuggestable again.

After this, SUGGEST will fail unless the variable is explicitly made suggestable again.

Returns the variable.

See MAKE-SUGGESTABLE
See SUGGESTABLE-P
See VARIABLE (type)
See SUGGEST

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: make-variable (solver &key name strength)

Returns a new variable for the solver.

The NAME is an optional identifier for the variable. The name may be a string or a symbol. If it is a symbol, the variable can later be retrieved by the same symbol again, using FIND-VARIABLE.

If STRENGTH is given, the variable is made suggestable and
its strength set accordingly. STRENGTH may also be T in this case, in which case the strength used is +STRONG+.

See VARIABLE (type)
See DELETE-VARIABLE
See MAKE-SUGGESTABLE
See FIND-VARIABLE

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: relation (constraint)

Accessor to the relation of the constraint.

May be one of the following CL symbols:

<=
=
>=

See CONSTRAINT (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: (setf relation) (constraint)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: remove-constraint (constraint)

Removes the constraint from its solver.

After this, the constraint will not apply.

If the solver is AUTO-UPDATE, the variables will be updated after this operation.

See SOLVER
See CONSTRAINT (type)
See REMOVE-CONSTRAINT

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: remove-term (constraint multiplier &optional variable)

Removes the given term description from the constraint.

This corresponds to a term of either
number
or
number*variable
being removed from the constraint depending on whether the variable is given.

Note that adding or removing terms can automatically cancel out as soon as either the constant term of the expression reaches zero, or the multiplier of a variable term reaches zero. In the latter case, the variable term is automatically removed from the expression.

This operation is equivalent to ADD-TERM with the multiplier inverted.

Returns the updated constraint.

See CONSTRAINT (type)
See VARIABLE (type)
See ADD-TERM

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: reset-constraint (constraint)

Resets the constraint.

This will remove the constraint, unset its relation, and clear its expression of all terms.

Returns the updated constraint.

See CONSTRAINT (type)
See REMOVE-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: reset-solver (solver &optional clear-constraints)

Resets the solver.

This resets all variables and makes them unsuggestable.

If the solver is AUTO-UPDATE, the variables will be updated before this operation.

If CLEAR-CONSTRAINTS is T, removes all constraints from the solver.

See SOLVER (type)

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: strength (constraint)

Accessor to the strength of the constraint.

The strength is a positive float, denoting how important this constraint is to the overall system. Valid values for the strength are positive real numbers and the following keywords:

:REQUIRED
:STRONG
:MEDIUM
:WEAK
:NONE

Each of these keywords corresponds to the constant of the same name. If a value that is neither a positive real, nor one of the above keywords is set, an error is signalled.

If the solver is AUTO-UPDATE, the variables will be updated after the strength is updated.

See CONSTRAINT (type)
See +REQUIRED+
See +STRONG+
See +MEDIUM+
See +WEAK+
See +NONE+

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: (setf strength) (constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: suggest (variable value &optional if-not-suggestable)

Suggest a particular value for the variable.

The solver will try to solve the system while keeping the value of the variable to the suggested value. Note however that this does not circumvent required constraints.

If the variable is not already suggestable, the value of if-not-suggestable becomes important. It may be one of the following: :ERROR — An error of type VARIABLE-NOT-SUGGESTABLE is signalled.
:MAKE-SUGGESTABLE — The variable is made suggestable with medium strength.
NIL — The function simply returns NIL.

If the solver is AUTO-UPDATE, the variables will be updated after this operation.

On success, returns the variable.

See VARIABLE (type)
See SUGGESTABLE-P
See MAKE-SUGGESTABLE
See MAKE-UNSUGGESTABLE
See VARIABLE-NOT-SUGGESTABLE

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: suggestable-p (variable)

Returns true if the variable is suggestable.

See VARIABLE (type)
See MAKE-SUGGESTABLE
See MAKE-UNSUGGESTABLE
See SUGGEST

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: update-variables (solver)

Recomputes the variable values according to the current solver constraints.

You should call this function whenever you are done changing constraints or suggesting variables and would like to read out the
new, computed values for the variables.

Returns the solver.

See AUTO-UPDATE

Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: value (variable)

Returns the current value of the variable.

You might need to call UPDATE-VARIABLES on the solver before this returns an accurate value for the variable.

Note that for suggestable variables this might return a value different from the one previously suggested.

See VARIABLE (type)

Package

org.shirakumo.classowary.

Source

constraint.lisp.


5.1.5 Generic functions

Generic Reader: expression (condition)

Returns the expression associated with the object.

See EXPRESSION (type)
See EXPRESSION-UNSATISFIED
see EXPRESSION-UNBOUND

Package

org.shirakumo.classowary.

Methods
Reader Method: expression ((condition expression-unbound))
Source

conditions.lisp.

Target Slot

expression.

Reader Method: expression ((condition expression-unsatisfied))
Source

conditions.lisp.

Target Slot

expression.

Generic Function: solver (condition)

Returns the solver associated with the object.

See SOLVER (type)
See VARIABLE (type)
See CONSTRAINT (type)
See EXPRESSION-UNSATISFIED
See EXPRESSION-UNBOUND

Package

org.shirakumo.classowary.

Methods
Method: solver ((constraint constraint))
Source

constraint.lisp.

Method: solver ((variable variable))
Source

constraint.lisp.

Reader Method: solver ((condition variable-not-suggestable))
Source

conditions.lisp.

Target Slot

solver.

Reader Method: solver ((condition expression-unbound))
Source

conditions.lisp.

Target Slot

solver.

Reader Method: solver ((condition expression-unsatisfied))
Source

conditions.lisp.

Target Slot

solver.

Generic Reader: variable (condition)

Returns the variable associated with the object.

See VARIABLE (type)
See VARIABLE-NOT-SUGGESTABLE

Package

org.shirakumo.classowary.

Methods
Reader Method: variable ((condition variable-not-suggestable))
Source

conditions.lisp.

Target Slot

variable.


5.1.6 Standalone methods

Method: describe-object ((term term) stream)
Source

expression.lisp.

Method: describe-object ((solver solver) stream)
Source

constraint.lisp.

Method: describe-object ((variable variable) stream)
Source

constraint.lisp.

Method: describe-object ((constraint constraint) stream)
Source

constraint.lisp.

Method: describe-object ((expression expression) stream)
Source

expression.lisp.

Method: print-object ((term term) stream)
Source

expression.lisp.

Method: print-object ((solver solver) stream)
Source

constraint.lisp.

Method: print-object ((variable variable) stream)
Source

constraint.lisp.

Method: print-object ((constraint constraint) stream)
Source

constraint.lisp.

Method: print-object ((expression expression) stream)
Source

expression.lisp.


5.1.7 Conditions

Condition: assertion-violated

Error signalled when an internal assertion was violated.

This may arise due to invalid values being passed, or otherwise invalid sequences of operations being performed.

See CLASSOWARY-CONDITION
See CL:ERROR (type)

Package

org.shirakumo.classowary.

Source

conditions.lisp.

Direct superclasses
Condition: classowary-condition

Supertype for all conditions related to Classowary.

See CL:CONDITION (type)

Package

org.shirakumo.classowary.

Source

conditions.lisp.

Direct superclasses

condition.

Direct subclasses
Condition: expression-unbound

Error signalled when an expression is unbound.

See CLASSOWARY-CONDITION
See CL:ERROR (type)
See SOLVER (function)
See EXPRESSION (function)

Package

org.shirakumo.classowary.

Source

conditions.lisp.

Direct superclasses
Direct methods
Direct slots
Slot: solver
Initargs

:solver

Readers

solver.

Writers

This slot is read-only.

Slot: expression
Initargs

:expression

Readers

expression.

Writers

This slot is read-only.

Condition: expression-unsatisfied

Error signalled when it is impossible for the solver to satisfy an expression.

See CLASSOWARY-CONDITION
See CL:ERROR (type)
See SOLVER (function)
See EXPRESSION (function)

Package

org.shirakumo.classowary.

Source

conditions.lisp.

Direct superclasses
Direct methods
Direct slots
Slot: solver
Initargs

:solver

Readers

solver.

Writers

This slot is read-only.

Slot: expression
Initargs

:expression

Readers

expression.

Writers

This slot is read-only.

Condition: variable-not-suggestable

Error signalled when attempting to suggest an unsuggestable variable.

When this error is signalled, two restarts must be active with the following behaviour:
MAKE-SUGGESTABLE — Makes the variable suggestable before setting the suggested value. The restart accepts an optional argument that sets the strength of the variable.
ABORT — Aborts the suggestion and returns NIL.

See CLASSOWARY-CONDITION
See CL:ERROR (type)
See SOLVER (function)
See VARIABLE (function)

Package

org.shirakumo.classowary.

Source

conditions.lisp.

Direct superclasses
Direct methods
Direct slots
Slot: solver
Initargs

:solver

Readers

solver.

Writers

This slot is read-only.

Slot: variable
Initargs

:variable

Readers

variable.

Writers

This slot is read-only.


Previous: , Up: Public Interface   [Contents][Index]

5.1.8 Structures

Structure: constraint

Represents a constraint in a linear system.

Each of the constraints in a system must appear in the following normalised, mathematical form:

CONSTRAINT ::= TERM RELATION TERM (\+ TERM)*
RELATION ::= <= | = | >=
TERM ::= number (\* variable)?
number — a SINGLE-FLOAT
variable — a VARIABLE

For instance, the following are valid constraints:

0 = 0
1 = 2
1*x <= 1
2*x >= 3 + 4*y

And the following are not valid constraints:

1*x + 1*y = 3*y + 5*z
x*x = 2

See MAKE-CONSTRAINT
See CLONE-CONSTRAINT
See DELETE-CONSTRAINT
See FIND-CONSTRAINT
See ADD-CONSTRAINT
See REMOVE-CONSTRAINT
See ADD-TERM
See ADD-CONSTANT
See RELATION
See SOLVER (function)
See CONSTRAIN

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: expression
Type

org.shirakumo.classowary:expression

Initform

(org.shirakumo.classowary::%make-expression (org.shirakumo.classowary::mksym (quote org.shirakumo.classowary::external)))

Readers

constraint-expression.

Writers

(setf constraint-expression).

Slot: marker
Type

symbol

Readers

constraint-marker.

Writers

(setf constraint-marker).

Slot: other
Type

symbol

Readers

constraint-other.

Writers

(setf constraint-other).

Slot: relation
Type

symbol

Readers

constraint-relation.

Writers

(setf constraint-relation).

Slot: strength
Type

single-float

Initform

0.0

Readers

constraint-strength.

Writers

(setf constraint-strength).

Slot: solver
Type

org.shirakumo.classowary:solver

Readers

constraint-solver.

Writers

(setf constraint-solver).

Structure: expression

The representation of a linear expression.

A linear expression represents a constant factor added together with a series of linear variable terms.

See TERM

Package

org.shirakumo.classowary.

Source

expression.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: key
Type

symbol

Readers

expression-key.

Writers

(setf expression-key).

Slot: infeasible-p
Type

boolean

Readers

expression-infeasible-p.

Writers

(setf expression-infeasible-p).

Slot: terms
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

expression-terms.

Writers

(setf expression-terms).

Slot: constant
Type

single-float

Initform

0.0

Readers

expression-constant.

Writers

(setf expression-constant).

Structure: solver

Represents a linear constraint system.

A linear constraint system is composed out of several constraints that describe an equality or inequality composed out of linear terms. The solver can then attempt to find a solution that fits the variables in the terms to the constraints as well as possible.

Note that the solver will bend constraints if there is no solution that does not violate any of them.

See CONSTRAINT (type)
See MAKE-SOLVER
See RESET-SOLVER
See AUTO-UPDATE
See MAKE-CONSTRAINT
See MAKE-VARIABLE
See CONSTRAIN
see WITH-VARIABLES
See FIND-VARIABLE
See FIND-CONSTRAINT

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: objective
Type

org.shirakumo.classowary:expression

Initform

(org.shirakumo.classowary::%make-expression)

Readers

solver-objective.

Writers

(setf solver-objective).

Slot: variables
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

solver-variables.

Writers

(setf solver-variables).

Slot: constraints
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

solver-constraints.

Writers

(setf solver-constraints).

Slot: expressions
Type

hash-table

Initform

(make-hash-table :test (quote eq))

Readers

solver-expressions.

Writers

(setf solver-expressions).

Slot: infeasible-expressions
Type

list

Readers

solver-infeasible-expressions.

Writers

(setf solver-infeasible-expressions).

Slot: dirty-variables
Type

list

Readers

solver-dirty-variables.

Writers

(setf solver-dirty-variables).

Slot: auto-update
Type

boolean

Readers

solver-auto-update.

Writers

(setf solver-auto-update).

Structure: term

The representation of a variable term.

A term is a variable and a linear multiplication factor.

Package

org.shirakumo.classowary.

Source

expression.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: key
Type

symbol

Readers

term-key.

Writers

(setf term-key).

Slot: multiplier
Type

single-float

Initform

0.0

Readers

term-multiplier.

Writers

(setf term-multiplier).

Structure: variable

Represents a variable in a linear system.

A variable can appear in an arbitrary number of constraints to express linear terms. A variable has a value and two states: suggestable, or unsuggestable. In the default, unsuggestable state, the variable is freely controlled by the linear system and its value is directly deduced from the constraints. In the suggestable state, the variable has a suggested value that the user supplies, which the solver should attempt to keep constant as the system is solved.

See MAKE-VARIABLE
See DELETE-VARIABLE
See FIND-VARIABLE
See ADD-TERM
See WITH-VARIABLES
See SOLVER (function)
See MAKE-SUGGESTABLE
See MAKE-UNSUGGESTABLE
See SUGGESTABLE-P
See SUGGEST
See VALUE

Package

org.shirakumo.classowary.

Source

constraint.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: symbol
Package

common-lisp.

Type

symbol

Readers

variable-symbol.

Writers

(setf variable-symbol).

Slot: dirty-p
Type

boolean

Readers

variable-dirty-p.

Writers

(setf variable-dirty-p).

Slot: constraint
Type

(or null org.shirakumo.classowary:constraint)

Readers

variable-constraint.

Writers

(setf variable-constraint).

Slot: edit-value
Type

single-float

Initform

0.0

Readers

variable-edit-value.

Writers

(setf variable-edit-value).

Slot: value
Type

single-float

Initform

0.0

Readers

variable-value.

Writers

(setf variable-value).

Slot: solver
Type

org.shirakumo.classowary:solver

Readers

variable-solver.

Writers

(setf variable-solver).


5.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

5.2.1 Special variables

Special Variable: *symbol-ids*
Package

org.shirakumo.classowary.

Source

symbol.lisp.


5.2.2 Macros

Macro: do-constraints ((constraint solver &optional result) &body body)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Macro: do-expressions ((expression solver &optional result) &body body)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Macro: do-terms ((term expression &optional result) &body body)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Macro: do-variables ((variable solver &optional result) &body body)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Macro: when-ok (form &body body)
Package

org.shirakumo.classowary.

Source

conditions.lisp.

Macro: with-protection (unwind &body protected)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.


Previous: , Up: Internals   [Contents][Index]

5.2.3 Ordinary functions

Function: %make-constraint (strength solver &optional expression)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: %make-expression (&optional key)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: %make-solver (&key auto-update)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: %make-variable (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: ->strength (strength)
Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Function: add-constant (constraint constant)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: add-expression (expression to-add multiplier)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: add-variable (expression symbol multiplier)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: add-variable-term (constraint variable multiplier)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: add-with-artificial (solver expression constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: clear-expression (expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: constant-p (expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Reader: constraint-expression (instance)
Writer: (setf constraint-expression) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

expression.

Reader: constraint-marker (instance)
Writer: (setf constraint-marker) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

marker.

Reader: constraint-other (instance)
Writer: (setf constraint-other) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

other.

Function: constraint-p (object)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Reader: constraint-relation (instance)
Writer: (setf constraint-relation) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

relation.

Reader: constraint-solver (instance)
Writer: (setf constraint-solver) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

solver.

Reader: constraint-strength (instance)
Writer: (setf constraint-strength) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

strength.

Function: copy-constraint (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: copy-expression (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: copy-solver (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: copy-term (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: copy-variable (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: delta-edit-constant (solver delta constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: dual-optimize (solver)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: dummy-p (symbol)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: ensure-expression (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: ensure-term (symbol expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: error-p (symbol)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Reader: expression-constant (instance)
Writer: (setf expression-constant) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

constant.

Reader: expression-infeasible-p (instance)
Writer: (setf expression-infeasible-p) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

infeasible-p.

Reader: expression-key (instance)
Writer: (setf expression-key) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

key.

Function: expression-p (object)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Reader: expression-terms (instance)
Writer: (setf expression-terms) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

terms.

Function: external-p (symbol)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: find-expression (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: (setf find-expression) (symbol solver)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: find-term (symbol expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: (setf find-term) (symbol expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: get-expression (solver symbol destination)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: get-leaving-expression (solver marker)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: make-expression (solver constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: make-term (key &optional multiplier)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: mark-dirty (solver variable)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: mark-infeasible (solver expression)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: merge-constraint-into (constraint other multiplier)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: merge-expression (solver expression variable multiplier)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: mksym (type &optional name)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: multiply (expression multiplier)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: optimize-for (objective solver)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: pivotable-p (symbol)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: put-expression (solver symbol source)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: reduce-expression (thing)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Function: remove-errors (solver constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Function: reset-expression (expression)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: slack-p (symbol)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: solve-for (expression entry exit)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Reader: solver-auto-update (instance)
Writer: (setf solver-auto-update) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

auto-update.

Reader: solver-constraints (instance)
Writer: (setf solver-constraints) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

constraints.

Reader: solver-dirty-variables (instance)
Writer: (setf solver-dirty-variables) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

dirty-variables.

Reader: solver-expressions (instance)
Writer: (setf solver-expressions) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

expressions.

Reader: solver-infeasible-expressions (instance)
Writer: (setf solver-infeasible-expressions) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

infeasible-expressions.

Reader: solver-objective (instance)
Writer: (setf solver-objective) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

objective.

Function: solver-p (object)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Reader: solver-variables (instance)
Writer: (setf solver-variables) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

variables.

Function: substitute (expression entry to-substitute)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: substitute-expressions (solver variable to-substitute)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Reader: term-key (instance)
Writer: (setf term-key) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

key.

Reader: term-multiplier (instance)
Writer: (setf term-multiplier) (instance)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Target Slot

multiplier.

Function: term-p (object)
Package

org.shirakumo.classowary.

Source

expression.lisp.

Function: try-add-expression (solver expression constraint)
Package

org.shirakumo.classowary.

Source

cassowary.lisp.

Reader: variable-constraint (instance)
Writer: (setf variable-constraint) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

constraint.

Reader: variable-dirty-p (instance)
Writer: (setf variable-dirty-p) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

dirty-p.

Reader: variable-edit-value (instance)
Writer: (setf variable-edit-value) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

edit-value.

Function: variable-p (object)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Reader: variable-solver (instance)
Writer: (setf variable-solver) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

solver.

Reader: variable-symbol (instance)
Writer: (setf variable-symbol) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

symbol.

Reader: variable-value (instance)
Writer: (setf variable-value) (instance)
Package

org.shirakumo.classowary.

Source

constraint.lisp.

Target Slot

value.

Function: write-sym (symbol stream)
Package

org.shirakumo.classowary.

Source

symbol.lisp.

Function: ~= (a b)
Package

org.shirakumo.classowary.

Source

toolkit.lisp.

Function: ~zerop (float)
Package

org.shirakumo.classowary.

Source

toolkit.lisp.


Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   %   (   -   ~  
A   C   D   E   F   G   M   O   P   R   S   T   U   V   W  
Index Entry  Section

%
%make-constraint: Private ordinary functions
%make-expression: Private ordinary functions
%make-solver: Private ordinary functions
%make-variable: Private ordinary functions

(
(setf auto-update): Public ordinary functions
(setf constraint-expression): Private ordinary functions
(setf constraint-marker): Private ordinary functions
(setf constraint-other): Private ordinary functions
(setf constraint-relation): Private ordinary functions
(setf constraint-solver): Private ordinary functions
(setf constraint-strength): Private ordinary functions
(setf expression-constant): Private ordinary functions
(setf expression-infeasible-p): Private ordinary functions
(setf expression-key): Private ordinary functions
(setf expression-terms): Private ordinary functions
(setf find-constraint): Public ordinary functions
(setf find-expression): Private ordinary functions
(setf find-term): Private ordinary functions
(setf find-variable): Public ordinary functions
(setf relation): Public ordinary functions
(setf solver-auto-update): Private ordinary functions
(setf solver-constraints): Private ordinary functions
(setf solver-dirty-variables): Private ordinary functions
(setf solver-expressions): Private ordinary functions
(setf solver-infeasible-expressions): Private ordinary functions
(setf solver-objective): Private ordinary functions
(setf solver-variables): Private ordinary functions
(setf strength): Public ordinary functions
(setf term-key): Private ordinary functions
(setf term-multiplier): Private ordinary functions
(setf variable-constraint): Private ordinary functions
(setf variable-dirty-p): Private ordinary functions
(setf variable-edit-value): Private ordinary functions
(setf variable-solver): Private ordinary functions
(setf variable-symbol): Private ordinary functions
(setf variable-value): Private ordinary functions

-
->strength: Private ordinary functions

~
~=: Private ordinary functions
~zerop: Private ordinary functions

A
add-constant: Private ordinary functions
add-constraint: Public ordinary functions
add-expression: Private ordinary functions
add-term: Public compiler macros
add-term: Public ordinary functions
add-variable: Private ordinary functions
add-variable-term: Private ordinary functions
add-with-artificial: Private ordinary functions
auto-update: Public ordinary functions

C
clear-expression: Private ordinary functions
clone-constraint: Public ordinary functions
Compiler Macro, add-term: Public compiler macros
Compiler Macro, remove-term: Public compiler macros
constant-p: Private ordinary functions
constrain: Public macros
constrain-with: Public ordinary functions
constrained-p: Public ordinary functions
constraint-expression: Private ordinary functions
constraint-marker: Private ordinary functions
constraint-other: Private ordinary functions
constraint-p: Private ordinary functions
constraint-relation: Private ordinary functions
constraint-solver: Private ordinary functions
constraint-strength: Private ordinary functions
copy-constraint: Private ordinary functions
copy-expression: Private ordinary functions
copy-solver: Private ordinary functions
copy-term: Private ordinary functions
copy-variable: Private ordinary functions

D
delete-constraint: Public ordinary functions
delete-variable: Public ordinary functions
delta-edit-constant: Private ordinary functions
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
do-constraints: Private macros
do-expressions: Private macros
do-terms: Private macros
do-variables: Private macros
dual-optimize: Private ordinary functions
dummy-p: Private ordinary functions

E
ensure-expression: Private ordinary functions
ensure-term: Private ordinary functions
error-p: Private ordinary functions
expression: Public generic functions
expression: Public generic functions
expression: Public generic functions
expression-constant: Private ordinary functions
expression-infeasible-p: Private ordinary functions
expression-key: Private ordinary functions
expression-p: Private ordinary functions
expression-terms: Private ordinary functions
external-p: Private ordinary functions

F
find-constraint: Public ordinary functions
find-expression: Private ordinary functions
find-term: Private ordinary functions
find-variable: Public ordinary functions
Function, %make-constraint: Private ordinary functions
Function, %make-expression: Private ordinary functions
Function, %make-solver: Private ordinary functions
Function, %make-variable: Private ordinary functions
Function, (setf auto-update): Public ordinary functions
Function, (setf constraint-expression): Private ordinary functions
Function, (setf constraint-marker): Private ordinary functions
Function, (setf constraint-other): Private ordinary functions
Function, (setf constraint-relation): Private ordinary functions
Function, (setf constraint-solver): Private ordinary functions
Function, (setf constraint-strength): Private ordinary functions
Function, (setf expression-constant): Private ordinary functions
Function, (setf expression-infeasible-p): Private ordinary functions
Function, (setf expression-key): Private ordinary functions
Function, (setf expression-terms): Private ordinary functions
Function, (setf find-constraint): Public ordinary functions
Function, (setf find-expression): Private ordinary functions
Function, (setf find-term): Private ordinary functions
Function, (setf find-variable): Public ordinary functions
Function, (setf relation): Public ordinary functions
Function, (setf solver-auto-update): Private ordinary functions
Function, (setf solver-constraints): Private ordinary functions
Function, (setf solver-dirty-variables): Private ordinary functions
Function, (setf solver-expressions): Private ordinary functions
Function, (setf solver-infeasible-expressions): Private ordinary functions
Function, (setf solver-objective): Private ordinary functions
Function, (setf solver-variables): Private ordinary functions
Function, (setf strength): Public ordinary functions
Function, (setf term-key): Private ordinary functions
Function, (setf term-multiplier): Private ordinary functions
Function, (setf variable-constraint): Private ordinary functions
Function, (setf variable-dirty-p): Private ordinary functions
Function, (setf variable-edit-value): Private ordinary functions
Function, (setf variable-solver): Private ordinary functions
Function, (setf variable-symbol): Private ordinary functions
Function, (setf variable-value): Private ordinary functions
Function, ->strength: Private ordinary functions
Function, add-constant: Private ordinary functions
Function, add-constraint: Public ordinary functions
Function, add-expression: Private ordinary functions
Function, add-term: Public ordinary functions
Function, add-variable: Private ordinary functions
Function, add-variable-term: Private ordinary functions
Function, add-with-artificial: Private ordinary functions
Function, auto-update: Public ordinary functions
Function, clear-expression: Private ordinary functions
Function, clone-constraint: Public ordinary functions
Function, constant-p: Private ordinary functions
Function, constrain-with: Public ordinary functions
Function, constrained-p: Public ordinary functions
Function, constraint-expression: Private ordinary functions
Function, constraint-marker: Private ordinary functions
Function, constraint-other: Private ordinary functions
Function, constraint-p: Private ordinary functions
Function, constraint-relation: Private ordinary functions
Function, constraint-solver: Private ordinary functions
Function, constraint-strength: Private ordinary functions
Function, copy-constraint: Private ordinary functions
Function, copy-expression: Private ordinary functions
Function, copy-solver: Private ordinary functions
Function, copy-term: Private ordinary functions
Function, copy-variable: Private ordinary functions
Function, delete-constraint: Public ordinary functions
Function, delete-variable: Public ordinary functions
Function, delta-edit-constant: Private ordinary functions
Function, dual-optimize: Private ordinary functions
Function, dummy-p: Private ordinary functions
Function, ensure-expression: Private ordinary functions
Function, ensure-term: Private ordinary functions
Function, error-p: Private ordinary functions
Function, expression-constant: Private ordinary functions
Function, expression-infeasible-p: Private ordinary functions
Function, expression-key: Private ordinary functions
Function, expression-p: Private ordinary functions
Function, expression-terms: Private ordinary functions
Function, external-p: Private ordinary functions
Function, find-constraint: Public ordinary functions
Function, find-expression: Private ordinary functions
Function, find-term: Private ordinary functions
Function, find-variable: Public ordinary functions
Function, get-expression: Private ordinary functions
Function, get-leaving-expression: Private ordinary functions
Function, make-constraint: Public ordinary functions
Function, make-expression: Private ordinary functions
Function, make-solver: Public ordinary functions
Function, make-suggestable: Public ordinary functions
Function, make-term: Private ordinary functions
Function, make-unsuggestable: Public ordinary functions
Function, make-variable: Public ordinary functions
Function, mark-dirty: Private ordinary functions
Function, mark-infeasible: Private ordinary functions
Function, merge-constraint-into: Private ordinary functions
Function, merge-expression: Private ordinary functions
Function, mksym: Private ordinary functions
Function, multiply: Private ordinary functions
Function, optimize-for: Private ordinary functions
Function, pivotable-p: Private ordinary functions
Function, put-expression: Private ordinary functions
Function, reduce-expression: Private ordinary functions
Function, relation: Public ordinary functions
Function, remove-constraint: Public ordinary functions
Function, remove-errors: Private ordinary functions
Function, remove-term: Public ordinary functions
Function, reset-constraint: Public ordinary functions
Function, reset-expression: Private ordinary functions
Function, reset-solver: Public ordinary functions
Function, slack-p: Private ordinary functions
Function, solve-for: Private ordinary functions
Function, solver-auto-update: Private ordinary functions
Function, solver-constraints: Private ordinary functions
Function, solver-dirty-variables: Private ordinary functions
Function, solver-expressions: Private ordinary functions
Function, solver-infeasible-expressions: Private ordinary functions
Function, solver-objective: Private ordinary functions
Function, solver-p: Private ordinary functions
Function, solver-variables: Private ordinary functions
Function, strength: Public ordinary functions
Function, substitute: Private ordinary functions
Function, substitute-expressions: Private ordinary functions
Function, suggest: Public ordinary functions
Function, suggestable-p: Public ordinary functions
Function, term-key: Private ordinary functions
Function, term-multiplier: Private ordinary functions
Function, term-p: Private ordinary functions
Function, try-add-expression: Private ordinary functions
Function, update-variables: Public ordinary functions
Function, value: Public ordinary functions
Function, variable-constraint: Private ordinary functions
Function, variable-dirty-p: Private ordinary functions
Function, variable-edit-value: Private ordinary functions
Function, variable-p: Private ordinary functions
Function, variable-solver: Private ordinary functions
Function, variable-symbol: Private ordinary functions
Function, variable-value: Private ordinary functions
Function, write-sym: Private ordinary functions
Function, ~=: Private ordinary functions
Function, ~zerop: Private ordinary functions

G
Generic Function, expression: Public generic functions
Generic Function, solver: Public generic functions
Generic Function, variable: Public generic functions
get-expression: Private ordinary functions
get-leaving-expression: Private ordinary functions

M
Macro, constrain: Public macros
Macro, do-constraints: Private macros
Macro, do-expressions: Private macros
Macro, do-terms: Private macros
Macro, do-variables: Private macros
Macro, when-ok: Private macros
Macro, with-protection: Private macros
Macro, with-variables: Public macros
make-constraint: Public ordinary functions
make-expression: Private ordinary functions
make-solver: Public ordinary functions
make-suggestable: Public ordinary functions
make-term: Private ordinary functions
make-unsuggestable: Public ordinary functions
make-variable: Public ordinary functions
mark-dirty: Private ordinary functions
mark-infeasible: Private ordinary functions
merge-constraint-into: Private ordinary functions
merge-expression: Private ordinary functions
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, expression: Public generic functions
Method, expression: Public generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, solver: Public generic functions
Method, solver: Public generic functions
Method, solver: Public generic functions
Method, solver: Public generic functions
Method, solver: Public generic functions
Method, variable: Public generic functions
mksym: Private ordinary functions
multiply: Private ordinary functions

O
optimize-for: Private ordinary functions

P
pivotable-p: Private ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
put-expression: Private ordinary functions

R
reduce-expression: Private ordinary functions
relation: Public ordinary functions
remove-constraint: Public ordinary functions
remove-errors: Private ordinary functions
remove-term: Public compiler macros
remove-term: Public ordinary functions
reset-constraint: Public ordinary functions
reset-expression: Private ordinary functions
reset-solver: Public ordinary functions

S
slack-p: Private ordinary functions
solve-for: Private ordinary functions
solver: Public generic functions
solver: Public generic functions
solver: Public generic functions
solver: Public generic functions
solver: Public generic functions
solver: Public generic functions
solver-auto-update: Private ordinary functions
solver-constraints: Private ordinary functions
solver-dirty-variables: Private ordinary functions
solver-expressions: Private ordinary functions
solver-infeasible-expressions: Private ordinary functions
solver-objective: Private ordinary functions
solver-p: Private ordinary functions
solver-variables: Private ordinary functions
strength: Public ordinary functions
substitute: Private ordinary functions
substitute-expressions: Private ordinary functions
suggest: Public ordinary functions
suggestable-p: Public ordinary functions

T
term-key: Private ordinary functions
term-multiplier: Private ordinary functions
term-p: Private ordinary functions
try-add-expression: Private ordinary functions

U
update-variables: Public ordinary functions

V
value: Public ordinary functions
variable: Public generic functions
variable: Public generic functions
variable-constraint: Private ordinary functions
variable-dirty-p: Private ordinary functions
variable-edit-value: Private ordinary functions
variable-p: Private ordinary functions
variable-solver: Private ordinary functions
variable-symbol: Private ordinary functions
variable-value: Private ordinary functions

W
when-ok: Private macros
with-protection: Private macros
with-variables: Public macros
write-sym: Private ordinary functions

Jump to:   %   (   -   ~  
A   C   D   E   F   G   M   O   P   R   S   T   U   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
A   C   D   E   I   K   M   O   R   S   T   V  
Index Entry  Section

*
*symbol-ids*: Private special variables

+
+medium+: Public constants
+none+: Public constants
+required+: Public constants
+strong+: Public constants
+weak+: Public constants

A
auto-update: Public structures

C
constant: Public structures
Constant, +medium+: Public constants
Constant, +none+: Public constants
Constant, +required+: Public constants
Constant, +strong+: Public constants
Constant, +weak+: Public constants
constraint: Public structures
constraints: Public structures

D
dirty-p: Public structures
dirty-variables: Public structures

E
edit-value: Public structures
expression: Public conditions
expression: Public conditions
expression: Public structures
expressions: Public structures

I
infeasible-expressions: Public structures
infeasible-p: Public structures

K
key: Public structures
key: Public structures

M
marker: Public structures
multiplier: Public structures

O
objective: Public structures
other: Public structures

R
relation: Public structures

S
Slot, auto-update: Public structures
Slot, constant: Public structures
Slot, constraint: Public structures
Slot, constraints: Public structures
Slot, dirty-p: Public structures
Slot, dirty-variables: Public structures
Slot, edit-value: Public structures
Slot, expression: Public conditions
Slot, expression: Public conditions
Slot, expression: Public structures
Slot, expressions: Public structures
Slot, infeasible-expressions: Public structures
Slot, infeasible-p: Public structures
Slot, key: Public structures
Slot, key: Public structures
Slot, marker: Public structures
Slot, multiplier: Public structures
Slot, objective: Public structures
Slot, other: Public structures
Slot, relation: Public structures
Slot, solver: Public conditions
Slot, solver: Public conditions
Slot, solver: Public conditions
Slot, solver: Public structures
Slot, solver: Public structures
Slot, strength: Public structures
Slot, symbol: Public structures
Slot, terms: Public structures
Slot, value: Public structures
Slot, variable: Public conditions
Slot, variables: Public structures
solver: Public conditions
solver: Public conditions
solver: Public conditions
solver: Public structures
solver: Public structures
Special Variable, *symbol-ids*: Private special variables
strength: Public structures
symbol: Public structures

T
terms: Public structures

V
value: Public structures
variable: Public conditions
variables: Public structures

Jump to:   *   +  
A   C   D   E   I   K   M   O   R   S   T   V  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   C   D   E   F   O   P   S   T   V  
Index Entry  Section

A
assertion-violated: Public conditions

C
cassowary.lisp: The classowary/cassowary․lisp file
classowary: The classowary system
classowary-condition: Public conditions
classowary.asd: The classowary/classowary․asd file
Condition, assertion-violated: Public conditions
Condition, classowary-condition: Public conditions
Condition, expression-unbound: Public conditions
Condition, expression-unsatisfied: Public conditions
Condition, variable-not-suggestable: Public conditions
conditions.lisp: The classowary/conditions․lisp file
constraint: Public structures
constraint.lisp: The classowary/constraint․lisp file

D
documentation.lisp: The classowary/documentation․lisp file

E
expression: Public structures
expression-unbound: Public conditions
expression-unsatisfied: Public conditions
expression.lisp: The classowary/expression․lisp file

F
File, cassowary.lisp: The classowary/cassowary․lisp file
File, classowary.asd: The classowary/classowary․asd file
File, conditions.lisp: The classowary/conditions․lisp file
File, constraint.lisp: The classowary/constraint․lisp file
File, documentation.lisp: The classowary/documentation․lisp file
File, expression.lisp: The classowary/expression․lisp file
File, package.lisp: The classowary/package․lisp file
File, symbol.lisp: The classowary/symbol․lisp file
File, toolkit.lisp: The classowary/toolkit․lisp file

O
org.shirakumo.classowary: The org․shirakumo․classowary package

P
Package, org.shirakumo.classowary: The org․shirakumo․classowary package
package.lisp: The classowary/package․lisp file

S
solver: Public structures
Structure, constraint: Public structures
Structure, expression: Public structures
Structure, solver: Public structures
Structure, term: Public structures
Structure, variable: Public structures
symbol.lisp: The classowary/symbol․lisp file
System, classowary: The classowary system

T
term: Public structures
toolkit.lisp: The classowary/toolkit․lisp file

V
variable: Public structures
variable-not-suggestable: Public conditions

Jump to:   A   C   D   E   F   O   P   S   T   V