Results 1 - 10
of
25
Constraint Hierarchies
- Lisp and Symbolic Computation
, 1992
"... . Constraints allow programmers and users to state declaratively a relation that should be maintained, rather than requiring them to write procedures to maintain the relation themselves. They are thus useful in such applications as programming languages, user interface toolkits, and simulation packa ..."
Abstract
-
Cited by 137 (14 self)
- Add to MetaCart
. Constraints allow programmers and users to state declaratively a relation that should be maintained, rather than requiring them to write procedures to maintain the relation themselves. They are thus useful in such applications as programming languages, user interface toolkits, and simulation packages. In many situations, it is desirable to be able to state both required and preferential constraints. The required constraints must hold. Since the other constraints are merely preferences, the system should try to satisfy them if possible, but no error condition arises if it cannot. A constraint hierarchy consists of a set of constraints, each labeled as either required or preferred at some strength. An arbitrary number of different strengths is allowed. In the discussion of a theory of constraint hierarchies, we present alternate ways of selecting among competing possible solutions, and prove a number of propositions about the relations among these alternatives. We then outline algorit...
Hierarchical Constraint Logic Programming
, 1993
"... A constraint describes a relation to be maintained ..."
Abstract
-
Cited by 67 (3 self)
- Add to MetaCart
A constraint describes a relation to be maintained
The Design and Implementation of Kaleidoscope'90, A Constraint Imperative Programming Language
- In Proceedings of the IEEE Computer Society International Conference on Computer Languages
, 1992
"... Two major paradigms in computer programming languages are imperative and declarative programming. We describe a scheme for languages that integrate specific features from these two paradigms into a new framework: Constraint Imperative Programming. Along with the framework, we discuss the design and ..."
Abstract
-
Cited by 29 (4 self)
- Add to MetaCart
Two major paradigms in computer programming languages are imperative and declarative programming. We describe a scheme for languages that integrate specific features from these two paradigms into a new framework: Constraint Imperative Programming. Along with the framework, we discuss the design and implementation of a particular instance of this framework, Kaleidoscope'90. From the imperative paradigm, constraint imperative programming adopts explicit control flow, state, and assignment. From the declarative paradigm, it adopts explicit, systemmaintained constraints (relations that should hold). There is a strong practical motivation for making this integration: in a typical application, some portions are most clearly described using imperative constructs, while other portions are most clearly described using constraints. By using a constraint imperative language, the most suitable paradigm can be used as appropriate. 1 Introduction We propose to combine two simple techniques--- decl...
Knowledge Objects
, 1995
"... ion and encapsulation Abstraction is the principle of capturing useful information by ignoring all the detailed features of an entity that are not relevant to understanding what it does or what it is. Rather than trying KNOWLEDGE OBJECTS Informatica 3 to comprehend everything about the entity all ..."
Abstract
-
Cited by 27 (11 self)
- Add to MetaCart
ion and encapsulation Abstraction is the principle of capturing useful information by ignoring all the detailed features of an entity that are not relevant to understanding what it does or what it is. Rather than trying KNOWLEDGE OBJECTS Informatica 3 to comprehend everything about the entity all at once, we select only part of it. Abstraction consists of "data abstraction" and "procedural abstraction". Procedural abstraction can already be found in most imperative programming languages in the form of functions and procedures, which can be used to reduce the complexity of programming code. In OOD, data abstraction is carried out by the definitions of abstract data types (ADTs) -- commonly called classes or types [Atkinson et al. 92]. An ADT is defined in terms of data items and the operations, called methods in OOP, that can be applied to these data items. The data within the ADT can only be modified and manipulated by these methods. The resulting notion of encapsulation leads to ...
Generalized Local Propagation: A Framework for Solving Constraint Hierarchies
- In Proceedings of the Second International Conference on Principles and Practice of Constraint Programming
, 1996
"... . `Constraint hierarchy' is a nonmonotonic system that allows programmers to describe over-constrained real-world problems by specifying constraints with hierarchical preferences, and has been applied to various areas. An important aspect of constraint hierarchies is the existence of efficient satis ..."
Abstract
-
Cited by 23 (0 self)
- Add to MetaCart
. `Constraint hierarchy' is a nonmonotonic system that allows programmers to describe over-constrained real-world problems by specifying constraints with hierarchical preferences, and has been applied to various areas. An important aspect of constraint hierarchies is the existence of efficient satisfaction algorithms based on local propagation. However, past local-propagation algorithms have been limited to multi-way equality constraints. We overcome this by reformulating constraint hierarchies with a more strict definition, and proposing generalized local propagation as a theoretical framework for studying constraint hierarchies and local propagation. Then, we show that global semi-monotonicity in satisfying hierarchies turns out to be a practically useful property in generalized local propagation. Finally, we discuss the relevance of generalized local propagation with our previous DETAIL algorithm for solving hierarchies of multi-way equality constraints. Keywords: constraint hierar...
A Reflective Model for First Class Dependencies
- In OOPSLA'95
, 1995
"... We propose a reflective model to express and to automatically manage dependencies between objects. This model describes reflective facilities which enable the changing of language semantics. Although the importance of inter-object dependencies is well accepted, there is only limited object-oriented ..."
Abstract
-
Cited by 21 (8 self)
- Add to MetaCart
We propose a reflective model to express and to automatically manage dependencies between objects. This model describes reflective facilities which enable the changing of language semantics. Although the importance of inter-object dependencies is well accepted, there is only limited object-oriented language support for their specification and implementation. In response to this lack of expressiveness of object models, the flo language integrates dependency management into the object oriented paradigm. Dependencies are described as first class objects and flo automatically maintains the consistency of the dependency graph.
Mixing Constraints and Objects: a Case Study in Automatic Harmonization
"... We propose an extension of Smalltalk with finite-domain constraint satisfaction mechanisms. Our system, called BackTalk, allows the definition of constraints over arbitrary Smalltalk objects, and implements efficient algorithms for constraints satisfaction. We exemplify the use of BackTalk on a prob ..."
Abstract
-
Cited by 18 (4 self)
- Add to MetaCart
We propose an extension of Smalltalk with finite-domain constraint satisfaction mechanisms. Our system, called BackTalk, allows the definition of constraints over arbitrary Smalltalk objects, and implements efficient algorithms for constraints satisfaction. We exemplify the use of BackTalk on a problem known to be complex, automatic harmonization. We outline several previous attempts to solve the problem with similar mechanisms, and stress on their inefficiencies, mainly the lack of structure of domain objects. We propose to solve the problem by a combination of constraints and objects that fully benefits from object structures. This is achieved in practice by separating the constraint satisfaction process in two steps. By comparison, our system yields excellent results, both in term of efficiency and readability. We discuss the generality of our approach to problems involving numerous and heterogeneous object structures. Key-words: constraints, finite-domain constraint satisfaction, ...
Kaleidoscope: A Constraint Imperative Programming Language
, 1994
"... The Constraint Imperative Programming (CIP) family of languages integrates constraints and imperative, object-oriented programming. In addition to combining the useful features of both paradigms, there are synergistic effects of this integration, such as the ability to define constraints over user-d ..."
Abstract
-
Cited by 15 (2 self)
- Add to MetaCart
The Constraint Imperative Programming (CIP) family of languages integrates constraints and imperative, object-oriented programming. In addition to combining the useful features of both paradigms, there are synergistic effects of this integration, such as the ability to define constraints over user-defined domains. We discuss characteristics of the CIP family and provide a rationale for its creation. The synergy of constraints and objects imposes additional challenges for the provision of constructs, such as object identity and class membership, that are well-understood in conventional language paradigms. We discuss the benefits and challenges of combining the constraint and imperative paradigms, and present our current ideas in the context of the design and implementation of the Kaleidoscope'93 language.
Superglue: Component programming with object-oriented signals
- In Proc. of ECOOP
, 2006
"... Abstract. The assembly of components that can handle continuously changing data results in programs that are more interactive. Unfortunately, the code that glues together such components is often difficult to write because it is exposed to many complicated event-handling details. This paper introduc ..."
Abstract
-
Cited by 11 (1 self)
- Add to MetaCart
Abstract. The assembly of components that can handle continuously changing data results in programs that are more interactive. Unfortunately, the code that glues together such components is often difficult to write because it is exposed to many complicated event-handling details. This paper introduces the SuperGlue language where components are assembled by connecting their signals, which declaratively represent state as time-varying values. To support the construction of interactive programs that require an unbounded number of signal connections, signals in SuperGlue are scaled with object-oriented abstractions. With Super-Glue’s combination of signals and objects, programmers can build large interactive programs with substantially less glue code when compared to conventional approaches. For example, the SuperGlue implementation of an email client is around half the size of an equivalent Java implementation. 1
Constraints and Object Identity
- IN ECOOP PROCEEDINGS, LNCS 821
, 1994
"... Constraint imperative programming is an integration of declarative constraints and imperative object-oriented programming. The primary goal of this integration is to use constraints to express relations among objects explicitly--- relations that were implicit in the code in previous languages. Howev ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
Constraint imperative programming is an integration of declarative constraints and imperative object-oriented programming. The primary goal of this integration is to use constraints to express relations among objects explicitly--- relations that were implicit in the code in previous languages. However, one of the fundamental concepts of object-oriented programming, object identity, can result in implicit relations, even when explicit identity constraints are supported. We analyze the problem and propose a solution ---identity constraints---which we have implemented in our Kaleidoscope'93 language. This solution is understandable, efficiently implementable, and compatible with the Kaleidoscope constraint model.

