Results 1  10
of
14
A theory of overloading
 ACM Transactions on Programming Languages and Systems (TOPLAS
, 2002
"... Abstract We introduce a novel approach for debugging illtyped programs in the Hindley/Milner system. We map the typing problem for a program to a system of constraints each attached to program code that generates the constraints. We use reasoning about constraint satisfiability and implication to f ..."
Abstract

Cited by 65 (21 self)
 Add to MetaCart
Abstract We introduce a novel approach for debugging illtyped programs in the Hindley/Milner system. We map the typing problem for a program to a system of constraints each attached to program code that generates the constraints. We use reasoning about constraint satisfiability and implication to find minimal justifications of type errors, and to explain unexpected types that arise. Through an interactive process akin to declarative debugging, a user can track down exactly where a type error occurs. We are able to capture various extensions of the Hindley/Milner system such as type annotations and Haskellstyle type class overloading. The approach has been implemented as part of the Chameleon system.
Optimizing Compilation of Constraint Handling Rules
, 2001
"... CHRs are a multiheaded committed choice constraint language, commonly applied for writing incremental constraint solvers. CHRs are usually implemented as a language extension that compiles to the underlying language. In this paper we discuss the optimizing compilation of Constraint Handling Rul ..."
Abstract

Cited by 43 (8 self)
 Add to MetaCart
CHRs are a multiheaded committed choice constraint language, commonly applied for writing incremental constraint solvers. CHRs are usually implemented as a language extension that compiles to the underlying language. In this paper we discuss the optimizing compilation of Constraint Handling Rules (CHRs). In particualr, we show how we can use dierent kinds of information in the compilation of CHRs in order to obtain access eciency, and a better translation of the CHR rules into the underlying language. The kinds of information used include the types, modes, determinism, functional dependencies and symmetries of the CHR constraints. We also show how to analyze CHR programs to determine information about functional dependencies, symmetries and other kinds of information supporting optimizations.
Sound and Decidable Type Inference for Functional Dependencies
, 2004
"... Functional dependencies are a popular and useful extension to Haskell style type classes. In this paper, we give a reformulation of functional dependencies in terms of Constraint Handling Rules (CHRs). In previous work, CHRs have been employed for describing userprogrammable type extensions in th ..."
Abstract

Cited by 34 (16 self)
 Add to MetaCart
Functional dependencies are a popular and useful extension to Haskell style type classes. In this paper, we give a reformulation of functional dependencies in terms of Constraint Handling Rules (CHRs). In previous work, CHRs have been employed for describing userprogrammable type extensions in the context of Haskell style type classes. Here, we make use of CHRs to provide for the first time a concise result that under some sufficient conditions, functional dependencies allow for sound and decidable type inference. The sucient conditions imposed on functional dependencies can be very limiting. We show how to safely relax these conditions.
Operational Equivalence of CHR Programs And Constraints
 In 5th International Conference on Principles and Practice of Constraint Programming, CP'99, LNCS 1713
, 1999
"... . A fundamental question in programming language semantics is when two programs should be considered equivalent. In this paper we introduce a notion of operational equivalence for CHR programs and userdefined constraints. Constraint Handling Rules (CHR) is a highlevel language for writing constrain ..."
Abstract

Cited by 21 (6 self)
 Add to MetaCart
(Show Context)
. A fundamental question in programming language semantics is when two programs should be considered equivalent. In this paper we introduce a notion of operational equivalence for CHR programs and userdefined constraints. Constraint Handling Rules (CHR) is a highlevel language for writing constraint solvers either from scratch or by modifying existing solvers. We give a decidable, sufficient and necessary syntactic condition for operational equivalence of terminating and confluent CHR programs. For practical reasons, we also investigate a notion of operational equivalence for userdefined constraints that are defined in different programs. We give a sufficient syntactic condition for constraints defined in terminating and confluent CHR programs. For a subclass of programs which have only one userdefined constraint in common, we are able to give a sufficient and necessary syntactic condition. 1 Introduction Constraint Handling Rules (CHR) [Fru98] is essentially a committedchoice lan...
Automatic Generation of Propagation Rules for Finite Domains
"... A general approach to specify the propagation and simplification process of constraints consists of applying rules over these constraints. In ..."
Abstract

Cited by 17 (7 self)
 Add to MetaCart
A general approach to specify the propagation and simplification process of constraints consists of applying rules over these constraints. In
As Time Goes By: Automatic Complexity Analysis of Simplification Rules
, 2002
"... From a suitable termination order, called a tight ranking, we can automatically compute the worstcase time complexity of a CHR constraint simplification rule program from its program text: We combine the worstcase derivation length of a query predicted from its ranking with a worstcase esti ..."
Abstract

Cited by 17 (9 self)
 Add to MetaCart
From a suitable termination order, called a tight ranking, we can automatically compute the worstcase time complexity of a CHR constraint simplification rule program from its program text: We combine the worstcase derivation length of a query predicted from its ranking with a worstcase estimate of the number and cost of rule application attempts and the cost of rule applications to obtain the desired metatheorem. For two Boolean and a path consistency solver, the predictions are computed and are compared to some empirical runtime measurements.
Integration and Optimization of Rulebased Constraint Solvers
, 2004
"... One lesson learned from practical constraint solving applications is that constraints are often heterogeneous. Solving such constraints requires a collaboration of constraint solvers. In this paper, we introduce a methodology for the tight integration of CHR constraint programs into one such progr ..."
Abstract

Cited by 12 (5 self)
 Add to MetaCart
One lesson learned from practical constraint solving applications is that constraints are often heterogeneous. Solving such constraints requires a collaboration of constraint solvers. In this paper, we introduce a methodology for the tight integration of CHR constraint programs into one such program. CHR is a highlevel rulebased language for writing constraint solvers and reasoning systems. A constraint solver is wellbehaved if it is terminating and conuent. When merging constraint solvers, this property may be lost. Based on previous results on CHR program analysis and transformation we show how to utilize completion to regain wellbehavedness. We identify a class of solvers whose union is always confluent and we show that for preserving termination such a class is hard to find. The merged and completed constraint solvers may contain redundant rules. Utilizing the notion of operational equivalence, which is decidable for wellbehaved CHR programs, we present a method to detect redundant rules in a CHR program.
Towards Inductive Constraint Solving
, 2001
"... A difficulty that arises frequently when writing a constraint solver is to determine the constraint propagation and simplification algorithm. In previous work, different methods for automatic generation of propagation rules [5,17,3] and simplification rules [4] for constraints defined over finite do ..."
Abstract

Cited by 10 (6 self)
 Add to MetaCart
A difficulty that arises frequently when writing a constraint solver is to determine the constraint propagation and simplification algorithm. In previous work, different methods for automatic generation of propagation rules [5,17,3] and simplification rules [4] for constraints defined over finite domains have been proposed. In this paper, we present a method for generating rulebased solvers for constraint predicates defined by means of a constraint logic program, even when the constraint domain is infinite. This approach can be seen as a concrete step towards Inductive Constraint Solving.
Using Confluence to Generate Rulebased Constraint Solvers
 In Third International Conference on Principles and Practice of Declarative Programming
, 2001
"... A general approach to implement propagation and simplification of constraints consists of applying rules over these constraints. Recently, several proposals have been made to solve finite constraint satisfaction problems by means of automatically generated propagation rules [4, 9, 3]. Since propagat ..."
Abstract

Cited by 8 (5 self)
 Add to MetaCart
A general approach to implement propagation and simplification of constraints consists of applying rules over these constraints. Recently, several proposals have been made to solve finite constraint satisfaction problems by means of automatically generated propagation rules [4, 9, 3]. Since propagation rules do not rewrite constraints but add new ones, the constraint store may contain superfluous constraints. Removing these constraints not only allows saving of space but also decreases the cost of constraint solving. Constraints can be removed using simplification rules. In this paper, we present a method to transform propagation rules into simplification rules using the concept of confluence. The generated rules are implemented in the language Constraint Handling Rules (CHR). An example taken from the field of digital circuit design shows that our approach is of practical use.
A Language for Experimenting with Declarative Paradigms
"... Constraint Handling Rules is a rulebased language for writing constraint solvers either from scratch or by modifying existing solvers. Currently, CHR ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Constraint Handling Rules is a rulebased language for writing constraint solvers either from scratch or by modifying existing solvers. Currently, CHR