Theorem: Ideal.exists_sub_one_mem_and_mem
File: Mathlib/RingTheory/Ideal/Quotient.lean

tactic: intro j hjs hji
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
⊢ ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j

tactic: specialize hf i his j hjs hji.symm
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ ∃ r x, r ∈ f j

tactic: rw [eq_top_iff_one, Submodule.mem_sup] at hf
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s
j : ι
hjs : j ∈ s
hji : j ≠ i
hf : f i ⊔ f j = ⊤
⊢ ∃ r x, r ∈ f j

tactic: rcases hf with ⟨r, hri, s, hsj, hrs⟩
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s
j : ι
hjs : j ∈ s
hji : j ≠ i
hf : ∃ y, y ∈ f i ∧ ∃ z, z ∈ f j ∧ y + z = 1
⊢ ∃ r x, r ∈ f j

tactic: refine' ⟨1 - r, _, _⟩
state_before: case intro.intro.intro.intro
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s✝ : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s✝
j : ι
hjs : j ∈ s✝
hji : j ≠ i
r : R
hri : r ∈ f i
s : R
hsj : s ∈ f j
hrs : r + s = 1
⊢ ∃ r x, r ∈ f j

tactic: rw [sub_right_comm, sub_self, zero_sub]
state_before: case intro.intro.intro.intro.refine'_1
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s✝ : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s✝
j : ι
hjs : j ∈ s✝
hji : j ≠ i
r : R
hri : r ∈ f i
s : R
hsj : s ∈ f j
hrs : r + s = 1
⊢ 1 - r - 1 ∈ f i

tactic: exact (f i).neg_mem hri
state_before: case intro.intro.intro.intro.refine'_1
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s✝ : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s✝
j : ι
hjs : j ∈ s✝
hji : j ≠ i
r : R
hri : r ∈ f i
s : R
hsj : s ∈ f j
hrs : r + s = 1
⊢ -r ∈ f i

tactic: rw [← hrs, add_sub_cancel']
state_before: case intro.intro.intro.intro.refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s✝ : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s✝
j : ι
hjs : j ∈ s✝
hji : j ≠ i
r : R
hri : r ∈ f i
s : R
hsj : s ∈ f j
hrs : r + s = 1
⊢ 1 - r ∈ f j

tactic: exact hsj
state_before: case intro.intro.intro.intro.refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s✝ : Finset ι
f : ι → Ideal R
i : ι
his : i ∈ s✝
j : ι
hjs : j ∈ s✝
hji : j ≠ i
r : R
hri : r ∈ f i
s : R
hsj : s ∈ f j
hrs : r + s = 1
⊢ s ∈ f j

tactic: rcases this with ⟨g, hgi, hgj⟩
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this✝ : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
this : ∃ g, (∀ (j : ι), g j - 1 ∈ f i) ∧ ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∃ r, r - 1 ∈ f i ∧ ∀ (j : ι), j ∈ s → j ≠ i → r ∈ f j

tactic: use ∏ x in s.erase i, g x
state_before: case intro.intro
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∃ r, r - 1 ∈ f i ∧ ∀ (j : ι), j ∈ s → j ≠ i → r ∈ f j

tactic: constructor
state_before: case intro.intro
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∏ x in Finset.erase s i, g x - 1 ∈ f i ∧ ∀ (j : ι), j ∈ s → j ≠ i → ∏ x in Finset.erase s i, g x ∈ f j

tactic: choose g hg1 hg2 using this
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
⊢ ∃ g, (∀ (j : ι), g j - 1 ∈ f i) ∧ ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j

tactic: refine' ⟨fun j => if H : j ∈ s ∧ j ≠ i then g j H.1 H.2 else 1, fun j => _, fun j => _⟩
state_before: R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
⊢ ∃ g, (∀ (j : ι), g j - 1 ∈ f i) ∧ ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j

tactic: dsimp only
state_before: case refine'_1
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
⊢ (fun j => if H : j ∈ s ∧ j ≠ i then g j (_ : j ∈ s) (_ : j ≠ i) else 1) j - 1 ∈ f i

tactic: split_ifs with h
state_before: case refine'_1
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
⊢ (if H : j ∈ s ∧ j ≠ i then g j (_ : j ∈ s) (_ : j ≠ i) else 1) - 1 ∈ f i

tactic: rw [sub_self]
state_before: case refine'_1.inr
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
h : ¬(j ∈ s ∧ j ≠ i)
⊢ 1 - 1 ∈ f i

tactic: exact (f i).zero_mem
state_before: case refine'_1.inr
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
h : ¬(j ∈ s ∧ j ≠ i)
⊢ 0 ∈ f i

tactic: apply hg1
state_before: case refine'_1.inl
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
h : j ∈ s ∧ j ≠ i
⊢ g j (_ : j ∈ s) (_ : j ≠ i) - 1 ∈ f i

tactic: intro hjs hji
state_before: case refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
⊢ j ∈ s → j ≠ i → (fun j => if H : j ∈ s ∧ j ≠ i then g j (_ : j ∈ s) (_ : j ≠ i) else 1) j ∈ f j

tactic: dsimp only
state_before: case refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ (fun j => if H : j ∈ s ∧ j ≠ i then g j (_ : j ∈ s) (_ : j ≠ i) else 1) j ∈ f j

tactic: rw [dif_pos]
state_before: case refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ (if H : j ∈ s ∧ j ≠ i then g j (_ : j ∈ s) (_ : j ≠ i) else 1) ∈ f j

tactic: exact ⟨hjs, hji⟩
state_before: case refine'_2.hc
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ j ∈ s ∧ j ≠ i

tactic: apply hg2
state_before: case refine'_2
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
g : (j : ι) → j ∈ s → j ≠ i → R
hg1 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 - 1 ∈ f i
hg2 : ∀ (j : ι) (a : j ∈ s) (a_1 : j ≠ i), g j a a_1 ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ g j (_ : j ∈ s) (_ : j ≠ i) ∈ f j

tactic: rw [← Ideal.Quotient.mk_eq_mk_iff_sub_mem, map_one, map_prod]
state_before: case intro.intro.left
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∏ x in Finset.erase s i, g x - 1 ∈ f i

tactic: apply Finset.prod_eq_one
state_before: case intro.intro.left
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∏ x in Finset.erase s i, ↑(Quotient.mk (f i)) (g x) = 1

tactic: intros
state_before: case intro.intro.left.h
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∀ (x : ι), x ∈ Finset.erase s i → ↑(Quotient.mk (f i)) (g x) = 1

tactic: rw [← RingHom.map_one, Ideal.Quotient.mk_eq_mk_iff_sub_mem]
state_before: case intro.intro.left.h
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
x✝ : ι
a✝ : x✝ ∈ Finset.erase s i
⊢ ↑(Quotient.mk (f i)) (g x✝) = 1

tactic: apply hgi
state_before: case intro.intro.left.h
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
x✝ : ι
a✝ : x✝ ∈ Finset.erase s i
⊢ g x✝ - 1 ∈ f i

tactic: intro j hjs hji
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
⊢ ∀ (j : ι), j ∈ s → j ≠ i → ∏ x in Finset.erase s i, g x ∈ f j

tactic: rw [← Quotient.eq_zero_iff_mem, map_prod]
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ ∏ x in Finset.erase s i, g x ∈ f j

tactic: letI : CommMonoidWithZero (R ⧸ f j) := CommSemiring.toCommMonoidWithZero
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
⊢ ∏ x in Finset.erase s i, ↑(Quotient.mk (f j)) (g x) = 0

tactic: refine' Finset.prod_eq_zero (Finset.mem_erase_of_ne_of_mem hji hjs) _
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this✝ : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
this : CommMonoidWithZero (R ⧸ f j) := CommSemiring.toCommMonoidWithZero
⊢ ∏ x in Finset.erase s i, ↑(Quotient.mk (f j)) (g x) = 0

tactic: rw [Quotient.eq_zero_iff_mem]
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this✝ : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
this : CommMonoidWithZero (R ⧸ f j) := CommSemiring.toCommMonoidWithZero
⊢ ↑(Quotient.mk (f j)) (g j) = 0

tactic: exact hgj j hjs hji
state_before: case intro.intro.right
R : Type u
inst✝ : CommRing R
I : Ideal R
a b : R
S ι : Type v
s : Finset ι
f : ι → Ideal R
hf : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ⊔ f j = ⊤
i : ι
his : i ∈ s
this✝ : ∀ (j : ι), j ∈ s → j ≠ i → ∃ r x, r ∈ f j
g : ι → R
hgi : ∀ (j : ι), g j - 1 ∈ f i
hgj : ∀ (j : ι), j ∈ s → j ≠ i → g j ∈ f j
j : ι
hjs : j ∈ s
hji : j ≠ i
this : CommMonoidWithZero (R ⧸ f j) := CommSemiring.toCommMonoidWithZero
⊢ g j ∈ f j