Theorem: Finsupp.mapDomain_support_of_injOn
File: Mathlib/Data/Finsupp/Basic.lean

tactic: intro x hx
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
⊢ image f s.support ⊆ (mapDomain f s).support

tactic: simp only [mem_image, exists_prop, mem_support_iff, Ne.def] at hx
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
x : β
hx : x ∈ image f s.support
⊢ x ∈ (mapDomain f s).support

tactic: rcases hx with ⟨hx_w, hx_h_left, rfl⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
x : β
hx : ∃ a, ¬↑s a = 0 ∧ f a = x
⊢ x ∈ (mapDomain f s).support

tactic: simp only [mem_support_iff, Ne.def]
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ f hx_w ∈ (mapDomain f s).support

tactic: rw [mapDomain_apply' (↑s.support : Set _) _ _ hf]
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ ¬↑(mapDomain f s) (f hx_w) = 0

tactic: exact hx_h_left
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ ¬↑s hx_w = 0

tactic: simp only [mem_coe, mem_support_iff, Ne.def]
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ hx_w ∈ ↑s.support

tactic: exact hx_h_left
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ ¬↑s hx_w = 0

tactic: exact Subset.refl _
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.199345
ι : Type ?u.199348
M : Type u_3
M' : Type ?u.199354
N : Type ?u.199357
P : Type ?u.199360
G : Type ?u.199363
H : Type ?u.199366
R : Type ?u.199369
S : Type ?u.199372
inst✝¹ : AddCommMonoid M
v v₁ v₂ : α →₀ M
inst✝ : DecidableEq β
f : α → β
s : α →₀ M
hf : Set.InjOn f ↑s.support
hx_w : α
hx_h_left : ¬↑s hx_w = 0
⊢ ↑s.support ⊆ ↑s.support