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

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...

Full description

Bibliographic Details
Main Author: Steele, Guy Lewis, Jr.
Language:en_US
Published: 2004
Online Access:http://hdl.handle.net/1721.1/6933
_version_ 1826205306245349376
author Steele, Guy Lewis, Jr.
author_facet Steele, Guy Lewis, Jr.
author_sort Steele, Guy Lewis, Jr.
collection MIT
description 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.
first_indexed 2024-09-23T13:10:56Z
id mit-1721.1/6933
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T13:10:56Z
publishDate 2004
record_format dspace
spelling mit-1721.1/69332019-04-12T08:33:11Z The Definition and Implementation of a Computer Programming Language Based on Constraints Steele, Guy Lewis, Jr. 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. 2004-10-20T20:08:23Z 2004-10-20T20:08:23Z 1980-08-01 AITR-595 http://hdl.handle.net/1721.1/6933 en_US AITR-595 26968970 bytes 18901534 bytes application/postscript application/pdf application/postscript application/pdf
spellingShingle Steele, Guy Lewis, Jr.
The Definition and Implementation of a Computer Programming Language Based on Constraints
title The Definition and Implementation of a Computer Programming Language Based on Constraints
title_full The Definition and Implementation of a Computer Programming Language Based on Constraints
title_fullStr The Definition and Implementation of a Computer Programming Language Based on Constraints
title_full_unstemmed The Definition and Implementation of a Computer Programming Language Based on Constraints
title_short The Definition and Implementation of a Computer Programming Language Based on Constraints
title_sort definition and implementation of a computer programming language based on constraints
url http://hdl.handle.net/1721.1/6933
work_keys_str_mv AT steeleguylewisjr thedefinitionandimplementationofacomputerprogramminglanguagebasedonconstraints
AT steeleguylewisjr definitionandimplementationofacomputerprogramminglanguagebasedonconstraints