(** 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. *)

Lemma distributive_fun: forall A (JOIN: Join A) (key: Type),
sa_distributive A -> @sa_distributive (key -> A) (Join_fun key A JOIN).