{R : Type u} →
  {inst : NonUnitalNonAssocSemiring R} →
    {P : Sort u_1} →
      {toAddSubmonoid : AddSubmonoid R} →
        {mul_mem' :
            ∀ {a b : R}, a ∈ toAddSubmonoid.carrier → b ∈ toAddSubmonoid.carrier → a * b ∈ toAddSubmonoid.carrier} →
          {toAddSubmonoid' : AddSubmonoid R} →
            {mul_mem'' :
                ∀ {a b : R},
                  a ∈ toAddSubmonoid'.carrier → b ∈ toAddSubmonoid'.carrier → a * b ∈ toAddSubmonoid'.carrier} →
              { toAddSubmonoid := toAddSubmonoid, mul_mem' := mul_mem' } =
                  { toAddSubmonoid := toAddSubmonoid', mul_mem' := mul_mem'' } →
                (toAddSubmonoid ≍ toAddSubmonoid' → P) → P