Theorem: LinearMap.localized'_ker_eq_ker_localizedMap
File: Mathlib/Algebra/Module/Submodule/Localization.lean

Proof steps:
state_before: R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
⊢ Submodule.localized' S p f (ker g) = ker (extendScalarsOfIsLocalization p S ((IsLocalizedModule.map p f f') g))
state_after: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ x ∈ Submodule.localized' S p f (ker g) ↔
    x ∈ ker (extendScalarsOfIsLocalization p S ((IsLocalizedModule.map p f f') g))
tactic: ext x
state_before: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ x ∈ Submodule.localized' S p f (ker g) ↔
    x ∈ ker (extendScalarsOfIsLocalization p S ((IsLocalizedModule.map p f f') g))
state_after: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ (∃ m, g m = 0 ∧ ∃ s, IsLocalizedModule.mk' f m s = x) ↔ ((IsLocalizedModule.map p f f') g) x = 0
tactic: simp only [Submodule.mem_localized', mem_ker, extendScalarsOfIsLocalization_apply']
state_before: case h
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ (∃ m, g m = 0 ∧ ∃ s, IsLocalizedModule.mk' f m s = x) ↔ ((IsLocalizedModule.map p f f') g) x = 0
state_after: case h.mp
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ (∃ m, g m = 0 ∧ ∃ s, IsLocalizedModule.mk' f m s = x) → ((IsLocalizedModule.map p f f') g) x = 0

case h.mpr
R : Type u
S : Type u'
M : Type v
N : Type v'
inst✝¹⁷ : CommRing R
inst✝¹⁶ : CommRing S
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : AddCommGroup N
inst✝¹³ : Module R M
inst✝¹² : Module R N
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Module S N
inst✝⁹ : IsScalarTower R S N
p : Submonoid R
inst✝⁸ : IsLocalization p S
f : M →ₗ[R] N
inst✝⁷ : IsLocalizedModule p f
hp : p ≤ R⁰
M' : Submodule R M
P : Type w
inst✝⁶ : AddCommGroup P
inst✝⁵ : Module R P
Q : Type w'
inst✝⁴ : AddCommGroup Q
inst✝³ : Module R Q
inst✝² : Module S Q
inst✝¹ : IsScalarTower R S Q
f' : P →ₗ[R] Q
inst✝ : IsLocalizedModule p f'
g : M →ₗ[R] P
x : N
⊢ ((IsLocalizedModule.map p f f') g) x = 0 → ∃ m, g m = 0 ∧ ∃ s, IsLocalizedModule.mk' f m s = x
tactic: constructor