combinatorics.pigeonhole
⟷
Mathlib.Combinatorics.Pigeonhole
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,7 +5,7 @@ Authors: Kyle Miller, Yury Kudryashov
-/
import Data.Nat.ModEq
import Data.Set.Finite
-import Algebra.BigOperators.Order
+import Algebra.Order.BigOperators.Group.Finset
import Algebra.Module.Basic
import Algebra.Module.BigOperators
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-/
-import Data.Nat.Modeq
+import Data.Nat.ModEq
import Data.Set.Finite
import Algebra.BigOperators.Order
import Algebra.Module.Basic
@@ -136,7 +136,7 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
@@ -154,7 +154,7 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
@@ -195,7 +195,7 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
@@ -213,7 +213,7 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-/
-import Mathbin.Data.Nat.Modeq
-import Mathbin.Data.Set.Finite
-import Mathbin.Algebra.BigOperators.Order
-import Mathbin.Algebra.Module.Basic
-import Mathbin.Algebra.Module.BigOperators
+import Data.Nat.Modeq
+import Data.Set.Finite
+import Algebra.BigOperators.Order
+import Algebra.Module.Basic
+import Algebra.Module.BigOperators
#align_import combinatorics.pigeonhole from "leanprover-community/mathlib"@"63f84d91dd847f50bae04a01071f3a5491934e36"
@@ -136,7 +136,7 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
@@ -154,7 +154,7 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
@@ -195,7 +195,7 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
@@ -213,7 +213,7 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-
-! This file was ported from Lean 3 source module combinatorics.pigeonhole
-! leanprover-community/mathlib commit 63f84d91dd847f50bae04a01071f3a5491934e36
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Nat.Modeq
import Mathbin.Data.Set.Finite
@@ -14,6 +9,8 @@ import Mathbin.Algebra.BigOperators.Order
import Mathbin.Algebra.Module.Basic
import Mathbin.Algebra.Module.BigOperators
+#align_import combinatorics.pigeonhole from "leanprover-community/mathlib"@"63f84d91dd847f50bae04a01071f3a5491934e36"
+
/-!
# Pigeonhole principles
@@ -139,7 +136,7 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
@@ -157,7 +154,7 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
@@ -198,7 +195,7 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
@@ -216,7 +213,7 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
#print Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -117,6 +117,7 @@ variable [LinearOrderedCancelAddCommMonoid M]
-/
+#print Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, and they are sorted into
`n` pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is
@@ -125,7 +126,9 @@ theorem exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (hf : ∀ a ∈ s, f a
(hb : t.card • b < ∑ x in s, w x) : ∃ y ∈ t, b < ∑ x in s.filterₓ fun x => f x = y, w x :=
exists_lt_of_sum_lt <| by simpa only [sum_fiberwise_of_maps_to hf, sum_const]
#align finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum
+-/
+#print Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, and they are sorted into `n`
pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is less
@@ -134,8 +137,10 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
(hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+#print Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonpositive,
@@ -150,8 +155,10 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos ht
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+#print Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonnegative,
@@ -162,12 +169,14 @@ theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ ht hb
#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
+-/
/-!
#### Non-strict inequality versions
-/
+#print Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, and
they are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons
@@ -176,7 +185,9 @@ theorem exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (hf : ∀ a ∈ s, f a
(hb : t.card • b ≤ ∑ x in s, w x) : ∃ y ∈ t, b ≤ ∑ x in s.filterₓ fun x => f x = y, w x :=
exists_le_of_sum_le ht <| by simpa only [sum_fiberwise_of_maps_to hf, sum_const]
#align finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum
+-/
+#print Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, and they
are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons in
@@ -185,8 +196,10 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
(hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+#print Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the
@@ -201,8 +214,10 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos hf
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
+#print Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the pigeons
@@ -213,6 +228,7 @@ theorem exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
+-/
end
@@ -236,6 +252,7 @@ So, we prove four theorems: `finset.exists_lt_card_fiber_of_maps_to_of_mul_lt_ca
`finset.exists_card_fiber_lt_of_card_lt_mul`, and `finset.exists_card_fiber_le_of_card_le_mul`. -/
+#print Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes. -/
theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t)
@@ -244,7 +261,9 @@ theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
simp_rw [cast_card] at ht ⊢
exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
+-/
+#print Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes.
("The maximum is at least the mean" specialized to integers.)
@@ -256,7 +275,9 @@ theorem exists_lt_card_fiber_of_mul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
(hn : t.card * n < s.card) : ∃ y ∈ t, n < (s.filterₓ fun x => f x = y).card :=
exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to hf hn
#align finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to
+-/
+#print Finset.exists_card_fiber_lt_of_card_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. -/
theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
@@ -267,7 +288,9 @@ theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht
#align finset.exists_card_fiber_lt_of_card_lt_nsmul Finset.exists_card_fiber_lt_of_card_lt_nsmul
+-/
+#print Finset.exists_card_fiber_lt_of_card_lt_mul /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. ("The
minimum is at most the mean" specialized to integers.)
@@ -279,7 +302,9 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : s.card < t.card * n) :
∃ y ∈ t, (s.filterₓ fun x => f x = y).card < n :=
exists_card_fiber_lt_of_card_lt_nsmul hn
#align finset.exists_card_fiber_lt_of_card_lt_mul Finset.exists_card_fiber_lt_of_card_lt_mul
+-/
+#print Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function between
finite sets `s` and `t` and a number `b` such that `card t • b ≤ card s`, there exists `y ∈ t` such
that its preimage in `s` has at least `b` elements.
@@ -290,7 +315,9 @@ theorem exists_le_card_fiber_of_nsmul_le_card_of_maps_to (hf : ∀ a ∈ s, f a
simp_rw [cast_card] at hb ⊢
exact exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum hf ht hb
#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to
+-/
+#print Finset.exists_le_card_fiber_of_mul_le_card_of_maps_to /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function between
finite sets `s` and `t` and a natural number `b` such that `card t * n ≤ card s`, there exists `y ∈
t` such that its preimage in `s` has at least `n` elements. See also
@@ -299,7 +326,9 @@ theorem exists_le_card_fiber_of_mul_le_card_of_maps_to (hf : ∀ a ∈ s, f a
(hn : t.card * n ≤ s.card) : ∃ y ∈ t, n ≤ (s.filterₓ fun x => f x = y).card :=
exists_le_card_fiber_of_nsmul_le_card_of_maps_to hf ht hn
#align finset.exists_le_card_fiber_of_mul_le_card_of_maps_to Finset.exists_le_card_fiber_of_mul_le_card_of_maps_to
+-/
+#print Finset.exists_card_fiber_le_of_card_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function `f`, a
finite sets `s` and `t`, and a number `b` such that `card s ≤ card t • b`, there exists `y ∈ t` such
that its preimage in `s` has no more than `b` elements.
@@ -312,7 +341,9 @@ theorem exists_card_fiber_le_of_card_le_nsmul (ht : t.Nonempty) (hb : ↑s.card
exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht hb
#align finset.exists_card_fiber_le_of_card_le_nsmul Finset.exists_card_fiber_le_of_card_le_nsmul
+-/
+#print Finset.exists_card_fiber_le_of_card_le_mul /-
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function `f`, a
finite sets `s` in its domain, a finite set `t` in its codomain, and a natural number `n` such that
`card s ≤ card t * n`, there exists `y ∈ t` such that its preimage in `s` has no more than `n`
@@ -321,6 +352,7 @@ theorem exists_card_fiber_le_of_card_le_mul (ht : t.Nonempty) (hn : s.card ≤ t
∃ y ∈ t, (s.filterₓ fun x => f x = y).card ≤ n :=
exists_card_fiber_le_of_card_le_nsmul ht hn
#align finset.exists_card_fiber_le_of_card_le_mul Finset.exists_card_fiber_le_of_card_le_mul
+-/
end Finset
@@ -496,6 +528,7 @@ namespace Nat
open Set
+#print Nat.exists_lt_modEq_of_infinite /-
/-- If `s` is an infinite set of natural numbers and `k > 0`, then `s` contains two elements `m < n`
that are equal mod `k`. -/
theorem exists_lt_modEq_of_infinite {s : Set ℕ} (hs : s.Infinite) {k : ℕ} (hk : 0 < k) :
@@ -503,6 +536,7 @@ theorem exists_lt_modEq_of_infinite {s : Set ℕ} (hs : s.Infinite) {k : ℕ} (h
(hs.exists_lt_map_eq_of_mapsTo fun n _ => show n % k ∈ Iio k from Nat.mod_lt n hk) <|
finite_lt_nat k
#align nat.exists_lt_modeq_of_infinite Nat.exists_lt_modEq_of_infinite
+-/
end Nat
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -131,7 +131,7 @@ if the total weight of a finite set of pigeons is less than `n • b`, and they
pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is less
than `b`. -/
theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a ∈ t)
- (hb : (∑ x in s, w x) < t.card • b) : ∃ y ∈ t, (∑ x in s.filterₓ fun x => f x = y, w x) < b :=
+ (hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
@@ -142,11 +142,11 @@ pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons the
then for at least one of these `n` pigeonholes, the total weight of the pigeons in this pigeonhole
is greater than `b`. -/
theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
- (ht : ∀ (y) (_ : y ∉ t), (∑ x in s.filterₓ fun x => f x = y, w x) ≤ 0)
+ (ht : ∀ (y) (_ : y ∉ t), ∑ x in s.filterₓ fun x => f x = y, w x ≤ 0)
(hb : t.card • b < ∑ x in s, w x) : ∃ y ∈ t, b < ∑ x in s.filterₓ fun x => f x = y, w x :=
exists_lt_of_sum_lt <|
calc
- (∑ y in t, b) < ∑ x in s, w x := by simpa
+ ∑ y in t, b < ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos ht
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
@@ -159,7 +159,7 @@ then for at least one of these `n` pigeonholes, the total weight of the pigeons
is less than `b`. -/
theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(ht : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filterₓ fun x => f x = y, w x)
- (hb : (∑ x in s, w x) < t.card • b) : ∃ y ∈ t, (∑ x in s.filterₓ fun x => f x = y, w x) < b :=
+ (hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ ht hb
#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
@@ -182,7 +182,7 @@ version: if the total weight of a finite set of pigeons is less than or equal to
are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons in
this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
- (hb : (∑ x in s, w x) ≤ t.card • b) : ∃ y ∈ t, (∑ x in s.filterₓ fun x => f x = y, w x) ≤ b :=
+ (hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
@@ -193,11 +193,11 @@ are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total
pigeons there is nonpositive, then for at least one of these `n` pigeonholes, the total weight of
the pigeons in this pigeonhole is greater than or equal to `b`. -/
theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
- (hf : ∀ (y) (_ : y ∉ t), (∑ x in s.filterₓ fun x => f x = y, w x) ≤ 0) (ht : t.Nonempty)
+ (hf : ∀ (y) (_ : y ∉ t), ∑ x in s.filterₓ fun x => f x = y, w x ≤ 0) (ht : t.Nonempty)
(hb : t.card • b ≤ ∑ x in s, w x) : ∃ y ∈ t, b ≤ ∑ x in s.filterₓ fun x => f x = y, w x :=
exists_le_of_sum_le ht <|
calc
- (∑ y in t, b) ≤ ∑ x in s, w x := by simpa
+ ∑ y in t, b ≤ ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos hf
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
@@ -210,7 +210,7 @@ there is nonnegative, then for at least one of these `n` pigeonholes, the total
pigeons in this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(hf : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filterₓ fun x => f x = y, w x) (ht : t.Nonempty)
- (hb : (∑ x in s, w x) ≤ t.card • b) : ∃ y ∈ t, (∑ x in s.filterₓ fun x => f x = y, w x) ≤ b :=
+ (hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filterₓ fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
@@ -370,8 +370,8 @@ theorem exists_le_sum_fiber_of_nsmul_le_sum [Nonempty β] (hb : card β • b
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than `b` provided that
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
-theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b) :
- ∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) < b :=
+theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : ∑ x, w x < card β • b) :
+ ∃ y, ∑ x in univ.filterₓ fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
-/
@@ -381,8 +381,8 @@ theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b)
version: there is a pigeonhole with the total weight of pigeons in it less than or equal to `b`
provided that the total number of pigeonholes times `b` is greater than or equal to the total weight
of all pigeons. -/
-theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : (∑ x, w x) ≤ card β • b) :
- ∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) ≤ b :=
+theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : ∑ x, w x ≤ card β • b) :
+ ∃ y, ∑ x in univ.filterₓ fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmul
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -149,7 +149,6 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
(∑ y in t, b) < ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos ht
-
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
@@ -201,7 +200,6 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
(∑ y in t, b) ≤ ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filterₓ fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos hf
-
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -135,7 +135,7 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
@exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonpositive,
@@ -152,7 +152,7 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonnegative,
@@ -187,7 +187,7 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
@exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the
@@ -204,7 +204,7 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the pigeons
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -243,7 +243,7 @@ at least as many pigeons as the ceiling of the average number of pigeons across
theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t)
(ht : t.card • b < s.card) : ∃ y ∈ t, b < (s.filterₓ fun x => f x = y).card :=
by
- simp_rw [cast_card] at ht⊢
+ simp_rw [cast_card] at ht ⊢
exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
@@ -264,7 +264,7 @@ at most as many pigeons as the floor of the average number of pigeons across all
theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
∃ y ∈ t, ↑(s.filterₓ fun x => f x = y).card < b :=
by
- simp_rw [cast_card] at ht⊢
+ simp_rw [cast_card] at ht ⊢
exact
exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht
@@ -289,7 +289,7 @@ See also `finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to` for a stronge
theorem exists_le_card_fiber_of_nsmul_le_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
(hb : t.card • b ≤ s.card) : ∃ y ∈ t, b ≤ (s.filterₓ fun x => f x = y).card :=
by
- simp_rw [cast_card] at hb⊢
+ simp_rw [cast_card] at hb ⊢
exact exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum hf ht hb
#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to
@@ -309,7 +309,7 @@ See also `finset.exists_card_fiber_lt_of_card_lt_nsmul` for a stronger statement
theorem exists_card_fiber_le_of_card_le_nsmul (ht : t.Nonempty) (hb : ↑s.card ≤ t.card • b) :
∃ y ∈ t, ↑(s.filterₓ fun x => f x = y).card ≤ b :=
by
- simp_rw [cast_card] at hb⊢
+ simp_rw [cast_card] at hb ⊢
refine'
exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht hb
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -76,7 +76,7 @@ variable {α : Type u} {β : Type v} {M : Type w} [DecidableEq β]
open Nat
-open BigOperators
+open scoped BigOperators
namespace Finset
@@ -344,6 +344,7 @@ between `fintype`s and `s = univ`, `t = univ`. In this case the assumption `∀
holds, so we have four theorems instead of eight. -/
+#print Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum /-
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than `b` provided that
the total number of pigeonholes times `b` is less than the total weight of all pigeons. -/
@@ -352,7 +353,9 @@ theorem exists_lt_sum_fiber_of_nsmul_lt_sum (hb : card β • b < ∑ x, w x) :
let ⟨y, _, hy⟩ := exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (fun _ _ => mem_univ _) hb
⟨y, hy⟩
#align fintype.exists_lt_sum_fiber_of_nsmul_lt_sum Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum
+-/
+#print Fintype.exists_le_sum_fiber_of_nsmul_le_sum /-
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than or equal to `b`
provided that the total number of pigeonholes times `b` is less than or equal to the total weight of
@@ -363,7 +366,9 @@ theorem exists_le_sum_fiber_of_nsmul_le_sum [Nonempty β] (hb : card β • b
exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (fun _ _ => mem_univ _) univ_nonempty hb
⟨y, hy⟩
#align fintype.exists_le_sum_fiber_of_nsmul_le_sum Fintype.exists_le_sum_fiber_of_nsmul_le_sum
+-/
+#print Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul /-
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than `b` provided that
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
@@ -371,7 +376,9 @@ theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b)
∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) < b :=
@exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
+-/
+#print Fintype.exists_sum_fiber_le_of_sum_le_nsmul /-
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than or equal to `b`
provided that the total number of pigeonholes times `b` is greater than or equal to the total weight
@@ -380,11 +387,13 @@ theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : (∑ x, w x) ≤
∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) ≤ b :=
@exists_le_sum_fiber_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmul
+-/
end
variable [LinearOrderedCommSemiring M]
+#print Fintype.exists_lt_card_fiber_of_nsmul_lt_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at least as many pigeons as the ceiling of the average number of pigeons across all
pigeonholes. -/
@@ -393,6 +402,7 @@ theorem exists_lt_card_fiber_of_nsmul_lt_card (hb : card β • b < card α) :
let ⟨y, _, h⟩ := exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (fun _ _ => mem_univ _) hb
⟨y, h⟩
#align fintype.exists_lt_card_fiber_of_nsmul_lt_card Fintype.exists_lt_card_fiber_of_nsmul_lt_card
+-/
#print Fintype.exists_lt_card_fiber_of_mul_lt_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes.
@@ -409,6 +419,7 @@ theorem exists_lt_card_fiber_of_mul_lt_card (hn : card β * n < card α) :
#align fintype.exists_lt_card_fiber_of_mul_lt_card Fintype.exists_lt_card_fiber_of_mul_lt_card
-/
+#print Fintype.exists_card_fiber_lt_of_card_lt_nsmul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at most as many pigeons as the floor of the average number of pigeons across all pigeonholes.
-/
@@ -417,6 +428,7 @@ theorem exists_card_fiber_lt_of_card_lt_nsmul (hb : ↑(card α) < card β • b
let ⟨y, _, h⟩ := exists_card_fiber_lt_of_card_lt_nsmul hb
⟨y, h⟩
#align fintype.exists_card_fiber_lt_of_card_lt_nsmul Fintype.exists_card_fiber_lt_of_card_lt_nsmul
+-/
#print Fintype.exists_card_fiber_lt_of_card_lt_mul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes.
@@ -433,6 +445,7 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : card α < card β * n) :
#align fintype.exists_card_fiber_lt_of_card_lt_mul Fintype.exists_card_fiber_lt_of_card_lt_mul
-/
+#print Fintype.exists_le_card_fiber_of_nsmul_le_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card β • b ≤ card α`, there exists an
element `y : β` such that its preimage has at least `b` elements.
@@ -443,6 +456,7 @@ theorem exists_le_card_fiber_of_nsmul_le_card [Nonempty β] (hb : card β • b
exists_le_card_fiber_of_nsmul_le_card_of_maps_to (fun _ _ => mem_univ _) univ_nonempty hb
⟨y, h⟩
#align fintype.exists_le_card_fiber_of_nsmul_le_card Fintype.exists_le_card_fiber_of_nsmul_le_card
+-/
#print Fintype.exists_le_card_fiber_of_mul_le_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
@@ -455,6 +469,7 @@ theorem exists_le_card_fiber_of_mul_le_card [Nonempty β] (hn : card β * n ≤
#align fintype.exists_le_card_fiber_of_mul_le_card Fintype.exists_le_card_fiber_of_mul_le_card
-/
+#print Fintype.exists_card_fiber_le_of_card_le_nsmul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card α ≤ card β • b`, there exists an
element `y : β` such that its preimage has at most `b` elements.
@@ -464,6 +479,7 @@ theorem exists_card_fiber_le_of_card_le_nsmul [Nonempty β] (hb : ↑(card α)
let ⟨y, _, h⟩ := exists_card_fiber_le_of_card_le_nsmul univ_nonempty hb
⟨y, h⟩
#align fintype.exists_card_fiber_le_of_card_le_nsmul Fintype.exists_card_fiber_le_of_card_le_nsmul
+-/
#print Fintype.exists_card_fiber_le_of_card_le_mul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -117,12 +117,6 @@ variable [LinearOrderedCancelAddCommMonoid M]
-/
-/- warning: finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum -> Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, and they are sorted into
`n` pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is
@@ -132,12 +126,6 @@ theorem exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (hf : ∀ a ∈ s, f a
exists_lt_of_sum_lt <| by simpa only [sum_fiberwise_of_maps_to hf, sum_const]
#align finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum
-/- warning: finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul -> Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, and they are sorted into `n`
pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is less
@@ -147,12 +135,6 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
@exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
-/- warning: finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum -> Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
@@ -170,12 +152,6 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
-/- warning: finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul -> Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmulₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
@@ -193,12 +169,6 @@ theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
-/
-/- warning: finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum -> Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, and
they are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons
@@ -208,12 +178,6 @@ theorem exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (hf : ∀ a ∈ s, f a
exists_le_of_sum_le ht <| by simpa only [sum_fiberwise_of_maps_to hf, sum_const]
#align finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum
-/- warning: finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul -> Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, and they
are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons in
@@ -223,12 +187,6 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
@exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
-/- warning: finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum -> Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
@@ -246,12 +204,6 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
-/- warning: finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul -> Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmulₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
@@ -286,12 +238,6 @@ So, we prove four theorems: `finset.exists_lt_card_fiber_of_maps_to_of_mul_lt_ca
`finset.exists_card_fiber_lt_of_card_lt_mul`, and `finset.exists_card_fiber_le_of_card_le_mul`. -/
-/- warning: finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to -> Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_toₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes. -/
theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t)
@@ -301,12 +247,6 @@ theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
-/- warning: finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to -> Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{0} Nat Nat.hasLt (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u2} β t) n) (Finset.card.{u1} α s)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{0} Nat Nat.hasLt n (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{0} Nat instLTNat (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u2} β t) n) (Finset.card.{u1} α s)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{0} Nat instLTNat n (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_toₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes.
("The maximum is at least the mean" specialized to integers.)
@@ -319,12 +259,6 @@ theorem exists_lt_card_fiber_of_mul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to hf hn
#align finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to
-/- warning: finset.exists_card_fiber_lt_of_card_lt_nsmul -> Finset.exists_card_fiber_lt_of_card_lt_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_lt_of_card_lt_nsmul Finset.exists_card_fiber_lt_of_card_lt_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. -/
theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
@@ -336,12 +270,6 @@ theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht
#align finset.exists_card_fiber_lt_of_card_lt_nsmul Finset.exists_card_fiber_lt_of_card_lt_nsmul
-/- warning: finset.exists_card_fiber_lt_of_card_lt_mul -> Finset.exists_card_fiber_lt_of_card_lt_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (Finset.card.{u1} α s) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u2} β t) n)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{0} Nat Nat.hasLt (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)) n)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (LT.lt.{0} Nat instLTNat (Finset.card.{u1} α s) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u2} β t) n)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{0} Nat instLTNat (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)) n)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_lt_of_card_lt_mul Finset.exists_card_fiber_lt_of_card_lt_mulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. ("The
minimum is at most the mean" specialized to integers.)
@@ -354,12 +282,6 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : s.card < t.card * n) :
exists_card_fiber_lt_of_card_lt_nsmul hn
#align finset.exists_card_fiber_lt_of_card_lt_mul Finset.exists_card_fiber_lt_of_card_lt_mul
-/- warning: finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to -> Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_toₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function between
finite sets `s` and `t` and a number `b` such that `card t • b ≤ card s`, there exists `y ∈ t` such
that its preimage in `s` has at least `b` elements.
@@ -371,12 +293,6 @@ theorem exists_le_card_fiber_of_nsmul_le_card_of_maps_to (hf : ∀ a ∈ s, f a
exact exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum hf ht hb
#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to
-/- warning: finset.exists_le_card_fiber_of_mul_le_card_of_maps_to -> Finset.exists_le_card_fiber_of_mul_le_card_of_maps_to is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{0} Nat Nat.hasLe (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u2} β t) n) (Finset.card.{u1} α s)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{0} Nat Nat.hasLe n (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{0} Nat instLENat (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u2} β t) n) (Finset.card.{u1} α s)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{0} Nat instLENat n (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)))))
-Case conversion may be inaccurate. Consider using '#align finset.exists_le_card_fiber_of_mul_le_card_of_maps_to Finset.exists_le_card_fiber_of_mul_le_card_of_maps_toₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function between
finite sets `s` and `t` and a natural number `b` such that `card t * n ≤ card s`, there exists `y ∈
t` such that its preimage in `s` has at least `n` elements. See also
@@ -386,12 +302,6 @@ theorem exists_le_card_fiber_of_mul_le_card_of_maps_to (hf : ∀ a ∈ s, f a
exists_le_card_fiber_of_nsmul_le_card_of_maps_to hf ht hn
#align finset.exists_le_card_fiber_of_mul_le_card_of_maps_to Finset.exists_le_card_fiber_of_mul_le_card_of_maps_to
-/- warning: finset.exists_card_fiber_le_of_card_le_nsmul -> Finset.exists_card_fiber_le_of_card_le_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_le_of_card_le_nsmul Finset.exists_card_fiber_le_of_card_le_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function `f`, a
finite sets `s` and `t`, and a number `b` such that `card s ≤ card t • b`, there exists `y ∈ t` such
that its preimage in `s` has no more than `b` elements.
@@ -405,12 +315,6 @@ theorem exists_card_fiber_le_of_card_le_nsmul (ht : t.Nonempty) (hb : ↑s.card
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht hb
#align finset.exists_card_fiber_le_of_card_le_nsmul Finset.exists_card_fiber_le_of_card_le_nsmul
-/- warning: finset.exists_card_fiber_le_of_card_le_mul -> Finset.exists_card_fiber_le_of_card_le_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (Finset.Nonempty.{u2} β t) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α s) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u2} β t) n)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)) n)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {n : Nat}, (Finset.Nonempty.{u2} β t) -> (LE.le.{0} Nat instLENat (Finset.card.{u1} α s) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u2} β t) n)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{0} Nat instLENat (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s)) n)))
-Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_le_of_card_le_mul Finset.exists_card_fiber_le_of_card_le_mulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function `f`, a
finite sets `s` in its domain, a finite set `t` in its codomain, and a natural number `n` such that
`card s ≤ card t * n`, there exists `y ∈ t` such that its preimage in `s` has no more than `n`
@@ -440,12 +344,6 @@ between `fintype`s and `s = univ`, `t = univ`. In this case the assumption `∀
holds, so we have four theorems instead of eight. -/
-/- warning: fintype.exists_lt_sum_fiber_of_nsmul_lt_sum -> Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_lt_sum_fiber_of_nsmul_lt_sum Fintype.exists_lt_sum_fiber_of_nsmul_lt_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than `b` provided that
the total number of pigeonholes times `b` is less than the total weight of all pigeons. -/
@@ -455,12 +353,6 @@ theorem exists_lt_sum_fiber_of_nsmul_lt_sum (hb : card β • b < ∑ x, w x) :
⟨y, hy⟩
#align fintype.exists_lt_sum_fiber_of_nsmul_lt_sum Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum
-/- warning: fintype.exists_le_sum_fiber_of_nsmul_le_sum -> Fintype.exists_le_sum_fiber_of_nsmul_le_sum is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_le_sum_fiber_of_nsmul_le_sum Fintype.exists_le_sum_fiber_of_nsmul_le_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than or equal to `b`
provided that the total number of pigeonholes times `b` is less than or equal to the total weight of
@@ -472,12 +364,6 @@ theorem exists_le_sum_fiber_of_nsmul_le_sum [Nonempty β] (hb : card β • b
⟨y, hy⟩
#align fintype.exists_le_sum_fiber_of_nsmul_le_sum Fintype.exists_le_sum_fiber_of_nsmul_le_sum
-/- warning: fintype.exists_sum_fiber_lt_of_sum_lt_nsmul -> Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than `b` provided that
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
@@ -486,12 +372,6 @@ theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b)
@exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
-/- warning: fintype.exists_sum_fiber_le_of_sum_le_nsmul -> Fintype.exists_sum_fiber_le_of_sum_le_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than or equal to `b`
provided that the total number of pigeonholes times `b` is greater than or equal to the total weight
@@ -505,12 +385,6 @@ end
variable [LinearOrderedCommSemiring M]
-/- warning: fintype.exists_lt_card_fiber_of_nsmul_lt_card -> Fintype.exists_lt_card_fiber_of_nsmul_lt_card is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_lt_card_fiber_of_nsmul_lt_card Fintype.exists_lt_card_fiber_of_nsmul_lt_cardₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at least as many pigeons as the ceiling of the average number of pigeons across all
pigeonholes. -/
@@ -535,12 +409,6 @@ theorem exists_lt_card_fiber_of_mul_lt_card (hn : card β * n < card α) :
#align fintype.exists_lt_card_fiber_of_mul_lt_card Fintype.exists_lt_card_fiber_of_mul_lt_card
-/
-/- warning: fintype.exists_card_fiber_lt_of_card_lt_nsmul -> Fintype.exists_card_fiber_lt_of_card_lt_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_card_fiber_lt_of_card_lt_nsmul Fintype.exists_card_fiber_lt_of_card_lt_nsmulₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at most as many pigeons as the floor of the average number of pigeons across all pigeonholes.
-/
@@ -565,12 +433,6 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : card α < card β * n) :
#align fintype.exists_card_fiber_lt_of_card_lt_mul Fintype.exists_card_fiber_lt_of_card_lt_mul
-/
-/- warning: fintype.exists_le_card_fiber_of_nsmul_le_card -> Fintype.exists_le_card_fiber_of_nsmul_le_card is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_le_card_fiber_of_nsmul_le_card Fintype.exists_le_card_fiber_of_nsmul_le_cardₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card β • b ≤ card α`, there exists an
element `y : β` such that its preimage has at least `b` elements.
@@ -593,12 +455,6 @@ theorem exists_le_card_fiber_of_mul_le_card [Nonempty β] (hn : card β * n ≤
#align fintype.exists_le_card_fiber_of_mul_le_card Fintype.exists_le_card_fiber_of_mul_le_card
-/
-/- warning: fintype.exists_card_fiber_le_of_card_le_nsmul -> Fintype.exists_card_fiber_le_of_card_le_nsmul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
-Case conversion may be inaccurate. Consider using '#align fintype.exists_card_fiber_le_of_card_le_nsmul Fintype.exists_card_fiber_le_of_card_le_nsmulₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card α ≤ card β • b`, there exists an
element `y : β` such that its preimage has at most `b` elements.
@@ -626,12 +482,6 @@ namespace Nat
open Set
-/- warning: nat.exists_lt_modeq_of_infinite -> Nat.exists_lt_modEq_of_infinite is a dubious translation:
-lean 3 declaration is
- forall {s : Set.{0} Nat}, (Set.Infinite.{0} Nat s) -> (forall {k : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) k) -> (Exists.{1} Nat (fun (m : Nat) => Exists.{0} (Membership.Mem.{0, 0} Nat (Set.{0} Nat) (Set.hasMem.{0} Nat) m s) (fun (H : Membership.Mem.{0, 0} Nat (Set.{0} Nat) (Set.hasMem.{0} Nat) m s) => Exists.{1} Nat (fun (n : Nat) => Exists.{0} (Membership.Mem.{0, 0} Nat (Set.{0} Nat) (Set.hasMem.{0} Nat) n s) (fun (H : Membership.Mem.{0, 0} Nat (Set.{0} Nat) (Set.hasMem.{0} Nat) n s) => And (LT.lt.{0} Nat Nat.hasLt m n) (Nat.ModEq k m n)))))))
-but is expected to have type
- forall {s : Set.{0} Nat}, (Set.Infinite.{0} Nat s) -> (forall {k : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) k) -> (Exists.{1} Nat (fun (m : Nat) => And (Membership.mem.{0, 0} Nat (Set.{0} Nat) (Set.instMembershipSet.{0} Nat) m s) (Exists.{1} Nat (fun (n : Nat) => And (Membership.mem.{0, 0} Nat (Set.{0} Nat) (Set.instMembershipSet.{0} Nat) n s) (And (LT.lt.{0} Nat instLTNat m n) (Nat.ModEq k m n)))))))
-Case conversion may be inaccurate. Consider using '#align nat.exists_lt_modeq_of_infinite Nat.exists_lt_modEq_of_infiniteₓ'. -/
/-- If `s` is an infinite set of natural numbers and `k > 0`, then `s` contains two elements `m < n`
that are equal mod `k`. -/
theorem exists_lt_modEq_of_infinite {s : Set ℕ} (hs : s.Infinite) {k : ℕ} (hk : 0 < k) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -119,7 +119,7 @@ variable [LinearOrderedCancelAddCommMonoid M]
/- warning: finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum -> Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sumₓ'. -/
@@ -134,7 +134,7 @@ theorem exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (hf : ∀ a ∈ s, f a
/- warning: finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul -> Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmulₓ'. -/
@@ -149,7 +149,7 @@ theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a
/- warning: finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum -> Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sumₓ'. -/
@@ -172,7 +172,7 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
/- warning: finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul -> Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmulₓ'. -/
@@ -195,7 +195,7 @@ theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
/- warning: finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum -> Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_maps_to_of_nsmul_le_sumₓ'. -/
@@ -210,7 +210,7 @@ theorem exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (hf : ∀ a ∈ s, f a
/- warning: finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul -> Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmulₓ'. -/
@@ -225,7 +225,7 @@ theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a
/- warning: finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum -> Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sumₓ'. -/
@@ -248,7 +248,7 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
/- warning: finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul -> Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (OfNat.mk.{u3} M 0 (Zero.zero.{u3} M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmulₓ'. -/
@@ -288,7 +288,7 @@ So, we prove four theorems: `finset.exists_lt_card_fiber_of_maps_to_of_mul_lt_ca
/- warning: finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to -> Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
Case conversion may be inaccurate. Consider using '#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_toₓ'. -/
@@ -321,7 +321,7 @@ theorem exists_lt_card_fiber_of_mul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
/- warning: finset.exists_card_fiber_lt_of_card_lt_nsmul -> Finset.exists_card_fiber_lt_of_card_lt_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_lt_of_card_lt_nsmul Finset.exists_card_fiber_lt_of_card_lt_nsmulₓ'. -/
@@ -356,7 +356,7 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : s.card < t.card * n) :
/- warning: finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to -> Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) (f a) t)) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))))))
Case conversion may be inaccurate. Consider using '#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_toₓ'. -/
@@ -388,7 +388,7 @@ theorem exists_le_card_fiber_of_mul_le_card_of_maps_to (hf : ∀ a ∈ s, f a
/- warning: finset.exists_card_fiber_le_of_card_le_nsmul -> Finset.exists_card_fiber_le_of_card_le_nsmul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α s)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => Exists.{0} (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) y t) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {b : M} [_inst_2 : LinearOrderedCommSemiring.{u3} M], (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α s)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_2)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s))) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_card_fiber_le_of_card_le_nsmul Finset.exists_card_fiber_le_of_card_le_nsmulₓ'. -/
@@ -440,7 +440,12 @@ between `fintype`s and `s = univ`, `t = univ`. In this case the assumption `∀
holds, so we have four theorems instead of eight. -/
-#print Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum /-
+/- warning: fintype.exists_lt_sum_fiber_of_nsmul_lt_sum -> Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_lt_sum_fiber_of_nsmul_lt_sum Fintype.exists_lt_sum_fiber_of_nsmul_lt_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than `b` provided that
the total number of pigeonholes times `b` is less than the total weight of all pigeons. -/
@@ -449,9 +454,13 @@ theorem exists_lt_sum_fiber_of_nsmul_lt_sum (hb : card β • b < ∑ x, w x) :
let ⟨y, _, hy⟩ := exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (fun _ _ => mem_univ _) hb
⟨y, hy⟩
#align fintype.exists_lt_sum_fiber_of_nsmul_lt_sum Fintype.exists_lt_sum_fiber_of_nsmul_lt_sum
--/
-#print Fintype.exists_le_sum_fiber_of_nsmul_le_sum /-
+/- warning: fintype.exists_le_sum_fiber_of_nsmul_le_sum -> Fintype.exists_le_sum_fiber_of_nsmul_le_sum is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x))))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_le_sum_fiber_of_nsmul_le_sum Fintype.exists_le_sum_fiber_of_nsmul_le_sumₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it greater than or equal to `b`
provided that the total number of pigeonholes times `b` is less than or equal to the total weight of
@@ -462,9 +471,13 @@ theorem exists_le_sum_fiber_of_nsmul_le_sum [Nonempty β] (hb : card β • b
exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (fun _ _ => mem_univ _) univ_nonempty hb
⟨y, hy⟩
#align fintype.exists_le_sum_fiber_of_nsmul_le_sum Fintype.exists_le_sum_fiber_of_nsmul_le_sum
--/
-#print Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul /-
+/- warning: fintype.exists_sum_fiber_lt_of_sum_lt_nsmul -> Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than `b` provided that
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
@@ -472,9 +485,13 @@ theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b)
∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) < b :=
@exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
--/
-#print Fintype.exists_sum_fiber_le_of_sum_le_nsmul /-
+/- warning: fintype.exists_sum_fiber_le_of_sum_le_nsmul -> Fintype.exists_sum_fiber_le_of_sum_le_nsmul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {w : α -> M} {b : M} [_inst_4 : LinearOrderedCancelAddCommMonoid.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.univ.{u1} α _inst_2) (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_4)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)) (fun (x : α) => w x)) b))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmulₓ'. -/
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than or equal to `b`
provided that the total number of pigeonholes times `b` is greater than or equal to the total weight
@@ -483,13 +500,17 @@ theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : (∑ x, w x) ≤
∃ y, (∑ x in univ.filterₓ fun x => f x = y, w x) ≤ b :=
@exists_le_sum_fiber_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmul
--/
end
variable [LinearOrderedCommSemiring M]
-#print Fintype.exists_lt_card_fiber_of_nsmul_lt_card /-
+/- warning: fintype.exists_lt_card_fiber_of_nsmul_lt_card -> Fintype.exists_lt_card_fiber_of_nsmul_lt_card is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_lt_card_fiber_of_nsmul_lt_card Fintype.exists_lt_card_fiber_of_nsmul_lt_cardₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at least as many pigeons as the ceiling of the average number of pigeons across all
pigeonholes. -/
@@ -498,7 +519,6 @@ theorem exists_lt_card_fiber_of_nsmul_lt_card (hb : card β • b < card α) :
let ⟨y, _, h⟩ := exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (fun _ _ => mem_univ _) hb
⟨y, h⟩
#align fintype.exists_lt_card_fiber_of_nsmul_lt_card Fintype.exists_lt_card_fiber_of_nsmul_lt_card
--/
#print Fintype.exists_lt_card_fiber_of_mul_lt_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes.
@@ -515,7 +535,12 @@ theorem exists_lt_card_fiber_of_mul_lt_card (hn : card β * n < card α) :
#align fintype.exists_lt_card_fiber_of_mul_lt_card Fintype.exists_lt_card_fiber_of_mul_lt_card
-/
-#print Fintype.exists_card_fiber_lt_of_card_lt_nsmul /-
+/- warning: fintype.exists_card_fiber_lt_of_card_lt_nsmul -> Fintype.exists_card_fiber_lt_of_card_lt_nsmul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toHasLt.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M], (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_card_fiber_lt_of_card_lt_nsmul Fintype.exists_card_fiber_lt_of_card_lt_nsmulₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. There is a pigeonhole
with at most as many pigeons as the floor of the average number of pigeons across all pigeonholes.
-/
@@ -524,7 +549,6 @@ theorem exists_card_fiber_lt_of_card_lt_nsmul (hb : ↑(card α) < card β • b
let ⟨y, _, h⟩ := exists_card_fiber_lt_of_card_lt_nsmul hb
⟨y, h⟩
#align fintype.exists_card_fiber_lt_of_card_lt_nsmul Fintype.exists_card_fiber_lt_of_card_lt_nsmul
--/
#print Fintype.exists_card_fiber_lt_of_card_lt_mul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes.
@@ -541,7 +565,12 @@ theorem exists_card_fiber_lt_of_card_lt_mul (hn : card α < card β * n) :
#align fintype.exists_card_fiber_lt_of_card_lt_mul Fintype.exists_card_fiber_lt_of_card_lt_mul
-/
-#print Fintype.exists_le_card_fiber_of_nsmul_le_card /-
+/- warning: fintype.exists_le_card_fiber_of_nsmul_le_card -> Fintype.exists_le_card_fiber_of_nsmul_le_card is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) b ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2))) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) b (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_le_card_fiber_of_nsmul_le_card Fintype.exists_le_card_fiber_of_nsmul_le_cardₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card β • b ≤ card α`, there exists an
element `y : β` such that its preimage has at least `b` elements.
@@ -552,7 +581,6 @@ theorem exists_le_card_fiber_of_nsmul_le_card [Nonempty β] (hb : card β • b
exists_le_card_fiber_of_nsmul_le_card_of_maps_to (fun _ _ => mem_univ _) univ_nonempty hb
⟨y, h⟩
#align fintype.exists_le_card_fiber_of_nsmul_le_card Fintype.exists_le_card_fiber_of_nsmul_le_card
--/
#print Fintype.exists_le_card_fiber_of_mul_le_card /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
@@ -565,7 +593,12 @@ theorem exists_le_card_fiber_of_mul_le_card [Nonempty β] (hn : card β * n ≤
#align fintype.exists_le_card_fiber_of_mul_le_card Fintype.exists_le_card_fiber_of_mul_le_card
-/
-#print Fintype.exists_card_fiber_le_of_card_le_nsmul /-
+/- warning: fintype.exists_card_fiber_le_of_card_le_nsmul -> Fintype.exists_card_fiber_le_of_card_le_nsmul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Fintype.card.{u1} α _inst_2)) (SMul.smul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toHasLe.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))) ((fun (a : Type) (b : Type.{u3}) [self : HasLiftT.{1, succ u3} a b] => self.0) Nat M (HasLiftT.mk.{1, succ u3} Nat M (CoeTCₓ.coe.{1, succ u3} Nat M (Nat.castCoe.{u3} M (AddMonoidWithOne.toNatCast.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))))))))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] [_inst_2 : Fintype.{u1} α] [_inst_3 : Fintype.{u2} β] (f : α -> β) {b : M} [_inst_4 : LinearOrderedCommSemiring.{u3} M] [_inst_5 : Nonempty.{succ u2} β], (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Fintype.card.{u1} α _inst_2)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddMonoidWithOne.toAddMonoid.{u3} M (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} M (NonAssocSemiring.toAddCommMonoidWithOne.{u3} M (Semiring.toNonAssocSemiring.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))))))) (Fintype.card.{u2} β _inst_3) b)) -> (Exists.{succ u2} β (fun (y : β) => LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (StrictOrderedSemiring.toPartialOrder.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4))))) (Nat.cast.{u3} M (Semiring.toNatCast.{u3} M (StrictOrderedSemiring.toSemiring.{u3} M (LinearOrderedSemiring.toStrictOrderedSemiring.{u3} M (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u3} M _inst_4)))) (Finset.card.{u1} α (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) (Finset.univ.{u1} α _inst_2)))) b))
+Case conversion may be inaccurate. Consider using '#align fintype.exists_card_fiber_le_of_card_le_nsmul Fintype.exists_card_fiber_le_of_card_le_nsmulₓ'. -/
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
between finite types `α` and `β` and a number `b` such that `card α ≤ card β • b`, there exists an
element `y : β` such that its preimage has at most `b` elements.
@@ -575,7 +608,6 @@ theorem exists_card_fiber_le_of_card_le_nsmul [Nonempty β] (hb : ↑(card α)
let ⟨y, _, h⟩ := exists_card_fiber_le_of_card_le_nsmul univ_nonempty hb
⟨y, h⟩
#align fintype.exists_card_fiber_le_of_card_le_nsmul Fintype.exists_card_fiber_le_of_card_le_nsmul
--/
#print Fintype.exists_card_fiber_le_of_card_le_mul /-
/-- The strong pigeonhole principle for finitely many pigeons and pigeonholes. Given a function `f`
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -153,7 +153,7 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sumₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is greater than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonpositive,
@@ -176,7 +176,7 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LT.lt.{u3} M (Preorder.toLT.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmulₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
if the total weight of a finite set of pigeons is less than `n • b`, they are sorted into some
pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons there is nonnegative,
@@ -229,7 +229,7 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x))) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) b (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))))
Case conversion may be inaccurate. Consider using '#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sumₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is greater than or equal to `n • b`, they
are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the
@@ -252,7 +252,7 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} {M : Type.{u3}} [_inst_1 : DecidableEq.{succ u2} β] {s : Finset.{u1} α} {t : Finset.{u2} β} {f : α -> β} {w : α -> M} {b : M} [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} M], (forall (y : β), (Not (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t)) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (OfNat.ofNat.{u3} M 0 (Zero.toOfNat0.{u3} M (AddRightCancelMonoid.toZero.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)))) -> (Finset.Nonempty.{u2} β t) -> (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) s (fun (x : α) => w x)) (HSMul.hSMul.{0, u3, u3} Nat M M (instHSMul.{0, u3} Nat M (AddMonoid.SMul.{u3} M (AddRightCancelMonoid.toAddMonoid.{u3} M (AddCancelMonoid.toAddRightCancelMonoid.{u3} M (AddCancelCommMonoid.toAddCancelMonoid.{u3} M (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2))))))) (Finset.card.{u2} β t) b)) -> (Exists.{succ u2} β (fun (y : β) => And (Membership.mem.{u2, u2} β (Finset.{u2} β) (Finset.instMembershipFinset.{u2} β) y t) (LE.le.{u3} M (Preorder.toLE.{u3} M (PartialOrder.toPreorder.{u3} M (OrderedCancelAddCommMonoid.toPartialOrder.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)))) (Finset.sum.{u3, u1} M α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u3} M (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} M _inst_2)) (Finset.filter.{u1} α (fun (x : α) => Eq.{succ u2} β (f x) y) (fun (a : α) => _inst_1 (f a) y) s) (fun (x : α) => w x)) b)))
Case conversion may be inaccurate. Consider using '#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmulₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (y «expr ∉ » t) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y «expr ∉ » t) -/
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
version: if the total weight of a finite set of pigeons is less than or equal to `n • b`, they are
sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weight of the pigeons
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Similar to #12486, which did this for Algebra.Algebra.Basic
.
Splits Algebra.Module.Defs
off Algebra.Module.Basic
. Most imports only need the Defs file, which has significantly smaller imports. The remaining Algebra.Module.Basic
is now a grab-bag of unrelated results, and should probably be split further or rehomed.
This is mostly motivated by the wasted effort during minimization upon encountering Algebra.Module.Basic.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -3,8 +3,8 @@ Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-/
-import Mathlib.Algebra.Module.Basic
import Mathlib.Algebra.Module.BigOperators
+import Mathlib.Algebra.Module.Defs
import Mathlib.Algebra.Order.BigOperators.Group.Finset
import Mathlib.Data.Nat.ModEq
import Mathlib.Data.Set.Finite
Take the content of
Algebra.BigOperators.List.Basic
Algebra.BigOperators.List.Lemmas
Algebra.BigOperators.Multiset.Basic
Algebra.BigOperators.Multiset.Lemmas
Algebra.BigOperators.Multiset.Order
Algebra.BigOperators.Order
and sort it into six files:
Algebra.Order.BigOperators.Group.List
. I credit Yakov for https://github.com/leanprover-community/mathlib/pull/8543.Algebra.Order.BigOperators.Group.Multiset
. Copyright inherited from Algebra.BigOperators.Multiset.Order
.Algebra.Order.BigOperators.Group.Finset
. Copyright inherited from Algebra.BigOperators.Order
.Algebra.Order.BigOperators.Ring.List
. I credit Stuart for https://github.com/leanprover-community/mathlib/pull/10184.Algebra.Order.BigOperators.Ring.Multiset
. I credit Ruben for https://github.com/leanprover-community/mathlib/pull/8787.Algebra.Order.BigOperators.Ring.Finset
. I credit Floris for https://github.com/leanprover-community/mathlib/pull/1294.Here are the design decisions at play:
Data.Nat.Order.Basic
in a few List
files.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.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.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.@@ -3,11 +3,11 @@ Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-/
-import Mathlib.Data.Nat.ModEq
-import Mathlib.Data.Set.Finite
-import Mathlib.Algebra.BigOperators.Order
import Mathlib.Algebra.Module.Basic
import Mathlib.Algebra.Module.BigOperators
+import Mathlib.Algebra.Order.BigOperators.Group.Finset
+import Mathlib.Data.Nat.ModEq
+import Mathlib.Data.Set.Finite
#align_import combinatorics.pigeonhole from "leanprover-community/mathlib"@"d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce"
@@ -461,7 +461,7 @@ open Set
that are equal mod `k`. -/
theorem exists_lt_modEq_of_infinite {s : Set ℕ} (hs : s.Infinite) {k : ℕ} (hk : 0 < k) :
∃ m ∈ s, ∃ n ∈ s, m < n ∧ m ≡ n [MOD k] :=
- (hs.exists_lt_map_eq_of_mapsTo $ fun n _ => show n % k ∈ Iio k from Nat.mod_lt n hk) <|
+ (hs.exists_lt_map_eq_of_mapsTo fun n _ => show n % k ∈ Iio k from Nat.mod_lt n hk) <|
finite_lt_nat k
#align nat.exists_lt_modeq_of_infinite Nat.exists_lt_modEq_of_infinite
∃ x ∈ s, _
instead of ∃ (x) (_ : x ∈ s), _
(#9184)
Search for [∀∃].*(_
and manually replace some occurrences with more readable versions.
In case of ∀
, the new expressions are defeq to the old ones.
In case of ∃
, they differ by exists_prop
.
In some rare cases, golf proofs that needed fixing.
@@ -134,7 +134,7 @@ pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons the
then for at least one of these `n` pigeonholes, the total weight of the pigeons in this pigeonhole
is greater than `b`. -/
theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
- (ht : ∀ (y) (_ : y ∉ t), ∑ x in s.filter fun x => f x = y, w x ≤ 0)
+ (ht : ∀ y ∉ t, ∑ x in s.filter fun x => f x = y, w x ≤ 0)
(hb : t.card • b < ∑ x in s, w x) : ∃ y ∈ t, b < ∑ x in s.filter fun x => f x = y, w x :=
exists_lt_of_sum_lt <|
calc
@@ -149,7 +149,7 @@ pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons the
then for at least one of these `n` pigeonholes, the total weight of the pigeons in this pigeonhole
is less than `b`. -/
theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
- (ht : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x)
+ (ht : ∀ y ∉ t, (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x)
(hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x < b :=
exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum (M := Mᵒᵈ) ht hb
#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
@@ -183,7 +183,7 @@ are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total
pigeons there is nonpositive, then for at least one of these `n` pigeonholes, the total weight of
the pigeons in this pigeonhole is greater than or equal to `b`. -/
theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
- (hf : ∀ (y) (_ : y ∉ t), ∑ x in s.filter fun x => f x = y, w x ≤ 0) (ht : t.Nonempty)
+ (hf : ∀ y ∉ t, ∑ x in s.filter fun x => f x = y, w x ≤ 0) (ht : t.Nonempty)
(hb : t.card • b ≤ ∑ x in s, w x) : ∃ y ∈ t, b ≤ ∑ x in s.filter fun x => f x = y, w x :=
exists_le_of_sum_le ht <|
calc
@@ -198,7 +198,7 @@ sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total weig
there is nonnegative, then for at least one of these `n` pigeonholes, the total weight of the
pigeons in this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
- (hf : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x) (ht : t.Nonempty)
+ (hf : ∀ y ∉ t, (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x) (ht : t.Nonempty)
(hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x ≤ b :=
exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum (M := Mᵒᵈ) hf ht hb
#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
[@foo](https://github.com/foo) _ _ _ _ _ ...
by named arguments (#8702)
Using Lean4's named arguments, we manage to remove a few hard-to-read explicit function calls [@foo](https://github.com/foo) _ _ _ _ _ ...
which used to be necessary in Lean3.
Occasionally, this results in slightly longer code. The benefit of named arguments is readability, as well as to reduce the brittleness of the code when the argument order is changed.
Co-authored-by: Michael Rothgang <rothgami@math.hu-berlin.de>
@@ -125,7 +125,7 @@ pigeonholes, then for some pigeonhole, the total weight of the pigeons in this p
than `b`. -/
theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a ∈ t)
(hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x < b :=
- @exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
+ exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum (M := Mᵒᵈ) hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
@@ -151,7 +151,7 @@ is less than `b`. -/
theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(ht : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x)
(hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x < b :=
- @exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ ht hb
+ exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum (M := Mᵒᵈ) ht hb
#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
/-!
@@ -174,7 +174,7 @@ are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight
this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
(hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x ≤ b :=
- @exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
+ exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum (M := Mᵒᵈ) hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
@@ -200,7 +200,7 @@ pigeons in this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(hf : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x) (ht : t.Nonempty)
(hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x ≤ b :=
- @exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
+ exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum (M := Mᵒᵈ) hf ht hb
#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
end
@@ -352,7 +352,7 @@ version: there is a pigeonhole with the total weight of pigeons in it less than
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : ∑ x, w x < card β • b) :
∃ y, ∑ x in univ.filter fun x => f x = y, w x < b :=
- @exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
+ exists_lt_sum_fiber_of_nsmul_lt_sum (M := Mᵒᵈ) _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
/-- The pigeonhole principle for finitely many pigeons of different weights, non-strict inequality
@@ -361,7 +361,7 @@ provided that the total number of pigeonholes times `b` is greater than or equal
of all pigeons. -/
theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : ∑ x, w x ≤ card β • b) :
∃ y, ∑ x in univ.filter fun x => f x = y, w x ≤ b :=
- @exists_le_sum_fiber_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ _ hb
+ exists_le_sum_fiber_of_nsmul_le_sum (M := Mᵒᵈ) _ hb
#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmul
end
@@ -2,11 +2,6 @@
Copyright (c) 2020 Kyle Miller. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kyle Miller, Yury Kudryashov
-
-! This file was ported from Lean 3 source module combinatorics.pigeonhole
-! leanprover-community/mathlib commit d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.Nat.ModEq
import Mathlib.Data.Set.Finite
@@ -14,6 +9,8 @@ import Mathlib.Algebra.BigOperators.Order
import Mathlib.Algebra.Module.Basic
import Mathlib.Algebra.Module.BigOperators
+#align_import combinatorics.pigeonhole from "leanprover-community/mathlib"@"d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce"
+
/-!
# Pigeonhole principles
∑'
precedence (#5615)
∑
, ∏
and variants).([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤])
replaced by $1 $2 $3
@@ -127,7 +127,7 @@ if the total weight of a finite set of pigeons is less than `n • b`, and they
pigeonholes, then for some pigeonhole, the total weight of the pigeons in this pigeonhole is less
than `b`. -/
theorem exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul (hf : ∀ a ∈ s, f a ∈ t)
- (hb : (∑ x in s, w x) < t.card • b) : ∃ y ∈ t, (∑ x in s.filter fun x => f x = y, w x) < b :=
+ (hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf hb
#align finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_maps_to_of_sum_lt_nsmul
@@ -137,11 +137,11 @@ pigeonholes, and for all but `n` pigeonholes the total weight of the pigeons the
then for at least one of these `n` pigeonholes, the total weight of the pigeons in this pigeonhole
is greater than `b`. -/
theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
- (ht : ∀ (y) (_ : y ∉ t), (∑ x in s.filter fun x => f x = y, w x) ≤ 0)
+ (ht : ∀ (y) (_ : y ∉ t), ∑ x in s.filter fun x => f x = y, w x ≤ 0)
(hb : t.card • b < ∑ x in s, w x) : ∃ y ∈ t, b < ∑ x in s.filter fun x => f x = y, w x :=
exists_lt_of_sum_lt <|
calc
- (∑ _y in t, b) < ∑ x in s, w x := by simpa
+ ∑ _y in t, b < ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filter fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos ht
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
@@ -153,7 +153,7 @@ then for at least one of these `n` pigeonholes, the total weight of the pigeons
is less than `b`. -/
theorem exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(ht : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x)
- (hb : (∑ x in s, w x) < t.card • b) : ∃ y ∈ t, (∑ x in s.filter fun x => f x = y, w x) < b :=
+ (hb : ∑ x in s, w x < t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ ht hb
#align finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul Finset.exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
@@ -176,7 +176,7 @@ version: if the total weight of a finite set of pigeons is less than or equal to
are sorted into `n > 0` pigeonholes, then for some pigeonhole, the total weight of the pigeons in
this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
- (hb : (∑ x in s, w x) ≤ t.card • b) : ∃ y ∈ t, (∑ x in s.filter fun x => f x = y, w x) ≤ b :=
+ (hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_maps_to_of_sum_le_nsmul
@@ -186,11 +186,11 @@ are sorted into some pigeonholes, and for all but `n > 0` pigeonholes the total
pigeons there is nonpositive, then for at least one of these `n` pigeonholes, the total weight of
the pigeons in this pigeonhole is greater than or equal to `b`. -/
theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
- (hf : ∀ (y) (_ : y ∉ t), (∑ x in s.filter fun x => f x = y, w x) ≤ 0) (ht : t.Nonempty)
+ (hf : ∀ (y) (_ : y ∉ t), ∑ x in s.filter fun x => f x = y, w x ≤ 0) (ht : t.Nonempty)
(hb : t.card • b ≤ ∑ x in s, w x) : ∃ y ∈ t, b ≤ ∑ x in s.filter fun x => f x = y, w x :=
exists_le_of_sum_le ht <|
calc
- (∑ _y in t, b) ≤ ∑ x in s, w x := by simpa
+ ∑ _y in t, b ≤ ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filter fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos hf
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
@@ -202,7 +202,7 @@ there is nonnegative, then for at least one of these `n` pigeonholes, the total
pigeons in this pigeonhole is less than or equal to `b`. -/
theorem exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(hf : ∀ (y) (_ : y ∉ t), (0 : M) ≤ ∑ x in s.filter fun x => f x = y, w x) (ht : t.Nonempty)
- (hb : (∑ x in s, w x) ≤ t.card • b) : ∃ y ∈ t, (∑ x in s.filter fun x => f x = y, w x) ≤ b :=
+ (hb : ∑ x in s, w x ≤ t.card • b) : ∃ y ∈ t, ∑ x in s.filter fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ hf ht hb
#align finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul Finset.exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
@@ -353,8 +353,8 @@ theorem exists_le_sum_fiber_of_nsmul_le_sum [Nonempty β] (hb : card β • b
/-- The pigeonhole principle for finitely many pigeons of different weights, strict inequality
version: there is a pigeonhole with the total weight of pigeons in it less than `b` provided that
the total number of pigeonholes times `b` is greater than the total weight of all pigeons. -/
-theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b) :
- ∃ y, (∑ x in univ.filter fun x => f x = y, w x) < b :=
+theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : ∑ x, w x < card β • b) :
+ ∃ y, ∑ x in univ.filter fun x => f x = y, w x < b :=
@exists_lt_sum_fiber_of_nsmul_lt_sum α β Mᵒᵈ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_lt_of_sum_lt_nsmul Fintype.exists_sum_fiber_lt_of_sum_lt_nsmul
@@ -362,8 +362,8 @@ theorem exists_sum_fiber_lt_of_sum_lt_nsmul (hb : (∑ x, w x) < card β • b)
version: there is a pigeonhole with the total weight of pigeons in it less than or equal to `b`
provided that the total number of pigeonholes times `b` is greater than or equal to the total weight
of all pigeons. -/
-theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : (∑ x, w x) ≤ card β • b) :
- ∃ y, (∑ x in univ.filter fun x => f x = y, w x) ≤ b :=
+theorem exists_sum_fiber_le_of_sum_le_nsmul [Nonempty β] (hb : ∑ x, w x ≤ card β • b) :
+ ∃ y, ∑ x in univ.filter fun x => f x = y, w x ≤ b :=
@exists_le_sum_fiber_of_nsmul_le_sum α β Mᵒᵈ _ _ _ _ _ _ _ _ hb
#align fintype.exists_sum_fiber_le_of_sum_le_nsmul Fintype.exists_sum_fiber_le_of_sum_le_nsmul
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -232,7 +232,7 @@ So, we prove four theorems: `Finset.exists_lt_card_fiber_of_maps_to_of_mul_lt_ca
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes. -/
theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t)
(ht : t.card • b < s.card) : ∃ y ∈ t, b < (s.filter fun x => f x = y).card := by
- simp_rw [cast_card] at ht⊢
+ simp_rw [cast_card] at ht ⊢
exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
@@ -252,7 +252,7 @@ theorem exists_lt_card_fiber_of_mul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. -/
theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
∃ y ∈ t, ↑(s.filter fun x => f x = y).card < b := by
- simp_rw [cast_card] at ht⊢
+ simp_rw [cast_card] at ht ⊢
exact
exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht
@@ -276,7 +276,7 @@ that its preimage in `s` has at least `b` elements.
See also `Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to` for a stronger statement. -/
theorem exists_le_card_fiber_of_nsmul_le_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
(hb : t.card • b ≤ s.card) : ∃ y ∈ t, b ≤ (s.filter fun x => f x = y).card := by
- simp_rw [cast_card] at hb⊢
+ simp_rw [cast_card] at hb ⊢
exact exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum hf ht hb
#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to
@@ -295,7 +295,7 @@ that its preimage in `s` has no more than `b` elements.
See also `Finset.exists_card_fiber_lt_of_card_lt_nsmul` for a stronger statement. -/
theorem exists_card_fiber_le_of_card_le_nsmul (ht : t.Nonempty) (hb : ↑s.card ≤ t.card • b) :
∃ y ∈ t, ↑(s.filter fun x => f x = y).card ≤ b := by
- simp_rw [cast_card] at hb⊢
+ simp_rw [cast_card] at hb ⊢
refine'
exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
(fun _ _ => sum_nonneg fun _ _ => zero_le_one) ht hb
@@ -46,7 +46,7 @@ The versions vary by:
* in case when we count pigeons by some weight function `w` and consider a function `f` between
`Finset`s `s` and `t`, we can either assume that each pigeon is in one of the pigeonholes
(`∀ x ∈ s, f x ∈ t`), or assume that for `y ∉ t`, the total weight of the pigeons in this
- pigeonhole `∑ x in s.filter (λ x, f x = y), w x` is nonpositive or nonnegative depending on
+ pigeonhole `∑ x in s.filter (fun x ↦ f x = y), w x` is nonpositive or nonnegative depending on
the inequality we are proving.
Lemma names follow `mathlib` convention (e.g.,
@@ -97,7 +97,7 @@ There are a few bits we can change in this theorem:
* reverse all inequalities, with obvious adjustments to the name;
* replace the assumption `∀ a ∈ s, f a ∈ t` with
- `∀ y ∉ t, (∑ x in s.filter (λ x, f x = y), w x) ≤ 0`,
+ `∀ y ∉ t, (∑ x in s.filter (fun x ↦ f x = y), w x) ≤ 0`,
and replace `of_maps_to` with `of_sum_fiber_nonpos` in the name;
* use non-strict inequalities assuming `t` is nonempty.
fix-comments.py
on all files.@@ -57,8 +57,8 @@ docstrings instead of the names.
* `Ordinal.infinite_pigeonhole`: pigeonhole principle for cardinals, formulated using cofinality;
-* `measure_theory.exists_nonempty_inter_of_measure_univ_lt_tsum_measure`,
- `measure_theory.exists_nonempty_inter_of_measure_univ_lt_sum_measure`: pigeonhole principle in a
+* `MeasureTheory.exists_nonempty_inter_of_measure_univ_lt_tsum_measure`,
+ `MeasureTheory.exists_nonempty_inter_of_measure_univ_lt_sum_measure`: pigeonhole principle in a
measure space.
## Tags
This PR fixes two things:
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.#align
statements. (This was needed for a script I wrote for #3630.)@@ -144,7 +144,6 @@ theorem exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
(∑ _y in t, b) < ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filter fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos ht
-
#align finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum Finset.exists_lt_sum_fiber_of_sum_fiber_nonpos_of_nsmul_lt_sum
/-- The pigeonhole principle for finitely many pigeons counted by weight, strict inequality version:
@@ -194,7 +193,6 @@ theorem exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
(∑ _y in t, b) ≤ ∑ x in s, w x := by simpa
_ ≤ ∑ y in t, ∑ x in s.filter fun x => f x = y, w x :=
sum_le_sum_fiberwise_of_sum_fiber_nonpos hf
-
#align finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum Finset.exists_le_sum_fiber_of_sum_fiber_nonpos_of_nsmul_le_sum
/-- The pigeonhole principle for finitely many pigeons counted by weight, non-strict inequality
@@ -104,9 +104,6 @@ There are a few bits we can change in this theorem:
We can do all these variations independently, so we have eight versions of the theorem.
-/
--- porting note: several computations in the file seem to be timing out
-set_option maxHeartbeats 1000000
-
section
variable [LinearOrderedCancelAddCommMonoid M]
@@ -236,8 +233,7 @@ So, we prove four theorems: `Finset.exists_lt_card_fiber_of_maps_to_of_mul_lt_ca
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at least as many pigeons as the ceiling of the average number of pigeons across all pigeonholes. -/
theorem exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t)
- (ht : t.card • b < s.card) : ∃ y ∈ t, b < (s.filter fun x => f x = y).card :=
- by
+ (ht : t.card • b < s.card) : ∃ y ∈ t, b < (s.filter fun x => f x = y).card := by
simp_rw [cast_card] at ht⊢
exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
#align finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
@@ -257,8 +253,7 @@ theorem exists_lt_card_fiber_of_mul_lt_card_of_maps_to (hf : ∀ a ∈ s, f a
/-- The pigeonhole principle for finitely many pigeons counted by heads: there is a pigeonhole with
at most as many pigeons as the floor of the average number of pigeons across all pigeonholes. -/
theorem exists_card_fiber_lt_of_card_lt_nsmul (ht : ↑s.card < t.card • b) :
- ∃ y ∈ t, ↑(s.filter fun x => f x = y).card < b :=
- by
+ ∃ y ∈ t, ↑(s.filter fun x => f x = y).card < b := by
simp_rw [cast_card] at ht⊢
exact
exists_sum_fiber_lt_of_sum_fiber_nonneg_of_sum_lt_nsmul
@@ -282,15 +277,14 @@ finite sets `s` and `t` and a number `b` such that `card t • b ≤ card s`, th
that its preimage in `s` has at least `b` elements.
See also `Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to` for a stronger statement. -/
theorem exists_le_card_fiber_of_nsmul_le_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
- (hb : t.card • b ≤ s.card) : ∃ y ∈ t, b ≤ (s.filter fun x => f x = y).card :=
- by
+ (hb : t.card • b ≤ s.card) : ∃ y ∈ t, b ≤ (s.filter fun x => f x = y).card := by
simp_rw [cast_card] at hb⊢
exact exists_le_sum_fiber_of_maps_to_of_nsmul_le_sum hf ht hb
#align finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to Finset.exists_le_card_fiber_of_nsmul_le_card_of_maps_to
/-- The pigeonhole principle for finitely many pigeons counted by heads: given a function between
-finite sets `s` and `t` and a natural number `b` such that `card t * n ≤ card s`, there exists `y ∈
-t` such that its preimage in `s` has at least `n` elements. See also
+finite sets `s` and `t` and a natural number `b` such that `card t * n ≤ card s`, there exists
+`y ∈ t` such that its preimage in `s` has at least `n` elements. See also
`Finset.exists_lt_card_fiber_of_mul_lt_card_of_maps_to` for a stronger statement. -/
theorem exists_le_card_fiber_of_mul_le_card_of_maps_to (hf : ∀ a ∈ s, f a ∈ t) (ht : t.Nonempty)
(hn : t.card * n ≤ s.card) : ∃ y ∈ t, n ≤ (s.filter fun x => f x = y).card :=
@@ -302,8 +296,7 @@ finite sets `s` and `t`, and a number `b` such that `card s ≤ card t • b`, t
that its preimage in `s` has no more than `b` elements.
See also `Finset.exists_card_fiber_lt_of_card_lt_nsmul` for a stronger statement. -/
theorem exists_card_fiber_le_of_card_le_nsmul (ht : t.Nonempty) (hb : ↑s.card ≤ t.card • b) :
- ∃ y ∈ t, ↑(s.filter fun x => f x = y).card ≤ b :=
- by
+ ∃ y ∈ t, ↑(s.filter fun x => f x = y).card ≤ b := by
simp_rw [cast_card] at hb⊢
refine'
exists_sum_fiber_le_of_sum_fiber_nonneg_of_sum_le_nsmul
@@ -73,8 +73,7 @@ variable {α : Type u} {β : Type v} {M : Type w} [DecidableEq β]
open Nat
--- porting note: The `BigOperators` notation is now global
--- open BigOperators
+open BigOperators
namespace Finset
The unported dependencies are