Theorem: FiniteDimensional.basisSingleton_repr_apply
File: Mathlib/LinearAlgebra/FiniteDimensional/Defs.lean

Proof steps:
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
⊢ ∀ (x y : V),
    (fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default)) (x + y) =
      (fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default)) x +
        (fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default)) y
state_after: no goals
tactic: simp [add_div]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
⊢ ∀ (m : K) (x : V),
    { toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯ }.toFun
        (m • x) =
      (RingHom.id K) m •
        { toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯ }.toFun x
state_after: no goals
tactic: simp [mul_div]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ (fun f => f default • v)
      ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
            map_smul' := ⋯ }.toFun
        w) =
    w
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ b.repr
      ((fun f => f default • v)
        ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
              map_smul' := ⋯ }.toFun
          w)) =
    b.repr w
tactic: apply_fun b.repr using b.repr.toEquiv.injective
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ b.repr
      ((fun f => f default • v)
        ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
              map_smul' := ⋯ }.toFun
          w)) =
    b.repr w
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ Equiv.finsuppUnique
      (b.repr
        ((fun f => f default • v)
          ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
                map_smul' := ⋯ }.toFun
            w))) =
    Equiv.finsuppUnique (b.repr w)
tactic: apply_fun Equiv.finsuppUnique
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ Equiv.finsuppUnique
      (b.repr
        ((fun f => f default • v)
          ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
                map_smul' := ⋯ }.toFun
            w))) =
    Equiv.finsuppUnique (b.repr w)
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ (RingHom.id K) ((b.repr w) default / (b.repr v) default) * (b.repr v) default = (b.repr w) default
tactic: simp only [LinearEquiv.map_smulₛₗ, Finsupp.coe_smul, Finsupp.single_eq_same,
          smul_eq_mul, Pi.smul_apply, Equiv.finsuppUnique_apply]
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
w : V
⊢ (RingHom.id K) ((b.repr w) default / (b.repr v) default) * (b.repr v) default = (b.repr w) default
state_after: no goals
tactic: exact div_mul_cancel₀ _ h
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
f : ι →₀ K
⊢ { toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
          map_smul' := ⋯ }.toFun
      ((fun f => f default • v) f) =
    f
state_after: case h
K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
f : ι →₀ K
⊢ ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
            map_smul' := ⋯ }.toFun
        ((fun f => f default • v) f))
      default =
    f default
tactic: ext
state_before: case h
K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
f : ι →₀ K
⊢ ({ toFun := fun w => Finsupp.single default ((b.repr w) default / (b.repr v) default), map_add' := ⋯,
            map_smul' := ⋯ }.toFun
        ((fun f => f default • v) f))
      default =
    f default
state_after: case h
K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
f : ι →₀ K
⊢ f default * (b.repr v) default / (b.repr v) default = f default
tactic: simp only [LinearEquiv.map_smulₛₗ, Finsupp.coe_smul, Finsupp.single_eq_same,
          RingHom.id_apply, smul_eq_mul, Pi.smul_apply]
state_before: case h
K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
ι : Type u_1
inst✝ : Unique ι
h✝ : finrank K V = 1
v : V
hv : v ≠ 0
b : Basis ι K V := basisUnique ι h✝
h : (b.repr v) default ≠ 0 := mt basisUnique_repr_eq_zero_iff.mp hv
f : ι →₀ K
⊢ f default * (b.repr v) default / (b.repr v) default = f default
state_after: no goals
tactic: exact mul_div_cancel_right₀ _ h