package MCC.IR;
import MCC.State;
+import MCC.Compiler;
+
import java.util.*;
public class ImplicitSchema {
}
public void update() {
- // updaterules();
+ if (Compiler.REPAIR) {
+ updaterules();
+ }
updateconstraints();
updaterelationconstraints();
}
boolean needDR(RelationDescriptor rd,boolean isdomain) {
Vector rules=state.vRules;
SetDescriptor sd=isdomain?rd.getDomain():rd.getRange();
+ if (sd instanceof ReservedSetDescriptor)
+ return false;
for(int i=0;i<rules.size();i++) {
Rule r=(Rule)rules.get(i);
if ((r.numQuantifiers()==1)&&
1. match up quantifiers
2. check inclusion condition
3. see if guard expr of set rule is more general */
-
RelationInclusion inc1=(RelationInclusion) r1.getInclusion();
RelationDescriptor rd=inc1.getRelation();
SetDescriptor sd=isdomain?rd.getDomain():rd.getRange();
Expr expr=isdomain?inc1.getLeftExpr():inc1.getRightExpr();
-
+
Inclusion inc2=r2.getInclusion();
if (!(inc2 instanceof SetInclusion))
return false;
for(Iterator superit=supersets.iterator();superit.hasNext();) {
SetDescriptor sd1=(SetDescriptor)superit.next();
Rule nr=new Rule();
- nr.guard=r.guard;
+ nr.setGuardExpr(r.getGuardExpr());
nr.quantifiers=r.quantifiers;
nr.isstatic=r.isstatic;
nr.isdelay=r.isdelay;
nr.inclusion=new SetInclusion(((SetInclusion)r.inclusion).elementexpr,sd1);
nr.st=r.st;
+ nr.setnogenerate();
newrules.add(nr);
+ state.implicitrule.put(nr,r);
}
}
}