Theorem: eq_bot_of_generator_maximal_map_eq_zero
File: Mathlib/LinearAlgebra/FreeModule/PID.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
⊢ N = ⊥
state_after: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
⊢ ∀ x ∈ N, x = 0
tactic: rw [Submodule.eq_bot_iff]
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
⊢ ∀ x ∈ N, x = 0
state_after: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
⊢ x = 0
tactic: intro x hx
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
⊢ x = 0
state_after: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = (b.repr 0) i
tactic: refine b.ext_elem fun i ↦ ?_
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬map ϕ N < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = (b.repr 0) i
state_after: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬⊥ < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = (b.repr 0) i
tactic: rw [(eq_bot_iff_generator_eq_zero _).mpr hgen] at hϕ
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬⊥ < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = (b.repr 0) i
state_after: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬⊥ < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = 0
tactic: rw [LinearEquiv.map_zero, Finsupp.zero_apply]
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
b✝ b : Basis ι R M
N : Submodule R M
ϕ : M →ₗ[R] R
hϕ : ∀ (ψ : M →ₗ[R] R), ¬⊥ < map ψ N
inst✝ : (map ϕ N).IsPrincipal
hgen : generator (map ϕ N) = 0
x : M
hx : x ∈ N
i : ι
⊢ (b.repr x) i = 0
state_after: no goals
tactic: exact
    (Submodule.eq_bot_iff _).mp (not_bot_lt_iff.1 <| hϕ (Finsupp.lapply i ∘ₗ ↑b.repr)) _
      ⟨x, hx, rfl⟩