Theorem: LinearIndependent.span_repr_eq
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: have p :
  (Span.repr R (Set.range v) x).equivMapDomain (Equiv.ofInjective _ hv.injective).symm =
    hv.repr x := by
  apply (LinearIndependent.totalEquiv hv).injective
  ext
  simp only [LinearIndependent.totalEquiv_apply_coe, Equiv.self_comp_ofInjective_symm,
    LinearIndependent.total_repr, Finsupp.total_equivMapDomain, Span.finsupp_total_repr]
state_before: ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
⊢ Span.repr R (range v) x = Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)) (↑(repr hv) x)

tactic: ext ⟨_, ⟨i, rfl⟩⟩
state_before: ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
p : Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)).symm (Span.repr R (range v) x) = ↑(repr hv) x
⊢ Span.repr R (range v) x = Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)) (↑(repr hv) x)

tactic: simp [← p]
state_before: case h.mk.intro
ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
p : Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)).symm (Span.repr R (range v) x) = ↑(repr hv) x
i : ι
⊢ ↑(Span.repr R (range v) x) { val := v i, property := (_ : ∃ y, v y = v i) } =
    ↑(Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)) (↑(repr hv) x))
      { val := v i, property := (_ : ∃ y, v y = v i) }

tactic: apply (LinearIndependent.totalEquiv hv).injective
state_before: ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
⊢ Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)).symm (Span.repr R (range v) x) = ↑(repr hv) x

tactic: ext
state_before: case a
ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
⊢ ↑(totalEquiv hv) (Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)).symm (Span.repr R (range v) x)) =
    ↑(totalEquiv hv) (↑(repr hv) x)

tactic: simp only [LinearIndependent.totalEquiv_apply_coe, Equiv.self_comp_ofInjective_symm,
  LinearIndependent.total_repr, Finsupp.total_equivMapDomain, Span.finsupp_total_repr]
state_before: case a.a
ι : Type u'
ι' : Type ?u.460868
R : Type u_1
K : Type ?u.460874
M : Type u_2
M' : Type ?u.460880
M'' : Type ?u.460883
V : Type u
V' : Type ?u.460888
v : ι → M
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x✝ y : M
hv : LinearIndependent R v
inst✝ : Nontrivial R
x : { x // x ∈ span R (range v) }
⊢ ↑(↑(totalEquiv hv) (Finsupp.equivMapDomain (Equiv.ofInjective v (_ : Injective v)).symm (Span.repr R (range v) x))) =
    ↑(↑(totalEquiv hv) (↑(repr hv) x))