Node sc;
d_builtin_const_to_sygus[tn][c] = sc;
Assert(c.isConst());
- Assert(tn.isDatatype());
+ if (!tn.isDatatype())
+ {
+ // if we've traversed to a builtin type, simply return c
+ d_builtin_const_to_sygus[tn][c] = c;
+ return c;
+ }
const Datatype& dt = static_cast<DatatypeType>(tn.toType()).getDatatype();
Trace("csi-rcons-debug") << "Try to reconstruct " << c << " in "
<< dt.getName() << std::endl;
- Assert(dt.isSygus());
+ if (!dt.isSygus())
+ {
+ // if we've traversed to a builtin datatype type, simply return c
+ d_builtin_const_to_sygus[tn][c] = c;
+ return c;
+ }
// if we are not interested in reconstructing constants, or the grammar allows
// them, return a proxy
if (!options::cegqiSingleInvReconstructConst() || dt.getSygusAllowConst())
}
TermDbSygus* tds = d_qe->getTermDatabaseSygus();
Assert(tds->isRegistered(tn));
- std::map<TypeNode, int> var_count;
- std::map<int, Node> pre;
- Node g = tds->mkGeneric(dt, c, var_count, pre);
+ Node g = tds->mkGeneric(dt, c);
Trace("csi-sol-debug") << "Generic is " << g << std::endl;
Node gr = Rewriter::rewrite(g);
Trace("csi-sol-debug") << "Generic rewritten is " << gr << std::endl;