∀ {M : Type u_1} [inst : MulOneClass M] {s : Set M} {motive : (x : M) → x ∈ Submonoid.closure s → Prop},
  (∀ (x : M) (h : x ∈ s), motive x ⋯) →
    motive 1 ⋯ →
      (∀ (x y : M) (hx : x ∈ Submonoid.closure s) (hy : y ∈ Submonoid.closure s),
          motive x hx → motive y hy → motive (x * y) ⋯) →
        ∀ {x : M} (hx : x ∈ Submonoid.closure s), motive x hx