Theorem: Module.Finite.of_isLocalizedModule
File: Mathlib/RingTheory/Localization/Finiteness.lean

tactic: obtain ⟨T, hT⟩ := ‹Module.Finite R M›
state_before: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
⊢ Finite Rₚ Mₚ
state_after: case mk.intro
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ Finite Rₚ Mₚ

tactic: use T.image f
state_before: case mk.intro
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ Finite Rₚ Mₚ
state_after: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ Submodule.span Rₚ ↑(Finset.image (⇑f) T) = ⊤

tactic: rw [eq_top_iff]
state_before: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ Submodule.span Rₚ ↑(Finset.image (⇑f) T) = ⊤
state_after: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ ⊤ ≤ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: rintro x -
state_before: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
⊢ ⊤ ≤ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: obtain ⟨⟨y, m⟩, (hyx : IsLocalizedModule.mk' f y m = x)⟩ :=
  IsLocalizedModule.mk'_surjective S f x
state_before: case h
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: have hy : y ∈ Submodule.span R T := by rw [hT]; trivial
state_before: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: have : f y ∈ Submodule.map f (Submodule.span R T) := Submodule.mem_map_of_mem hy
state_before: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.map f (Submodule.span R ↑T)
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: rw [Submodule.map_span] at this
state_before: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.map f (Submodule.span R ↑T)
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: have H : Submodule.span R (f '' T) ≤
    (Submodule.span Rₚ (f '' T)).restrictScalars R := by
  rw [Submodule.span_le]; exact Submodule.subset_span
state_before: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)

tactic: convert (Submodule.span Rₚ (f '' T)).smul_mem
  (IsLocalization.mk' Rₚ (1 : R) m) (H this) using 1
state_before: case h.intro.mk
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ x ∈ Submodule.span Rₚ ↑(Finset.image (⇑f) T)
state_after: case h.e'_4
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ x = IsLocalization.mk' Rₚ 1 m • f y

case h.e'_5
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ Submodule.span Rₚ ↑(Finset.image (⇑f) T) = Submodule.span Rₚ (⇑f '' ↑T)

tactic: rw [hT]
state_before: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
⊢ y ∈ Submodule.span R ↑T
state_after: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
⊢ y ∈ ⊤

tactic: trivial
state_before: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
⊢ y ∈ ⊤
state_after: no goals

tactic: rw [Submodule.span_le]
state_before: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
⊢ Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
state_after: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
⊢ ⇑f '' ↑T ⊆ ↑(Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T)))

tactic: exact Submodule.subset_span
state_before: R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
⊢ ⇑f '' ↑T ⊆ ↑(Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T)))
state_after: no goals

tactic: rw [← hyx, ← IsLocalizedModule.mk'_one S, IsLocalizedModule.mk'_smul_mk']
state_before: case h.e'_4
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ x = IsLocalization.mk' Rₚ 1 m • f y
state_after: case h.e'_4
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ IsLocalizedModule.mk' f y m = IsLocalizedModule.mk' f (1 • y) (m * 1)

tactic: simp
state_before: case h.e'_4
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ IsLocalizedModule.mk' f y m = IsLocalizedModule.mk' f (1 • y) (m * 1)
state_after: no goals

tactic: simp
state_before: case h.e'_5
R : Type u
inst✝¹¹ : CommSemiring R
S : Submonoid R
Rₚ : Type v
inst✝¹⁰ : CommSemiring Rₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization S Rₚ
M : Type w
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
Mₚ : Type t
inst✝⁵ : AddCommMonoid Mₚ
inst✝⁴ : Module R Mₚ
inst✝³ : Module Rₚ Mₚ
inst✝² : IsScalarTower R Rₚ Mₚ
f : M →ₗ[R] Mₚ
inst✝¹ : IsLocalizedModule S f
inst✝ : Finite R M
T : Finset M
hT : Submodule.span R ↑T = ⊤
x : Mₚ
y : M
m : ↥S
hyx : IsLocalizedModule.mk' f y m = x
hy : y ∈ Submodule.span R ↑T
this : f y ∈ Submodule.span R (⇑f '' ↑T)
H : Submodule.span R (⇑f '' ↑T) ≤ Submodule.restrictScalars R (Submodule.span Rₚ (⇑f '' ↑T))
⊢ Submodule.span Rₚ ↑(Finset.image (⇑f) T) = Submodule.span Rₚ (⇑f '' ↑T)
state_after: no goals