Make SyGuS solver robust to non-closed enumerable sorts (#7417)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 20 Oct 2021 20:47:06 +0000 (15:47 -0500)
committerGitHub <noreply@github.com>
Wed, 20 Oct 2021 20:47:06 +0000 (20:47 +0000)
commit628a13f0e5f95fb3372c0676e91a9e719fa05b8c
treedcca34873956e9da48e5a86d84aad640754eb8f7
parent51e438df97e12b7c893827fe36aca3832e3e1a07
Make SyGuS solver robust to non-closed enumerable sorts (#7417)

This makes the SyGuS solver robust to variables that are not closed enumerable, e.g. arrays of uninterpreted sorts.

It corrects an issue in array's mkGroundTerm issue which would allow constants to enter into constraints for SyGuS problems with arrays. This method does not cause further issues currently since quantifiers is guarded in several places to ensure array constants are not constructed via this method.

It also makes it so that we don't add explicit CEGIS refinement lemmas unless evaluation unfolding is enabled and the counterexamples are from closed enumerable types; there is no reason to add these unless we are combining with evaluation unfolding.

This addresses several of the issues raised in #6605.
src/theory/arrays/theory_arrays_type_rules.cpp
src/theory/quantifiers/sygus/cegis.cpp
src/theory/quantifiers/sygus/cegis.h
src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
test/regress/CMakeLists.txt
test/regress/regress1/sygus/array-uc.sy [new file with mode: 0644]