Theorem: LinearMap.mem_submoduleImage_of_le
File: Mathlib/LinearAlgebra/Basic.lean

tactic: refine' mem_submoduleImage.trans ⟨_, _⟩
state_before: R : Type u_2
R₁ : Type ?u.1592131
R₂ : Type ?u.1592134
R₃ : Type ?u.1592137
R₄ : Type ?u.1592140
S : Type ?u.1592143
K : Type ?u.1592146
K₂ : Type ?u.1592149
M : Type u_3
M'✝ : Type ?u.1592155
M₁ : Type ?u.1592158
M₂ : Type ?u.1592161
M₃ : Type ?u.1592164
M₄ : Type ?u.1592167
N✝ : Type ?u.1592170
N₂ : Type ?u.1592173
ι : Type ?u.1592176
V : Type ?u.1592179
V₂ : Type ?u.1592182
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
M' : Type u_1
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
O : Submodule R M
ϕ : { x // x ∈ O } →ₗ[R] M'
N : Submodule R M
hNO : N ≤ O
x : M'
⊢ x ∈ submoduleImage ϕ N ↔ ∃ y yN, ↑ϕ { val := y, property := (_ : y ∈ O) } = x

tactic: rintro ⟨y, yO, yN, h⟩
state_before: case refine'_1
R : Type u_2
R₁ : Type ?u.1592131
R₂ : Type ?u.1592134
R₃ : Type ?u.1592137
R₄ : Type ?u.1592140
S : Type ?u.1592143
K : Type ?u.1592146
K₂ : Type ?u.1592149
M : Type u_3
M'✝ : Type ?u.1592155
M₁ : Type ?u.1592158
M₂ : Type ?u.1592161
M₃ : Type ?u.1592164
M₄ : Type ?u.1592167
N✝ : Type ?u.1592170
N₂ : Type ?u.1592173
ι : Type ?u.1592176
V : Type ?u.1592179
V₂ : Type ?u.1592182
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
M' : Type u_1
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
O : Submodule R M
ϕ : { x // x ∈ O } →ₗ[R] M'
N : Submodule R M
hNO : N ≤ O
x : M'
⊢ (∃ y yO x_1, ↑ϕ { val := y, property := yO } = x) → ∃ y yN, ↑ϕ { val := y, property := (_ : y ∈ O) } = x

tactic: exact ⟨y, yN, h⟩
state_before: case refine'_1.intro.intro.intro
R : Type u_2
R₁ : Type ?u.1592131
R₂ : Type ?u.1592134
R₃ : Type ?u.1592137
R₄ : Type ?u.1592140
S : Type ?u.1592143
K : Type ?u.1592146
K₂ : Type ?u.1592149
M : Type u_3
M'✝ : Type ?u.1592155
M₁ : Type ?u.1592158
M₂ : Type ?u.1592161
M₃ : Type ?u.1592164
M₄ : Type ?u.1592167
N✝ : Type ?u.1592170
N₂ : Type ?u.1592173
ι : Type ?u.1592176
V : Type ?u.1592179
V₂ : Type ?u.1592182
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
M' : Type u_1
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
O : Submodule R M
ϕ : { x // x ∈ O } →ₗ[R] M'
N : Submodule R M
hNO : N ≤ O
x : M'
y : M
yO : y ∈ O
yN : y ∈ N
h : ↑ϕ { val := y, property := yO } = x
⊢ ∃ y yN, ↑ϕ { val := y, property := (_ : y ∈ O) } = x

tactic: rintro ⟨y, yN, h⟩
state_before: case refine'_2
R : Type u_2
R₁ : Type ?u.1592131
R₂ : Type ?u.1592134
R₃ : Type ?u.1592137
R₄ : Type ?u.1592140
S : Type ?u.1592143
K : Type ?u.1592146
K₂ : Type ?u.1592149
M : Type u_3
M'✝ : Type ?u.1592155
M₁ : Type ?u.1592158
M₂ : Type ?u.1592161
M₃ : Type ?u.1592164
M₄ : Type ?u.1592167
N✝ : Type ?u.1592170
N₂ : Type ?u.1592173
ι : Type ?u.1592176
V : Type ?u.1592179
V₂ : Type ?u.1592182
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
M' : Type u_1
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
O : Submodule R M
ϕ : { x // x ∈ O } →ₗ[R] M'
N : Submodule R M
hNO : N ≤ O
x : M'
⊢ (∃ y yN, ↑ϕ { val := y, property := (_ : y ∈ O) } = x) → ∃ y yO x_1, ↑ϕ { val := y, property := yO } = x

tactic: exact ⟨y, hNO yN, yN, h⟩
state_before: case refine'_2.intro.intro
R : Type u_2
R₁ : Type ?u.1592131
R₂ : Type ?u.1592134
R₃ : Type ?u.1592137
R₄ : Type ?u.1592140
S : Type ?u.1592143
K : Type ?u.1592146
K₂ : Type ?u.1592149
M : Type u_3
M'✝ : Type ?u.1592155
M₁ : Type ?u.1592158
M₂ : Type ?u.1592161
M₃ : Type ?u.1592164
M₄ : Type ?u.1592167
N✝ : Type ?u.1592170
N₂ : Type ?u.1592173
ι : Type ?u.1592176
V : Type ?u.1592179
V₂ : Type ?u.1592182
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
M' : Type u_1
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
O : Submodule R M
ϕ : { x // x ∈ O } →ₗ[R] M'
N : Submodule R M
hNO : N ≤ O
x : M'
y : M
yN : y ∈ N
h : ↑ϕ { val := y, property := (_ : y ∈ O) } = x
⊢ ∃ y yO x_1, ↑ϕ { val := y, property := yO } = x