code: function(or1, or2) {
  			var union1 = set.union(or1.values[0], or2.values[0]);
  			var union2 = set.union(or1.values[1], or2.values[1]);
  
  			if (!isAndOrOr(union1) || !isAndOrOr(union2)) {
  				return set.union(union1, union2);
  			}
  			union1 = set.union(or1.values[0], or2.values[1]);
  			union2 = set.union(or1.values[1], or2.values[0]);
  
  			if (!isAndOrOr(union1) || !isAndOrOr(union2)) {
  				return set.union(union1, union2);
  			} else {
  				return new is.Or([or1, or2]);
  			}
  		}
docs: (a ∪ b) ∪ (c ∪ d)