combinatorics.set_family.lym ⟷ Mathlib.Combinatorics.SetFamily.LYM

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -5,7 +5,7 @@ Authors: Bhavik Mehta, Alena Gusakov, YaΓ«l Dillies
 -/
 import Algebra.BigOperators.Ring
 import Algebra.Order.Field.Basic
-import Combinatorics.DoubleCounting
+import Combinatorics.Enumerative.DoubleCounting
 import Combinatorics.SetFamily.Shadow
 import Data.Rat.Order
 
Diff
@@ -78,11 +78,11 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
   rw [← hπ’œ.shadow hs, ← card_compl, ← card_image_of_inj_on (insert_inj_on' _)]
   refine' card_le_of_subset fun t ht => _
   infer_instance
-  rw [mem_bipartite_above] at ht 
+  rw [mem_bipartite_above] at ht
   have : βˆ… βˆ‰ π’œ := by
     rw [← mem_coe, hπ’œ.empty_mem_iff, coe_eq_singleton]
     rintro rfl
-    rwa [shadow_singleton_empty] at hs 
+    rwa [shadow_singleton_empty] at hs
   obtain ⟨a, ha, rfl⟩ :=
     exists_eq_insert_iff.2 ⟨ht.2, by rw [(sized_shadow_iff this).1 hπ’œ.shadow ht.1, hπ’œ.shadow hs]⟩
   exact mem_image_of_mem _ (mem_compl.2 ha)
@@ -103,7 +103,7 @@ theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0) (hπ’œ : (π’œ
   Β· cases r
     Β· exact (hr rfl).elim
     rw [Nat.succ_eq_add_one] at *
-    rw [tsub_add_eq_add_tsub hr', add_tsub_add_eq_tsub_right] at hπ’œ 
+    rw [tsub_add_eq_add_tsub hr', add_tsub_add_eq_tsub_right] at hπ’œ
     apply le_of_mul_le_mul_right _ (pos_iff_ne_zero.2 hr)
     convert Nat.mul_le_mul_right ((Fintype.card Ξ±).choose r) hπ’œ using 1
     Β· simp [mul_assoc, Nat.choose_succ_right_eq]
@@ -188,7 +188,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) ((βˆ‚ ) (falling n π’œ)) :=
   disjoint_right.2 fun s h₁ hβ‚‚ =>
     by
-    simp_rw [mem_shadow_iff, exists_prop, mem_falling] at h₁ 
+    simp_rw [mem_shadow_iff, exists_prop, mem_falling] at h₁
     obtain ⟨s, ⟨⟨t, ht, hst⟩, hs⟩, a, ha, rfl⟩ := h₁
     refine' hπ’œ (slice_subset hβ‚‚) ht _ ((erase_subset _ _).trans hst)
     rintro rfl
@@ -256,13 +256,13 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     βˆ‘ r in Iic (Fintype.card Ξ±), ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) ≀
       1
     by
-    rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
+    rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this
     norm_cast
     exact choose_pos (Nat.div_le_self _ _)
   rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
   refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
-  rw [mem_range] at hr 
-  refine' div_le_div_of_le_left _ _ _ <;> norm_cast
+  rw [mem_range] at hr
+  refine' div_le_div_of_nonneg_left _ _ _ <;> norm_cast
   Β· exact Nat.zero_le _
   Β· exact choose_pos (lt_succ_iff.1 hr)
   Β· exact choose_le_middle _ _
Diff
@@ -230,6 +230,14 @@ theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
     βˆ‘ r in range (Fintype.card Ξ± + 1), ((π’œ # r).card : π•œ) / (Fintype.card Ξ±).choose r ≀ 1 := by
   classical
+  rw [← sum_flip]
+  refine' (le_card_falling_div_choose le_rfl hπ’œ).trans _
+  rw [div_le_iff] <;> norm_cast
+  Β·
+    simpa only [Nat.sub_self, one_mul, Nat.choose_zero_right, falling] using
+      (sized_falling 0 π’œ).card_le
+  Β· rw [tsub_self, choose_zero_right]
+    exact zero_lt_one
 #align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_one
 -/
 
@@ -242,7 +250,22 @@ end Lym
 maximal layer in `finset Ξ±`. This precisely means that `finset Ξ±` is a Sperner order. -/
 theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
-    π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by classical
+    π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by
+  classical
+  suffices
+    βˆ‘ r in Iic (Fintype.card Ξ±), ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) ≀
+      1
+    by
+    rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
+    norm_cast
+    exact choose_pos (Nat.div_le_self _ _)
+  rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
+  refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
+  rw [mem_range] at hr 
+  refine' div_le_div_of_le_left _ _ _ <;> norm_cast
+  Β· exact Nat.zero_le _
+  Β· exact choose_pos (lt_succ_iff.1 hr)
+  Β· exact choose_le_middle _ _
 #align is_antichain.sperner IsAntichain.sperner
 
 end Finset
Diff
@@ -230,14 +230,6 @@ theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
     βˆ‘ r in range (Fintype.card Ξ± + 1), ((π’œ # r).card : π•œ) / (Fintype.card Ξ±).choose r ≀ 1 := by
   classical
-  rw [← sum_flip]
-  refine' (le_card_falling_div_choose le_rfl hπ’œ).trans _
-  rw [div_le_iff] <;> norm_cast
-  Β·
-    simpa only [Nat.sub_self, one_mul, Nat.choose_zero_right, falling] using
-      (sized_falling 0 π’œ).card_le
-  Β· rw [tsub_self, choose_zero_right]
-    exact zero_lt_one
 #align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_one
 -/
 
@@ -250,22 +242,7 @@ end Lym
 maximal layer in `finset Ξ±`. This precisely means that `finset Ξ±` is a Sperner order. -/
 theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
-    π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by
-  classical
-  suffices
-    βˆ‘ r in Iic (Fintype.card Ξ±), ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) ≀
-      1
-    by
-    rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
-    norm_cast
-    exact choose_pos (Nat.div_le_self _ _)
-  rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
-  refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
-  rw [mem_range] at hr 
-  refine' div_le_div_of_le_left _ _ _ <;> norm_cast
-  Β· exact Nat.zero_le _
-  Β· exact choose_pos (lt_succ_iff.1 hr)
-  Β· exact choose_le_middle _ _
+    π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by classical
 #align is_antichain.sperner IsAntichain.sperner
 
 end Finset
Diff
@@ -129,7 +129,7 @@ variable [DecidableEq Ξ±] (k : β„•) (π’œ : Finset (Finset Ξ±))
 #print Finset.falling /-
 /-- `falling k π’œ` is all the finsets of cardinality `k` which are a subset of something in `π’œ`. -/
 def falling : Finset (Finset Ξ±) :=
-  π’œ.sup <| powersetLen k
+  π’œ.sup <| powersetCard k
 #align finset.falling Finset.falling
 -/
 
Diff
@@ -3,11 +3,11 @@ Copyright (c) 2022 Bhavik Mehta, YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Alena Gusakov, YaΓ«l Dillies
 -/
-import Mathbin.Algebra.BigOperators.Ring
-import Mathbin.Algebra.Order.Field.Basic
-import Mathbin.Combinatorics.DoubleCounting
-import Mathbin.Combinatorics.SetFamily.Shadow
-import Mathbin.Data.Rat.Order
+import Algebra.BigOperators.Ring
+import Algebra.Order.Field.Basic
+import Combinatorics.DoubleCounting
+import Combinatorics.SetFamily.Shadow
+import Data.Rat.Order
 
 #align_import combinatorics.set_family.lym from "leanprover-community/mathlib"@"0ebfdb71919ac6ca5d7fbc61a082fa2519556818"
 
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2022 Bhavik Mehta, YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Alena Gusakov, YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module combinatorics.set_family.lym
-! leanprover-community/mathlib commit 0ebfdb71919ac6ca5d7fbc61a082fa2519556818
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.BigOperators.Ring
 import Mathbin.Algebra.Order.Field.Basic
@@ -14,6 +9,8 @@ import Mathbin.Combinatorics.DoubleCounting
 import Mathbin.Combinatorics.SetFamily.Shadow
 import Mathbin.Data.Rat.Order
 
+#align_import combinatorics.set_family.lym from "leanprover-community/mathlib"@"0ebfdb71919ac6ca5d7fbc61a082fa2519556818"
+
 /-!
 # Lubell-Yamamoto-Meshalkin inequality and Sperner's theorem
 
Diff
@@ -92,6 +92,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 #align finset.card_mul_le_card_shadow_mul Finset.card_mul_le_card_shadow_mul
 -/
 
+#print Finset.card_div_choose_le_card_shadow_div_choose /-
 /-- The downward **local LYM inequality**. `π’œ` takes up less of `Ξ±^(r)` (the finsets of card `r`)
 than `βˆ‚π’œ` takes up of `Ξ±^(r - 1)`. -/
 theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0) (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
@@ -115,6 +116,7 @@ theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0) (hπ’œ : (π’œ
   Β· exact Nat.choose_pos hr'
   Β· exact Nat.choose_pos (r.pred_le.trans hr')
 #align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_choose
+-/
 
 end LocalLym
 
@@ -136,9 +138,11 @@ def falling : Finset (Finset Ξ±) :=
 
 variable {π’œ k} {s : Finset Ξ±}
 
+#print Finset.mem_falling /-
 theorem mem_falling : s ∈ falling k π’œ ↔ (βˆƒ t ∈ π’œ, s βŠ† t) ∧ s.card = k := by
   simp_rw [falling, mem_sup, mem_powerset_len, exists_and_right]
 #align finset.mem_falling Finset.mem_falling
+-/
 
 variable (π’œ k)
 
@@ -194,6 +198,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     exact not_mem_erase _ _ (hst ha)
 #align is_antichain.disjoint_slice_shadow_falling IsAntichain.disjoint_slice_shadow_falling
 
+#print Finset.le_card_falling_div_choose /-
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
@@ -215,11 +220,13 @@ theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
           sized_falling _ _)
       _
 #align finset.le_card_falling_div_choose Finset.le_card_falling_div_choose
+-/
 
 end Falling
 
 variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 
+#print Finset.sum_card_slice_div_choose_le_one /-
 /-- 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`. -/
 theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
@@ -235,6 +242,7 @@ theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
   Β· rw [tsub_self, choose_zero_right]
     exact zero_lt_one
 #align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_one
+-/
 
 end Lym
 
Diff
@@ -197,8 +197,8 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
-    (βˆ‘ r in range (k + 1),
-        ((π’œ # (Fintype.card Ξ± - r)).card : π•œ) / (Fintype.card Ξ±).choose (Fintype.card Ξ± - r)) ≀
+    βˆ‘ r in range (k + 1),
+        ((π’œ # (Fintype.card Ξ± - r)).card : π•œ) / (Fintype.card Ξ±).choose (Fintype.card Ξ± - r) ≀
       (falling (Fintype.card Ξ± - k) π’œ).card / (Fintype.card Ξ±).choose (Fintype.card Ξ± - k) :=
   by
   induction' k with k ih
@@ -224,7 +224,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 proportion of elements it takes from each layer is less than `1`. -/
 theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
-    (βˆ‘ r in range (Fintype.card Ξ± + 1), ((π’œ # r).card : π•œ) / (Fintype.card Ξ±).choose r) ≀ 1 := by
+    βˆ‘ r in range (Fintype.card Ξ± + 1), ((π’œ # r).card : π•œ) / (Fintype.card Ξ±).choose r ≀ 1 := by
   classical
   rw [← sum_flip]
   refine' (le_card_falling_div_choose le_rfl hπ’œ).trans _
@@ -248,8 +248,7 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by
   classical
   suffices
-    (βˆ‘ r in Iic (Fintype.card Ξ±),
-        ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀
+    βˆ‘ r in Iic (Fintype.card Ξ±), ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) ≀
       1
     by
     rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
Diff
@@ -226,14 +226,14 @@ theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
     (βˆ‘ r in range (Fintype.card Ξ± + 1), ((π’œ # r).card : π•œ) / (Fintype.card Ξ±).choose r) ≀ 1 := by
   classical
-    rw [← sum_flip]
-    refine' (le_card_falling_div_choose le_rfl hπ’œ).trans _
-    rw [div_le_iff] <;> norm_cast
-    Β·
-      simpa only [Nat.sub_self, one_mul, Nat.choose_zero_right, falling] using
-        (sized_falling 0 π’œ).card_le
-    Β· rw [tsub_self, choose_zero_right]
-      exact zero_lt_one
+  rw [← sum_flip]
+  refine' (le_card_falling_div_choose le_rfl hπ’œ).trans _
+  rw [div_le_iff] <;> norm_cast
+  Β·
+    simpa only [Nat.sub_self, one_mul, Nat.choose_zero_right, falling] using
+      (sized_falling 0 π’œ).card_le
+  Β· rw [tsub_self, choose_zero_right]
+    exact zero_lt_one
 #align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_one
 
 end Lym
@@ -247,21 +247,21 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
     π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by
   classical
-    suffices
-      (βˆ‘ r in Iic (Fintype.card Ξ±),
-          ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀
-        1
-      by
-      rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
-      norm_cast
-      exact choose_pos (Nat.div_le_self _ _)
-    rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
-    refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
-    rw [mem_range] at hr 
-    refine' div_le_div_of_le_left _ _ _ <;> norm_cast
-    Β· exact Nat.zero_le _
-    Β· exact choose_pos (lt_succ_iff.1 hr)
-    Β· exact choose_le_middle _ _
+  suffices
+    (βˆ‘ r in Iic (Fintype.card Ξ±),
+        ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀
+      1
+    by
+    rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
+    norm_cast
+    exact choose_pos (Nat.div_le_self _ _)
+  rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
+  refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
+  rw [mem_range] at hr 
+  refine' div_le_div_of_le_left _ _ _ <;> norm_cast
+  Β· exact Nat.zero_le _
+  Β· exact choose_pos (lt_succ_iff.1 hr)
+  Β· exact choose_le_middle _ _
 #align is_antichain.sperner IsAntichain.sperner
 
 end Finset
Diff
@@ -81,11 +81,11 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
   rw [← hπ’œ.shadow hs, ← card_compl, ← card_image_of_inj_on (insert_inj_on' _)]
   refine' card_le_of_subset fun t ht => _
   infer_instance
-  rw [mem_bipartite_above] at ht
+  rw [mem_bipartite_above] at ht 
   have : βˆ… βˆ‰ π’œ := by
     rw [← mem_coe, hπ’œ.empty_mem_iff, coe_eq_singleton]
     rintro rfl
-    rwa [shadow_singleton_empty] at hs
+    rwa [shadow_singleton_empty] at hs 
   obtain ⟨a, ha, rfl⟩ :=
     exists_eq_insert_iff.2 ⟨ht.2, by rw [(sized_shadow_iff this).1 hπ’œ.shadow ht.1, hπ’œ.shadow hs]⟩
   exact mem_image_of_mem _ (mem_compl.2 ha)
@@ -105,7 +105,7 @@ theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0) (hπ’œ : (π’œ
   Β· cases r
     Β· exact (hr rfl).elim
     rw [Nat.succ_eq_add_one] at *
-    rw [tsub_add_eq_add_tsub hr', add_tsub_add_eq_tsub_right] at hπ’œ
+    rw [tsub_add_eq_add_tsub hr', add_tsub_add_eq_tsub_right] at hπ’œ 
     apply le_of_mul_le_mul_right _ (pos_iff_ne_zero.2 hr)
     convert Nat.mul_le_mul_right ((Fintype.card Ξ±).choose r) hπ’œ using 1
     Β· simp [mul_assoc, Nat.choose_succ_right_eq]
@@ -187,7 +187,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) ((βˆ‚ ) (falling n π’œ)) :=
   disjoint_right.2 fun s h₁ hβ‚‚ =>
     by
-    simp_rw [mem_shadow_iff, exists_prop, mem_falling] at h₁
+    simp_rw [mem_shadow_iff, exists_prop, mem_falling] at h₁ 
     obtain ⟨s, ⟨⟨t, ht, hst⟩, hs⟩, a, ha, rfl⟩ := h₁
     refine' hπ’œ (slice_subset hβ‚‚) ht _ ((erase_subset _ _).trans hst)
     rintro rfl
@@ -252,12 +252,12 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
           ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀
         1
       by
-      rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this
+      rwa [← sum_div, ← Nat.cast_sum, div_le_one, cast_le, sum_card_slice] at this 
       norm_cast
       exact choose_pos (Nat.div_le_self _ _)
     rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
     refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
-    rw [mem_range] at hr
+    rw [mem_range] at hr 
     refine' div_le_div_of_le_left _ _ _ <;> norm_cast
     Β· exact Nat.zero_le _
     Β· exact choose_pos (lt_succ_iff.1 hr)
Diff
@@ -53,7 +53,7 @@ shadow, lym, slice, sperner, antichain
 
 open Finset Nat
 
-open BigOperators FinsetFamily
+open scoped BigOperators FinsetFamily
 
 variable {π•œ Ξ± : Type _} [LinearOrderedField π•œ]
 
Diff
@@ -92,12 +92,6 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 #align finset.card_mul_le_card_shadow_mul Finset.card_mul_le_card_shadow_mul
 -/
 
-/- warning: finset.card_div_choose_le_card_shadow_div_choose -> Finset.card_div_choose_le_card_shadow_div_choose is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> (Set.Sized.{u2} Ξ± r (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) r (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
-Case conversion may be inaccurate. Consider using '#align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_chooseβ‚“'. -/
 /-- The downward **local LYM inequality**. `π’œ` takes up less of `Ξ±^(r)` (the finsets of card `r`)
 than `βˆ‚π’œ` takes up of `Ξ±^(r - 1)`. -/
 theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0) (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
@@ -142,12 +136,6 @@ def falling : Finset (Finset Ξ±) :=
 
 variable {π’œ k} {s : Finset Ξ±}
 
-/- warning: finset.mem_falling -> Finset.mem_falling is a dubious translation:
-lean 3 declaration is
-  forall {Ξ± : Type.{u1}} [_inst_2 : DecidableEq.{succ u1} Ξ±] {k : Nat} {π’œ : Finset.{u1} (Finset.{u1} Ξ±)} {s : Finset.{u1} Ξ±}, Iff (Membership.Mem.{u1, u1} (Finset.{u1} Ξ±) (Finset.{u1} (Finset.{u1} Ξ±)) (Finset.hasMem.{u1} (Finset.{u1} Ξ±)) s (Finset.falling.{u1} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) k π’œ)) (And (Exists.{succ u1} (Finset.{u1} Ξ±) (fun (t : Finset.{u1} Ξ±) => Exists.{0} (Membership.Mem.{u1, u1} (Finset.{u1} Ξ±) (Finset.{u1} (Finset.{u1} Ξ±)) (Finset.hasMem.{u1} (Finset.{u1} Ξ±)) t π’œ) (fun (H : Membership.Mem.{u1, u1} (Finset.{u1} Ξ±) (Finset.{u1} (Finset.{u1} Ξ±)) (Finset.hasMem.{u1} (Finset.{u1} Ξ±)) t π’œ) => HasSubset.Subset.{u1} (Finset.{u1} Ξ±) (Finset.hasSubset.{u1} Ξ±) s t))) (Eq.{1} Nat (Finset.card.{u1} Ξ± s) k))
-but is expected to have type
-  forall {Ξ± : Type.{u1}} [_inst_2 : DecidableEq.{succ u1} Ξ±] {k : Nat} {π’œ : Finset.{u1} (Finset.{u1} Ξ±)} {s : Finset.{u1} Ξ±}, Iff (Membership.mem.{u1, u1} (Finset.{u1} Ξ±) (Finset.{u1} (Finset.{u1} Ξ±)) (Finset.instMembershipFinset.{u1} (Finset.{u1} Ξ±)) s (Finset.falling.{u1} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) k π’œ)) (And (Exists.{succ u1} (Finset.{u1} Ξ±) (fun (t : Finset.{u1} Ξ±) => And (Membership.mem.{u1, u1} (Finset.{u1} Ξ±) (Finset.{u1} (Finset.{u1} Ξ±)) (Finset.instMembershipFinset.{u1} (Finset.{u1} Ξ±)) t π’œ) (HasSubset.Subset.{u1} (Finset.{u1} Ξ±) (Finset.instHasSubsetFinset.{u1} Ξ±) s t))) (Eq.{1} Nat (Finset.card.{u1} Ξ± s) k))
-Case conversion may be inaccurate. Consider using '#align finset.mem_falling Finset.mem_fallingβ‚“'. -/
 theorem mem_falling : s ∈ falling k π’œ ↔ (βˆƒ t ∈ π’œ, s βŠ† t) ∧ s.card = k := by
   simp_rw [falling, mem_sup, mem_powerset_len, exists_and_right]
 #align finset.mem_falling Finset.mem_falling
@@ -206,12 +194,6 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     exact not_mem_erase _ _ (hst ha)
 #align is_antichain.disjoint_slice_shadow_falling IsAntichain.disjoint_slice_shadow_falling
 
-/- warning: finset.le_card_falling_div_choose -> Finset.le_card_falling_div_choose is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
-Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
@@ -238,12 +220,6 @@ end Falling
 
 variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 
-/- warning: finset.sum_card_slice_div_choose_le_one -> Finset.sum_card_slice_div_choose_le_one is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (Semiring.toOne.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
 theorem sum_card_slice_div_choose_le_one [Fintype Ξ±]
Diff
@@ -94,7 +94,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 
 /- warning: finset.card_div_choose_le_card_shadow_div_choose -> Finset.card_div_choose_le_card_shadow_div_choose is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> (Set.Sized.{u2} Ξ± r (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) r (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
 Case conversion may be inaccurate. Consider using '#align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_chooseβ‚“'. -/
@@ -208,7 +208,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 
 /- warning: finset.le_card_falling_div_choose -> Finset.le_card_falling_div_choose is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
@@ -240,7 +240,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 
 /- warning: finset.sum_card_slice_div_choose_le_one -> Finset.sum_card_slice_div_choose_le_one is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toHasLe.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (Semiring.toOne.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
Diff
@@ -96,7 +96,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> (Set.Sized.{u2} Ξ± r (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) r (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> (Set.Sized.{u2} Ξ± r (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) r (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
 Case conversion may be inaccurate. Consider using '#align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_chooseβ‚“'. -/
 /-- The downward **local LYM inequality**. `π’œ` takes up less of `Ξ±^(r)` (the finsets of card `r`)
 than `βˆ‚π’œ` takes up of `Ξ±^(r - 1)`. -/
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (Semiring.toNatCast.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (Semiring.toOne.{u1} π•œ (DivisionSemiring.toSemiring.{u1} π•œ (Semifield.toDivisionSemiring.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
Diff
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1711 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1713) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2014 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2016) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
Diff
@@ -94,7 +94,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 
 /- warning: finset.card_div_choose_le_card_shadow_div_choose -> Finset.card_div_choose_le_card_shadow_div_choose is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero)))) -> (Set.Sized.{u2} Ξ± r ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) r (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] [_inst_3 : Fintype.{u2} Ξ±] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} {r : Nat}, (Ne.{1} Nat r (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0))) -> (Set.Sized.{u2} Ξ± r (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) π’œ)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) r))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.shadow.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) r (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
 Case conversion may be inaccurate. Consider using '#align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_chooseβ‚“'. -/
@@ -208,7 +208,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 
 /- warning: finset.le_card_falling_div_choose -> Finset.le_card_falling_div_choose is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
@@ -240,7 +240,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 
 /- warning: finset.sum_card_slice_div_choose_le_one -> Finset.sum_card_slice_div_choose_le_one is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (AddCommGroupWithOne.toAddGroupWithOne.{u1} π•œ (Ring.toAddCommGroupWithOne.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
Diff
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1723 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1725 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1723 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1725) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1722 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1724) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2026 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2028 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2026 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2028) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2025 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2027) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
Diff
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1703 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1703 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1723 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1725 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1723 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1725) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2006 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2006 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2026 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2028 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2026 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2028) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
Diff
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1703 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1703 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2006 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2006 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/
Diff
@@ -210,7 +210,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat Nat.hasLe k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) k (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : DecidableEq.{succ u2} Ξ±] {k : Nat} {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_3 : Fintype.{u2} Ξ±], (LE.le.{0} Nat instLENat k (Fintype.card.{u2} Ξ± _inst_3)) -> (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1705 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.1707) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) k (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r)))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) r))))) (HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.falling.{u2} Ξ± (fun (a : Ξ±) (b : Ξ±) => _inst_2 a b) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k) π’œ))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_3) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Fintype.card.{u2} Ξ± _inst_3) k)))))
 Case conversion may be inaccurate. Consider using '#align finset.le_card_falling_div_choose Finset.le_card_falling_div_chooseβ‚“'. -/
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
@@ -242,7 +242,7 @@ variable {π’œ : Finset (Finset Ξ±)} {s : Finset Ξ±} {k : β„•}
 lean 3 declaration is
   forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.hasSubset.{u2} Ξ±)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (CoeTCβ‚“.coe.{succ u2, succ u2} (Finset.{u2} (Finset.{u2} Ξ±)) (Set.{u2} (Finset.{u2} Ξ±)) (Finset.Set.hasCoeT.{u2} (Finset.{u2} Ξ±)))) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (Finset.sum.{u1, 0} π•œ Nat (AddCommGroup.toAddCommMonoid.{u1} π•œ (OrderedAddCommGroup.toAddCommGroup.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (DivInvMonoid.toHasDiv.{u1} π•œ (DivisionRing.toDivInvMonoid.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat π•œ (HasLiftT.mk.{1, succ u1} Nat π•œ (CoeTCβ‚“.coe.{1, succ u1} Nat π•œ (Nat.castCoe.{u1} π•œ (AddMonoidWithOne.toNatCast.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (OfNat.mk.{u1} π•œ 1 (One.one.{u1} π•œ (AddMonoidWithOne.toOne.{u1} π•œ (AddGroupWithOne.toAddMonoidWithOne.{u1} π•œ (NonAssocRing.toAddGroupWithOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
+  forall {π•œ : Type.{u1}} {Ξ± : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π•œ] {π’œ : Finset.{u2} (Finset.{u2} Ξ±)} [_inst_2 : Fintype.{u2} Ξ±], (IsAntichain.{u2} (Finset.{u2} Ξ±) (fun (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 : Finset.{u2} Ξ±) (x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010 : Finset.{u2} Ξ±) => HasSubset.Subset.{u2} (Finset.{u2} Ξ±) (Finset.instHasSubsetFinset.{u2} Ξ±) x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2008 x._@.Mathlib.Combinatorics.SetFamily.LYM._hyg.2010) (Finset.toSet.{u2} (Finset.{u2} Ξ±) π’œ)) -> (LE.le.{u1} π•œ (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (Finset.sum.{u1, 0} π•œ Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π•œ (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) (Finset.range (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Fintype.card.{u2} Ξ± _inst_2) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) (fun (r : Nat) => HDiv.hDiv.{u1, u1, u1} π•œ π•œ π•œ (instHDiv.{u1} π•œ (LinearOrderedField.toDiv.{u1} π•œ _inst_1)) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Finset.card.{u2} (Finset.{u2} Ξ±) (Finset.slice.{u2} Ξ± π’œ r))) (Nat.cast.{u1} π•œ (NonAssocRing.toNatCast.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))) (Nat.choose (Fintype.card.{u2} Ξ± _inst_2) r)))) (OfNat.ofNat.{u1} π•œ 1 (One.toOfNat1.{u1} π•œ (NonAssocRing.toOne.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (DivisionRing.toRing.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align finset.sum_card_slice_div_choose_le_one Finset.sum_card_slice_div_choose_le_oneβ‚“'. -/
 /-- 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`. -/

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -234,8 +234,8 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     suffices (βˆ‘ r in Iic (Fintype.card Ξ±),
         ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀ 1 by
       rw [← sum_div, ← Nat.cast_sum, div_le_one] at this
-      simp only [cast_le] at this
-      rwa [sum_card_slice] at this
+      Β· simp only [cast_le] at this
+        rwa [sum_card_slice] at this
       simp only [cast_pos]
       exact choose_pos (Nat.div_le_self _ _)
     rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
chore: Sort big operator order lemmas (#11750)

Take the content of

  • some of Algebra.BigOperators.List.Basic
  • some of Algebra.BigOperators.List.Lemmas
  • some of Algebra.BigOperators.Multiset.Basic
  • some of Algebra.BigOperators.Multiset.Lemmas
  • Algebra.BigOperators.Multiset.Order
  • Algebra.BigOperators.Order

and sort it into six files:

Here are the design decisions at play:

  • Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import Data.Nat.Order.Basic in a few List files.
  • It's Algebra.Order.BigOperators instead of Algebra.BigOperators.Order because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators.
  • There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under Algebra.Order.BigOperators.Group should be additivisable (except a few Nat- or Int-specific lemmas). In contrast, things under Algebra.Order.BigOperators.Ring are more prone to having heavy imports.
  • Lemmas are separated according to List vs Multiset vs Finset. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the AbsoluteValue lemmas from Algebra.Order.BigOperators.Ring.Finset to a file Algebra.Order.BigOperators.Ring.AbsoluteValue and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset, Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset, etc...
  • Finsupp big operator and finprod/finsum order lemmas also belong in Algebra.Order.BigOperators. I haven't done so in this PR because the diff is big enough like that.
Diff
@@ -7,6 +7,7 @@ import Mathlib.Algebra.BigOperators.Ring
 import Mathlib.Algebra.Order.Field.Basic
 import Mathlib.Combinatorics.Enumerative.DoubleCounting
 import Mathlib.Combinatorics.SetFamily.Shadow
+import Mathlib.Data.Rat.Field
 import Mathlib.Data.Rat.Order
 
 #align_import combinatorics.set_family.lym from "leanprover-community/mathlib"@"861a26926586cd46ff80264d121cdb6fa0e35cc1"
move(Combinatorics/Enumerative): Create folder (#11666)

Move Catalan, Composition, DoubleCounting, Partition to a new folder Combinatorics.Enumerative.

Diff
@@ -5,7 +5,7 @@ Authors: Bhavik Mehta, Alena Gusakov, YaΓ«l Dillies
 -/
 import Mathlib.Algebra.BigOperators.Ring
 import Mathlib.Algebra.Order.Field.Basic
-import Mathlib.Combinatorics.DoubleCounting
+import Mathlib.Combinatorics.Enumerative.DoubleCounting
 import Mathlib.Combinatorics.SetFamily.Shadow
 import Mathlib.Data.Rat.Order
 
chore: Rename monotonicity of / lemmas (#10634)

The new names and argument orders match the corresponding * lemmas, which I already took care of in a previous PR.

From LeanAPAP

Diff
@@ -240,7 +240,7 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     rw [Iic_eq_Icc, ← Ico_succ_right, bot_eq_zero, Ico_zero_eq_range]
     refine' (sum_le_sum fun r hr => _).trans (sum_card_slice_div_choose_le_one hπ’œ)
     rw [mem_range] at hr
-    refine' div_le_div_of_le_left _ _ _ <;> norm_cast
+    refine' div_le_div_of_nonneg_left _ _ _ <;> norm_cast
     Β· exact Nat.zero_le _
     Β· exact choose_pos (Nat.lt_succ_iff.1 hr)
     Β· exact choose_le_middle _ _
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -72,7 +72,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
   refine' le_trans _ tsub_tsub_le_tsub_add
   rw [← (Set.Sized.shadow hπ’œ) hs, ← card_compl, ← card_image_of_injOn (insert_inj_on' _)]
   refine' card_le_card fun t ht => _
-  -- porting note: commented out the following line
+  -- Porting note: commented out the following line
   -- infer_instance
   rw [mem_bipartiteAbove] at ht
   have : βˆ… βˆ‰ π’œ := by
feat: (s ∩ t).card = s.card + t.card - (s βˆͺ t).card (#10224)

once coerced to an AddGroupWithOne. Also unify Finset.card_disjoint_union and Finset.card_union_eq

From LeanAPAP

Diff
@@ -190,7 +190,7 @@ theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
     exact card_le_card (slice_subset_falling _ _)
   rw [succ_eq_add_one] at *
   rw [sum_range_succ, ← slice_union_shadow_falling_succ,
-    card_disjoint_union (IsAntichain.disjoint_slice_shadow_falling hπ’œ), cast_add, _root_.add_div,
+    card_union_of_disjoint (IsAntichain.disjoint_slice_shadow_falling hπ’œ), cast_add, _root_.add_div,
     add_comm]
   rw [← tsub_tsub, tsub_add_cancel_of_le (le_tsub_of_add_le_left hk)]
   exact
chore: bump dependencies (#10315)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -242,7 +242,7 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     rw [mem_range] at hr
     refine' div_le_div_of_le_left _ _ _ <;> norm_cast
     Β· exact Nat.zero_le _
-    Β· exact choose_pos (lt_succ_iff.1 hr)
+    Β· exact choose_pos (Nat.lt_succ_iff.1 hr)
     Β· exact choose_le_middle _ _
 #align finset.is_antichain.sperner Finset.IsAntichain.sperner
 
chore: Improve Finset lemma names (#8894)

Change a few lemma names that have historically bothered me.

  • Finset.card_le_of_subset β†’ Finset.card_le_card
  • Multiset.card_le_of_le β†’ Multiset.card_le_card
  • Multiset.card_lt_of_lt β†’ Multiset.card_lt_card
  • Set.ncard_le_of_subset β†’ Set.ncard_le_ncard
  • Finset.image_filter β†’ Finset.filter_image
  • CompleteLattice.finset_sup_compact_of_compact β†’ CompleteLattice.isCompactElement_finset_sup
Diff
@@ -66,12 +66,12 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
   let i : DecidableRel ((Β· βŠ† Β·) : Finset Ξ± β†’ Finset Ξ± β†’ Prop) := fun _ _ => Classical.dec _
   refine' card_mul_le_card_mul' (Β· βŠ† Β·) (fun s hs => _) (fun s hs => _)
   Β· rw [← hπ’œ hs, ← card_image_of_injOn s.erase_injOn]
-    refine' card_le_of_subset _
+    refine' card_le_card _
     simp_rw [image_subset_iff, mem_bipartiteBelow]
     exact fun a ha => ⟨erase_mem_shadow hs ha, erase_subset _ _⟩
   refine' le_trans _ tsub_tsub_le_tsub_add
   rw [← (Set.Sized.shadow hπ’œ) hs, ← card_compl, ← card_image_of_injOn (insert_inj_on' _)]
-  refine' card_le_of_subset fun t ht => _
+  refine' card_le_card fun t ht => _
   -- porting note: commented out the following line
   -- infer_instance
   rw [mem_bipartiteAbove] at ht
@@ -187,7 +187,7 @@ theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
   Β· simp only [tsub_zero, cast_one, cast_le, sum_singleton, div_one, choose_self, range_one,
       zero_eq, zero_add, range_one, ge_iff_le, sum_singleton, nonpos_iff_eq_zero, tsub_zero,
       choose_self, cast_one, div_one, cast_le]
-    exact card_le_of_subset (slice_subset_falling _ _)
+    exact card_le_card (slice_subset_falling _ _)
   rw [succ_eq_add_one] at *
   rw [sum_range_succ, ← slice_union_shadow_falling_succ,
     card_disjoint_union (IsAntichain.disjoint_slice_shadow_falling hπ’œ), cast_add, _root_.add_div,
chore: rename Finset.powersetLen to powersetCard (#7667)

I don't understand why this was ever named powersetLen, there isn't even the notion of the length of a Finset/Multiset.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -123,13 +123,13 @@ variable [DecidableEq Ξ±] (k : β„•) (π’œ : Finset (Finset Ξ±))
 
 /-- `falling k π’œ` is all the finsets of cardinality `k` which are a subset of something in `π’œ`. -/
 def falling : Finset (Finset Ξ±) :=
-  π’œ.sup <| powersetLen k
+  π’œ.sup <| powersetCard k
 #align finset.falling Finset.falling
 
 variable {π’œ k} {s : Finset Ξ±}
 
 theorem mem_falling : s ∈ falling k π’œ ↔ (βˆƒ t ∈ π’œ, s βŠ† t) ∧ s.card = k := by
-  simp_rw [falling, mem_sup, mem_powersetLen]
+  simp_rw [falling, mem_sup, mem_powersetCard]
   aesop
 #align finset.mem_falling Finset.mem_falling
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -49,7 +49,7 @@ open Finset Nat
 
 open BigOperators FinsetFamily
 
-variable {π•œ Ξ± : Type _} [LinearOrderedField π•œ]
+variable {π•œ Ξ± : Type*} [LinearOrderedField π•œ]
 
 namespace Finset
 
chore: use Β· instead of . (#6085)
Diff
@@ -63,7 +63,7 @@ variable [DecidableEq Ξ±] [Fintype Ξ±]
 (the finsets of card `r`) than `βˆ‚π’œ` takes up of `Ξ±^(r - 1)`. -/
 theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
     π’œ.card * r ≀ (βˆ‚ π’œ).card * (Fintype.card Ξ± - r + 1) := by
-  let i : DecidableRel ((. βŠ† .) : Finset Ξ± β†’ Finset Ξ± β†’ Prop) := fun _ _ => Classical.dec _
+  let i : DecidableRel ((Β· βŠ† Β·) : Finset Ξ± β†’ Finset Ξ± β†’ Prop) := fun _ _ => Classical.dec _
   refine' card_mul_le_card_mul' (Β· βŠ† Β·) (fun s hs => _) (fun s hs => _)
   Β· rw [← hπ’œ hs, ← card_image_of_injOn s.erase_injOn]
     refine' card_le_of_subset _
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2022 Bhavik Mehta, YaΓ«l Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Alena Gusakov, YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module combinatorics.set_family.lym
-! leanprover-community/mathlib commit 861a26926586cd46ff80264d121cdb6fa0e35cc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.BigOperators.Ring
 import Mathlib.Algebra.Order.Field.Basic
@@ -14,6 +9,8 @@ import Mathlib.Combinatorics.DoubleCounting
 import Mathlib.Combinatorics.SetFamily.Shadow
 import Mathlib.Data.Rat.Order
 
+#align_import combinatorics.set_family.lym from "leanprover-community/mathlib"@"861a26926586cd46ff80264d121cdb6fa0e35cc1"
+
 /-!
 # Lubell-Yamamoto-Meshalkin inequality and Sperner's theorem
 
fix: precedence of shadow (#5620)
Diff
@@ -65,7 +65,7 @@ variable [DecidableEq Ξ±] [Fintype Ξ±]
 /-- 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 card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
-    π’œ.card * r ≀ ((βˆ‚ ) π’œ).card * (Fintype.card Ξ± - r + 1) := by
+    π’œ.card * r ≀ (βˆ‚ π’œ).card * (Fintype.card Ξ± - r + 1) := by
   let i : DecidableRel ((. βŠ† .) : Finset Ξ± β†’ Finset Ξ± β†’ Prop) := fun _ _ => Classical.dec _
   refine' card_mul_le_card_mul' (Β· βŠ† Β·) (fun s hs => _) (fun s hs => _)
   Β· rw [← hπ’œ hs, ← card_image_of_injOn s.erase_injOn]
@@ -93,7 +93,7 @@ theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
 than `βˆ‚π’œ` takes up of `Ξ±^(r - 1)`. -/
 theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0)
     (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) : (π’œ.card : π•œ) / (Fintype.card Ξ±).choose r
-    ≀ ((βˆ‚ ) π’œ).card / (Fintype.card Ξ±).choose (r - 1) := by
+    ≀ (βˆ‚ π’œ).card / (Fintype.card Ξ±).choose (r - 1) := by
   obtain hr' | hr' := lt_or_le (Fintype.card Ξ±) r
   Β· rw [choose_eq_zero_of_lt hr', cast_zero, div_zero]
     exact div_nonneg (cast_nonneg _) (cast_nonneg _)
@@ -149,7 +149,7 @@ theorem falling_zero_subset : falling 0 π’œ βŠ† {βˆ…} :=
   subset_singleton_iff'.2 fun _ ht => card_eq_zero.1 <| sized_falling _ _ ht
 #align finset.falling_zero_subset Finset.falling_zero_subset
 
-theorem slice_union_shadow_falling_succ : π’œ # k βˆͺ (βˆ‚ ) (falling (k + 1) π’œ) = falling k π’œ := by
+theorem slice_union_shadow_falling_succ : π’œ # k βˆͺ βˆ‚ (falling (k + 1) π’œ) = falling k π’œ := by
   ext s
   simp_rw [mem_union, mem_slice, mem_shadow_iff, mem_falling]
   constructor
@@ -171,7 +171,7 @@ variable {π’œ k}
 /-- The shadow of `falling m π’œ` is disjoint from the `n`-sized elements of `π’œ`, thanks to the
 antichain property. -/
 theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
-    (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) ((βˆ‚ ) (falling n π’œ)) :=
+    (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) (βˆ‚ (falling n π’œ)) :=
   disjoint_right.2 fun s h₁ hβ‚‚ => by
     simp_rw [mem_shadow_iff, mem_falling] at h₁
     obtain ⟨s, ⟨⟨t, ht, hst⟩, _⟩, a, ha, rfl⟩ := h₁
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -64,7 +64,7 @@ variable [DecidableEq Ξ±] [Fintype Ξ±]
   {π’œ : Finset (Finset Ξ±)} {r : β„•}
 /-- 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 card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r):
+theorem card_mul_le_card_shadow_mul (hπ’œ : (π’œ : Set (Finset Ξ±)).Sized r) :
     π’œ.card * r ≀ ((βˆ‚ ) π’œ).card * (Fintype.card Ξ± - r + 1) := by
   let i : DecidableRel ((. βŠ† .) : Finset Ξ± β†’ Finset Ξ± β†’ Prop) := fun _ _ => Classical.dec _
   refine' card_mul_le_card_mul' (Β· βŠ† Β·) (fun s hs => _) (fun s hs => _)
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -172,8 +172,7 @@ variable {π’œ k}
 antichain property. -/
 theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) ((βˆ‚ ) (falling n π’œ)) :=
-  disjoint_right.2 fun s h₁ hβ‚‚ =>
-    by
+  disjoint_right.2 fun s h₁ hβ‚‚ => by
     simp_rw [mem_shadow_iff, mem_falling] at h₁
     obtain ⟨s, ⟨⟨t, ht, hst⟩, _⟩, a, ha, rfl⟩ := h₁
     refine' hπ’œ (slice_subset hβ‚‚) ht _ ((erase_subset _ _).trans hst)
@@ -234,10 +233,8 @@ theorem IsAntichain.sperner [Fintype Ξ±] {π’œ : Finset (Finset Ξ±)}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) :
     π’œ.card ≀ (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2) := by
   classical
-    suffices
-      (βˆ‘ r in Iic (Fintype.card Ξ±),
-          ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀ 1
-      by
+    suffices (βˆ‘ r in Iic (Fintype.card Ξ±),
+        ((π’œ # r).card : β„š) / (Fintype.card Ξ±).choose (Fintype.card Ξ± / 2)) ≀ 1 by
       rw [← sum_div, ← Nat.cast_sum, div_le_one] at this
       simp only [cast_le] at this
       rwa [sum_card_slice] at this
Diff
@@ -132,7 +132,7 @@ def falling : Finset (Finset Ξ±) :=
 variable {π’œ k} {s : Finset Ξ±}
 
 theorem mem_falling : s ∈ falling k π’œ ↔ (βˆƒ t ∈ π’œ, s βŠ† t) ∧ s.card = k := by
-  simp_rw [falling, mem_sup, mem_powersetLen, exists_and_right]
+  simp_rw [falling, mem_sup, mem_powersetLen]
   aesop
 #align finset.mem_falling Finset.mem_falling
 
@@ -151,7 +151,7 @@ theorem falling_zero_subset : falling 0 π’œ βŠ† {βˆ…} :=
 
 theorem slice_union_shadow_falling_succ : π’œ # k βˆͺ (βˆ‚ ) (falling (k + 1) π’œ) = falling k π’œ := by
   ext s
-  simp_rw [mem_union, mem_slice, mem_shadow_iff, exists_prop, mem_falling]
+  simp_rw [mem_union, mem_slice, mem_shadow_iff, mem_falling]
   constructor
   · rintro (h | ⟨s, ⟨⟨t, ht, hst⟩, hs⟩, a, ha, rfl⟩)
     · exact ⟨⟨s, h.1, Subset.refl _⟩, h.2⟩
@@ -174,7 +174,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     (hπ’œ : IsAntichain (Β· βŠ† Β·) (π’œ : Set (Finset Ξ±))) : Disjoint (π’œ # m) ((βˆ‚ ) (falling n π’œ)) :=
   disjoint_right.2 fun s h₁ hβ‚‚ =>
     by
-    simp_rw [mem_shadow_iff, exists_prop, mem_falling] at h₁
+    simp_rw [mem_shadow_iff, mem_falling] at h₁
     obtain ⟨s, ⟨⟨t, ht, hst⟩, _⟩, a, ha, rfl⟩ := h₁
     refine' hπ’œ (slice_subset hβ‚‚) ht _ ((erase_subset _ _).trans hst)
     rintro rfl
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -111,8 +111,7 @@ theorem card_div_choose_le_card_shadow_div_choose (hr : r β‰  0)
       exact Or.inl (mul_comm _ _)
   Β· exact Nat.choose_pos hr'
   Β· exact Nat.choose_pos (r.pred_le.trans hr')
-#align finset.card_div_choose_le_card_shadow_div_choose
-    Finset.card_div_choose_le_card_shadow_div_choose
+#align finset.card_div_choose_le_card_shadow_div_choose Finset.card_div_choose_le_card_shadow_div_choose
 
 end LocalLYM
 
@@ -202,8 +201,7 @@ theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
     add_le_add_left
       ((ih <| le_of_succ_le hk).trans <|
         card_div_choose_le_card_shadow_div_choose (tsub_pos_iff_lt.2 <| Nat.succ_le_iff.1 hk).ne' <|
-          sized_falling _ _)
-      _
+          sized_falling _ _) _
 #align finset.le_card_falling_div_choose Finset.le_card_falling_div_choose
 
 end Falling
chore: fix align linebreaks (#3103)

Apparently we have CI scripts that assume those fall on a single line. The command line used to fix the aligns was:

find . -type f -name "*.lean" -exec sed -i -E 'N;s/^#align ([^[:space:]]+)\n *([^[:space:]]+)$/#align \1 \2/' {} \;

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -180,8 +180,7 @@ theorem IsAntichain.disjoint_slice_shadow_falling {m n : β„•}
     refine' hπ’œ (slice_subset hβ‚‚) ht _ ((erase_subset _ _).trans hst)
     rintro rfl
     exact not_mem_erase _ _ (hst ha)
-#align finset.is_antichain.disjoint_slice_shadow_falling
-    Finset.IsAntichain.disjoint_slice_shadow_falling
+#align finset.is_antichain.disjoint_slice_shadow_falling Finset.IsAntichain.disjoint_slice_shadow_falling
 
 /-- A bound on any top part of the sum in LYM in terms of the size of `falling k π’œ`. -/
 theorem le_card_falling_div_choose [Fintype Ξ±] (hk : k ≀ Fintype.card Ξ±)
feat: port Data.Dfinsupp.WellFounded (#2944)

Other changes:

  • modify Data/Dfinsupp/Lex to use explicit (i : ΞΉ);
  • fix 2 typos&align in Logic.Basic.
Diff
@@ -162,8 +162,7 @@ theorem slice_union_shadow_falling_succ : π’œ # k βˆͺ (βˆ‚ ) (falling (k + 1) 
   · rintro ⟨⟨t, ht, hst⟩, hs⟩
     by_cases h : s ∈ π’œ
     · exact Or.inl ⟨h, hs⟩
-    obtain ⟨a, ha, hst⟩ := ssubset_iff.1
-        (ssubset_of_subset_of_ne hst (Membership.Mem.ne_of_not_mem ht h).symm)
+    obtain ⟨a, ha, hst⟩ := ssubset_iff.1 (ssubset_of_subset_of_ne hst (ht.ne_of_not_mem h).symm)
     refine' Or.inr ⟨insert a s, ⟨⟨t, ht, hst⟩, _⟩, a, mem_insert_self _ _, erase_insert ha⟩
     rw [card_insert_of_not_mem ha, hs]
 #align finset.slice_union_shadow_falling_succ Finset.slice_union_shadow_falling_succ
chore: add missing hypothesis names to by_cases (#2679)
Diff
@@ -160,7 +160,7 @@ theorem slice_union_shadow_falling_succ : π’œ # k βˆͺ (βˆ‚ ) (falling (k + 1) 
     rw [card_erase_of_mem ha, hs]
     rfl
   · rintro ⟨⟨t, ht, hst⟩, hs⟩
-    by_cases s ∈ π’œ
+    by_cases h : s ∈ π’œ
     · exact Or.inl ⟨h, hs⟩
     obtain ⟨a, ha, hst⟩ := ssubset_iff.1
         (ssubset_of_subset_of_ne hst (Membership.Mem.ne_of_not_mem ht h).symm)
feat: port Combinatorics.SetFamily.LYM (#1969)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>

Dependencies 7 + 243

244 files ported (97.2%)
104393 lines ported (97.2%)
Show graph

The unported dependencies are