public class BiImplication implements Predicate {
 private Predicate p, q;
 
 public BiImplication(Predicate p, Predicate q) {
   this.p = p;
   this.q = q;
 }
 
 public boolean of(Object x) {
   return (!p.of(x) || q.of(x)) && (!q.of(x) || p.of(x));
 }
}
