Support of a function #
In this file we define Function.support f = {x | f x ≠ 0} and prove its basic properties.
We also define Function.mulSupport f = {x | f x ≠ 1}.
mulSupport of a function is the set of points x such that f x ≠ 1.
Instances For
support of a function is the set of points x such that f x ≠ 0.
Instances For
theorem
Function.mulSupport_eq_preimage
{ι : Type u_1}
{M : Type u_3}
[One M]
(f : ι → M)
:
mulSupport f = f ⁻¹' {1}ᶜ
theorem
Function.notMem_mulSupport
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{x : ι}
:
x ∉ mulSupport f ↔ f x = 1
theorem
Function.notMem_support
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
{x : ι}
:
x ∉ support f ↔ f x = 0
@[simp]
theorem
Function.mem_mulSupport
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{x : ι}
:
x ∈ mulSupport f ↔ f x ≠ 1
@[simp]
theorem
Function.mem_support
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
{x : ι}
:
x ∈ support f ↔ f x ≠ 0
@[simp]
theorem
Function.mulSupport_subset_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set ι}
:
mulSupport f ⊆ s ↔ ∀ (x : ι), f x ≠ 1 → x ∈ s
@[simp]
theorem
Function.support_subset_iff
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
{s : Set ι}
:
support f ⊆ s ↔ ∀ (x : ι), f x ≠ 0 → x ∈ s
theorem
Function.mulSupport_subset_iff'
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set ι}
:
mulSupport f ⊆ s ↔ ∀ x ∉ s, f x = 1
theorem
Function.support_subset_iff'
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
{s : Set ι}
:
support f ⊆ s ↔ ∀ x ∉ s, f x = 0
theorem
Function.mulSupport_eq_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set ι}
:
mulSupport f = s ↔ (∀ x ∈ s, f x ≠ 1) ∧ ∀ x ∉ s, f x = 1
theorem
Function.support_eq_iff
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
{s : Set ι}
:
support f = s ↔ (∀ x ∈ s, f x ≠ 0) ∧ ∀ x ∉ s, f x = 0
theorem
Function.ext_iff_mulSupport
{ι : Type u_1}
{M : Type u_3}
[One M]
{f g : ι → M}
:
f = g ↔ mulSupport f = mulSupport g ∧ ∀ x ∈ mulSupport f, f x = g x
theorem
Function.mulSupport_update_of_ne_one
{ι : Type u_1}
{M : Type u_3}
[One M]
[DecidableEq ι]
(f : ι → M)
(x : ι)
{y : M}
(hy : y ≠ 1)
:
mulSupport (update f x y) = insert x (mulSupport f)
theorem
Function.mulSupport_update_one
{ι : Type u_1}
{M : Type u_3}
[One M]
[DecidableEq ι]
(f : ι → M)
(x : ι)
:
mulSupport (update f x 1) = mulSupport f \ {x}
theorem
Function.mulSupport_update_eq_ite
{ι : Type u_1}
{M : Type u_3}
[One M]
[DecidableEq ι]
[DecidableEq M]
(f : ι → M)
(x : ι)
(y : M)
:
mulSupport (update f x y) = if y = 1 then mulSupport f \ {x} else insert x (mulSupport f)
theorem
Function.mulSupport_extend_one_subset
{ι : Type u_1}
{κ : Type u_2}
{N : Type u_4}
[One N]
{f : ι → κ}
{g : ι → N}
:
mulSupport (extend f g 1) ⊆ f '' mulSupport g
theorem
Function.mulSupport_extend_one
{ι : Type u_1}
{κ : Type u_2}
{N : Type u_4}
[One N]
{f : ι → κ}
{g : ι → N}
(hf : Injective f)
:
mulSupport (extend f g 1) = f '' mulSupport g
theorem
Function.mulSupport_disjoint_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set ι}
:
Disjoint (mulSupport f) s ↔ Set.EqOn f 1 s
theorem
Function.disjoint_mulSupport_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set ι}
:
Disjoint s (mulSupport f) ↔ Set.EqOn f 1 s
@[simp]
theorem
Function.mulSupport_eq_empty_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
:
mulSupport f = ∅ ↔ f = 1
@[simp]
theorem
Function.support_eq_empty_iff
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
:
support f = ∅ ↔ f = 0
@[simp]
theorem
Function.mulSupport_nonempty_iff
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
:
(mulSupport f).Nonempty ↔ f ≠ 1
@[simp]
theorem
Subsingleton.mulSupport_eq
{ι : Type u_1}
{M : Type u_3}
[One M]
[Subsingleton M]
(f : ι → M)
:
Function.mulSupport f = ∅
theorem
Subsingleton.support_eq
{ι : Type u_1}
{M : Type u_3}
[Zero M]
[Subsingleton M]
(f : ι → M)
:
Function.support f = ∅
theorem
Function.range_subset_insert_image_mulSupport
{ι : Type u_1}
{M : Type u_3}
[One M]
(f : ι → M)
:
Set.range f ⊆ insert 1 (f '' mulSupport f)
theorem
Function.range_eq_image_or_of_mulSupport_subset
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
{k : Set ι}
(h : mulSupport f ⊆ k)
:
@[simp]
@[simp]
@[simp]
theorem
Function.mulSupport_fun_one
{ι : Type u_1}
{M : Type u_3}
[One M]
:
(mulSupport fun (x : ι) => 1) = ∅
@[simp]
theorem
Function.support_fun_zero
{ι : Type u_1}
{M : Type u_3}
[Zero M]
:
(support fun (x : ι) => 0) = ∅
theorem
Function.mulSupport_const
{ι : Type u_1}
{M : Type u_3}
[One M]
{c : M}
(hc : c ≠ 1)
:
(mulSupport fun (x : ι) => c) = Set.univ
theorem
Function.mulSupport_eq_univ
{ι : Type u_1}
{M : Type u_3}
[One M]
{f : ι → M}
(hf : ∀ (x : ι), f x ≠ 1)
:
mulSupport f = Set.univ
The multiplicative support of a function that is everywhere non-one is the whole space.
theorem
Function.support_eq_univ
{ι : Type u_1}
{M : Type u_3}
[Zero M]
{f : ι → M}
(hf : ∀ (x : ι), f x ≠ 0)
:
The support of a function that is everywhere nonzero is the whole space.
theorem
Function.mulSupport_binop_subset
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
{P : Type u_5}
[One M]
[One N]
[One P]
(op : M → N → P)
(op1 : op 1 1 = 1)
(f : ι → M)
(g : ι → N)
:
(mulSupport fun (x : ι) => op (f x) (g x)) ⊆ mulSupport f ∪ mulSupport g
theorem
Function.mulSupport_comp_subset
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
{g : M → N}
(hg : g 1 = 1)
(f : ι → M)
:
mulSupport (g ∘ f) ⊆ mulSupport f
theorem
Function.mulSupport_subset_comp
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
{g : M → N}
(hg : ∀ {x : M}, g x = 1 → x = 1)
(f : ι → M)
:
mulSupport f ⊆ mulSupport (g ∘ f)
theorem
Function.mulSupport_comp_eq
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
(g : M → N)
(hg : ∀ {x : M}, g x = 1 ↔ x = 1)
(f : ι → M)
:
mulSupport (g ∘ f) = mulSupport f
theorem
Function.mulSupport_comp_eq_of_range_subset
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
{g : M → N}
{f : ι → M}
(hg : ∀ {x : M}, x ∈ Set.range f → (g x = 1 ↔ x = 1))
:
mulSupport (g ∘ f) = mulSupport f
theorem
Function.mulSupport_comp_eq_preimage
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[One M]
(g : κ → M)
(f : ι → κ)
:
mulSupport (g ∘ f) = f ⁻¹' mulSupport g
theorem
Function.mulSupport_prodMk
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
(f : ι → M)
(g : ι → N)
:
(mulSupport fun (x : ι) => (f x, g x)) = mulSupport f ∪ mulSupport g
theorem
Function.mulSupport_prodMk'
{ι : Type u_1}
{M : Type u_3}
{N : Type u_4}
[One M]
[One N]
(f : ι → M × N)
:
mulSupport f = (mulSupport fun (x : ι) => (f x).1) ∪ mulSupport fun (x : ι) => (f x).2
theorem
Function.mulSupport_along_fiber_subset
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[One M]
(f : ι × κ → M)
(i : ι)
:
(mulSupport fun (j : κ) => f (i, j)) ⊆ Prod.snd '' mulSupport f
theorem
Function.mulSupport_curry
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[One M]
(f : ι × κ → M)
:
mulSupport (curry f) = Prod.fst '' mulSupport f
theorem
Function.mulSupport_fun_curry
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[One M]
(f : ι × κ → M)
:
(mulSupport fun (i : ι) (j : κ) => f (i, j)) = Prod.fst '' mulSupport f
theorem
Set.image_inter_mulSupport_eq
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[One M]
{f : ι → M}
{s : Set κ}
{g : κ → ι}
:
g '' s ∩ Function.mulSupport f = g '' (s ∩ Function.mulSupport (f ∘ g))
theorem
Set.image_inter_support_eq
{ι : Type u_1}
{κ : Type u_2}
{M : Type u_3}
[Zero M]
{f : ι → M}
{s : Set κ}
{g : κ → ι}
:
g '' s ∩ Function.support f = g '' (s ∩ Function.support (f ∘ g))
theorem
Pi.mulSupport_mulSingle_subset
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i : ι}
{a : M}
:
Function.mulSupport (mulSingle i a) ⊆ {i}
theorem
Pi.support_single_subset
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i : ι}
{a : M}
:
Function.support (single i a) ⊆ {i}
theorem
Pi.mulSupport_mulSingle_one
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i : ι}
:
Function.mulSupport (mulSingle i 1) = ∅
theorem
Pi.support_single_zero
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i : ι}
:
Function.support (single i 0) = ∅
@[simp]
theorem
Pi.mulSupport_mulSingle_of_ne
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i : ι}
{a : M}
(h : a ≠ 1)
:
Function.mulSupport (mulSingle i a) = {i}
@[simp]
theorem
Pi.support_single_of_ne
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i : ι}
{a : M}
(h : a ≠ 0)
:
Function.support (single i a) = {i}
theorem
Pi.mulSupport_mulSingle
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i : ι}
{a : M}
[DecidableEq M]
:
Function.mulSupport (mulSingle i a) = if a = 1 then ∅ else {i}
theorem
Pi.support_single
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i : ι}
{a : M}
[DecidableEq M]
:
Function.support (single i a) = if a = 0 then ∅ else {i}
theorem
Pi.subsingleton_mulSupport_mulSingle
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i : ι}
{a : M}
:
(Function.mulSupport (mulSingle i a)).Subsingleton
theorem
Pi.subsingleton_support_single
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i : ι}
{a : M}
:
(Function.support (single i a)).Subsingleton
theorem
Pi.mulSupport_mulSingle_disjoint
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[One M]
{i j : ι}
{a b : M}
(ha : a ≠ 1)
(hb : b ≠ 1)
:
Disjoint (Function.mulSupport (mulSingle i a)) (Function.mulSupport (mulSingle j b)) ↔ i ≠ j
theorem
Pi.support_single_disjoint
{ι : Type u_1}
{M : Type u_3}
[DecidableEq ι]
[Zero M]
{i j : ι}
{a b : M}
(ha : a ≠ 0)
(hb : b ≠ 0)
:
Disjoint (Function.support (single i a)) (Function.support (single j b)) ↔ i ≠ j