Theorem: Submodule.Quotient.equiv_symm_apply
File: Mathlib/LinearAlgebra/Quotient.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
r : R
x✝ y : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
x : N
hx : x ∈ Q
⊢ x ∈ comap (↑f.symm) P
state_after: R : Type u_1
M : Type u_2
r : R
x✝ y : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
x : N
hx : ∃ y ∈ P, f y = x
⊢ x ∈ comap (↑f.symm) P
tactic: rw [← hf, Submodule.mem_map] at hx
state_before: R : Type u_1
M : Type u_2
r : R
x✝ y : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
x : N
hx : ∃ y ∈ P, f y = x
⊢ x ∈ comap (↑f.symm) P
state_after: case intro.intro
R : Type u_1
M : Type u_2
r : R
x y✝ : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
y : M
hy : y ∈ P
⊢ f y ∈ comap (↑f.symm) P
tactic: obtain ⟨y, hy, rfl⟩ := hx
state_before: case intro.intro
R : Type u_1
M : Type u_2
r : R
x y✝ : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
y : M
hy : y ∈ P
⊢ f y ∈ comap (↑f.symm) P
state_after: no goals
tactic: simpa
state_before: R : Type u_1
M : Type u_2
r : R
x✝ y : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
x : M ⧸ P
⊢ ∀ (a : M),
    (Q.mapQ P ↑f.symm ⋯) ({ toFun := ⇑(P.mapQ Q ↑f ⋯), map_add' := ⋯, map_smul' := ⋯ }.toFun (Quotient.mk'' a)) =
      Quotient.mk'' a
state_after: no goals
tactic: simp
state_before: R : Type u_1
M : Type u_2
r : R
x✝ y : M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝⁴ : Ring R₂
inst✝³ : AddCommGroup M₂
inst✝² : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : Submodule R M
Q : Submodule R N
f : M ≃ₗ[R] N
hf : map f P = Q
x : N ⧸ Q
⊢ ∀ (a : N),
    { toFun := ⇑(P.mapQ Q ↑f ⋯), map_add' := ⋯, map_smul' := ⋯ }.toFun ((Q.mapQ P ↑f.symm ⋯) (Quotient.mk'' a)) =
      Quotient.mk'' a
state_after: no goals
tactic: simp