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

tactic: exact x
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
⊢ δ ⟨i, j⟩.fst ⟨i, j⟩.snd
state_after: no goals

tactic: ext ⟨i', j'⟩
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
⊢ (single i (single j x)).sigmaUncurry = single ⟨i, j⟩ x
state_after: case h.mk
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
⊢ (single i (single j x)).sigmaUncurry ⟨i', j'⟩ = (single ⟨i, j⟩ x) ⟨i', j'⟩

tactic: rw [sigmaUncurry_apply]
state_before: case h.mk
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
⊢ (single i (single j x)).sigmaUncurry ⟨i', j'⟩ = (single ⟨i, j⟩ x) ⟨i', j'⟩
state_after: case h.mk
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
⊢ ((single i (single j x)) i') j' = (single ⟨i, j⟩ x) ⟨i', j'⟩

tactic: obtain rfl | hi := eq_or_ne i i'
state_before: case h.mk
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
⊢ ((single i (single j x)) i') j' = (single ⟨i, j⟩ x) ⟨i', j'⟩
state_after: case h.mk.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
⊢ ((single i (single j x)) i) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩

case h.mk.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
hi : i ≠ i'
⊢ ((single i (single j x)) i') j' = (single ⟨i, j⟩ x) ⟨i', j'⟩

tactic: rw [single_eq_same]
state_before: case h.mk.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
⊢ ((single i (single j x)) i) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩
state_after: case h.mk.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
⊢ (single j x) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩

tactic: obtain rfl | hj := eq_or_ne j j'
state_before: case h.mk.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
⊢ (single j x) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩
state_after: case h.mk.inl.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
⊢ (single j x) j = (single ⟨i, j⟩ x) ⟨i, j⟩

case h.mk.inl.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
hj : j ≠ j'
⊢ (single j x) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩

tactic: rw [single_eq_same, single_eq_same]
state_before: case h.mk.inl.inl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
⊢ (single j x) j = (single ⟨i, j⟩ x) ⟨i, j⟩
state_after: no goals

tactic: rw [single_eq_of_ne hj, single_eq_of_ne]
state_before: case h.mk.inl.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
hj : j ≠ j'
⊢ (single j x) j' = (single ⟨i, j⟩ x) ⟨i, j'⟩
state_after: case h.mk.inl.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
hj : j ≠ j'
⊢ ⟨i, j⟩ ≠ ⟨i, j'⟩

tactic: simpa using hj
state_before: case h.mk.inl.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
j' : α i
hj : j ≠ j'
⊢ ⟨i, j⟩ ≠ ⟨i, j'⟩
state_after: no goals

tactic: rw [single_eq_of_ne hi, single_eq_of_ne, zero_apply]
state_before: case h.mk.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
hi : i ≠ i'
⊢ ((single i (single j x)) i') j' = (single ⟨i, j⟩ x) ⟨i', j'⟩
state_after: case h.mk.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
hi : i ≠ i'
⊢ ⟨i, j⟩ ≠ ⟨i', j'⟩

tactic: simp [hi]
state_before: case h.mk.inr
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
κ : Type u_1
α : ι → Type u_2
δ : (i : ι) → α i → Type v
inst✝² : (i : ι) → (j : α i) → Zero (δ i j)
inst✝¹ : (i : ι) → DecidableEq (α i)
inst✝ : (i : ι) → (j : α i) → (x : δ i j) → Decidable (x ≠ 0)
i : ι
j : α i
x : δ i j
i' : ι
j' : α i'
hi : i ≠ i'
⊢ ⟨i, j⟩ ≠ ⟨i', j'⟩
state_after: no goals