Theorem: RingHom.finitePresentation_ofLocalizationSpanTarget_aux
File: Mathlib/RingTheory/RingHom/FinitePresentation.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
⊢ Algebra.FinitePresentation R S
state_after: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
⊢ (ker f.toRingHom).FG
tactic: apply Algebra.FinitePresentation.of_surjective hf
state_before: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
⊢ (ker f.toRingHom).FG
state_after: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
⊢ ∀ (g : ↑↑t), (ker (Localization.awayMap f.toRingHom ↑g)).FG
tactic: apply ker_fg_of_localizationSpan t ht
state_before: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
⊢ ∀ (g : ↑↑t), (ker (Localization.awayMap f.toRingHom ↑g)).FG
state_after: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
tactic: intro g
state_before: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
state_after: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
tactic: let f' : Localization.Away g.val →ₐ[R] Localization.Away (f g) :=
    Localization.awayMapₐ f g.val
state_before: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
state_after: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
this : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away ↑g)
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
tactic: have (g : t) : Algebra.FinitePresentation R (Localization.Away g.val) :=
    haveI : Algebra.FinitePresentation A (Localization.Away g.val) :=
      IsLocalization.Away.finitePresentation g.val
    Algebra.FinitePresentation.trans R A (Localization.Away g.val)
state_before: case hker
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
this : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away ↑g)
⊢ (ker (Localization.awayMap f.toRingHom ↑g)).FG
state_after: case hker.hf
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
this : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away ↑g)
⊢ Function.Surjective ⇑f'
tactic: apply Algebra.FinitePresentation.ker_fG_of_surjective f'
state_before: case hker.hf
R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
inst✝³ : CommRing A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra.FinitePresentation R A
f : A →ₐ[R] S
hf : Function.Surjective ⇑f
t : Finset A
ht : Ideal.span ↑t = ⊤
H : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away (f ↑g))
g : ↑↑t
f' : Localization.Away ↑g →ₐ[R] Localization.Away (f ↑g) := Localization.awayMapₐ f ↑g
this : ∀ (g : { x // x ∈ t }), Algebra.FinitePresentation R (Localization.Away ↑g)
⊢ Function.Surjective ⇑f'
state_after: no goals
tactic: exact IsLocalization.Away.mapₐ_surjective_of_surjective _ hf