Theorem: Ideal.quotientEquiv_apply
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

Proof steps:
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ I ≤ comap (↑f) J
state_after: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ I ≤ comap (↑f) (map (↑f) I)
tactic: rw [hIJ]
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ I ≤ comap (↑f) (map (↑f) I)
state_after: no goals
tactic: exact le_comap_map
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ J ≤ comap (↑f.symm) I
state_after: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ map (↑f) I ≤ comap (↑f.symm) I
tactic: rw [hIJ]
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ map (↑f) I ≤ comap (↑f.symm) I
state_after: no goals
tactic: exact le_of_eq (map_comap_of_equiv I f)
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ LeftInverse (⇑(quotientMap I ↑f.symm ⋯)) (↑↑__src✝).toFun
state_after: case mk
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
x✝ : R ⧸ I
r : R
⊢ (quotientMap I ↑f.symm ⋯) ((↑↑__src✝).toFun (Quot.mk Setoid.r r)) = Quot.mk Setoid.r r
tactic: rintro ⟨r⟩
state_before: case mk
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
x✝ : R ⧸ I
r : R
⊢ (quotientMap I ↑f.symm ⋯) ((↑↑__src✝).toFun (Quot.mk Setoid.r r)) = Quot.mk Setoid.r r
state_after: no goals
tactic: simp only [Submodule.Quotient.quot_mk_eq_mk, Quotient.mk_eq_mk, RingHom.toFun_eq_coe,
        quotientMap_mk, RingEquiv.coe_toRingHom, RingEquiv.symm_apply_apply]
state_before: R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
⊢ Function.RightInverse (⇑(quotientMap I ↑f.symm ⋯)) (↑↑__src✝).toFun
state_after: case mk
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
x✝ : S ⧸ J
s : S
⊢ (↑↑__src✝).toFun ((quotientMap I ↑f.symm ⋯) (Quot.mk Setoid.r s)) = Quot.mk Setoid.r s
tactic: rintro ⟨s⟩
state_before: case mk
R : Type u
S✝ : Type v
F : Type w
inst✝⁷ : CommRing R
inst✝⁶ : Semiring S✝
R₁ : Type u_1
R₂ : Type u_2
A : Type u_3
B : Type u_4
inst✝⁵ : CommSemiring R₁
inst✝⁴ : CommSemiring R₂
inst✝³ : CommRing A
inst✝² : Algebra R₁ A
inst✝¹ : Algebra R₂ A
S : Type v
inst✝ : CommRing S
I : Ideal R
J : Ideal S
f : R ≃+* S
hIJ : J = map (↑f) I
x✝ : S ⧸ J
s : S
⊢ (↑↑__src✝).toFun ((quotientMap I ↑f.symm ⋯) (Quot.mk Setoid.r s)) = Quot.mk Setoid.r s
state_after: no goals
tactic: simp only [Submodule.Quotient.quot_mk_eq_mk, Quotient.mk_eq_mk, RingHom.toFun_eq_coe,
        quotientMap_mk, RingEquiv.coe_toRingHom, RingEquiv.apply_symm_apply]