Instance Cross_prod : forall A B saA saB,
@Cross_alg A saA ->
@Cross_alg B saB ->
@Cross_alg (A * B) (Join_prod _ saA _ saB).

Lemma constructive_join_sub_smash {A} {JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}{CA: Disj_alg A}:
(forall x:A, {identity x}+{~identity x}) ->
forall a c : lifted JA,
constructive_join_sub (proj1_sig a) (proj1_sig c) ->
@constructive_join_sub (option (lifted JA)) _ (Some a) (Some c).