Theorem: Ideal.mul_homogeneous_element_mem_of_mem
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [← DirectSum.sum_support_decompose 𝒜 r, Finset.sum_mul, map_sum]
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₁ : Homogeneous 𝒜 x
hx₂ : x ∈ I
j : ι
⊢ ↑(GradedRing.proj 𝒜 j) (r * x) ∈ I

tactic: apply Ideal.sum_mem
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₁ : Homogeneous 𝒜 x
hx₂ : x ∈ I
j : ι
⊢ ∑ x_1 in Dfinsupp.support (↑(decompose 𝒜) r), ↑(GradedRing.proj 𝒜 j) (↑(↑(↑(decompose 𝒜) r) x_1) * x) ∈ I

tactic: intro k _
state_before: case a
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₁ : Homogeneous 𝒜 x
hx₂ : x ∈ I
j : ι
⊢ ∀ (c : ι), c ∈ Dfinsupp.support (↑(decompose 𝒜) r) → ↑(GradedRing.proj 𝒜 j) (↑(↑(↑(decompose 𝒜) r) c) * x) ∈ I

tactic: obtain ⟨i, hi⟩ := hx₁
state_before: case a
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₁ : Homogeneous 𝒜 x
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
⊢ ↑(GradedRing.proj 𝒜 j) (↑(↑(↑(decompose 𝒜) r) k) * x) ∈ I

tactic: have mem₁ : (DirectSum.decompose 𝒜 r k : A) * x ∈ 𝒜 (k + i) :=
  GradedMul.mul_mem (SetLike.coe_mem _) hi
state_before: case a.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
i : ι
hi : x ∈ 𝒜 i
⊢ ↑(GradedRing.proj 𝒜 j) (↑(↑(↑(decompose 𝒜) r) k) * x) ∈ I

tactic: erw [GradedRing.proj_apply, DirectSum.decompose_of_mem 𝒜 mem₁, coe_of_apply]
state_before: case a.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
i : ι
hi : x ∈ 𝒜 i
mem₁ : ↑(↑(↑(decompose 𝒜) r) k) * x ∈ 𝒜 (k + i)
⊢ ↑(GradedRing.proj 𝒜 j) (↑(↑(↑(decompose 𝒜) r) k) * x) ∈ I

tactic: split_ifs
state_before: case a.intro
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
i : ι
hi : x ∈ 𝒜 i
mem₁ : ↑(↑(↑(decompose 𝒜) r) k) * x ∈ 𝒜 (k + i)
⊢ ↑(if k + i = j then { val := ↑(↑(↑(decompose 𝒜) r) k) * x, property := mem₁ } else 0) ∈ I

tactic: exact I.mul_mem_left _ hx₂
state_before: case a.intro.inl
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
i : ι
hi : x ∈ 𝒜 i
mem₁ : ↑(↑(↑(decompose 𝒜) r) k) * x ∈ 𝒜 (k + i)
h✝ : k + i = j
⊢ ↑{ val := ↑(↑(↑(decompose 𝒜) r) k) * x, property := mem₁ } ∈ I

tactic: exact I.zero_mem
state_before: case a.intro.inr
ι : Type u_2
σ : Type u_3
R : Type ?u.63833
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : SetLike σ A
inst✝³ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝² : DecidableEq ι
inst✝¹ : AddMonoid ι
inst✝ : GradedRing 𝒜
I✝ I : Ideal A
r x : A
hx₂ : x ∈ I
j k : ι
a✝ : k ∈ Dfinsupp.support (↑(decompose 𝒜) r)
i : ι
hi : x ∈ 𝒜 i
mem₁ : ↑(↑(↑(decompose 𝒜) r) k) * x ∈ 𝒜 (k + i)
h✝ : ¬k + i = j
⊢ ↑0 ∈ I