# Documentation

Mathlib.Data.Finsupp.NeLocus

# Locus of unequal values of finitely supported functions #

Let α N be two Types, assume that N has a 0 and let f g : α →₀ N→₀ N be finitely supported functions.

## Main definition #

• Finsupp.neLocus f g : Finset α, the finite subset of α where f and g differ.

In the case in which N is an additive group, Finsupp.neLocus f g coincides with Finsupp.support (f - g).

def Finsupp.neLocus {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] (f : α →₀ N) (g : α →₀ N) :

Given two finitely supported functions f g : α →₀ N→₀ N, Finsupp.neLocus f g is the Finset where f and g differ. This generalizes (f - g).support to situations without subtraction.

Equations
@[simp]
theorem Finsupp.mem_neLocus {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] {f : α →₀ N} {g : α →₀ N} {a : α} :
a f a g a
theorem Finsupp.not_mem_neLocus {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] {f : α →₀ N} {g : α →₀ N} {a : α} :
¬a f a = g a
@[simp]
theorem Finsupp.coe_neLocus {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] (f : α →₀ N) (g : α →₀ N) :
↑() = { x | f x g x }
@[simp]
theorem Finsupp.neLocus_eq_empty {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] {f : α →₀ N} {g : α →₀ N} :
f = g
@[simp]
theorem Finsupp.nonempty_neLocus_iff {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] {f : α →₀ N} {g : α →₀ N} :
f g
theorem Finsupp.neLocus_comm {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] (f : α →₀ N) (g : α →₀ N) :
=
@[simp]
theorem Finsupp.neLocus_zero_right {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] (f : α →₀ N) :
= f.support
@[simp]
theorem Finsupp.neLocus_zero_left {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : Zero N] (f : α →₀ N) :
= f.support
theorem Finsupp.subset_mapRange_neLocus {α : Type u_3} {M : Type u_2} {N : Type u_1} [inst : ] [inst : ] [inst : Zero N] [inst : ] [inst : Zero M] (f : α →₀ N) (g : α →₀ N) {F : NM} (F0 : F 0 = 0) :
theorem Finsupp.zipWith_neLocus_eq_left {α : Type u_4} {M : Type u_2} {N : Type u_1} {P : Type u_3} [inst : ] [inst : ] [inst : Zero M] [inst : ] [inst : Zero P] [inst : Zero N] {F : MNP} (F0 : F 0 0 = 0) (f : α →₀ M) (g₁ : α →₀ N) (g₂ : α →₀ N) (hF : ∀ (f : M), Function.Injective fun g => F f g) :
Finsupp.neLocus (Finsupp.zipWith F F0 f g₁) (Finsupp.zipWith F F0 f g₂) = Finsupp.neLocus g₁ g₂
theorem Finsupp.zipWith_neLocus_eq_right {α : Type u_4} {M : Type u_1} {N : Type u_3} {P : Type u_2} [inst : ] [inst : ] [inst : Zero M] [inst : ] [inst : Zero P] [inst : Zero N] {F : MNP} (F0 : F 0 0 = 0) (f₁ : α →₀ M) (f₂ : α →₀ M) (g : α →₀ N) (hF : ∀ (g : N), Function.Injective fun f => F f g) :
Finsupp.neLocus (Finsupp.zipWith F F0 f₁ g) (Finsupp.zipWith F F0 f₂ g) = Finsupp.neLocus f₁ f₂
theorem Finsupp.mapRange_neLocus_eq {α : Type u_3} {M : Type u_2} {N : Type u_1} [inst : ] [inst : ] [inst : ] [inst : Zero M] [inst : Zero N] (f : α →₀ N) (g : α →₀ N) {F : NM} (F0 : F 0 = 0) (hF : ) :
@[simp]
theorem Finsupp.neLocus_add_left {α : Type u_2} {N : Type u_1} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) (h : α →₀ N) :
Finsupp.neLocus (f + g) (f + h) =
@[simp]
theorem Finsupp.neLocus_add_right {α : Type u_2} {N : Type u_1} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) (h : α →₀ N) :
Finsupp.neLocus (f + h) (g + h) =
@[simp]
theorem Finsupp.neLocus_neg_neg {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
theorem Finsupp.neLocus_neg {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
theorem Finsupp.neLocus_eq_support_sub {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
= (f - g).support
@[simp]
theorem Finsupp.neLocus_sub_left {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g₁ : α →₀ N) (g₂ : α →₀ N) :
Finsupp.neLocus (f - g₁) (f - g₂) = Finsupp.neLocus g₁ g₂
@[simp]
theorem Finsupp.neLocus_sub_right {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f₁ : α →₀ N) (f₂ : α →₀ N) (g : α →₀ N) :
Finsupp.neLocus (f₁ - g) (f₂ - g) = Finsupp.neLocus f₁ f₂
@[simp]
theorem Finsupp.neLocus_self_add_right {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
Finsupp.neLocus f (f + g) = g.support
@[simp]
theorem Finsupp.neLocus_self_add_left {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
Finsupp.neLocus (f + g) f = g.support
@[simp]
theorem Finsupp.neLocus_self_sub_right {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
Finsupp.neLocus f (f - g) = g.support
@[simp]
theorem Finsupp.neLocus_self_sub_left {α : Type u_1} {N : Type u_2} [inst : ] [inst : ] [inst : ] (f : α →₀ N) (g : α →₀ N) :
Finsupp.neLocus (f - g) f = g.support