3 class AbstractInterferes {
4 static public boolean interferes(AbstractRepair ar, DNFPredicate dp) {
5 if ((ar.getDescriptor()!=dp.getPredicate().getDescriptor()) &&
6 ((ar.getDescriptor() instanceof SetDescriptor)||
7 !dp.getPredicate().usesDescriptor((RelationDescriptor)ar.getDescriptor())))
10 /* This if handles all the c comparisons in the paper */
11 if (ar.getDescriptor()==dp.getPredicate().getDescriptor()&&
12 (ar.getType()==AbstractRepair.ADDTOSET||ar.getType()==AbstractRepair.ADDTORELATION)&&
13 (ar.getPredicate().getPredicate() instanceof ExprPredicate)&&
14 (dp.getPredicate() instanceof ExprPredicate)&&
15 (dp.getPredicate().inverted()==ar.getPredicate().getPredicate().inverted())&&
16 (((ExprPredicate)dp.getPredicate()).getType()==ExprPredicate.SIZE)) {
17 boolean neg1=ar.getPredicate().isNegated();
18 Opcode op1=((ExprPredicate)ar.getPredicate().getPredicate()).getOp();
19 int size1=((ExprPredicate)ar.getPredicate().getPredicate()).leftsize();
20 boolean neg2=dp.isNegated();
21 Opcode op2=((ExprPredicate)dp.getPredicate()).getOp();
22 int size2=((ExprPredicate)dp.getPredicate()).leftsize();
23 if ((!neg1&&((op1==Opcode.EQ)||(op1==Opcode.NE)||(op1==Opcode.GT)||op1==Opcode.GE))||
24 (neg1&&((op1==Opcode.EQ)||(op1==Opcode.NE)||(op1==Opcode.LT)||op1==Opcode.LE))) {
27 if((op1==Opcode.EQ)||(op1==Opcode.GE))
29 if((op1==Opcode.GT)||(op1==Opcode.NE))
33 if((op1==Opcode.EQ)||(op1==Opcode.LE))
35 if((op1==Opcode.LT)||(op1==Opcode.NE))
38 if ((!neg2&&(op2==Opcode.EQ)&&(size1a==size2))||
39 (neg2&&(op2==Opcode.EQ)&&(size1a!=size2))||
40 (!neg2&&(op2==Opcode.NE)&&(size1a!=size2))||
41 (neg2&&(op2==Opcode.NE)&&(size1a==size2))||
42 (!neg2&&(op2==Opcode.GE))||
43 (!neg2&&(op2==Opcode.GT))||
44 (neg2&&(op2==Opcode.LE))||
45 (neg2&&(op2==Opcode.LT))||
46 (neg2&&(op2==Opcode.GE)&&(size1a<size2))||
47 (neg2&&(op2==Opcode.GT)&&(size1a<=size2))||
48 (!neg2&&(op2==Opcode.LE)&&(size1a<=size2))||
49 (!neg2&&(op2==Opcode.LT)&&(size1a<size2)))
53 /* This if handles all the c comparisons in the paper */
54 if (ar.getDescriptor()==dp.getPredicate().getDescriptor()&&
55 (ar.getType()==AbstractRepair.REMOVEFROMSET||ar.getType()==AbstractRepair.REMOVEFROMRELATION)&&
56 (ar.getPredicate().getPredicate() instanceof ExprPredicate)&&
57 (dp.getPredicate() instanceof ExprPredicate)&&
58 (dp.getPredicate().inverted()==ar.getPredicate().getPredicate().inverted())&&
59 (((ExprPredicate)dp.getPredicate()).getType()==ExprPredicate.SIZE)) {
60 boolean neg1=ar.getPredicate().isNegated();
61 Opcode op1=((ExprPredicate)ar.getPredicate().getPredicate()).getOp();
62 int size1=((ExprPredicate)ar.getPredicate().getPredicate()).leftsize();
63 boolean neg2=dp.isNegated();
64 Opcode op2=((ExprPredicate)dp.getPredicate()).getOp();
65 int size2=((ExprPredicate)dp.getPredicate()).leftsize();
66 if ((neg1&&((op1==Opcode.EQ)||(op1==Opcode.LT)||op1==Opcode.LE)||(op1==Opcode.NE))||
67 (!neg1&&((op1==Opcode.EQ)||(op1==Opcode.GT)||op1==Opcode.GE)||(op1==Opcode.NE))) {
70 if((op1==Opcode.EQ)||(op1==Opcode.GE))
72 if((op1==Opcode.GT)||(op1==Opcode.NE))
76 if((op1==Opcode.EQ)||(op1==Opcode.LE))
78 if((op1==Opcode.LT)||(op1==Opcode.NE))
81 if ((!neg2&&(op2==Opcode.EQ)&&(size1a==size2))||
82 (neg2&&(op2==Opcode.EQ)&&(size1a!=size2))||
83 (!neg2&&(op2==Opcode.NE)&&(size1a!=size2))||
84 (neg2&&(op2==Opcode.NE)&&(size1a==size2))||
85 (neg2&&(op2==Opcode.GE))||
86 (neg2&&(op2==Opcode.GT))||
87 (!neg2&&(op2==Opcode.LE))||
88 (!neg2&&(op2==Opcode.LT))||
89 (!neg2&&(op2==Opcode.GE)&&(size1a>=size2))||
90 (!neg2&&(op2==Opcode.GT)&&(size1a>size2))||
91 (neg2&&(op2==Opcode.LE)&&(size1a>size2))||
92 (neg2&&(op2==Opcode.LT)&&(size1a>=size2)))