Theorem: Submodule.iSup_torsionBySet_ideal_eq_torsionBySet_iInf
File: Mathlib/Algebra/Module/Torsion.lean

tactic: cases' S.eq_empty_or_nonempty with h h
state_before: R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
⊢ (⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)) = torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: apply le_antisymm
state_before: case inr
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
⊢ (⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)) = torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: simp only [h]
state_before: case inl
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : S = ∅
⊢ (⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)) = torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: convert iSup_emptyset (f := fun i => torsionBySet R M (p i)) <;> simp
state_before: case inl
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : S = ∅
⊢ (⨆ (i : ι) (_ : i ∈ ∅), torsionBySet R M ↑(p i)) = torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ ∅), p i)

tactic: apply iSup_le _
state_before: case inr.a
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
⊢ (⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)) ≤ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: intro i
state_before: R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
⊢ ∀ (i : ι), (⨆ (_ : i ∈ S), torsionBySet R M ↑(p i)) ≤ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: apply iSup_le _
state_before: R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
i : ι
⊢ (⨆ (_ : i ∈ S), torsionBySet R M ↑(p i)) ≤ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: intro is
state_before: R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
i : ι
⊢ i ∈ S → torsionBySet R M ↑(p i) ≤ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: apply torsionBySet_le_torsionBySet_of_subset
state_before: R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
i : ι
is : i ∈ S
⊢ torsionBySet R M ↑(p i) ≤ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)

tactic: exact (iInf_le (fun i => ⨅ _ : i ∈ S, p i) i).trans (iInf_le _ is)
state_before: case st
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
i : ι
is : i ∈ S
⊢ ↑(⨅ (i : ι) (_ : i ∈ S), p i) ⊆ ↑(p i)

tactic: intro x hx
state_before: case inr.a
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
⊢ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i) ≤ ⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)

tactic: rw [mem_iSup_finset_iff_exists_sum]
state_before: case inr.a
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
⊢ x ∈ ⨆ (i : ι) (_ : i ∈ S), torsionBySet R M ↑(p i)

tactic: obtain ⟨μ, hμ⟩ :=
  (mem_iSup_finset_iff_exists_sum _ _).mp
    ((Ideal.eq_top_iff_one _).mp <| (Ideal.iSup_iInf_eq_top_iff_pairwise h _).mpr hp)
state_before: case inr.a
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
⊢ ∃ μ, ∑ i in S, ↑(μ i) = x

tactic: refine' ⟨fun i => ⟨(μ i : R) • x, _⟩, _⟩
state_before: case inr.a.intro
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
⊢ ∃ μ, ∑ i in S, ↑(μ i) = x

tactic: rw [mem_torsionBySet_iff] at hx⊢
state_before: case inr.a.intro.refine'_1
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
⊢ ↑(μ i) • x ∈ torsionBySet R M ↑(p i)

tactic: rintro ⟨a, ha⟩
state_before: case inr.a.intro.refine'_1
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
⊢ ∀ (a : ↑↑(p i)), ↑a • ↑(μ i) • x = 0

tactic: rw [smul_smul]
state_before: case inr.a.intro.refine'_1.mk
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
⊢ ↑{ val := a, property := ha } • ↑(μ i) • x = 0

tactic: suffices : a * μ i ∈ ⨅ i ∈ S, p i
state_before: case inr.a.intro.refine'_1.mk
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
⊢ (↑{ val := a, property := ha } * ↑(μ i)) • x = 0

tactic: exact hx ⟨_, this⟩
state_before: case inr.a.intro.refine'_1.mk
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
this : a * ↑(μ i) ∈ ⨅ (i : ι) (_ : i ∈ S), p i
⊢ (↑{ val := a, property := ha } * ↑(μ i)) • x = 0

case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
⊢ a * ↑(μ i) ∈ ⨅ (i : ι) (_ : i ∈ S), p i

tactic: rw [mem_iInf]
state_before: case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
⊢ a * ↑(μ i) ∈ ⨅ (i : ι) (_ : i ∈ S), p i

tactic: intro j
state_before: case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
⊢ ∀ (i_1 : ι), a * ↑(μ i) ∈ ⨅ (_ : i_1 ∈ S), p i_1

tactic: rw [mem_iInf]
state_before: case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
⊢ a * ↑(μ i) ∈ ⨅ (_ : j ∈ S), p j

tactic: intro hj
state_before: case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
⊢ j ∈ S → a * ↑(μ i) ∈ p j

tactic: by_cases ij : j = i
state_before: case this
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
⊢ a * ↑(μ i) ∈ p j

tactic: rw [ij]
state_before: case pos
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
ij : j = i
⊢ a * ↑(μ i) ∈ p j

tactic: exact Ideal.mul_mem_right _ _ ha
state_before: case pos
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
ij : j = i
⊢ a * ↑(μ i) ∈ p i

tactic: have := coe_mem (μ i)
state_before: case neg
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
ij : ¬j = i
⊢ a * ↑(μ i) ∈ p j

tactic: simp only [mem_iInf] at this
state_before: case neg
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
ij : ¬j = i
this : ↑(μ i) ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j
⊢ a * ↑(μ i) ∈ p j

tactic: exact Ideal.mul_mem_left _ _ (this j hj ij)
state_before: case neg
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a✝ : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : ∀ (a : ↑↑(⨅ (i : ι) (_ : i ∈ S), p i)), ↑a • x = 0
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
i : ι
a : R
ha : a ∈ ↑(p i)
j : ι
hj : j ∈ S
ij : ¬j = i
this : ∀ (i_1 : ι), i_1 ∈ S → i_1 ≠ i → ↑(μ i) ∈ p i_1
⊢ a * ↑(μ i) ∈ p j

tactic: simp_rw [coe_mk]
state_before: case inr.a.intro.refine'_2
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
⊢ ∑ i in S, ↑((fun i => { val := ↑(μ i) • x, property := (_ : ↑(μ i) • x ∈ torsionBySet R M ↑(p i)) }) i) = x

tactic: rw [← Finset.sum_smul, hμ, one_smul]
state_before: case inr.a.intro.refine'_2
R : Type u_3
M : Type u_2
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
s : Set R
a : R
ι : Type u_1
p : ι → Ideal R
S : Finset ι
hp : Set.Pairwise ↑S fun i j => p i ⊔ p j = ⊤
inst✝ : DecidableEq ι
h : Finset.Nonempty S
x : M
hx : x ∈ torsionBySet R M ↑(⨅ (i : ι) (_ : i ∈ S), p i)
μ : (i : ι) → { x // x ∈ ⨅ (j : ι) (_ : j ∈ S) (_ : j ≠ i), p j }
hμ : ∑ i in S, ↑(μ i) = 1
⊢ ∑ x_1 in S, ↑(μ x_1) • x = x