{'fraction_non_alphanumeric': 0.020697167755991286, 'fraction_numerical': 0.0, 'mean_word_length': 5.337931034482758, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Semantic Learning for Lazy Clause Generation

Lazy clause generation (LCG) combines finite domain (FD) propagation with features from Boolean satisfiability (SAT) solving, notably clause learning. In a LCG solver, finite domain propagators are considered as clause generators that create a SAT description of their behavior for a SAT solver, using some Boolean encoding of the variable domains. When a conflict is triggered by unit propagation on these clauses, SAT conflict analysis learns new (inferred) clauses. In this paper we propose to supplant the SAT component by equivalent methods reasoning semantically on atomic constraints, reducing the roles of SAT to efficient unit propagation. This allows us to reduce the number of literals generated as well as strengthening the conflict analysis. We give experiments exploring the effects of the design choices used in implementing the new solver cpx that results.