∀ {ι : Type u_1} {M : ι → Type u_2} [inst : (i : ι) → Monoid (M i)],
  Function.RightInverse (fun f => { val := fun x => ↑(f x), inv := fun x => (f x).inv, val_inv := ⋯, inv_val := ⋯ })
    fun f i => { val := ↑f i, inv := f.inv i, val_inv := ⋯, inv_val := ⋯ }