Theorem: DirectSum.IsInternal.collectedBasis_coe
File: Mathlib/Algebra/DirectSum/Module.lean

tactic: funext a
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
⊢ ↑(collectedBasis h v) = fun a => ↑(↑(v a.fst) a.snd)

tactic: simp only [IsInternal.collectedBasis, coeLinearMap, Basis.coe_ofRepr, LinearEquiv.trans_symm,
  LinearEquiv.symm_symm, LinearEquiv.trans_apply, sigmaFinsuppLequivDfinsupp_apply,
  sigmaFinsuppEquivDfinsupp_single, LinearEquiv.ofBijective_apply,
  sigmaFinsuppAddEquivDfinsupp_apply]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(collectedBasis h v) a = ↑(↑(v a.fst) a.snd)

tactic: rw [Dfinsupp.mapRange.linearEquiv_symm]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(toModule R ι M fun i => Submodule.subtype (A i))
      (↑(LinearEquiv.symm (Dfinsupp.mapRange.linearEquiv fun i => (v i).repr))
        (Dfinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑(↑(v a.fst) a.snd)

tactic: erw [Dfinsupp.mapRange.linearEquiv_apply]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(toModule R ι M fun i => Submodule.subtype (A i))
      (↑(Dfinsupp.mapRange.linearEquiv fun i => LinearEquiv.symm (v i).repr)
        (Dfinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑(↑(v a.fst) a.snd)

tactic: simp only [Dfinsupp.mapRange_single, Basis.repr_symm_apply, Finsupp.total_single, one_smul,
  toModule]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(toModule R ι M fun i => Submodule.subtype (A i))
      (Dfinsupp.mapRange (fun i x => ↑(LinearEquiv.symm (v i).repr) x)
        (_ : ∀ (i : ι), ↑(LinearEquiv.symm (v i).repr) 0 = 0) (Dfinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑(↑(v a.fst) a.snd)

tactic: erw [Dfinsupp.lsum_single]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(↑(Dfinsupp.lsum ℕ) fun i => Submodule.subtype (A i)) (Dfinsupp.single a.fst (↑(v a.fst) a.snd)) =
    ↑(↑(v a.fst) a.snd)

tactic: simp only [Submodule.coeSubtype]
state_before: case h
R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
α : ι → Type u_2
v : (i : ι) → Basis (α i) R { x // x ∈ A i }
a : (i : ι) × α i
⊢ ↑(Submodule.subtype (A a.fst)) (↑(v a.fst) a.snd) = ↑(↑(v a.fst) a.snd)