TL;DR: A constraint reformulation approach to rfficicnt constraint validation that formalizes the reformulation of an integrity constraint as a tree-starch process where the search space is a set of all semantic-equivalent alternatives of the original constraint.
Abstract: Constraint validation has bcc?n difficult to implement efficiently. The major reason for this difficulty lies in the state-dependent nature of integrity constraints and the rt~quiremcnt of both high-level spc&fication and cfficirnt runtimc cnforccmcnt. In this paper, we propose a constraint reformulation approach to rfficicnt constraint validation. We also demonstrate how this knowledge-basrd constraint rcfornmlation can be naturally accomplished in the gcncral framework of problem reformulation with the technique of antecedent derivation. We formalize thr reformulation of an integrity constraint as a tree-starch process where the search space is thtr set of all semantic-equivalent alternatives of the original constraint. We also develop control strategies and mcta-level rules for carrying out the search c?fficicntly. The major contribution of this work is a new promising approach to cfficirnt constraint validatiun and a general framework to accomplish it.
TL;DR: This research investigates the analysis of constraints as a tool for the definition of update semantics against abstract objects in an object-oriented database and demonstrates how recursive constraint analysis coupled with symbolic evaluation can be used to enhance the explanation of constraints.
Abstract: As more emphasis is placed on expressing the semantics of an application in a declarative form, as in a semantic data model with an associated constraint language, it is important for a designer to understand how such constraints affect operations against the data. This research investigates the analysis of constraints as a tool for the definition of update semantics against abstract objects in an object-oriented database. The inherent constraints of a semantic data model are made explicit by using the model as a self-describing data model. The inherent constraints coupled with explicit constraints, expressed in a first order logic constraint language, form the complete set of constraints to be analyzed, uniformly represented in Horn clause form.
To support the analysis of constraints, a representation known as constraint graphs is introduced based on a relationship between the clauses of a constraint known as the dominates relation. Constraint graphs provide a way to analyze the clauses of a constraint in a controlled and logical manner. Constraint graphs are augmented with an additional representation known as assumption lists. An assumption list provides a way to organize the predicates of a clause and its dominated clauses to support the analysis process. The structure of an assumption list is shown to correctly support the analysis of a set of clauses and to support the detection of design alternatives associated with satisfying the clauses.
The research also demonstrates how recursive constraint analysis coupled with symbolic evaluation can be used to enhance the explanation of constraints. A tool for viewing abstract objects, known as perspectives, is also introduced. Constraint analysis is used to support the formation of perspectives and to define actions to be taken in response to constraint violations on operations against perspectives.
TL;DR: This paper shows the simple approach to constraint Logic programming using PROLOG and this technique is very useful for constraint logic programming language system on top of PROLOG machine.
Abstract: We have described the constraint logic programming language CS-Prolog. CS-Prolog is written in PROLOG about 1,500 lines. This is a very small as oppose to similar system CLP which is written in C about 12,000 lines, but less efficient than CLP. However, CS-Prolog solves equations and inequations in reasonable time and this paper shows the simple approach to constraint logic programming using PROLOG and this technique is very useful for constraint logic programming language system on top of PROLOG machine.