Theorem: multiple_mem_span_of_mem_localization_span
File: Mathlib/RingTheory/LocalProperties.lean

tactic: obtain ⟨s', hss', hs'⟩ := Submodule.mem_span_finite_of_mem_span hx
state_before: R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
⊢ ∃ t, t • x ∈ Submodule.span R s
state_after: case intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R s

tactic: rsuffices ⟨t, ht⟩ : ∃ t : M, t • x ∈ Submodule.span R (s' : Set N)
state_before: case intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R s
state_after: case intro.intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
t : ↥M
ht : t • x ∈ Submodule.span R ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R s

R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R ↑s'

tactic: clear hx hss' s
state_before: R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R ↑s'
state_after: R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
s' : Finset N
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R ↑s'

tactic: induction s' using Finset.induction_on generalizing x
state_before: R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
s' : Finset N
hs' : x ∈ Submodule.span R' ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R ↑s'
state_after: case empty
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
hs' : x ∈ Submodule.span R' ↑∅
⊢ ∃ t, t • x ∈ Submodule.span R ↑∅

case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a✝² : N
s✝ : Finset N
a✝¹ : a✝² ∉ s✝
a✝ : ∀ x ∈ Submodule.span R' ↑s✝, ∃ t, t • x ∈ Submodule.span R ↑s✝
x : N
hs' : x ∈ Submodule.span R' ↑(insert a✝² s✝)
⊢ ∃ t, t • x ∈ Submodule.span R ↑(insert a✝² s✝)

tactic: rename_i a s _ hs
state_before: case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a✝² : N
s✝ : Finset N
a✝¹ : a✝² ∉ s✝
a✝ : ∀ x ∈ Submodule.span R' ↑s✝, ∃ t, t • x ∈ Submodule.span R ↑s✝
x : N
hs' : x ∈ Submodule.span R' ↑(insert a✝² s✝)
⊢ ∃ t, t • x ∈ Submodule.span R ↑(insert a✝² s✝)
state_after: case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
x : N
hs' : x ∈ Submodule.span R' ↑(insert a s)
⊢ ∃ t, t • x ∈ Submodule.span R ↑(insert a s)

tactic: simp only [Finset.coe_insert, Finset.image_insert, Finset.coe_image, Subtype.coe_mk,
  Submodule.mem_span_insert] at hs' ⊢
state_before: case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
x : N
hs' : x ∈ Submodule.span R' ↑(insert a s)
⊢ ∃ t, t • x ∈ Submodule.span R ↑(insert a s)
state_after: case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
x : N
hs' : ∃ a_1, ∃ z ∈ Submodule.span R' ↑s, x = a_1 • a + z
⊢ ∃ t a_1, ∃ z ∈ Submodule.span R ↑s, t • x = a_1 • a + z

tactic: rcases hs' with ⟨y, z, hz, rfl⟩
state_before: case insert
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
x : N
hs' : ∃ a_1, ∃ z ∈ Submodule.span R' ↑s, x = a_1 • a + z
⊢ ∃ t a_1, ∃ z ∈ Submodule.span R ↑s, t • x = a_1 • a + z
state_after: case insert.intro.intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1

tactic: rcases IsLocalization.surj M y with ⟨⟨y', s'⟩, e⟩
state_before: case insert.intro.intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1
state_after: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : y * (algebraMap R R') ↑(y', s').2 = (algebraMap R R') (y', s').1
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1

tactic: apply congrArg (fun x ↦ x • a) at e
state_before: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : y * (algebraMap R R') ↑(y', s').2 = (algebraMap R R') (y', s').1
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1
state_after: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑(y', s').2) • a = (algebraMap R R') (y', s').1 • a
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1

tactic: simp only [algebraMap_smul] at e
state_before: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑(y', s').2) • a = (algebraMap R R') (y', s').1 • a
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1
state_after: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1

tactic: rcases hs _ hz with ⟨t, ht⟩
state_before: case insert.intro.intro.intro.intro.mk
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1
state_after: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1

tactic: refine ⟨t * s', t * y', _, (Submodule.span R (s : Set N)).smul_mem s' ht, ?_⟩
state_before: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ ∃ t a_1, ∃ z_1 ∈ Submodule.span R ↑s, t • (y • a + z) = a_1 • a + z_1
state_after: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ (t * s') • (y • a + z) = (↑t * y') • a + ↑s' • t • z

tactic: rw [smul_add, ← smul_smul, mul_comm, ← smul_smul, ← smul_smul, ← e, mul_comm, ← Algebra.smul_def]
state_before: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ (t * s') • (y • a + z) = (↑t * y') • a + ↑s' • t • z
state_after: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ t • s' • y • a + s' • t • z = ↑t • (↑s' • y) • a + ↑s' • t • z

tactic: simp
state_before: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ t • s' • y • a + s' • t • z = ↑t • (↑s' • y) • a + ↑s' • t • z
state_after: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ t • s' • y • a + s' • t • z = ↑t • ↑s' • y • a + ↑s' • t • z

tactic: rfl
state_before: case insert.intro.intro.intro.intro.mk.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
a : N
s : Finset N
a✝ : a ∉ s
hs : ∀ x ∈ Submodule.span R' ↑s, ∃ t, t • x ∈ Submodule.span R ↑s
y : R'
z : N
hz : z ∈ Submodule.span R' ↑s
y' : R
s' : ↥M
e : (y * (algebraMap R R') ↑s') • a = y' • a
t : ↥M
ht : t • z ∈ Submodule.span R ↑s
⊢ t • s' • y • a + s' • t • z = ↑t • ↑s' • y • a + ↑s' • t • z
state_after: no goals

tactic: exact ⟨t, Submodule.span_mono hss' ht⟩
state_before: case intro.intro.intro
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
s : Set N
x : N
hx : x ∈ Submodule.span R' s
s' : Finset N
hss' : ↑s' ⊆ s
hs' : x ∈ Submodule.span R' ↑s'
t : ↥M
ht : t • x ∈ Submodule.span R ↑s'
⊢ ∃ t, t • x ∈ Submodule.span R s
state_after: no goals

tactic: use 1
state_before: case empty
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
hs' : x ∈ Submodule.span R' ↑∅
⊢ ∃ t, t • x ∈ Submodule.span R ↑∅
state_after: case h
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
hs' : x ∈ Submodule.span R' ↑∅
⊢ 1 • x ∈ Submodule.span R ↑∅

tactic: simpa using hs'
state_before: case h
R S : Type u
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
M : Submonoid R
N✝ : Submonoid S
R' S' : Type u
inst✝⁸ : CommRing R'
inst✝⁷ : CommRing S'
f : R →+* S
inst✝⁶ : Algebra R R'
inst✝⁵ : Algebra S S'
N : Type u_1
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : Module R' N
inst✝¹ : IsScalarTower R R' N
inst✝ : IsLocalization M R'
x : N
hs' : x ∈ Submodule.span R' ↑∅
⊢ 1 • x ∈ Submodule.span R ↑∅
state_after: no goals