theorem carrier.smul_mem (c x : A) (hx : x ∈ carrier f_deg q) : c • x ∈ carrier f_deg q := by
  revert c
  refine' DirectSum.Decomposition.inductionOn 𝒜 _ _ _
  · rw [zero_smul]; exact carrier.zero_mem f_deg hm _
  · rintro n ⟨a, ha⟩ i
    simp_rw [proj_apply, smul_eq_mul, coe_decompose_mul_of_left_mem 𝒜 i ha]
    -- Porting note: having trouble with Mul instance
    let product : A⁰_ f :=
      Mul.mul (Quotient.mk'' ⟨_, ⟨a ^ m, pow_mem_graded m ha⟩, ⟨_, ?_⟩, ⟨n, rfl⟩⟩ : A⁰_ f)
          (Quotient.mk'' ⟨_, ⟨proj 𝒜 (i - n) x ^ m, by mem_tac⟩, ⟨_, ?_⟩, ⟨i - n, rfl⟩⟩ : A⁰_ f)
    split_ifs with h
    · convert_to product ∈ q.1
      · dsimp
        erw [HomogeneousLocalization.ext_iff_val, HomogeneousLocalization.val_mk'',
          HomogeneousLocalization.mul_val, HomogeneousLocalization.val_mk'',
          HomogeneousLocalization.val_mk'']
        

Proof state:
case h.e'_4.h
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
product : A⁰_ f :=
  Mul.mul
    (Quotient.mk''
      { deg := m • n, num := { val := a ^ m, property := (_ : a ^ m ∈ 𝒜 (m • n)) },
        den := { val := f ^ n, property := ?refine'_2.mk.refine_1 },
        den_mem := (_ : ∃ y, (fun x => f ^ x) y = ↑{ val := f ^ n, property := ?refine'_2.mk.refine_1 }) })
    (Quotient.mk''
      { deg := m • (i - n),
        num := { val := (proj 𝒜 (i - n)) x ^ m, property := (_ : (proj 𝒜 (i - n)) x ^ m ∈ 𝒜 (m • (i - n))) },
        den := { val := f ^ (i - n), property := ?refine'_2.mk.refine_2 },
        den_mem := (_ : ∃ y, (fun x => f ^ x) y = ↑{ val := f ^ (i - n), property := ?refine'_2.mk.refine_2 }) })
h : n ≤ i
e_1✝ : Quotient (Setoid.ker (HomogeneousLocalization.NumDenSameDeg.embedding 𝒜 (Submonoid.powers f))) = A⁰_ f
⊢ Localization.mk
      ↑{ deg := m * i,
            num :=
              { val := (a * ↑(((decompose 𝒜) x) (i - n))) ^ m,
                property := (_ : (a * ↑(((decompose 𝒜) x) (i - n))) ^ m ∈ 𝒜 (m * i)) },
            den := { val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) },
            den_mem := (_ : ∃ y, (fun x => f ^ x) y = ↑{ val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) }) }.num
      {
        val :=
          ↑{ deg := m * i,
                num :=
                  { val := (a * ↑(((decompose 𝒜) x) (i - n))) ^ m,
                    property := (_ : (a * ↑(((decompose 𝒜) x) (i - n))) ^ m ∈ 𝒜 (m * i)) },
                den := { val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) },
                den_mem := (_ : ∃ y, (fun x => f ^ x) y = ↑{ val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) }) }.den,
        property :=
          (_ :
            ↑{ deg := m * i,
                    num :=
                      { val := (a * ↑(((decompose 𝒜) x) (i - n))) ^ m,
                        property := (_ : (a * ↑(((decompose 𝒜) x) (i - n))) ^ m ∈ 𝒜 (m * i)) },
                    den := { val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) },
                    den_mem :=
                      (_ : ∃ y, (fun x => f ^ x) y = ↑{ val := f ^ i, property := (_ : f ^ i ∈ 𝒜 (m * i)) }) }.den ∈
              Submonoid.powers f) } =
    Localization.mk
        ↑{ deg := m * n, num := { val := a ^ m, property := (_ : a ^ m ∈ 𝒜 (m • n)) },
              den := { val := f ^ n, property := ?refine'_2.mk.refine_1 }, den_mem := (_ : ∃ y, f ^ y = f ^ n) }.num
        {
          val :=
            ↑{ deg := m * n, num := { val := a ^ m, property := (_ : a ^ m ∈ 𝒜 (m • n)) },
                  den := { val := f ^ n, property := ?refine'_2.mk.refine_1 },
                  den_mem := (_ : ∃ y, f ^ y = f ^ n) }.den,
          property :=
            (_ :
              ↑{ deg := m * n, num := { val := a ^ m, property := (_ : a ^ m ∈ 𝒜 (m • n)) },
                      den := { val := f ^ n, property := ?refine'_2.mk.refine_1 },
                      den_mem := (_ : ∃ y, f ^ y = f ^ n) }.den ∈
                Submonoid.powers f) } *
      Localization.mk
        ↑{ deg := m * (i - n),
              num :=
                { val := ↑(((decompose 𝒜) x) (i - n)) ^ m,
                  property := (_ : ↑(((decompose 𝒜) x) (i - n)) ^ m ∈ 𝒜 (m • (i - n))) },
              den := { val := f ^ (i - n), property := ?refine'_2.mk.refine_2 },
              den_mem := (_ : ∃ y, f ^ y = f ^ (i - n)) }.num
        {
          val :=
            ↑{ deg := m * (i - n),
                  num :=
                    { val := ↑(((decompose 𝒜) x) (i - n)) ^ m,
                      property := (_ : ↑(((decompose 𝒜) x) (i - n)) ^ m ∈ 𝒜 (m • (i - n))) },
                  den := { val := f ^ (i - n), property := ?refine'_2.mk.refine_2 },
                  den_mem := (_ : ∃ y, f ^ y = f ^ (i - n)) }.den,
          property :=
            (_ :
              ↑{ deg := m * (i - n),
                      num :=
                        { val := ↑(((decompose 𝒜) x) (i - n)) ^ m,
                          property := (_ : ↑(((decompose 𝒜) x) (i - n)) ^ m ∈ 𝒜 (m • (i - n))) },
                      den := { val := f ^ (i - n), property := ?refine'_2.mk.refine_2 },
                      den_mem := (_ : ∃ y, f ^ y = f ^ (i - n)) }.den ∈
                Submonoid.powers f) }
case refine'_2.mk.refine_2
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ (i - n) ∈ 𝒜 (m • (i - n))
case refine'_2.mk.refine_1
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ n ∈ 𝒜 (m • n)
case refine'_2.mk.refine_1
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ n ∈ 𝒜 (m • n)
case refine'_2.mk.refine_2
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ (i - n) ∈ 𝒜 (m • (i - n))
case refine'_2.mk.refine_1
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ n ∈ 𝒜 (m • n)
case refine'_2.mk.refine_2
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ (i - n) ∈ 𝒜 (m • (i - n))
case refine'_2.mk.refine_1
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ n ∈ 𝒜 (m • n)
case refine'_2.mk.refine_2
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ (i - n) ∈ 𝒜 (m • (i - n))
case refine'_2.mk.refine_1
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ n ∈ 𝒜 (m • n)
case refine'_2.mk.refine_2
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
x : A
hx : x ∈ carrier f_deg q
n : ℕ
a : A
ha : a ∈ 𝒜 n
i : ℕ
⊢ f ^ (i - n) ∈ 𝒜 (m • (i - n))

Next tactic:
simp_rw [mul_pow]