mathlib documentation

combinatorics.set_family.lym

Lubell-Yamamoto-Meshalkin inequality and Sperner's theorem #

This file proves the local LYM and LYM inequalities as well as Sperner's theorem.

Main declarations #

TODO #

Prove upward local LYM.

Provide equality cases. Local LYM gives that the equality case of LYM and Sperner is precisely when 𝒜 is a middle layer.

falling could be useful more generally in grade orders.

References #

Tags #

shadow, lym, slice, sperner, antichain

Local LYM inequality #

theorem finset.card_mul_le_card_shadow_mul {α : Type u_2} [decidable_eq α] [fintype α] {𝒜 : finset (finset α)} {r : } (h𝒜 : set.sized r 𝒜) :
𝒜.card * r 𝒜.shadow.card * (fintype.card α - r + 1)

The downward local LYM inequality, with cancelled denominators. 𝒜 takes up less of α^(r) (the finsets of card r) than ∂𝒜 takes up of α^(r - 1).

theorem finset.card_div_choose_le_card_shadow_div_choose {𝕜 : Type u_1} {α : Type u_2} [linear_ordered_field 𝕜] [decidable_eq α] [fintype α] {𝒜 : finset (finset α)} {r : } (hr : r 0) (h𝒜 : set.sized r 𝒜) :
(𝒜.card) / ((fintype.card α).choose r) (𝒜.shadow.card) / ((fintype.card α).choose (r - 1))

The downward local LYM inequality. 𝒜 takes up less of α^(r) (the finsets of card r) than ∂𝒜 takes up of α^(r - 1).

LYM inequality #

def finset.falling {α : Type u_2} [decidable_eq α] (k : ) (𝒜 : finset (finset α)) :

falling k 𝒜 is all the finsets of cardinality k which are a subset of something in 𝒜.

Equations
theorem finset.mem_falling {α : Type u_2} [decidable_eq α] {k : } {𝒜 : finset (finset α)} {s : finset α} :
s finset.falling k 𝒜 ( (t : finset α) (H : t 𝒜), s t) s.card = k
theorem finset.sized_falling {α : Type u_2} [decidable_eq α] (k : ) (𝒜 : finset (finset α)) :
theorem finset.slice_subset_falling {α : Type u_2} [decidable_eq α] (k : ) (𝒜 : finset (finset α)) :
𝒜.slice k finset.falling k 𝒜
theorem finset.falling_zero_subset {α : Type u_2} [decidable_eq α] (𝒜 : finset (finset α)) :
theorem finset.slice_union_shadow_falling_succ {α : Type u_2} [decidable_eq α] (k : ) (𝒜 : finset (finset α)) :
𝒜.slice k (finset.falling (k + 1) 𝒜).shadow = finset.falling k 𝒜
theorem is_antichain.disjoint_slice_shadow_falling {α : Type u_2} [decidable_eq α] {𝒜 : finset (finset α)} {m n : } (h𝒜 : is_antichain has_subset.subset 𝒜) :

The shadow of falling m 𝒜 is disjoint from the n-sized elements of 𝒜, thanks to the antichain property.

theorem finset.le_card_falling_div_choose {𝕜 : Type u_1} {α : Type u_2} [linear_ordered_field 𝕜] [decidable_eq α] {k : } {𝒜 : finset (finset α)} [fintype α] (hk : k fintype.card α) (h𝒜 : is_antichain has_subset.subset 𝒜) :
(finset.range (k + 1)).sum (λ (r : ), ((𝒜.slice (fintype.card α - r)).card) / ((fintype.card α).choose (fintype.card α - r))) ((finset.falling (fintype.card α - k) 𝒜).card) / ((fintype.card α).choose (fintype.card α - k))

A bound on any top part of the sum in LYM in terms of the size of falling k 𝒜.

theorem finset.sum_card_slice_div_choose_le_one {𝕜 : Type u_1} {α : Type u_2} [linear_ordered_field 𝕜] {𝒜 : finset (finset α)} [fintype α] (h𝒜 : is_antichain has_subset.subset 𝒜) :
(finset.range (fintype.card α + 1)).sum (λ (r : ), ((𝒜.slice r).card) / ((fintype.card α).choose r)) 1

The Lubell-Yamamoto-Meshalkin inequality. If 𝒜 is an antichain, then the sum of the proportion of elements it takes from each layer is less than 1.

Sperner's theorem #

theorem is_antichain.sperner {α : Type u_2} [fintype α] {𝒜 : finset (finset α)} (h𝒜 : is_antichain has_subset.subset 𝒜) :

Sperner's theorem. The size of an antichain in finset α is bounded by the size of the maximal layer in finset α. This precisely means that finset α is a Sperner order.