pub fn antichain_join<T: Lattice>(one: &[T], other: &[T]) -> Antichain<T> {
    let mut upper = Antichain::new();
    antichain_join_into(one, other, &mut upper);
    upper
}
Returns the "smallest" minimal antichain "greater or equal" to both inputs.

This method is primarily meant for cases where one cannot use the methods
of `Antichain`'s `PartialOrder` implementation, such as when one has only
references rather than owned antichains.

# Examples

```
# use timely::PartialOrder;
# use timely::order::Product;
# use differential_dataflow::lattice::Lattice;
# use differential_dataflow::lattice::antichain_join;
# fn main() {

let f1 = &[Product::new(3, 7), Product::new(5, 6)];
let f2 = &[Product::new(4, 6)];
let join = antichain_join(f1, f2);
assert_eq!(&*join.elements(), &[Product::new(4, 7), Product::new(5, 6)]);
# }
```
differential-dataflow/src/lattice.rs