pub fn antichain_meet<T: Lattice+Clone>(one: &[T], other: &[T]) -> Antichain<T> {
    let mut upper = Antichain::new();
    for time1 in one {
        upper.insert(time1.clone());
    }
    for time2 in other {
        upper.insert(time2.clone());
    }
    upper
}
Returns the "greatest" minimal antichain "less 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_meet;
# fn main() {

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