{ι : Type u_1} →
  {M : Type u_3} →
    {σ : Type u_4} →
      {inst : DecidableEq ι} →
        {inst_1 : AddCommMonoid M} →
          {inst_2 : SetLike σ M} →
            {inst_3 : AddSubmonoidClass σ M} →
              {ℳ : ι → σ} →
                {P : Sort u} →
                  {decompose' : M → DirectSum ι fun i => ↥(ℳ i)} →
                    {left_inv : Function.LeftInverse (⇑(DirectSum.coeAddMonoidHom ℳ)) decompose'} →
                      {right_inv : Function.RightInverse (⇑(DirectSum.coeAddMonoidHom ℳ)) decompose'} →
                        {decompose'' : M → DirectSum ι fun i => ↥(ℳ i)} →
                          {left_inv' : Function.LeftInverse (⇑(DirectSum.coeAddMonoidHom ℳ)) decompose''} →
                            {right_inv' : Function.RightInverse (⇑(DirectSum.coeAddMonoidHom ℳ)) decompose''} →
                              { decompose' := decompose', left_inv := left_inv, right_inv := right_inv } =
                                  { decompose' := decompose'', left_inv := left_inv', right_inv := right_inv' } →
                                (decompose' ≍ decompose'' → P) → P