Theorem: Basis.reindexRange_self
File: Mathlib/LinearAlgebra/Basis.lean

tactic: by_cases htr : Nontrivial R
state_before: ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i

tactic: letI := htr
state_before: case pos
ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
htr : Nontrivial R
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i

tactic: simp [htr, reindexRange, reindex_apply, Equiv.apply_ofInjective_symm b.injective,
  Subtype.coe_mk]
state_before: case pos
ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
htr : Nontrivial R
this : Nontrivial R := htr
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i

tactic: letI : Subsingleton R := not_nontrivial_iff_subsingleton.mp htr
state_before: case neg
ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
htr : ¬Nontrivial R
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i

tactic: letI := Module.subsingleton R M
state_before: case neg
ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
htr : ¬Nontrivial R
this : Subsingleton R := Iff.mp not_nontrivial_iff_subsingleton htr
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i

tactic: simp [reindexRange]
state_before: case neg
ι : Type u_2
ι' : Type ?u.373505
R : Type u_3
R₂ : Type ?u.373511
K : Type ?u.373514
M : Type u_1
M' : Type ?u.373520
M'' : Type ?u.373523
V : Type u
V' : Type ?u.373528
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
h : optParam (↑b i ∈ range ↑b) (_ : ↑b i ∈ range ↑b)
htr : ¬Nontrivial R
this✝ : Subsingleton R := Iff.mp not_nontrivial_iff_subsingleton htr
this : Subsingleton M := Module.subsingleton R M
⊢ ↑(reindexRange b) { val := ↑b i, property := h } = ↑b i