Theorem: Finsupp.lmapDomain_disjoint_ker
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [disjoint_iff_inf_le]
state_before: α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
⊢ Disjoint (supported M R s) (ker (lmapDomain M R f))

tactic: rintro l ⟨h₁, h₂⟩
state_before: α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
⊢ supported M R s ⊓ ker (lmapDomain M R f) ≤ ⊥

tactic: rw [SetLike.mem_coe, mem_ker, lmapDomain_apply, mapDomain] at h₂
state_before: case intro
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : l ∈ ↑(ker (lmapDomain M R f))
⊢ l ∈ ⊥

tactic: simp
state_before: case intro
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
⊢ l ∈ ⊥

tactic: ext x
state_before: case intro
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
⊢ l = 0

tactic: haveI := Classical.decPred fun x => x ∈ s
state_before: case intro.h
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
⊢ ↑l x = ↑0 x

tactic: by_cases xs : x ∈ s
state_before: case intro.h
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
⊢ ↑l x = ↑0 x

tactic: have : Finsupp.sum l (fun a => Finsupp.single (f a)) (f x) = 0 := by
  rw [h₂]
  rfl
state_before: case pos
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
xs : x ∈ s
⊢ ↑l x = ↑0 x

tactic: rw [Finsupp.sum_apply, Finsupp.sum, Finset.sum_eq_single x, single_eq_same] at this
state_before: case pos
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this✝ : DecidablePred fun x => x ∈ s
xs : x ∈ s
this : ↑(sum l fun a => single (f a)) (f x) = 0
⊢ ↑l x = ↑0 x

tactic: rw [h₂]
state_before: α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
xs : x ∈ s
⊢ ↑(sum l fun a => single (f a)) (f x) = 0

tactic: rfl
state_before: α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
xs : x ∈ s
⊢ ↑0 (f x) = 0

tactic: simpa
state_before: case pos
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this✝ : DecidablePred fun x => x ∈ s
xs : x ∈ s
this : ↑l x = 0
⊢ ↑l x = ↑0 x

tactic: intro y hy xy
state_before: case pos.h₀
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this✝ : DecidablePred fun x => x ∈ s
xs : x ∈ s
this : ∑ a in l.support, ↑(single (f a) (↑l a)) (f x) = 0
⊢ ∀ (b : α), b ∈ l.support → b ≠ x → ↑(single (f b) (↑l b)) (f x) = 0

tactic: simp [mt (H _ (h₁ hy) _ xs) xy]
state_before: case pos.h₀
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this✝ : DecidablePred fun x => x ∈ s
xs : x ∈ s
this : ∑ a in l.support, ↑(single (f a) (↑l a)) (f x) = 0
y : α
hy : y ∈ l.support
xy : y ≠ x
⊢ ↑(single (f y) (↑l y)) (f x) = 0

tactic: simp (config := { contextual := true })
state_before: case pos.h₁
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this✝ : DecidablePred fun x => x ∈ s
xs : x ∈ s
this : ∑ a in l.support, ↑(single (f a) (↑l a)) (f x) = 0
⊢ ¬x ∈ l.support → ↑(single (f x) (↑l x)) (f x) = 0

tactic: by_contra h
state_before: case neg
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
xs : ¬x ∈ s
⊢ ↑l x = ↑0 x

tactic: exact xs (h₁ <| Finsupp.mem_support_iff.2 h)
state_before: case neg
α : Type u_1
M : Type u_3
N : Type ?u.251779
P : Type ?u.251782
R : Type u_4
S : Type ?u.251788
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α' : Type u_2
α'' : Type ?u.251883
f : α → α'
s : Set α
H : ∀ (a : α), a ∈ s → ∀ (b : α), b ∈ s → f a = f b → a = b
l : α →₀ M
h₁ : l ∈ ↑(supported M R s)
h₂ : (sum l fun a => single (f a)) = 0
x : α
this : DecidablePred fun x => x ∈ s
xs : ¬x ∈ s
h : ¬↑l x = ↑0 x
⊢ False