X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FAbstractRepair.java;h=153677fff76fc516d2cd6521596c08f27cd85ecf;hp=aecc4e995b0022f5819dc46b77656db0ff58f36f;hb=f9e84f661a348d52ec5a96e246f028e3cb102fb4;hpb=e2af60de1736531dfe9f5ce4b5192e2d343434b8;ds=sidebyside diff --git a/Repair/RepairCompiler/MCC/IR/AbstractRepair.java b/Repair/RepairCompiler/MCC/IR/AbstractRepair.java index aecc4e9..153677f 100755 --- a/Repair/RepairCompiler/MCC/IR/AbstractRepair.java +++ b/Repair/RepairCompiler/MCC/IR/AbstractRepair.java @@ -1,4 +1,5 @@ package MCC.IR; +import MCC.State; class AbstractRepair { public final static int ADDTOSET=1; @@ -150,6 +151,17 @@ class AbstractRepair { return descriptor; } + + /** Thie method tells whether the repair needs to remove objects * + * from the relation, or whether the model definition rules make + * the remove unnecessary.*/ + + public boolean needsRemoves(State state) { + assert type==MODIFYRELATION; + SetDescriptor sd=getPredicate().getPredicate().inverted()?getRangeSet():getDomainSet(); + return !ConstraintDependence.rulesensurefunction(state,(RelationDescriptor)getDescriptor(), sd, getPredicate().getPredicate().inverted(), true); + } + public AbstractRepair(DNFPredicate dp,int typ, Descriptor d, Sources s) { torepair=dp; type=typ;