/pcp

Constraint programming in Rust

Primary LanguageRustApache License 2.0Apache-2.0

Constraint Programming Library

ptal on Travis CI

Compiled on the nightly channel of Rust. Use rustup for managing compiler channels. Download the exact same version of the compiler used for PCP with rustup override add nightly-2016-08-12.

PCP Constraint Programming library will make you feel NP like P.

Or not. It is first designed to elegantly solve the entailment problem in a generic framework. I also explore a "store"-based design where the variables, constraints and spaces are stored in concrete structures – I feel that this design will be clearer but it is highly experimental.

References

Existing library are an invaluable source of inspiration:

  • The csar Rust library by Sylvain Soliman helped me to get started.
  • And for a lot of reasons the following libraries are also interesting: GeCode, Choco, Minion,...

Most of this work has its roots in the following research works:

  • Guido Tack. Constraint Propagation - Models, Techniques, Implementation. Doctoral dissertation, Saarland University, 2009.
  • Tom Schrijvers, Peter Stuckey, and Philip Wadler. Monadic constraint programming. J. Funct. Program., 19(6):663–697, 2009.
  • Tom Schrijvers, Guido Tack, Pieter Wuille, Horst Samulowitz, and Peter J. Stuckey. Search combinators. Constraints, 18(2):269–305, 2013.
  • ...