Repository logo
Log in(current)
Repository logoMIT Open ScholarshipDSpace@MIT
  1. Home
  2. Computer Science and Artificial Intelligence Lab (CSAIL)
  3. Artificial Intelligence Lab Publications
  4. AI Technical Reports (1964 - 2004)
  5. The Definition and Implementation of a Computer Programming Language Based on Constraints

The Definition and Implementation of a Computer Programming Language Based on Constraints

Thumbnail Image
Download
Name

AITR-595.pdf

Size

18.03 MB

Format

Adobe PDF

Checksum (MD5)

4226c96cd6ac34fd4eea1c38de1ecad4

Thumbnail Image
Download
Name

AITR-595.ps

Size

25.72 MB

Format

PostScript

Checksum (MD5)

4afd09b085c8f791aa863b0680c76d4c

Author(s)
Steele, Guy Lewis, Jr.
Date Issued
August 1, 1980
Series/Report no.
AITR-595
Abstract
The constraint paradigm is a model of computation in which values are deduced whenever possible, under the limitation that deductions be local in a certain sense. One may visualize a constraint 'program' as a network of devices connected by wires. Data values may flow along the wires, and computation is performed by the devices. A device computes using only locally available information (with a few exceptions), and places newly derived values on other, locally attached wires. In this way computed values are propagated. An advantage of the constraint paradigm (not unique to it) is that a single relationship can be used in more than one direction. The connections to a device are not labelled as inputs and outputs; a device will compute with whatever values are available, and produce as many new values as it can. General theorem provers are capable of such behavior, but tend to suffer from combinatorial explosion; it is not usually useful to derive all the possible consequences of a set of hypotheses. The constraint paradigm places a certain kind of limitation on the deduction process. The limitations imposed by the constraint paradigm are not the only one possible. It is argued, however, that they are restrictive enough to forestall combinatorial explosion in many interesting computational situations, yet permissive enough to allow useful computations in practical situations. Moreover, the paradigm is intuitive: It is easy to visualize the computational effects of these particular limitations, and the paradigm is a natural way of expressing programs for certain applications, in particular relationships arising in computer-aided design. A number of implementations of constraint-based programming languages are presented. A progression of ever more powerful languages is described, complete implementations are presented and design difficulties and alternatives are discussed. The goal approached, though not quite reached, is a complete programming system which will implicitly support the constraint paradigm to the same extent that LISP, say, supports automatic storage management.
Persistent DSpace Link
http://hdl.handle.net/1721.1/6933
Repository logo
PrivacyPermissionsAccessibilityContact us
Repository logo
Notify us about copyright concerns.