Finite intervals of finitely supported functions #
This file provides the LocallyFiniteOrder
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}
[DecidableEq ι]
[(i : ι) → Zero (α i)]
(s : Finset ι)
(t : (i : ι) → Finset (α i))
:
Finset (Π₀ (i : ι), α i)
Finitely supported product of finsets.
Equations
- s.dfinsupp t = Finset.map { toFun := fun (f : (a : ι) → a ∈ s → α a) => DFinsupp.mk s fun (i : ↑↑s) => f ↑i ⋯, inj' := ⋯ } (s.pi t)
Instances For
@[simp]
theorem
Finset.card_dfinsupp
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → Zero (α i)]
(s : Finset ι)
(t : (i : ι) → Finset (α i))
:
(s.dfinsupp t).card = ∏ i ∈ s, (t i).card
theorem
Finset.mem_dfinsupp_iff
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → Zero (α i)]
{s : Finset ι}
{f : Π₀ (i : ι), α i}
{t : (i : ι) → Finset (α i)}
[(i : ι) → DecidableEq (α i)]
:
@[simp]
theorem
Finset.mem_dfinsupp_iff_of_support_subset
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → Zero (α i)]
{s : Finset ι}
{f : Π₀ (i : ι), α i}
[(i : ι) → DecidableEq (α i)]
{t : Π₀ (i : ι), Finset (α i)}
(ht : t.support ⊆ s)
:
When t
is supported on s
, f ∈ s.dfinsupp t
precisely means that f
is pointwise in t
.
def
DFinsupp.rangeIcc
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
Π₀ (i : ι), Finset (α i)
Pointwise Finset.Icc
bundled as a DFinsupp
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
DFinsupp.rangeIcc_apply
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
(i : ι)
:
(f.rangeIcc g) i = Finset.Icc (f i) (g i)
theorem
DFinsupp.mem_rangeIcc_apply_iff
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
{f : Π₀ (i : ι), α i}
{g : Π₀ (i : ι), α i}
{i : ι}
{a : α i}
:
theorem
DFinsupp.support_rangeIcc_subset
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
{f : Π₀ (i : ι), α i}
{g : Π₀ (i : ι), α i}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
:
def
DFinsupp.pi
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[DecidableEq ι]
[(i : ι) → DecidableEq (α 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
- f.pi = f.support.dfinsupp ⇑f
Instances For
@[simp]
theorem
DFinsupp.mem_pi
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
{f : Π₀ (i : ι), Finset (α i)}
{g : Π₀ (i : ι), α i}
:
@[simp]
theorem
DFinsupp.card_pi
{ι : Type u_1}
{α : ι → Type u_2}
[(i : ι) → Zero (α i)]
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
(f : Π₀ (i : ι), Finset (α i))
:
f.pi.card = f.prod fun (i : ι) => ↑(f i).card
instance
DFinsupp.instLocallyFiniteOrder
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
:
LocallyFiniteOrder (Π₀ (i : ι), α i)
Equations
- DFinsupp.instLocallyFiniteOrder = LocallyFiniteOrder.ofIcc (Π₀ (i : ι), α i) (fun (f g : Π₀ (i : ι), α i) => (f.support ∪ g.support).dfinsupp ⇑(f.rangeIcc g)) ⋯
theorem
DFinsupp.Icc_eq
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
Finset.Icc f g = (f.support ∪ g.support).dfinsupp ⇑(f.rangeIcc g)
theorem
DFinsupp.card_Icc
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
(Finset.Icc f g).card = ∏ i ∈ f.support ∪ g.support, (Finset.Icc (f i) (g i)).card
theorem
DFinsupp.card_Ico
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
(Finset.Ico f g).card = ∏ i ∈ f.support ∪ g.support, (Finset.Icc (f i) (g i)).card - 1
theorem
DFinsupp.card_Ioc
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
(Finset.Ioc f g).card = ∏ i ∈ f.support ∪ g.support, (Finset.Icc (f i) (g i)).card - 1
theorem
DFinsupp.card_Ioo
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → PartialOrder (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
(Finset.Ioo f g).card = ∏ i ∈ f.support ∪ g.support, (Finset.Icc (f i) (g i)).card - 2
theorem
DFinsupp.card_uIcc
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → Lattice (α i)]
[(i : ι) → Zero (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
(g : Π₀ (i : ι), α i)
:
(Finset.uIcc f g).card = ∏ i ∈ f.support ∪ g.support, (Finset.uIcc (f i) (g i)).card
theorem
DFinsupp.card_Iic
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → CanonicallyOrderedAddCommMonoid (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
:
(Finset.Iic f).card = ∏ i ∈ f.support, (Finset.Iic (f i)).card
theorem
DFinsupp.card_Iio
{ι : Type u_1}
{α : ι → Type u_2}
[DecidableEq ι]
[(i : ι) → DecidableEq (α i)]
[(i : ι) → CanonicallyOrderedAddCommMonoid (α i)]
[(i : ι) → LocallyFiniteOrder (α i)]
(f : Π₀ (i : ι), α i)
:
(Finset.Iio f).card = ∏ i ∈ f.support, (Finset.Iic (f i)).card - 1