{R : Type u_1} →
  {S : Type u_2} →
    (f : R → S) →
      Function.Surjective f →
        [inst : Add S] →
          [inst_1 : Mul S] →
            [inst_2 : Zero S] →
              [inst_3 : One S] →
                [inst_4 : SMul ℕ S] →
                  [inst_5 : Pow S ℕ] →
                    [inst_6 : NatCast S] →
                      [inst_7 : CommSemiring R] →
                        f 0 = 0 →
                          f 1 = 1 →
                            (∀ (x y : R), f (x + y) = f x + f y) →
                              (∀ (x y : R), f (x * y) = f x * f y) →
                                (∀ (n : ℕ) (x : R), f (n • x) = n • f x) →
                                  (∀ (x : R) (n : ℕ), f (x ^ n) = f x ^ n) → (∀ (n : ℕ), f ↑n = ↑n) → CommSemiring S