data.fintype.lattice
⟷
Mathlib.Data.Fintype.Lattice
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-/
-import Mathbin.Data.Fintype.Card
-import Mathbin.Data.Finset.Lattice
+import Data.Fintype.Card
+import Data.Finset.Lattice
#align_import data.fintype.lattice from "leanprover-community/mathlib"@"327c3c0d9232d80e250dc8f65e7835b82b266ea5"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module data.fintype.lattice
-! leanprover-community/mathlib commit 327c3c0d9232d80e250dc8f65e7835b82b266ea5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Fintype.Card
import Mathbin.Data.Finset.Lattice
+#align_import data.fintype.lattice from "leanprover-community/mathlib"@"327c3c0d9232d80e250dc8f65e7835b82b266ea5"
+
/-!
# Lemmas relating fintypes and order/lattice structure.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -31,40 +31,52 @@ namespace Finset
variable [Fintype α] {s : Finset α}
+#print Finset.sup_univ_eq_iSup /-
/-- A special case of `finset.sup_eq_supr` that omits the useless `x ∈ univ` binder. -/
theorem sup_univ_eq_iSup [CompleteLattice β] (f : α → β) : Finset.univ.sup f = iSup f :=
(sup_eq_iSup _ f).trans <| congr_arg _ <| funext fun a => iSup_pos (mem_univ _)
#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSup
+-/
+#print Finset.inf_univ_eq_iInf /-
/-- A special case of `finset.inf_eq_infi` that omits the useless `x ∈ univ` binder. -/
theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf f = iInf f :=
sup_univ_eq_iSup (f : α → βᵒᵈ)
#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInf
+-/
+#print Finset.fold_inf_univ /-
@[simp]
theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
(Finset.univ.fold (· ⊓ ·) a fun x => x) = ⊥ :=
eq_bot_iff.2 <|
((Finset.fold_op_rel_iff_and <| @le_inf_iff α _).1 le_rfl).2 ⊥ <| Finset.mem_univ _
#align finset.fold_inf_univ Finset.fold_inf_univ
+-/
+#print Finset.fold_sup_univ /-
@[simp]
theorem fold_sup_univ [SemilatticeSup α] [OrderTop α] (a : α) :
(Finset.univ.fold (· ⊔ ·) a fun x => x) = ⊤ :=
@fold_inf_univ αᵒᵈ ‹Fintype α› _ _ _
#align finset.fold_sup_univ Finset.fold_sup_univ
+-/
end Finset
open Finset Function
+#print Finite.exists_max /-
theorem Finite.exists_max [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
∃ x₀ : α, ∀ x, f x ≤ f x₀ := by cases nonempty_fintype α;
simpa using exists_max_image univ f univ_nonempty
#align finite.exists_max Finite.exists_max
+-/
+#print Finite.exists_min /-
theorem Finite.exists_min [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
∃ x₀ : α, ∀ x, f x₀ ≤ f x := by cases nonempty_fintype α;
simpa using exists_min_image univ f univ_nonempty
#align finite.exists_min Finite.exists_min
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -21,7 +21,7 @@ import Mathbin.Data.Finset.Lattice
open Function
-open Nat
+open scoped Nat
universe u v
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -31,34 +31,16 @@ namespace Finset
variable [Fintype α] {s : Finset α}
-/- warning: finset.sup_univ_eq_supr -> Finset.sup_univ_eq_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2)) α f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteLattice.toSupSet.{u2} β _inst_2) α f)
-Case conversion may be inaccurate. Consider using '#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSupₓ'. -/
/-- A special case of `finset.sup_eq_supr` that omits the useless `x ∈ univ` binder. -/
theorem sup_univ_eq_iSup [CompleteLattice β] (f : α → β) : Finset.univ.sup f = iSup f :=
(sup_eq_iSup _ f).trans <| congr_arg _ <| funext fun a => iSup_pos (mem_univ _)
#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSup
-/- warning: finset.inf_univ_eq_infi -> Finset.inf_univ_eq_iInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)) α f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteLattice.toInfSet.{u2} β _inst_2) α f)
-Case conversion may be inaccurate. Consider using '#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInfₓ'. -/
/-- A special case of `finset.inf_eq_infi` that omits the useless `x ∈ univ` binder. -/
theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf f = iInf f :=
sup_univ_eq_iSup (f : α → βᵒᵈ)
#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInf
-/- warning: finset.fold_inf_univ -> Finset.fold_inf_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2)) (inf_isCommutative.{u1} α _inst_2) (inf_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.147 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.149 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.147 x._@.Mathlib.Data.Fintype.Lattice._hyg.149) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.127 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.129 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.127 x._@.Mathlib.Data.Fintype.Lattice._hyg.129)) (instIsCommutativeInfToInf.{u1} α _inst_2)) (instIsAssociativeInfToInf.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
-Case conversion may be inaccurate. Consider using '#align finset.fold_inf_univ Finset.fold_inf_univₓ'. -/
@[simp]
theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
(Finset.univ.fold (· ⊓ ·) a fun x => x) = ⊥ :=
@@ -66,12 +48,6 @@ theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
((Finset.fold_op_rel_iff_and <| @le_inf_iff α _).1 le_rfl).2 ⊥ <| Finset.mem_univ _
#align finset.fold_inf_univ Finset.fold_inf_univ
-/- warning: finset.fold_sup_univ -> Finset.fold_sup_univ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2)) (sup_isCommutative.{u1} α _inst_2) (sup_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toHasTop.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.233 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.235 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.233 x._@.Mathlib.Data.Fintype.Lattice._hyg.235) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.213 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.215 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.213 x._@.Mathlib.Data.Fintype.Lattice._hyg.215)) (instIsCommutativeSupToSup.{u1} α _inst_2)) (instIsAssociativeSupToSup.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
-Case conversion may be inaccurate. Consider using '#align finset.fold_sup_univ Finset.fold_sup_univₓ'. -/
@[simp]
theorem fold_sup_univ [SemilatticeSup α] [OrderTop α] (a : α) :
(Finset.univ.fold (· ⊔ ·) a fun x => x) = ⊤ :=
@@ -82,23 +58,11 @@ end Finset
open Finset Function
-/- warning: finite.exists_max -> Finite.exists_max is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x) (f x₀))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x) (f x₀))
-Case conversion may be inaccurate. Consider using '#align finite.exists_max Finite.exists_maxₓ'. -/
theorem Finite.exists_max [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
∃ x₀ : α, ∀ x, f x ≤ f x₀ := by cases nonempty_fintype α;
simpa using exists_max_image univ f univ_nonempty
#align finite.exists_max Finite.exists_max
-/- warning: finite.exists_min -> Finite.exists_min is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x₀) (f x))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x₀) (f x))
-Case conversion may be inaccurate. Consider using '#align finite.exists_min Finite.exists_minₓ'. -/
theorem Finite.exists_min [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
∃ x₀ : α, ∀ x, f x₀ ≤ f x := by cases nonempty_fintype α;
simpa using exists_min_image univ f univ_nonempty
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -89,8 +89,7 @@ but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x) (f x₀))
Case conversion may be inaccurate. Consider using '#align finite.exists_max Finite.exists_maxₓ'. -/
theorem Finite.exists_max [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
- ∃ x₀ : α, ∀ x, f x ≤ f x₀ := by
- cases nonempty_fintype α
+ ∃ x₀ : α, ∀ x, f x ≤ f x₀ := by cases nonempty_fintype α;
simpa using exists_max_image univ f univ_nonempty
#align finite.exists_max Finite.exists_max
@@ -101,8 +100,7 @@ but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x₀) (f x))
Case conversion may be inaccurate. Consider using '#align finite.exists_min Finite.exists_minₓ'. -/
theorem Finite.exists_min [Finite α] [Nonempty α] [LinearOrder β] (f : α → β) :
- ∃ x₀ : α, ∀ x, f x₀ ≤ f x := by
- cases nonempty_fintype α
+ ∃ x₀ : α, ∀ x, f x₀ ≤ f x := by cases nonempty_fintype α;
simpa using exists_min_image univ f univ_nonempty
#align finite.exists_min Finite.exists_min
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -33,7 +33,7 @@ variable [Fintype α] {s : Finset α}
/- warning: finset.sup_univ_eq_supr -> Finset.sup_univ_eq_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2)) α f)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2)) α f)
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteLattice.toSupSet.{u2} β _inst_2) α f)
Case conversion may be inaccurate. Consider using '#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSupₓ'. -/
@@ -44,7 +44,7 @@ theorem sup_univ_eq_iSup [CompleteLattice β] (f : α → β) : Finset.univ.sup
/- warning: finset.inf_univ_eq_infi -> Finset.inf_univ_eq_iInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)) α f)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)) α f)
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteLattice.toInfSet.{u2} β _inst_2) α f)
Case conversion may be inaccurate. Consider using '#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInfₓ'. -/
@@ -55,7 +55,7 @@ theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf
/- warning: finset.fold_inf_univ -> Finset.fold_inf_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2)) (inf_isCommutative.{u1} α _inst_2) (inf_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2)) (inf_isCommutative.{u1} α _inst_2) (inf_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.147 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.149 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.147 x._@.Mathlib.Data.Fintype.Lattice._hyg.149) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.127 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.129 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.127 x._@.Mathlib.Data.Fintype.Lattice._hyg.129)) (instIsCommutativeInfToInf.{u1} α _inst_2)) (instIsAssociativeInfToInf.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
Case conversion may be inaccurate. Consider using '#align finset.fold_inf_univ Finset.fold_inf_univₓ'. -/
@@ -68,7 +68,7 @@ theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
/- warning: finset.fold_sup_univ -> Finset.fold_sup_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2)) (sup_isCommutative.{u1} α _inst_2) (sup_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toHasTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2)) (sup_isCommutative.{u1} α _inst_2) (sup_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toHasTop.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.233 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.235 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.233 x._@.Mathlib.Data.Fintype.Lattice._hyg.235) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.213 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.215 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.213 x._@.Mathlib.Data.Fintype.Lattice._hyg.215)) (instIsCommutativeSupToSup.{u1} α _inst_2)) (instIsAssociativeSupToSup.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
Case conversion may be inaccurate. Consider using '#align finset.fold_sup_univ Finset.fold_sup_univₓ'. -/
@@ -84,7 +84,7 @@ open Finset Function
/- warning: finite.exists_max -> Finite.exists_max is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x) (f x₀))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x) (f x₀))
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x) (f x₀))
Case conversion may be inaccurate. Consider using '#align finite.exists_max Finite.exists_maxₓ'. -/
@@ -96,7 +96,7 @@ theorem Finite.exists_max [Finite α] [Nonempty α] [LinearOrder β] (f : α →
/- warning: finite.exists_min -> Finite.exists_min is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x₀) (f x))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Finite.{succ u1} α] [_inst_2 : Nonempty.{succ u1} α] [_inst_3 : LinearOrder.{u2} β] (f : α -> β), Exists.{succ u1} α (fun (x₀ : α) => forall (x : α), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (LinearOrder.toLattice.{u2} β _inst_3))))) (f x₀) (f x))
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Finite.{succ u2} α] [_inst_2 : Nonempty.{succ u2} α] [_inst_3 : LinearOrder.{u1} β] (f : α -> β), Exists.{succ u2} α (fun (x₀ : α) => forall (x : α), LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β (Lattice.toSemilatticeInf.{u1} β (DistribLattice.toLattice.{u1} β (instDistribLattice.{u1} β _inst_3)))))) (f x₀) (f x))
Case conversion may be inaccurate. Consider using '#align finite.exists_min Finite.exists_minₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -31,27 +31,27 @@ namespace Finset
variable [Fintype α] {s : Finset α}
-/- warning: finset.sup_univ_eq_supr -> Finset.sup_univ_eq_supᵢ is a dubious translation:
+/- warning: finset.sup_univ_eq_supr -> Finset.sup_univ_eq_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (supᵢ.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2)) α f)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2)) α f)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (supᵢ.{u2, succ u1} β (CompleteLattice.toSupSet.{u2} β _inst_2) α f)
-Case conversion may be inaccurate. Consider using '#align finset.sup_univ_eq_supr Finset.sup_univ_eq_supᵢₓ'. -/
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.sup.{u2, u1} β α (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iSup.{u2, succ u1} β (CompleteLattice.toSupSet.{u2} β _inst_2) α f)
+Case conversion may be inaccurate. Consider using '#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSupₓ'. -/
/-- A special case of `finset.sup_eq_supr` that omits the useless `x ∈ univ` binder. -/
-theorem sup_univ_eq_supᵢ [CompleteLattice β] (f : α → β) : Finset.univ.sup f = supᵢ f :=
- (sup_eq_supᵢ _ f).trans <| congr_arg _ <| funext fun a => supᵢ_pos (mem_univ _)
-#align finset.sup_univ_eq_supr Finset.sup_univ_eq_supᵢ
+theorem sup_univ_eq_iSup [CompleteLattice β] (f : α → β) : Finset.univ.sup f = iSup f :=
+ (sup_eq_iSup _ f).trans <| congr_arg _ <| funext fun a => iSup_pos (mem_univ _)
+#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSup
-/- warning: finset.inf_univ_eq_infi -> Finset.inf_univ_eq_infᵢ is a dubious translation:
+/- warning: finset.inf_univ_eq_infi -> Finset.inf_univ_eq_iInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (infᵢ.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)) α f)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteSemilatticeInf.toHasInf.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)) α f)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (infᵢ.{u2, succ u1} β (CompleteLattice.toInfSet.{u2} β _inst_2) α f)
-Case conversion may be inaccurate. Consider using '#align finset.inf_univ_eq_infi Finset.inf_univ_eq_infᵢₓ'. -/
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Fintype.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (f : α -> β), Eq.{succ u2} β (Finset.inf.{u2, u1} β α (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2)) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2)) (Finset.univ.{u1} α _inst_1) f) (iInf.{u2, succ u1} β (CompleteLattice.toInfSet.{u2} β _inst_2) α f)
+Case conversion may be inaccurate. Consider using '#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInfₓ'. -/
/-- A special case of `finset.inf_eq_infi` that omits the useless `x ∈ univ` binder. -/
-theorem inf_univ_eq_infᵢ [CompleteLattice β] (f : α → β) : Finset.univ.inf f = infᵢ f :=
- sup_univ_eq_supᵢ (f : α → βᵒᵈ)
-#align finset.inf_univ_eq_infi Finset.inf_univ_eq_infᵢ
+theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf f = iInf f :=
+ sup_univ_eq_iSup (f : α → βᵒᵈ)
+#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInf
/- warning: finset.fold_inf_univ -> Finset.fold_inf_univ is a dubious translation:
lean 3 declaration is
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -55,9 +55,9 @@ theorem inf_univ_eq_infᵢ [CompleteLattice β] (f : α → β) : Finset.univ.in
/- warning: finset.fold_inf_univ -> Finset.fold_inf_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (HasInf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2)) (inf_isCommutative.{u1} α _inst_2) (inf_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2)) (inf_isCommutative.{u1} α _inst_2) (inf_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.147 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.149 : α) => HasInf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.147 x._@.Mathlib.Data.Fintype.Lattice._hyg.149) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.127 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.129 : α) => HasInf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.127 x._@.Mathlib.Data.Fintype.Lattice._hyg.129)) (instIsCommutativeInfToHasInf.{u1} α _inst_2)) (instIsAssociativeInfToHasInf.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeInf.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.147 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.149 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.147 x._@.Mathlib.Data.Fintype.Lattice._hyg.149) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.127 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.129 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.127 x._@.Mathlib.Data.Fintype.Lattice._hyg.129)) (instIsCommutativeInfToInf.{u1} α _inst_2)) (instIsAssociativeInfToInf.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α _inst_2))) _inst_3))
Case conversion may be inaccurate. Consider using '#align finset.fold_inf_univ Finset.fold_inf_univₓ'. -/
@[simp]
theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
@@ -68,9 +68,9 @@ theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
/- warning: finset.fold_sup_univ -> Finset.fold_sup_univ is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2)) (sup_isCommutative.{u1} α _inst_2) (sup_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toHasTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2)) (sup_isCommutative.{u1} α _inst_2) (sup_isAssociative.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toHasTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.233 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.235 : α) => HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.233 x._@.Mathlib.Data.Fintype.Lattice._hyg.235) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.213 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.215 : α) => HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.213 x._@.Mathlib.Data.Fintype.Lattice._hyg.215)) (instIsCommutativeSupToHasSup.{u1} α _inst_2)) (instIsAssociativeSupToHasSup.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
+ forall {α : Type.{u1}} [_inst_1 : Fintype.{u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] (a : α), Eq.{succ u1} α (Finset.fold.{u1, u1} α α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.233 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.235 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.233 x._@.Mathlib.Data.Fintype.Lattice._hyg.235) (inferInstance.{0} (IsCommutative.{u1} α (fun (x._@.Mathlib.Data.Fintype.Lattice._hyg.213 : α) (x._@.Mathlib.Data.Fintype.Lattice._hyg.215 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Fintype.Lattice._hyg.213 x._@.Mathlib.Data.Fintype.Lattice._hyg.215)) (instIsCommutativeSupToSup.{u1} α _inst_2)) (instIsAssociativeSupToSup.{u1} α _inst_2) a (fun (x : α) => x) (Finset.univ.{u1} α _inst_1)) (Top.top.{u1} α (OrderTop.toTop.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) _inst_3))
Case conversion may be inaccurate. Consider using '#align finset.fold_sup_univ Finset.fold_sup_univₓ'. -/
@[simp]
theorem fold_sup_univ [SemilatticeSup α] [OrderTop α] (a : α) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>
@@ -38,7 +38,7 @@ theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf
@[simp]
theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
-- Porting note: added `haveI`
- haveI : IsCommutative α (· ⊓ ·) := inferInstance
+ haveI : Std.Commutative (α := α) (· ⊓ ·) := inferInstance
(Finset.univ.fold (· ⊓ ·) a fun x => x) = ⊥ :=
eq_bot_iff.2 <|
((Finset.fold_op_rel_iff_and <| @le_inf_iff α _).1 le_rfl).2 ⊥ <| Finset.mem_univ _
@@ -47,7 +47,7 @@ theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
@[simp]
theorem fold_sup_univ [SemilatticeSup α] [OrderTop α] (a : α) :
-- Porting note: added `haveI`
- haveI : IsCommutative α (· ⊔ ·) := inferInstance
+ haveI : Std.Commutative (α := α) (· ⊔ ·) := inferInstance
(Finset.univ.fold (· ⊔ ·) a fun x => x) = ⊤ :=
@fold_inf_univ αᵒᵈ _ _ _ _
#align finset.fold_sup_univ Finset.fold_sup_univ
@@ -19,7 +19,7 @@ open Nat
universe u v
-variable {α β : Type*}
+variable {ι α β : Type*}
namespace Finset
@@ -52,6 +52,9 @@ theorem fold_sup_univ [SemilatticeSup α] [OrderTop α] (a : α) :
@fold_inf_univ αᵒᵈ _ _ _ _
#align finset.fold_sup_univ Finset.fold_sup_univ
+lemma mem_inf [DecidableEq α] {s : Finset ι} {f : ι → Finset α} {a : α} :
+ a ∈ s.inf f ↔ ∀ i ∈ s, a ∈ f i := by induction' s using Finset.cons_induction <;> simp [*]
+
end Finset
open Finset Function
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -19,7 +19,7 @@ open Nat
universe u v
-variable {α β : Type _}
+variable {α β : Type*}
namespace Finset
@@ -2,15 +2,12 @@
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module data.fintype.lattice
-! leanprover-community/mathlib commit 509de852e1de55e1efa8eacfa11df0823f26f226
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.Fintype.Card
import Mathlib.Data.Finset.Lattice
+#align_import data.fintype.lattice from "leanprover-community/mathlib"@"509de852e1de55e1efa8eacfa11df0823f26f226"
+
/-!
# Lemmas relating fintypes and order/lattice structure.
-/
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -28,15 +28,15 @@ namespace Finset
variable [Fintype α] {s : Finset α}
-/-- A special case of `Finset.sup_eq_supᵢ` that omits the useless `x ∈ univ` binder. -/
-theorem sup_univ_eq_supᵢ [CompleteLattice β] (f : α → β) : Finset.univ.sup f = supᵢ f :=
- (sup_eq_supᵢ _ f).trans <| congr_arg _ <| funext fun _ => supᵢ_pos (mem_univ _)
-#align finset.sup_univ_eq_supr Finset.sup_univ_eq_supᵢ
-
-/-- A special case of `Finset.inf_eq_infᵢ` that omits the useless `x ∈ univ` binder. -/
-theorem inf_univ_eq_infᵢ [CompleteLattice β] (f : α → β) : Finset.univ.inf f = infᵢ f :=
- @sup_univ_eq_supᵢ _ βᵒᵈ _ _ (f : α → βᵒᵈ)
-#align finset.inf_univ_eq_infi Finset.inf_univ_eq_infᵢ
+/-- A special case of `Finset.sup_eq_iSup` that omits the useless `x ∈ univ` binder. -/
+theorem sup_univ_eq_iSup [CompleteLattice β] (f : α → β) : Finset.univ.sup f = iSup f :=
+ (sup_eq_iSup _ f).trans <| congr_arg _ <| funext fun _ => iSup_pos (mem_univ _)
+#align finset.sup_univ_eq_supr Finset.sup_univ_eq_iSup
+
+/-- A special case of `Finset.inf_eq_iInf` that omits the useless `x ∈ univ` binder. -/
+theorem inf_univ_eq_iInf [CompleteLattice β] (f : α → β) : Finset.univ.inf f = iInf f :=
+ @sup_univ_eq_iSup _ βᵒᵈ _ _ (f : α → βᵒᵈ)
+#align finset.inf_univ_eq_infi Finset.inf_univ_eq_iInf
@[simp]
theorem fold_inf_univ [SemilatticeInf α] [OrderBot α] (a : α) :
The unported dependencies are