Equitable functions #
This file defines equitable functions.
A function f
is equitable on a set s
if f a₁ ≤ f a₂ + 1
for all a₁, a₂ ∈ s
. This is mostly
useful when the codomain of f
is ℕ
or ℤ
(or more generally a successor order).
TODO #
ℕ
can be replaced by any SuccOrder
+ ConditionallyCompleteMonoid
, but we don't have the
latter yet.
@[simp]
theorem
Set.not_equitableOn
{α : Type u_1}
{β : Type u_2}
[LinearOrder β]
[Add β]
[One β]
{s : Set α}
{f : α → β}
:
¬Set.EquitableOn s f ↔ ∃ a ∈ s, ∃ b ∈ s, f b + 1 < f a
theorem
Set.Subsingleton.equitableOn
{α : Type u_1}
{β : Type u_2}
[OrderedSemiring β]
{s : Set α}
(hs : Set.Subsingleton s)
(f : α → β)
:
Set.EquitableOn s f
theorem
Set.equitableOn_singleton
{α : Type u_1}
{β : Type u_2}
[OrderedSemiring β]
(a : α)
(f : α → β)
:
Set.EquitableOn {a} f
theorem
Finset.equitableOn_iff_le_le_add_one
{α : Type u_1}
{s : Finset α}
{f : α → ℕ}
:
Set.EquitableOn (↑s) f ↔ ∀ a ∈ s, (Finset.sum s fun (i : α) => f i) / s.card ≤ f a ∧ f a ≤ (Finset.sum s fun (i : α) => f i) / s.card + 1
theorem
Finset.EquitableOn.le
{α : Type u_1}
{s : Finset α}
{f : α → ℕ}
{a : α}
(h : Set.EquitableOn (↑s) f)
(ha : a ∈ s)
:
(Finset.sum s fun (i : α) => f i) / s.card ≤ f a
theorem
Finset.EquitableOn.le_add_one
{α : Type u_1}
{s : Finset α}
{f : α → ℕ}
{a : α}
(h : Set.EquitableOn (↑s) f)
(ha : a ∈ s)
:
f a ≤ (Finset.sum s fun (i : α) => f i) / s.card + 1
theorem
Finset.equitableOn_iff
{α : Type u_1}
{s : Finset α}
{f : α → ℕ}
:
Set.EquitableOn (↑s) f ↔ ∀ a ∈ s, f a = (Finset.sum s fun (i : α) => f i) / s.card ∨ f a = (Finset.sum s fun (i : α) => f i) / s.card + 1