Introduce new splitting inference in sets + cardinality (#8290)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Sat, 12 Mar 2022 23:21:02 +0000 (17:21 -0600)
committerGitHub <noreply@github.com>
Sat, 12 Mar 2022 23:21:02 +0000 (23:21 +0000)
commit47eb5ed2c6b68d25ebe9e2bd70bdae89c63d50c4
tree1c906d656adbe8d3c700ab0212b56a51d23bb3ef
parent665aeb203c4be6822ee61bed6c25107cba45083c
Introduce new splitting inference in sets + cardinality (#8290)

Fixes cvc5/cvc5-projects#486.

This introduces a new strategy which splits on whether Venn regions are equal to each other before it splits them into sub-Venn regions.

The issue in the above was caused by a case where the sets solver decided to make 2 Venn regions of the same equivalence class disjoint. By splitting on their equality first, this should introduce the necessary information to discover this is a conflict (via disequality witnessing). It should also be more efficient since we introduce new set terms lazier.
src/theory/inference_id.cpp
src/theory/inference_id.h
src/theory/sets/cardinality_extension.cpp
test/regress/CMakeLists.txt
test/regress/regress0/sets/proj-issue486-sets-split-eq.smt2 [new file with mode: 0644]