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

Proof steps:
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 ↥(A i)
⊢ ⇑(h.collectedBasis v) = fun a => ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ (h.collectedBasis v) a = ↑((v a.fst) a.snd)
tactic: funext a
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 ↥(A i)
a : (i : ι) × α i
⊢ (h.collectedBasis v) a = ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      ((DFinsupp.mapRange.linearEquiv fun i => (v i).repr).symm (DFinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑((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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      ((DFinsupp.mapRange.linearEquiv fun i => (v i).repr).symm (DFinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      ((DFinsupp.mapRange.linearEquiv fun i => (v i).repr.symm) (DFinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑((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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      ((DFinsupp.mapRange.linearEquiv fun i => (v i).repr.symm) (DFinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      (DFinsupp.mapRange (fun i x => (v i).repr.symm x) ⋯ (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 ↥(A i)
a : (i : ι) × α i
⊢ (toModule R ι M fun i => (A i).subtype)
      (DFinsupp.mapRange (fun i x => (v i).repr.symm x) ⋯ (DFinsupp.single a.fst (Finsupp.single a.snd 1))) =
    ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ ((DFinsupp.lsum ℕ) fun i => (A i).subtype) (DFinsupp.single a.fst ((v a.fst) a.snd)) = ↑((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 ↥(A i)
a : (i : ι) × α i
⊢ ((DFinsupp.lsum ℕ) fun i => (A i).subtype) (DFinsupp.single a.fst ((v a.fst) a.snd)) = ↑((v a.fst) a.snd)
state_after: 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 ↥(A i)
a : (i : ι) × α i
⊢ (A a.fst).subtype ((v a.fst) a.snd) = ↑((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 ↥(A i)
a : (i : ι) × α i
⊢ (A a.fst).subtype ((v a.fst) a.snd) = ↑((v a.fst) a.snd)
state_after: no goals
tactic: simp only [Submodule.coeSubtype]