summaryrefslogtreecommitdiff
path: root/src/theory/rep_set.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2019-12-09 14:32:32 -0600
committerAndres Noetzli <andres.noetzli@gmail.com>2019-12-09 12:32:32 -0800
commit33c5eb093a7f032a7d9c9263da595eb53fdd223b (patch)
treea08a2ab95bb8e09b6be768b18b99346c48488dec /src/theory/rep_set.cpp
parentb6ce0f23ce0aaa0552767e8067fe58dbceee11cb (diff)
Fix case of uninterpreted constant instantiation in FMF (#3543)
Fixes #3537. This benchmark triggers a potential unsoundness caused by instantiating with an uninterpreted constant (which is unsound).
Diffstat (limited to 'src/theory/rep_set.cpp')
-rw-r--r--src/theory/rep_set.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp
index ea462e55c..d293890bf 100644
--- a/src/theory/rep_set.cpp
+++ b/src/theory/rep_set.cpp
@@ -201,6 +201,8 @@ unsigned RepSetIterator::domainSize(unsigned i)
return d_domain_elements[v].size();
}
+TypeNode RepSetIterator::getTypeOf(unsigned i) const { return d_types[i]; }
+
bool RepSetIterator::setQuantifier(Node q)
{
Trace("rsi") << "Make rsi for quantified formula " << q << std::endl;
@@ -403,14 +405,16 @@ int RepSetIterator::increment(){
bool RepSetIterator::isFinished() const { return d_index.empty(); }
-Node RepSetIterator::getCurrentTerm(unsigned v, bool valTerm) const
+Node RepSetIterator::getCurrentTerm(unsigned i, bool valTerm) const
{
- unsigned ii = d_index_order[v];
+ unsigned ii = d_index_order[i];
unsigned curr = d_index[ii];
- Trace("rsi-debug") << "rsi : get term " << v << ", index order = " << d_index_order[v] << std::endl;
- Trace("rsi-debug") << "rsi : curr = " << curr << " / " << d_domain_elements[v].size() << std::endl;
- Assert(0 <= curr && curr < d_domain_elements[v].size());
- Node t = d_domain_elements[v][curr];
+ Trace("rsi-debug") << "rsi : get term " << i
+ << ", index order = " << d_index_order[i] << std::endl;
+ Trace("rsi-debug") << "rsi : curr = " << curr << " / "
+ << d_domain_elements[i].size() << std::endl;
+ Assert(0 <= curr && curr < d_domain_elements[i].size());
+ Node t = d_domain_elements[i][curr];
if (valTerm)
{
Node tt = d_rs->getTermForRepresentative(t);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback