3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 21:38:44 +00:00

adjusting stratified inlining in duality

This commit is contained in:
Ken McMillan 2013-06-07 11:50:01 -07:00
parent 97a7ae1589
commit 40fe1f6e99

View file

@ -42,7 +42,7 @@ Revision History:
#define NEW_EXPAND
#define EARLY_EXPAND
// #define TOP_DOWN
#define EFFORT_BOUNDED_STRAT
// #define EFFORT_BOUNDED_STRAT
#define SKIP_UNDERAPPROX_NODES
@ -793,6 +793,18 @@ namespace Duality {
#endif
Edge *edge = node->map->Outgoing;
std::vector<Node *> &chs = edge->Children;
// make sure we don't create a covered node in this process!
for(unsigned i = 0; i < chs.size(); i++){
Node *child = chs[i];
if(TopoSort[child] < TopoSort[node->map]){
Node *leaf = LeafMap[child];
if(!indset->Contains(leaf))
return node->Outgoing;
}
}
std::vector<Node *> nchs(chs.size());
for(unsigned i = 0; i < chs.size(); i++){
Node *child = chs[i];
@ -808,6 +820,7 @@ namespace Duality {
if(StratifiedLeafMap.find(child) == StratifiedLeafMap.end()){
RPFP::Node *nchild = CreateNodeInstance(child,StratifiedLeafCount--);
MakeLeaf(nchild);
nchild->Annotation.SetEmpty();
StratifiedLeafMap[child] = nchild;
indset->SetDominated(nchild);
}