(** NOTICE ABOUT REDUNDANT LEMMAS: Since sa_distribute <-> cross_split, many of the proofs below are redundant. This was part of an experiment to see whether, in general, sa_distributive is simpler to prove than cross_split.  Short answer:  not really. *)

(* Specifications: *)
Lemma distributive_equiv: forall A, @sa_distributive  _ (@Join_equiv A).
Lemma cross_split_equiv : forall A,  @Cross_alg _ (@Join_equiv A).
Lemma distributive_fun: forall A (JOIN: Join A) (key: Type),
sa_distributive A -> @sa_distributive (key -> A) (Join_fun key A JOIN).