4 public class DNFConstraint {
7 public DNFConstraint(Predicate p) {
8 conjunctions=new Vector();
9 conjunctions.add(new Conjunction(new DNFPredicate(false,p)));
12 public DNFConstraint(DNFPredicate dp) {
13 conjunctions=new Vector();
14 conjunctions.add(new Conjunction(dp));
17 public DNFConstraint(Conjunction conj) {
18 conjunctions=new Vector();
19 conjunctions.add(conj);
22 public DNFConstraint(Vector conj) {
27 conjunctions=new Vector();
31 return conjunctions.size();
34 Conjunction get(int i) {
35 return (Conjunction)conjunctions.get(i);
38 void add(Conjunction c) {
42 public DNFConstraint copy() {
43 Vector vector=new Vector();
44 for (int i=0;i<size();i++) {
45 vector.add(get(i).copy());
47 return new DNFConstraint(vector);
50 public DNFConstraint and(DNFConstraint c) {
51 DNFConstraint newdnf=new DNFConstraint();
52 for(int i=0;i<size();i++) {
53 for(int j=0;j<c.size();j++) {
54 newdnf.add(get(i).append(c.get(j))); //Cross product
60 public DNFConstraint or(DNFConstraint c) {
61 DNFConstraint copy=copy();
62 for(int i=0;i<c.size();i++) {
63 copy.add(c.get(i).copy()); //Add in other conjunctions
68 public DNFConstraint not() {
69 DNFConstraint copy=copy();
70 DNFConstraint notconst=null;
71 for (int i=0;i<size();i++) {
72 Conjunction conj=copy.get(i);
73 DNFConstraint newconst=null;
74 for (int j=0;j<conj.size();j++) {
75 DNFPredicate dp=conj.get(j);
78 newconst=new DNFConstraint(dp);
80 newconst=newconst.or(new DNFConstraint(dp));
85 notconst=notconst.and(newconst);