mathlib3 documentation

data.dfinsupp.interval

Finite intervals of finitely supported functions #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This file provides the locally_finite_order instance for Π₀ i, α i when α itself is locally finite and calculates the cardinality of its finite intervals.

def finset.dfinsupp {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), has_zero (α i)] (s : finset ι) (t : Π (i : ι), finset (α i)) :
finset (Π₀ (i : ι), α i)

Finitely supported product of finsets.

Equations
@[simp]
theorem finset.card_dfinsupp {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), has_zero (α i)] (s : finset ι) (t : Π (i : ι), finset (α i)) :
(s.dfinsupp t).card = s.prod (λ (i : ι), (t i).card)
theorem finset.mem_dfinsupp_iff {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), has_zero (α i)] {s : finset ι} {f : Π₀ (i : ι), α i} {t : Π (i : ι), finset (α i)} [Π (i : ι), decidable_eq (α i)] :
f ∈ s.dfinsupp t ↔ f.support ⊆ s ∧ ∀ (i : ι), i ∈ s → ⇑f i ∈ t i
@[simp]
theorem finset.mem_dfinsupp_iff_of_support_subset {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), has_zero (α i)] {s : finset ι} {f : Π₀ (i : ι), α i} [Π (i : ι), decidable_eq (α i)] {t : Π₀ (i : ι), finset (α i)} (ht : t.support ⊆ s) :
f ∈ s.dfinsupp ⇑t ↔ ∀ (i : ι), ⇑f i ∈ ⇑t i

When t is supported on s, f ∈ s.dfinsupp t precisely means that f is pointwise in t.

def dfinsupp.singleton {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] (f : Π₀ (i : ι), α i) :
Π₀ (i : ι), finset (α i)

Pointwise finset.singleton bundled as a dfinsupp.

Equations
theorem dfinsupp.mem_singleton_apply_iff {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] {f : Π₀ (i : ι), α i} {i : ι} {a : α i} :
a ∈ ⇑(f.singleton) i ↔ a = ⇑f i
def dfinsupp.range_Icc {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
Π₀ (i : ι), finset (α i)

Pointwise finset.Icc bundled as a dfinsupp.

Equations
@[simp]
theorem dfinsupp.range_Icc_apply {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) (i : ι) :
⇑(f.range_Icc g) i = finset.Icc (⇑f i) (⇑g i)
theorem dfinsupp.mem_range_Icc_apply_iff {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), locally_finite_order (α i)] {f g : Π₀ (i : ι), α i} {i : ι} {a : α i} :
a ∈ ⇑(f.range_Icc g) i ↔ ⇑f i ≤ a ∧ a ≤ ⇑g i
theorem dfinsupp.support_range_Icc_subset {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), locally_finite_order (α i)] {f g : Π₀ (i : ι), α i} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] :
def dfinsupp.pi {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] (f : Π₀ (i : ι), finset (α i)) :
finset (Π₀ (i : ι), α i)

Given a finitely supported function f : Π₀ i, finset (α i), one can define the finset f.pi of all finitely supported functions whose value at i is in f i for all i.

Equations
@[simp]
theorem dfinsupp.mem_pi {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] {f : Π₀ (i : ι), finset (α i)} {g : Π₀ (i : ι), α i} :
g ∈ f.pi ↔ ∀ (i : ι), ⇑g i ∈ ⇑f i
@[simp]
theorem dfinsupp.card_pi {ι : Type u_1} {α : ι → Type u_2} [Π (i : ι), has_zero (α i)] [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] (f : Π₀ (i : ι), finset (α i)) :
f.pi.card = f.prod (λ (i : ι), ↑((⇑f i).card))
@[protected, instance]
def dfinsupp.locally_finite_order {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] :
Equations
theorem dfinsupp.Icc_eq {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
theorem dfinsupp.card_Icc {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
(finset.Icc f g).card = (f.support ∪ g.support).prod (λ (i : ι), (finset.Icc (⇑f i) (⇑g i)).card)
theorem dfinsupp.card_Ico {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
(finset.Ico f g).card = (f.support ∪ g.support).prod (λ (i : ι), (finset.Icc (⇑f i) (⇑g i)).card) - 1
theorem dfinsupp.card_Ioc {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
(finset.Ioc f g).card = (f.support ∪ g.support).prod (λ (i : ι), (finset.Icc (⇑f i) (⇑g i)).card) - 1
theorem dfinsupp.card_Ioo {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), partial_order (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
(finset.Ioo f g).card = (f.support ∪ g.support).prod (λ (i : ι), (finset.Icc (⇑f i) (⇑g i)).card) - 2
theorem dfinsupp.card_uIcc {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), lattice (α i)] [Π (i : ι), has_zero (α i)] [Π (i : ι), locally_finite_order (α i)] (f g : Π₀ (i : ι), α i) :
(finset.uIcc f g).card = (f.support ∪ g.support).prod (λ (i : ι), (finset.uIcc (⇑f i) (⇑g i)).card)
theorem dfinsupp.card_Iic {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), canonically_ordered_add_monoid (α i)] [Π (i : ι), locally_finite_order (α i)] (f : Π₀ (i : ι), α i) :
(finset.Iic f).card = f.support.prod (λ (i : ι), (finset.Iic (⇑f i)).card)
theorem dfinsupp.card_Iio {ι : Type u_1} {α : ι → Type u_2} [decidable_eq ι] [Π (i : ι), decidable_eq (α i)] [Π (i : ι), canonically_ordered_add_monoid (α i)] [Π (i : ι), locally_finite_order (α i)] (f : Π₀ (i : ι), α i) :
(finset.Iio f).card = f.support.prod (λ (i : ι), (finset.Iic (⇑f i)).card) - 1