Merge equivalent sub-obligations instead of discarding them. (#6353)
authorAbdalrhman Mohamed <32971963+abdoo8080@users.noreply.github.com>
Wed, 14 Apr 2021 14:36:58 +0000 (07:36 -0700)
committerGitHub <noreply@github.com>
Wed, 14 Apr 2021 14:36:58 +0000 (14:36 +0000)
commitf3ecc4bfe17776d08efbbb5ed76a5879efa419ca
treef52f2421fee5bc8d915528125ac3b102569635df
parent3114f91e3fc62380a18dd0c9b8607b564d609640
Merge equivalent sub-obligations instead of discarding them. (#6353)

This PR modifies the behavior of the reconstruction algorithm when the term to reconstruct contains two or more equivalent sub-terms, but one is easier to reconstruct than the others. Since we do not know which one is easier to reconstruct by matching, we match against all sub-terms. If a solution is found for one sub-term, we use it to solve the others.
src/theory/quantifiers/sygus/rcons_obligation_info.cpp
src/theory/quantifiers/sygus/rcons_obligation_info.h
src/theory/quantifiers/sygus/sygus_reconstruct.cpp
src/theory/quantifiers/sygus/sygus_reconstruct.h
test/regress/CMakeLists.txt
test/regress/regress1/sygus/eq-sub-obs.sy [new file with mode: 0644]