∀ {M : Type u_1} [inst : Monoid M] {ι : Type u_2} [inst_1 : Fintype ι] {N : ι → Type u_3}
  [inst_2 : (i : ι) → Monoid (N i)] (ϕ : (i : ι) → N i →* M)
  (hcomm : Pairwise fun i j => ∀ (x : N i) (y : N j), Commute ((ϕ i) x) ((ϕ j) y)),
  MonoidHom.noncommPiCoprod ϕ hcomm =
    { toFun := fun f => Finset.univ.noncommProd (fun i => (ϕ i) (f i)) ⋯, map_one' := ⋯, map_mul' := ⋯ }