theorem carrier.add_mem (q : Spec.T A⁰_ f) {a b : A} (ha : a ∈ carrier f_deg q)
    (hb : b ∈ carrier f_deg q) : a + b ∈ carrier f_deg q := by
  refine' fun i => (q.2.mem_or_mem _).elim id id
  change (Quotient.mk'' ⟨_, _, _, _⟩ : A⁰_ f) ∈ q.1; dsimp only [Subtype.coe_mk]
  

Proof state:
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
q : ↑↑(Spec A⁰_ f).toSheafedSpace.toPresheafedSpace
a b : A
ha : a ∈ carrier f_deg q
hb : b ∈ carrier f_deg q
i : ℕ
⊢ Quotient.mk''
      { deg := m * i + m * i,
        num :=
          { val := (proj 𝒜 i) (a + b) ^ m * (proj 𝒜 i) (a + b) ^ m,
            property :=
              (_ :
                ↑{ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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 *
                    ↑{ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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 ∈
                  𝒜
                    ({ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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)) }) }.deg +
                      { deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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)) }) }.deg)) },
        den :=
          { val := f ^ i * f ^ i,
            property :=
              (_ :
                ↑{ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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 *
                    ↑{ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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 ∈
                  𝒜
                    ({ deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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)) }) }.deg +
                      { deg := m * i,
                          num :=
                            { val := (proj 𝒜 i) (a + b) ^ m,
                              property :=
                                (_ :
                                  ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                          (a + b)) ^
                                      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)) }) }.deg)) },
        den_mem :=
          (_ :
            ↑{ deg := m * i,
                      num :=
                        { val := (proj 𝒜 i) (a + b) ^ m,
                          property :=
                            (_ :
                              ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                      (a + b)) ^
                                  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 *
                ↑{ deg := m * i,
                      num :=
                        { val := (proj 𝒜 i) (a + b) ^ m,
                          property :=
                            (_ :
                              ↑((LinearMap.comp (DFinsupp.lapply i) (AlgHom.toLinearMap ↑(decomposeAlgEquiv 𝒜)))
                                      (a + b)) ^
                                  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) } ∈
    q.asIdeal

Next tactic:
simp_rw [← pow_add, map_add, add_pow, mul_comm, ← nsmul_eq_mul]