Section join_hom2.
Variables (A B C: Type)
(JA: Join A)
(JB: Join B)
(JC: Join C)
(f: A -> B -> C).
Definition join_hom2 := forall (a1 a2 a3: A)(b1 b2 b3: B),
join a1 a2 a3
-> join b1 b2 b3
-> join (f a1 b1) (f a2 b2) (f a3 b3).
(* Two-argument join homomorphisms with a dummy argument *)
Definition join_hom2' := forall (a1 a2 a3: A)(b1 b2 b3: B),
join a1 a2 a3
-> join (f a1 b1) (f a2 b2) (f a3 b3).
End join_hom2.
Arguments join_hom2 [A B C JA JB JC] _.
Arguments join_hom2' [A B C JA] _ _.

Lemma join_hom_prodA'
: forall e: B, join e e e -> join_hom (fun a :A'  => (a, e)).