}
};
-Node CegSingleInv::postProcessSolution(Node n)
-{
- bool childChanged = false;
- Kind k = n.getKind();
- if( n.getKind()==INTS_DIVISION_TOTAL ){
- k = INTS_DIVISION;
- childChanged = true;
- }else if( n.getKind()==INTS_MODULUS_TOTAL ){
- k = INTS_MODULUS;
- childChanged = true;
- }
- std::vector< Node > children;
- for( unsigned i=0; i<n.getNumChildren(); i++ ){
- Node nn = postProcessSolution( n[i] );
- children.push_back( nn );
- childChanged = childChanged || nn!=n[i];
- }
- if( childChanged ){
- if( n.hasOperator() && k==n.getKind() ){
- children.insert( children.begin(), n.getOperator() );
- }
- return NodeManager::currentNM()->mkNode( k, children );
- }else{
- return n;
- }
-}
-
Node CegSingleInv::getSolution(unsigned sol_index,
TypeNode stn,
int& reconstructed,
d_qe->getTermDatabaseSygus()->getExtRewriter()->extendedRewrite(
d_solution);
}
- d_solution = postProcessSolution( d_solution );
if( prev!=d_solution ){
Trace("csi-sol") << "Solution (after post process) : " << d_solution << std::endl;
}
std::vector< Node >& terms,
std::map< Node, std::vector< Node > >& teq,
Node n, std::vector< Node >& conj );
- Node postProcessSolution(Node n);
private:
/** pointer to the quantifiers engine */
QuantifiersEngine* d_qe;
regress1/sygus/issue3633.smt2
regress1/sygus/issue3634.smt2
regress1/sygus/issue3635.smt2
+ regress1/sygus/issue3644.smt2
regress1/sygus/issue3648.smt2
regress1/sygus/issue3654.sy
regress1/sygus/large-const-simp.sy