Theorem: sigmaFinsuppEquivDfinsupp_single
File: Mathlib/Data/Finsupp/ToDfinsupp.lean

tactic: obtain ⟨i, a⟩ := a
state_before: ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
a : (i : ι) × η i
n : N
⊢ ↑sigmaFinsuppEquivDfinsupp (single a n) = Dfinsupp.single a.fst (single a.snd n)

tactic: ext (j b)
state_before: case mk
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
⊢ ↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n) =
    Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)

tactic: by_cases h : i = j
state_before: case mk.h.h
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) j) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) j) b

tactic: suffices Finsupp.single (⟨i, a⟩ : Σi, η i) n ⟨j, b⟩ = 0 by simp [split_apply, dif_neg h, this]
state_before: case neg
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) j) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) j) b

tactic: have H : (⟨i, a⟩ : Σi, η i) ≠ ⟨j, b⟩ := by simp [h]
state_before: case neg
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
⊢ ↑(single { fst := i, snd := a } n) { fst := j, snd := b } = 0

tactic: classical rw [Finsupp.single_apply, if_neg H]
state_before: case neg
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
H : { fst := i, snd := a } ≠ { fst := j, snd := b }
⊢ ↑(single { fst := i, snd := a } n) { fst := j, snd := b } = 0

tactic: subst h
state_before: case pos
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : i = j
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) j) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) j) b

tactic: classical simp [split_apply, Finsupp.single_apply]
state_before: case pos
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a b : η i
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) i) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) i) b

tactic: simp [split_apply, Finsupp.single_apply]
state_before: case pos
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a b : η i
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) i) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) i) b

tactic: simp [split_apply, dif_neg h, this]
state_before: ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
this : ↑(single { fst := i, snd := a } n) { fst := j, snd := b } = 0
⊢ ↑(↑(↑sigmaFinsuppEquivDfinsupp (single { fst := i, snd := a } n)) j) b =
    ↑(↑(Dfinsupp.single { fst := i, snd := a }.fst (single { fst := i, snd := a }.snd n)) j) b

tactic: simp [h]
state_before: ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
⊢ { fst := i, snd := a } ≠ { fst := j, snd := b }

tactic: rw [Finsupp.single_apply, if_neg H]
state_before: case neg
ι : Type u_1
R : Type ?u.70785
M : Type ?u.70788
η : ι → Type u_3
N : Type u_2
inst✝² : Semiring R
inst✝¹ : DecidableEq ι
inst✝ : Zero N
n : N
i : ι
a : η i
j : ι
b : η j
h : ¬i = j
H : { fst := i, snd := a } ≠ { fst := j, snd := b }
⊢ ↑(single { fst := i, snd := a } n) { fst := j, snd := b } = 0