intros d; elim d; simpl in |- *; auto.
intros n H' a b.
rewrite (H' (pmon2 (S n) a) (pmon2 (S n) b)); auto.
rewrite (plus_comm (pmon1 (S n) a) (pmon1 (S n) b)); auto.
Qed.

(* Specifications: *)
Theorem mult_mon_assoc :
forall (d : nat) (a b c : mon d),
mult_mon d a (mult_mon d b c) = mult_mon d (mult_mon d a b) c.