data.fintype.latticeMathlib.Data.Fintype.Lattice

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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"
 
Diff
@@ -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.
 
Diff
@@ -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
+-/
 
Diff
@@ -21,7 +21,7 @@ import Mathbin.Data.Finset.Lattice
 
 open Function
 
-open Nat
+open scoped Nat
 
 universe u v
 
Diff
@@ -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
Diff
@@ -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
 
Diff
@@ -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ₓ'. -/
Diff
@@ -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
Diff
@@ -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 : α) :

Changes in mathlib4

mathlib3
mathlib4
chore: move to v4.6.0-rc1, merging adaptations from bump/v4.6.0 (#10176)

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>

Diff
@@ -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
feat: Basic finset lemmas (#9530)

From LeanAPAP

Diff
@@ -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
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -19,7 +19,7 @@ open Nat
 
 universe u v
 
-variable {α β : Type _}
+variable {α β : Type*}
 
 namespace Finset
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,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.
 -/
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • 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>

Diff
@@ -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 : α) :
feat: port Data.Fintype.Lattice (#1674)

Dependencies 2 + 178

179 files ported (98.9%)
81932 lines ported (99.8%)
Show graph

The unported dependencies are