summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers')
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_io.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/theory/quantifiers/sygus/sygus_unif_io.cpp b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
index 61916ce4c..e330a8476 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_io.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
@@ -58,7 +58,7 @@ bool UnifContextIo::updateContext(SygusUnifIo* sui,
}
if (v != poln)
{
- if (v == d_true)
+ if (d_vals[i] == d_true)
{
d_vals[i] = d_false;
changed = true;
@@ -1431,9 +1431,12 @@ Node SygusUnifIo::constructSol(
}
else
{
- // if the child types are different, it could still make a
- // difference to recurse, for instance see issue #4790.
- bool childTypesEqual = ce.getType() == etn;
+ // if the branch types are different, it could still make a
+ // difference to recurse, for instance see issue #4790. We do this
+ // if either branch is a different type from the current type.
+ TypeNode branchType1 = etis->d_cenum[1].first.getType();
+ TypeNode branchType2 = etis->d_cenum[2].first.getType();
+ bool childTypesEqual = branchType1 == etn && branchType2 == etn;
if (!childTypesEqual)
{
if (!ecache_child.d_enum_vals.empty())
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback