Hashtable conjunctionmap;
HashSet abstractrepair;
+ HashSet abstractrepairadd;
+
HashSet updatenodes;
HashSet consequencenodes;
conjunctions=new HashSet();
conjunctionmap=new Hashtable();
abstractrepair=new HashSet();
+ abstractrepairadd=new HashSet();
scopenodes=new HashSet();
scopesatisfy=new Hashtable();
scopefalsify=new Hashtable();
predtoabstractmap.put(tp,new HashSet());
((Set)predtoabstractmap.get(tp)).add(gn);
abstractrepair.add(gn);
+ abstractrepairadd.add(gn);
abstractadd.put(sd,gn);
DNFPredicate tp2=new DNFPredicate(true,ip);
predtoabstractmap.put(tp2,new HashSet());
((Set)predtoabstractmap.get(tp2)).add(gn2);
abstractrepair.add(gn2);
+ abstractrepairadd.add(gn2);
abstractremove.put(sd,gn2);
}
predtoabstractmap.put(tp,new HashSet());
((Set)predtoabstractmap.get(tp)).add(gn);
abstractrepair.add(gn);
+ abstractrepairadd.add(gn);
abstractadd.put(rd,gn);
DNFPredicate tp2=new DNFPredicate(true,ip);
predtoabstractmap.put(tp2,new HashSet());
((Set)predtoabstractmap.get(tp2)).add(gn2);
abstractrepair.add(gn2);
+ abstractrepairadd.add(gn2);
abstractremove.put(rd,gn2);
}
}
RelationInclusion ri=(RelationInclusion)r.getInclusion();
if (!(ri.getLeftExpr() instanceof VarExpr)) {
- Updates up=new Updates(ri.getLeftExpr(),leftindex);
- un.addUpdate(up);
+ if (ri.getLeftExpr().isValue()) {
+ Updates up=new Updates(ri.getLeftExpr(),leftindex);
+ un.addUpdate(up);
+ } else
+ goodflag=false;
} else {
VarDescriptor vd=((VarExpr)ri.getLeftExpr()).getVar();
if (vd.isGlobal()) {
goodflag=false;
}
if (!(ri.getRightExpr() instanceof VarExpr)) {
- Updates up=new Updates(ri.getRightExpr(),rightindex);
- un.addUpdate(up);
+ if (ri.getRightExpr().isValue()) {
+ Updates up=new Updates(ri.getRightExpr(),rightindex);
+ un.addUpdate(up);
+ } else
+ goodflag=false;
} else {
VarDescriptor vd=((VarExpr)ri.getRightExpr()).getVar();
if (vd.isGlobal()) {
if(inc instanceof SetInclusion) {
SetInclusion si=(SetInclusion)inc;
if (!(si.elementexpr instanceof VarExpr)) {
- Updates up=new Updates(si.elementexpr,0);
- un.addUpdate(up);
+ if (si.elementexpr.isValue()) {
+ Updates up=new Updates(si.elementexpr,0);
+ un.addUpdate(up);
+ } else
+ continue;
} else {
VarDescriptor vd=((VarExpr)si.elementexpr).getVar();
- if (un.getBinding(vd)==null) {
+ if (vd.isGlobal()) {
Updates up=new Updates(si.elementexpr,0);
un.addUpdate(up);
}
} else if (inc instanceof RelationInclusion) {
RelationInclusion ri=(RelationInclusion)inc;
if (!(ri.getLeftExpr() instanceof VarExpr)) {
- Updates up=new Updates(ri.getLeftExpr(),0);
- un.addUpdate(up);
+ if (ri.getLeftExpr().isValue()) {
+ Updates up=new Updates(ri.getLeftExpr(),0);
+ un.addUpdate(up);
+ } else
+ continue;
} else {
VarDescriptor vd=((VarExpr)ri.getLeftExpr()).getVar();
- if (un.getBinding(vd)==null) {
+ if (vd.isGlobal()) {
Updates up=new Updates(ri.getLeftExpr(),0);
un.addUpdate(up);
}
}
if (!(ri.getRightExpr() instanceof VarExpr)) {
- Updates up=new Updates(ri.getRightExpr(),1);
- un.addUpdate(up);
+ if (ri.getRightExpr().isValue()) {
+ Updates up=new Updates(ri.getRightExpr(),1);
+ un.addUpdate(up);
+ } else
+ continue;
} else {
VarDescriptor vd=((VarExpr)ri.getRightExpr()).getVar();
- if (un.getBinding(vd)==null) {
+ if (vd.isGlobal()) {
Updates up=new Updates(ri.getRightExpr(),1);
un.addUpdate(up);
}