{ι : Type u_1} →
  {M : ι → Type u_2} →
    [inst : (i : ι) → Monoid (M i)] →
      {motive : Monoid.CoprodI.Word M → Sort u} →
        (t : Monoid.CoprodI.Word M) →
          ((toList : List ((i : ι) × M i)) →
              (ne_one : ∀ l ∈ toList, l.snd ≠ 1) →
                (chain_ne : List.IsChain (fun l l' => l.fst ≠ l'.fst) toList) →
                  motive { toList := toList, ne_one := ne_one, chain_ne := chain_ne }) →
            motive t