Monadic constraint programming

  • Authors:
  • Tom Schrijvers;Peter Stuckey;Philip Wadler

  • Affiliations:
  • Department of computer science, k.u.leuven, leuven, belgium (e-mail: tom.schrijvers@cs.kuleuven.be);National ict australia, victoria laboratory, department of computer science and software engineering, university of melbourne, melbourne, australia (e-mail: pjs@cs.mu.oz.au);School of informatics, university of edinburgh, edinburgh, scotland, uk (e-mail: philip.wadler@ed.ac.uk)

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

A constraint programming system combines two essential components: a constraint solver and a search engine. The constraint solver reasons about satisfiability of conjunctions of constraints, and the search engine controls the search for solutions by iteratively exploring a disjunctive search tree defined by the constraint program. In this paper we give a monadic definition of constraint programming in which the solver is defined as a monad threaded through the monadic search tree. We are then able to define search and search strategies as first-class objects that can themselves be built or extended by composable search transformers. Search transformers give a powerful and unifying approach to viewing search in constraint programming, and the resulting constraint programming system is first class and extremely flexible.