Theorem: DFinsupp.liftAddHom_symm_apply
File: Mathlib/Data/DFinsupp/Basic.lean

Proof steps:
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
x : (i : ι) → β i →+ γ
⊢ (fun F i => F.comp (singleAddHom β i)) (sumAddHom x) = x
state_after: case h.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
x : (i : ι) → β i →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ ((fun F i => F.comp (singleAddHom β i)) (sumAddHom x) x✝¹) x✝ = (x x✝¹) x✝
tactic: ext
state_before: case h.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
x : (i : ι) → β i →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ ((fun F i => F.comp (singleAddHom β i)) (sumAddHom x) x✝¹) x✝ = (x x✝¹) x✝
state_after: no goals
tactic: simp
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
ψ : (Π₀ (i : ι), β i) →+ γ
⊢ sumAddHom ((fun F i => F.comp (singleAddHom β i)) ψ) = ψ
state_after: case H.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
ψ : (Π₀ (i : ι), β i) →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ ((sumAddHom ((fun F i => F.comp (singleAddHom β i)) ψ)).comp (singleAddHom β x✝¹)) x✝ =
    (ψ.comp (singleAddHom β x✝¹)) x✝
tactic: ext
state_before: case H.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
ψ : (Π₀ (i : ι), β i) →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ ((sumAddHom ((fun F i => F.comp (singleAddHom β i)) ψ)).comp (singleAddHom β x✝¹)) x✝ =
    (ψ.comp (singleAddHom β x✝¹)) x✝
state_after: no goals
tactic: simp
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
F G : (i : ι) → β i →+ γ
⊢ { toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun (F + G) =
    { toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun F +
      { toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun G
state_after: case H.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
F G : (i : ι) → β i →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ (({ toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun
            (F + G)).comp
        (singleAddHom β x✝¹))
      x✝ =
    (({ toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun F +
            { toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun
              G).comp
        (singleAddHom β x✝¹))
      x✝
tactic: ext
state_before: case H.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
inst✝ : AddCommMonoid γ
F G : (i : ι) → β i →+ γ
x✝¹ : ι
x✝ : β x✝¹
⊢ (({ toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun
            (F + G)).comp
        (singleAddHom β x✝¹))
      x✝ =
    (({ toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun F +
            { toFun := sumAddHom, invFun := fun F i => F.comp (singleAddHom β i), left_inv := ⋯, right_inv := ⋯ }.toFun
              G).comp
        (singleAddHom β x✝¹))
      x✝
state_after: no goals
tactic: simp