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] _ _.

(* The function from [b] to [(e, b')] *)
Lemma join_hom_prodB
: forall e: A', join e e e -> join_hom (fun b: B => (e, g b)).