,
Martin Pépin
Creative Commons Attribution 4.0 International license
Constraint-based random testing is a powerful technique which aims at generating random test cases to verify functional properties of a program. Its objective is to determine whether a function satisfies a given property for every possible input. This approach requires firstly defining the property to satisfy, then secondly to provide a "generator of inputs" able to feed the program with the inputs generated. Besides, function inputs often need to satisfy certain constraints to ensure the function operates correctly, which makes the crafting of such a generator a hard task. In this paper, we are interested in the problem of manufacturing a uniform and efficient generator for the solutions of a CSP. In order to do that, we propose a specialized solving method that produces a well-suited representation for random sampling. Our solving method employs a dedicated propagation scheme based on the hypergraph representation of a CSP, and a custom split heuristic called birdge-first that emphasizes the interests of our propagation scheme. The generators we build are general enough to handle a wide range of use-cases. They are moreover uniform by construction, iterative and self-improving. We present a prototype built upon the AbSolute constraint solving library and demonstrate its performances on several realistic examples.
@InProceedings{ziat_et_al:LIPIcs.CP.2025.40,
author = {Ziat, Ghiles and P\'{e}pin, Martin},
title = {{An Efficient and Uniform CSP Solution Generator Generator}},
booktitle = {31st International Conference on Principles and Practice of Constraint Programming (CP 2025)},
pages = {40:1--40:18},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-380-5},
ISSN = {1868-8969},
year = {2025},
volume = {340},
editor = {de la Banda, Maria Garcia},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.CP.2025.40},
URN = {urn:nbn:de:0030-drops-239010},
doi = {10.4230/LIPIcs.CP.2025.40},
annote = {Keywords: Constraint Programming, Property-based Testing}
}