The Ciao clp(FD) Library. A Modular CLP Extension for Prolog
Emilio Jes\'us Gallego Arias, R\'emy Haemmerl\'e, Manuel V., Hermenegildo, Jos\'e F. Morales

TL;DR
The paper introduces a modular, efficient, and Prolog-based Constraint Logic Programming library for Finite Domains within the Ciao system, enabling flexible constraint specification and integration.
Contribution
It presents a highly modular, high-performance FD library in Prolog, with a glass-box design allowing user customization and seamless integration with Ciao's analysis tools.
Findings
Library achieves competitive performance with existing FD implementations.
Modular design facilitates easy replacement and extension of components.
Supports various levels of constraint specification, from low-level modules to high-level paradigms.
Abstract
We present a new free library for Constraint Logic Programming over Finite Domains, included with the Ciao Prolog system. The library is entirely written in Prolog, leveraging on Ciao's module system and code transformation capabilities in order to achieve a highly modular design without compromising performance. We describe the interface, implementation, and design rationale of each modular component. The library meets several design goals: a high level of modularity, allowing the individual components to be replaced by different versions; high-efficiency, being competitive with other FD implementations; a glass-box approach, so the user can specify new constraints at different levels; and a Prolog implementation, in order to ease the integration with Ciao's code analysis components. The core is built upon two small libraries which implement integer ranges and closures. On top of…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsConstraint Satisfaction and Optimization · Model-Driven Software Engineering Techniques · Logic, programming, and type systems
