Section ProdPCM.
Variables (U V : pcm).
Local Notation tp := (U * V)%type.
Definition pvalid := [fun x : tp => valid x.1 && valid x.2].
Definition pjoin := [fun x1 x2 : tp => (x1.1 \+ x2.1, x1.2 \+ x2.2)].
Definition punit : tp := (Unit, Unit).

Lemma joinA x y z : pjoin x (pjoin y z) = pjoin (pjoin x y) z.