data.finset.supsMathlib.Data.Finset.Sups

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)

(last sync)

feat(combinatorics/set_family/ahlswede_zhang): Ahlswede-Zhang identity, part I (#18612)

The Ahlswede-Zhang identity is a sharpening of the Lubell-Yamamoto-Meshalkin identity, by expliciting the correction term.

This PR defines finset.truncated_sup/finset.truncated_inf, whose cardinalities show up in the correction term.

Co-authored-by: Vladimir Ivanov <volodimir1024@gmail.com>

Diff
@@ -36,6 +36,20 @@ We define the following notation in locale `finset_family`:
 open function
 open_locale set_family
 
+-- TODO: Is there a better spot for those two instances?
+namespace finset
+variables {α : Type*} [preorder α] {s t : set α} {a : α}
+
+instance decidable_pred_mem_upper_closure (s : finset α) [@decidable_rel α (≤)] :
+  decidable_pred (∈ upper_closure (s : set α)) :=
+λ _, finset.decidable_dexists_finset
+
+instance decidable_pred_mem_lower_closure (s : finset α) [@decidable_rel α (≤)] :
+  decidable_pred (∈ lower_closure (s : set α)) :=
+λ _, finset.decidable_dexists_finset
+
+end finset
+
 variables {α : Type*} [decidable_eq α]
 
 namespace finset
@@ -116,6 +130,21 @@ lemma sups_right_comm : (s ⊻ t) ⊻ u = (s ⊻ u) ⊻ t := image₂_right_comm
 lemma sups_sups_sups_comm : (s ⊻ t) ⊻ (u ⊻ v) = (s ⊻ u) ⊻ (t ⊻ v) :=
 image₂_image₂_image₂_comm sup_sup_sup_comm
 
+variables [@decidable_rel α (≤)]
+
+lemma filter_sups_le (s t : finset α) (a : α) :
+  (s ⊻ t).filter (λ b, b ≤ a) = s.filter (λ b, b ≤ a) ⊻ t.filter (λ b, b ≤ a) :=
+begin
+  ext b,
+  simp only [mem_filter, mem_sups],
+  split,
+  { rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩,
+    rw sup_le_iff at ha,
+    exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩ },
+  { rintro ⟨b, hb, c, hc, _, rfl⟩,
+    exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, sup_le hb.2 hc.2⟩ }
+end
+
 end sups
 
 section infs
@@ -195,6 +224,21 @@ lemma infs_right_comm : (s ⊼ t) ⊼ u = (s ⊼ u) ⊼ t := image₂_right_comm
 lemma infs_infs_infs_comm : (s ⊼ t) ⊼ (u ⊼ v) = (s ⊼ u) ⊼ (t ⊼ v) :=
 image₂_image₂_image₂_comm inf_inf_inf_comm
 
+variables [@decidable_rel α (≤)]
+
+lemma filter_infs_ge (s t : finset α) (a : α) :
+  (s ⊼ t).filter (λ b, a ≤ b) = s.filter (λ b, a ≤ b) ⊼ t.filter (λ b, a ≤ b) :=
+begin
+  ext b,
+  simp only [mem_filter, mem_infs],
+  split,
+  { rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩,
+    rw le_inf_iff at ha,
+    exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩ },
+  { rintro ⟨b, hb, c, hc, _, rfl⟩,
+    exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, le_inf hb.2 hc.2⟩ }
+end
+
 end infs
 
 open_locale finset_family

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -641,7 +641,7 @@ variable {s t u} {a b c : α}
 #print Finset.mem_disjSups /-
 @[simp]
 theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c := by
-  simp [disj_sups, and_assoc']
+  simp [disj_sups, and_assoc]
 #align finset.mem_disj_sups Finset.mem_disjSups
 -/
 
Diff
@@ -317,7 +317,7 @@ theorem filter_sups_le (s t : Finset α) (a : α) :
   simp only [mem_filter, mem_sups]
   constructor
   · rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩
-    rw [sup_le_iff] at ha 
+    rw [sup_le_iff] at ha
     exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩
   · rintro ⟨b, hb, c, hc, _, rfl⟩
     exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, sup_le hb.2 hc.2⟩
@@ -580,7 +580,7 @@ theorem filter_infs_le (s t : Finset α) (a : α) :
   simp only [mem_filter, mem_infs]
   constructor
   · rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩
-    rw [le_inf_iff] at ha 
+    rw [le_inf_iff] at ha
     exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩
   · rintro ⟨b, hb, c, hc, _, rfl⟩
     exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, le_inf hb.2 hc.2⟩
@@ -775,7 +775,7 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   refine' associative_of_commutative_of_le disj_sups_comm _
   simp only [le_eq_subset, disj_sups_subset_iff, mem_disj_sups]
   rintro s t u _ ⟨a, ha, b, hb, hab, rfl⟩ c hc habc
-  rw [disjoint_sup_left] at habc 
+  rw [disjoint_sup_left] at habc
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
 -/
Diff
@@ -657,7 +657,7 @@ variable (s t)
 
 #print Finset.card_disjSups_le /-
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
-  (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
+  (card_le_card disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
 -/
 
Diff
@@ -45,13 +45,17 @@ namespace Finset
 
 variable {α : Type _} [Preorder α] {s t : Set α} {a : α}
 
-instance decidablePredMemUpperClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
+#print instDecidablePredMemUpperClosure /-
+instance instDecidablePredMemUpperClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
     DecidablePred (· ∈ upperClosure (s : Set α)) := fun _ => Finset.decidableDExistsFinset
-#align finset.decidable_pred_mem_upper_closure Finset.decidablePredMemUpperClosure
+#align finset.decidable_pred_mem_upper_closure instDecidablePredMemUpperClosure
+-/
 
-instance decidablePredMemLowerClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
+#print instDecidablePredMemLowerClosure /-
+instance instDecidablePredMemLowerClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
     DecidablePred (· ∈ lowerClosure (s : Set α)) := fun _ => Finset.decidableDExistsFinset
-#align finset.decidable_pred_mem_lower_closure Finset.decidablePredMemLowerClosure
+#align finset.decidable_pred_mem_lower_closure instDecidablePredMemLowerClosure
+-/
 
 end Finset
 
@@ -568,7 +572,8 @@ theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
 
 variable [@DecidableRel α (· ≤ ·)]
 
-theorem filter_infs_ge (s t : Finset α) (a : α) :
+#print Finset.filter_infs_le /-
+theorem filter_infs_le (s t : Finset α) (a : α) :
     ((s ⊼ t).filterₓ fun b => a ≤ b) = (s.filterₓ fun b => a ≤ b) ⊼ t.filterₓ fun b => a ≤ b :=
   by
   ext b
@@ -579,7 +584,8 @@ theorem filter_infs_ge (s t : Finset α) (a : α) :
     exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩
   · rintro ⟨b, hb, c, hc, _, rfl⟩
     exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, le_inf hb.2 hc.2⟩
-#align finset.filter_infs_ge Finset.filter_infs_ge
+#align finset.filter_infs_ge Finset.filter_infs_le
+-/
 
 end Infs
 
Diff
@@ -46,11 +46,11 @@ namespace Finset
 variable {α : Type _} [Preorder α] {s t : Set α} {a : α}
 
 instance decidablePredMemUpperClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
-    DecidablePred (· ∈ upperClosure (s : Set α)) := fun _ => Finset.decidableDexistsFinset
+    DecidablePred (· ∈ upperClosure (s : Set α)) := fun _ => Finset.decidableDExistsFinset
 #align finset.decidable_pred_mem_upper_closure Finset.decidablePredMemUpperClosure
 
 instance decidablePredMemLowerClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
-    DecidablePred (· ∈ lowerClosure (s : Set α)) := fun _ => Finset.decidableDexistsFinset
+    DecidablePred (· ∈ lowerClosure (s : Set α)) := fun _ => Finset.decidableDExistsFinset
 #align finset.decidable_pred_mem_lower_closure Finset.decidablePredMemLowerClosure
 
 end Finset
@@ -305,6 +305,7 @@ theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
 
 variable [@DecidableRel α (· ≤ ·)]
 
+#print Finset.filter_sups_le /-
 theorem filter_sups_le (s t : Finset α) (a : α) :
     ((s ⊻ t).filterₓ fun b => b ≤ a) = (s.filterₓ fun b => b ≤ a) ⊻ t.filterₓ fun b => b ≤ a :=
   by
@@ -317,6 +318,7 @@ theorem filter_sups_le (s t : Finset α) (a : α) :
   · rintro ⟨b, hb, c, hc, _, rfl⟩
     exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, sup_le hb.2 hc.2⟩
 #align finset.filter_sups_le Finset.filter_sups_le
+-/
 
 end Sups
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
 -/
-import Mathbin.Data.Finset.NAry
-import Mathbin.Data.Set.Sups
+import Data.Finset.NAry
+import Data.Set.Sups
 
 #align_import data.finset.sups from "leanprover-community/mathlib"@"8818fdefc78642a7e6afcd20be5c184f3c7d9699"
 
Diff
@@ -6,7 +6,7 @@ Authors: Yaël Dillies
 import Mathbin.Data.Finset.NAry
 import Mathbin.Data.Set.Sups
 
-#align_import data.finset.sups from "leanprover-community/mathlib"@"25a9423c6b2c8626e91c688bfd6c1d0a986a3e6e"
+#align_import data.finset.sups from "leanprover-community/mathlib"@"8818fdefc78642a7e6afcd20be5c184f3c7d9699"
 
 /-!
 # Set family operations
@@ -40,6 +40,21 @@ open Function
 
 open scoped SetFamily
 
+-- TODO: Is there a better spot for those two instances?
+namespace Finset
+
+variable {α : Type _} [Preorder α] {s t : Set α} {a : α}
+
+instance decidablePredMemUpperClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
+    DecidablePred (· ∈ upperClosure (s : Set α)) := fun _ => Finset.decidableDexistsFinset
+#align finset.decidable_pred_mem_upper_closure Finset.decidablePredMemUpperClosure
+
+instance decidablePredMemLowerClosure (s : Finset α) [@DecidableRel α (· ≤ ·)] :
+    DecidablePred (· ∈ lowerClosure (s : Set α)) := fun _ => Finset.decidableDexistsFinset
+#align finset.decidable_pred_mem_lower_closure Finset.decidablePredMemLowerClosure
+
+end Finset
+
 variable {α : Type _} [DecidableEq α]
 
 namespace Finset
@@ -288,6 +303,21 @@ theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
 #align finset.sups_sups_sups_comm Finset.sups_sups_sups_comm
 -/
 
+variable [@DecidableRel α (· ≤ ·)]
+
+theorem filter_sups_le (s t : Finset α) (a : α) :
+    ((s ⊻ t).filterₓ fun b => b ≤ a) = (s.filterₓ fun b => b ≤ a) ⊻ t.filterₓ fun b => b ≤ a :=
+  by
+  ext b
+  simp only [mem_filter, mem_sups]
+  constructor
+  · rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩
+    rw [sup_le_iff] at ha 
+    exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩
+  · rintro ⟨b, hb, c, hc, _, rfl⟩
+    exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, sup_le hb.2 hc.2⟩
+#align finset.filter_sups_le Finset.filter_sups_le
+
 end Sups
 
 section Infs
@@ -534,6 +564,21 @@ theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
 #align finset.infs_infs_infs_comm Finset.infs_infs_infs_comm
 -/
 
+variable [@DecidableRel α (· ≤ ·)]
+
+theorem filter_infs_ge (s t : Finset α) (a : α) :
+    ((s ⊼ t).filterₓ fun b => a ≤ b) = (s.filterₓ fun b => a ≤ b) ⊼ t.filterₓ fun b => a ≤ b :=
+  by
+  ext b
+  simp only [mem_filter, mem_infs]
+  constructor
+  · rintro ⟨⟨b, hb, c, hc, rfl⟩, ha⟩
+    rw [le_inf_iff] at ha 
+    exact ⟨_, ⟨hb, ha.1⟩, _, ⟨hc, ha.2⟩, rfl⟩
+  · rintro ⟨b, hb, c, hc, _, rfl⟩
+    exact ⟨⟨_, hb.1, _, hc.1, rfl⟩, le_inf hb.2 hc.2⟩
+#align finset.filter_infs_ge Finset.filter_infs_ge
+
 end Infs
 
 open scoped FinsetFamily
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
-
-! This file was ported from Lean 3 source module data.finset.sups
-! leanprover-community/mathlib commit 25a9423c6b2c8626e91c688bfd6c1d0a986a3e6e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Finset.NAry
 import Mathbin.Data.Set.Sups
 
+#align_import data.finset.sups from "leanprover-community/mathlib"@"25a9423c6b2c8626e91c688bfd6c1d0a986a3e6e"
+
 /-!
 # Set family operations
 
Diff
@@ -62,9 +62,11 @@ scoped[FinsetFamily] attribute [instance] Finset.hasSups
 
 variable {s t} {a b c : α}
 
+#print Finset.mem_sups /-
 @[simp]
 theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c := by simp [(· ⊻ ·)]
 #align finset.mem_sups Finset.mem_sups
+-/
 
 variable (s t)
 
@@ -82,16 +84,20 @@ theorem card_sups_le : (s ⊻ t).card ≤ s.card * t.card :=
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.card_sups_iff /-
 theorem card_sups_iff :
     (s ⊻ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊔ x.2 :=
   card_image₂_iff
 #align finset.card_sups_iff Finset.card_sups_iff
+-/
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+#print Finset.sup_mem_sups /-
 theorem sup_mem_sups : a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t :=
   mem_image₂_of_mem
 #align finset.sup_mem_sups Finset.sup_mem_sups
+-/
 
 #print Finset.sups_subset /-
 theorem sups_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊻ t₁ ⊆ s₂ ⊻ t₂ :=
@@ -111,22 +117,30 @@ theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t :=
 #align finset.sups_subset_right Finset.sups_subset_right
 -/
 
+#print Finset.image_subset_sups_left /-
 theorem image_subset_sups_left : b ∈ t → (s.image fun a => a ⊔ b) ⊆ s ⊻ t :=
   image_subset_image₂_left
 #align finset.image_subset_sups_left Finset.image_subset_sups_left
+-/
 
+#print Finset.image_subset_sups_right /-
 theorem image_subset_sups_right : a ∈ s → t.image ((· ⊔ ·) a) ⊆ s ⊻ t :=
   image_subset_image₂_right
 #align finset.image_subset_sups_right Finset.image_subset_sups_right
+-/
 
+#print Finset.forall_sups_iff /-
 theorem forall_sups_iff {p : α → Prop} : (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b) :=
   forall_image₂_iff
 #align finset.forall_sups_iff Finset.forall_sups_iff
+-/
 
+#print Finset.sups_subset_iff /-
 @[simp]
 theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u :=
   image₂_subset_iff
 #align finset.sups_subset_iff Finset.sups_subset_iff
+-/
 
 #print Finset.sups_nonempty /-
 @[simp]
@@ -174,19 +188,25 @@ theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
 #align finset.sups_eq_empty Finset.sups_eq_empty
 -/
 
+#print Finset.singleton_sups /-
 @[simp]
 theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b :=
   image₂_singleton_left
 #align finset.singleton_sups Finset.singleton_sups
+-/
 
+#print Finset.sups_singleton /-
 @[simp]
 theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b :=
   image₂_singleton_right
 #align finset.sups_singleton Finset.sups_singleton
+-/
 
+#print Finset.singleton_sups_singleton /-
 theorem singleton_sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
   image₂_singleton
 #align finset.singleton_sups_singleton Finset.singleton_sups_singleton
+-/
 
 #print Finset.sups_union_left /-
 theorem sups_union_left : (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t :=
@@ -221,19 +241,25 @@ theorem subset_sups {s t : Set α} :
 
 variable (s t u v)
 
+#print Finset.biUnion_image_sup_left /-
 theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
   biUnion_image_left
 #align finset.bUnion_image_sup_left Finset.biUnion_image_sup_left
+-/
 
+#print Finset.biUnion_image_sup_right /-
 theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
   biUnion_image_right
 #align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.image_sup_product /-
 @[simp]
 theorem image_sup_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
   image_uncurry_product _ _ _
 #align finset.image_sup_product Finset.image_sup_product
+-/
 
 #print Finset.sups_assoc /-
 theorem sups_assoc : s ⊻ t ⊻ u = s ⊻ (t ⊻ u) :=
@@ -282,9 +308,11 @@ scoped[FinsetFamily] attribute [instance] Finset.hasInfs
 
 variable {s t} {a b c : α}
 
+#print Finset.mem_infs /-
 @[simp]
 theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c := by simp [(· ⊼ ·)]
 #align finset.mem_infs Finset.mem_infs
+-/
 
 variable (s t)
 
@@ -302,16 +330,20 @@ theorem card_infs_le : (s ⊼ t).card ≤ s.card * t.card :=
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.card_infs_iff /-
 theorem card_infs_iff :
     (s ⊼ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊓ x.2 :=
   card_image₂_iff
 #align finset.card_infs_iff Finset.card_infs_iff
+-/
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+#print Finset.inf_mem_infs /-
 theorem inf_mem_infs : a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t :=
   mem_image₂_of_mem
 #align finset.inf_mem_infs Finset.inf_mem_infs
+-/
 
 #print Finset.infs_subset /-
 theorem infs_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊼ t₁ ⊆ s₂ ⊼ t₂ :=
@@ -331,22 +363,30 @@ theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t :=
 #align finset.infs_subset_right Finset.infs_subset_right
 -/
 
+#print Finset.image_subset_infs_left /-
 theorem image_subset_infs_left : b ∈ t → (s.image fun a => a ⊓ b) ⊆ s ⊼ t :=
   image_subset_image₂_left
 #align finset.image_subset_infs_left Finset.image_subset_infs_left
+-/
 
+#print Finset.image_subset_infs_right /-
 theorem image_subset_infs_right : a ∈ s → t.image ((· ⊓ ·) a) ⊆ s ⊼ t :=
   image_subset_image₂_right
 #align finset.image_subset_infs_right Finset.image_subset_infs_right
+-/
 
+#print Finset.forall_infs_iff /-
 theorem forall_infs_iff {p : α → Prop} : (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b) :=
   forall_image₂_iff
 #align finset.forall_infs_iff Finset.forall_infs_iff
+-/
 
+#print Finset.infs_subset_iff /-
 @[simp]
 theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u :=
   image₂_subset_iff
 #align finset.infs_subset_iff Finset.infs_subset_iff
+-/
 
 #print Finset.infs_nonempty /-
 @[simp]
@@ -394,19 +434,25 @@ theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
 #align finset.infs_eq_empty Finset.infs_eq_empty
 -/
 
+#print Finset.singleton_infs /-
 @[simp]
 theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b :=
   image₂_singleton_left
 #align finset.singleton_infs Finset.singleton_infs
+-/
 
+#print Finset.infs_singleton /-
 @[simp]
 theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b :=
   image₂_singleton_right
 #align finset.infs_singleton Finset.infs_singleton
+-/
 
+#print Finset.singleton_infs_singleton /-
 theorem singleton_infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
   image₂_singleton
 #align finset.singleton_infs_singleton Finset.singleton_infs_singleton
+-/
 
 #print Finset.infs_union_left /-
 theorem infs_union_left : (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t :=
@@ -441,19 +487,25 @@ theorem subset_infs {s t : Set α} :
 
 variable (s t u v)
 
+#print Finset.biUnion_image_inf_left /-
 theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
   biUnion_image_left
 #align finset.bUnion_image_inf_left Finset.biUnion_image_inf_left
+-/
 
+#print Finset.biUnion_image_inf_right /-
 theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
   biUnion_image_right
 #align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.image_inf_product /-
 @[simp]
 theorem image_inf_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
   image_uncurry_product _ _ _
 #align finset.image_inf_product Finset.image_inf_product
+-/
 
 #print Finset.infs_assoc /-
 theorem infs_assoc : s ⊼ t ⊼ u = s ⊼ (t ⊼ u) :=
@@ -532,15 +584,16 @@ def disjSups : Finset α :=
 #align finset.disj_sups Finset.disjSups
 -/
 
--- mathport name: finset.disj_sups
 scoped[FinsetFamily] infixl:74 " ○ " => Finset.disjSups
 
 variable {s t u} {a b c : α}
 
+#print Finset.mem_disjSups /-
 @[simp]
 theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c := by
   simp [disj_sups, and_assoc']
 #align finset.mem_disj_sups Finset.mem_disjSups
+-/
 
 #print Finset.disjSups_subset_sups /-
 theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
@@ -578,6 +631,7 @@ theorem disjSups_subset_right (hs : s₁ ⊆ s₂) : s₁ ○ t ⊆ s₂ ○ t :
 #align finset.disj_sups_subset_right Finset.disjSups_subset_right
 -/
 
+#print Finset.forall_disjSups_iff /-
 theorem forall_disjSups_iff {p : α → Prop} :
     (∀ c ∈ s ○ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → p (a ⊔ b) :=
   by
@@ -586,11 +640,14 @@ theorem forall_disjSups_iff {p : α → Prop} :
   rintro h _ ⟨a, ha, b, hb, hab, rfl⟩
   exact h _ ha _ hb hab
 #align finset.forall_disj_sups_iff Finset.forall_disjSups_iff
+-/
 
+#print Finset.disjSups_subset_iff /-
 @[simp]
 theorem disjSups_subset_iff : s ○ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → a ⊔ b ∈ u :=
   forall_disjSups_iff
 #align finset.disj_sups_subset_iff Finset.disjSups_subset_iff
+-/
 
 #print Finset.Nonempty.of_disjSups_left /-
 theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty := by
@@ -616,9 +673,11 @@ theorem disjSups_empty_right : s ○ ∅ = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_right Finset.disjSups_empty_right
 -/
 
+#print Finset.disjSups_singleton /-
 theorem disjSups_singleton : ({a} ○ {b} : Finset α) = if Disjoint a b then {a ⊔ b} else ∅ := by
   split_ifs <;> simp [disj_sups, filter_singleton, h]
 #align finset.disj_sups_singleton Finset.disjSups_singleton
+-/
 
 #print Finset.disjSups_union_left /-
 theorem disjSups_union_left : (s₁ ∪ s₂) ○ t = s₁ ○ t ∪ s₂ ○ t := by
Diff
@@ -666,7 +666,7 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   refine' associative_of_commutative_of_le disj_sups_comm _
   simp only [le_eq_subset, disj_sups_subset_iff, mem_disj_sups]
   rintro s t u _ ⟨a, ha, b, hb, hab, rfl⟩ c hc habc
-  rw [disjoint_sup_left] at habc
+  rw [disjoint_sup_left] at habc 
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
 -/
Diff
@@ -41,7 +41,7 @@ We define the following notation in locale `finset_family`:
 
 open Function
 
-open SetFamily
+open scoped SetFamily
 
 variable {α : Type _} [DecidableEq α]
 
@@ -487,7 +487,7 @@ theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
 
 end Infs
 
-open FinsetFamily
+open scoped FinsetFamily
 
 section DistribLattice
 
@@ -524,11 +524,13 @@ section DisjSups
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.disjSups /-
 /-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a` and `b` are disjoint.
 -/
 def disjSups : Finset α :=
   ((s ×ˢ t).filterₓ fun ab : α × α => Disjoint ab.1 ab.2).image fun ab => ab.1 ⊔ ab.2
 #align finset.disj_sups Finset.disjSups
+-/
 
 -- mathport name: finset.disj_sups
 scoped[FinsetFamily] infixl:74 " ○ " => Finset.disjSups
@@ -540,31 +542,41 @@ theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b
   simp [disj_sups, and_assoc']
 #align finset.mem_disj_sups Finset.mem_disjSups
 
+#print Finset.disjSups_subset_sups /-
 theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
   by
   simp_rw [subset_iff, mem_sups, mem_disj_sups]
   exact fun c ⟨a, b, ha, hb, h, hc⟩ => ⟨a, b, ha, hb, hc⟩
 #align finset.disj_sups_subset_sups Finset.disjSups_subset_sups
+-/
 
 variable (s t)
 
+#print Finset.card_disjSups_le /-
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
   (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
+-/
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+#print Finset.disjSups_subset /-
 theorem disjSups_subset (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) : s₁ ○ t₁ ⊆ s₂ ○ t₂ :=
   image_subset_image <| filter_subset_filter _ <| product_subset_product hs ht
 #align finset.disj_sups_subset Finset.disjSups_subset
+-/
 
+#print Finset.disjSups_subset_left /-
 theorem disjSups_subset_left (ht : t₁ ⊆ t₂) : s ○ t₁ ⊆ s ○ t₂ :=
   disjSups_subset Subset.rfl ht
 #align finset.disj_sups_subset_left Finset.disjSups_subset_left
+-/
 
+#print Finset.disjSups_subset_right /-
 theorem disjSups_subset_right (hs : s₁ ⊆ s₂) : s₁ ○ t ⊆ s₂ ○ t :=
   disjSups_subset hs Subset.rfl
 #align finset.disj_sups_subset_right Finset.disjSups_subset_right
+-/
 
 theorem forall_disjSups_iff {p : α → Prop} :
     (∀ c ∈ s ○ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → p (a ⊔ b) :=
@@ -580,56 +592,75 @@ theorem disjSups_subset_iff : s ○ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoi
   forall_disjSups_iff
 #align finset.disj_sups_subset_iff Finset.disjSups_subset_iff
 
+#print Finset.Nonempty.of_disjSups_left /-
 theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty := by
   simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
 #align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_left
+-/
 
+#print Finset.Nonempty.of_disjSups_right /-
 theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty := by
   simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
 #align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_right
+-/
 
+#print Finset.disjSups_empty_left /-
 @[simp]
 theorem disjSups_empty_left : ∅ ○ t = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_left Finset.disjSups_empty_left
+-/
 
+#print Finset.disjSups_empty_right /-
 @[simp]
 theorem disjSups_empty_right : s ○ ∅ = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_right Finset.disjSups_empty_right
+-/
 
 theorem disjSups_singleton : ({a} ○ {b} : Finset α) = if Disjoint a b then {a ⊔ b} else ∅ := by
   split_ifs <;> simp [disj_sups, filter_singleton, h]
 #align finset.disj_sups_singleton Finset.disjSups_singleton
 
+#print Finset.disjSups_union_left /-
 theorem disjSups_union_left : (s₁ ∪ s₂) ○ t = s₁ ○ t ∪ s₂ ○ t := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_left Finset.disjSups_union_left
+-/
 
+#print Finset.disjSups_union_right /-
 theorem disjSups_union_right : s ○ (t₁ ∪ t₂) = s ○ t₁ ∪ s ○ t₂ := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_right Finset.disjSups_union_right
+-/
 
+#print Finset.disjSups_inter_subset_left /-
 theorem disjSups_inter_subset_left : (s₁ ∩ s₂) ○ t ⊆ s₁ ○ t ∩ s₂ ○ t := by
   simpa only [disj_sups, inter_product, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_left
+-/
 
+#print Finset.disjSups_inter_subset_right /-
 theorem disjSups_inter_subset_right : s ○ (t₁ ∩ t₂) ⊆ s ○ t₁ ∩ s ○ t₂ := by
   simpa only [disj_sups, product_inter, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_right
+-/
 
 variable (s t)
 
+#print Finset.disjSups_comm /-
 theorem disjSups_comm : s ○ t = t ○ s := by ext; rw [mem_disj_sups, exists₂_comm];
   simp [sup_comm, disjoint_comm]
 #align finset.disj_sups_comm Finset.disjSups_comm
+-/
 
 end DisjSups
 
-open FinsetFamily
+open scoped FinsetFamily
 
 section DistribLattice
 
 variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u v : Finset α)
 
+#print Finset.disjSups_assoc /-
 theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u) :=
   by
   refine' associative_of_commutative_of_le disj_sups_comm _
@@ -638,17 +669,24 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   rw [disjoint_sup_left] at habc
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
+-/
 
+#print Finset.disjSups_left_comm /-
 theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
   simp_rw [← disj_sups_assoc, disj_sups_comm s]
 #align finset.disj_sups_left_comm Finset.disjSups_left_comm
+-/
 
+#print Finset.disjSups_right_comm /-
 theorem disjSups_right_comm : s ○ t ○ u = s ○ u ○ t := by simp_rw [disj_sups_assoc, disj_sups_comm]
 #align finset.disj_sups_right_comm Finset.disjSups_right_comm
+-/
 
+#print Finset.disjSups_disjSups_disjSups_comm /-
 theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v) := by
   simp_rw [← disj_sups_assoc, disj_sups_right_comm]
 #align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
+-/
 
 end DistribLattice
 
Diff
@@ -62,12 +62,6 @@ scoped[FinsetFamily] attribute [instance] Finset.hasSups
 
 variable {s t} {a b c : α}
 
-/- warning: finset.mem_sups -> Finset.mem_sups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) c)))))
-Case conversion may be inaccurate. Consider using '#align finset.mem_sups Finset.mem_supsₓ'. -/
 @[simp]
 theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c := by simp [(· ⊻ ·)]
 #align finset.mem_sups Finset.mem_sups
@@ -87,12 +81,6 @@ theorem card_sups_le : (s ⊻ t).card ≤ s.card * t.card :=
 #align finset.card_sups_le Finset.card_sups_le
 -/
 
-/- warning: finset.card_sups_iff -> Finset.card_sups_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) t)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α (Finset.toSet.{u1} α s) (Finset.toSet.{u1} α t)))
-Case conversion may be inaccurate. Consider using '#align finset.card_sups_iff Finset.card_sups_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem card_sups_iff :
     (s ⊻ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊔ x.2 :=
@@ -101,12 +89,6 @@ theorem card_sups_iff :
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
-/- warning: finset.sup_mem_sups -> Finset.sup_mem_sups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.sup_mem_sups Finset.sup_mem_supsₓ'. -/
 theorem sup_mem_sups : a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t :=
   mem_image₂_of_mem
 #align finset.sup_mem_sups Finset.sup_mem_sups
@@ -129,42 +111,18 @@ theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t :=
 #align finset.sups_subset_right Finset.sups_subset_right
 -/
 
-/- warning: finset.image_subset_sups_left -> Finset.image_subset_sups_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.image_subset_sups_left Finset.image_subset_sups_leftₓ'. -/
 theorem image_subset_sups_left : b ∈ t → (s.image fun a => a ⊔ b) ⊆ s ⊻ t :=
   image_subset_image₂_left
 #align finset.image_subset_sups_left Finset.image_subset_sups_left
 
-/- warning: finset.image_subset_sups_right -> Finset.image_subset_sups_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (x._@.Mathlib.Data.Finset.Sups._hyg.772 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a x._@.Mathlib.Data.Finset.Sups._hyg.772) t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.image_subset_sups_right Finset.image_subset_sups_rightₓ'. -/
 theorem image_subset_sups_right : a ∈ s → t.image ((· ⊔ ·) a) ⊆ s ⊻ t :=
   image_subset_image₂_right
 #align finset.image_subset_sups_right Finset.image_subset_sups_right
 
-/- warning: finset.forall_sups_iff -> Finset.forall_sups_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (p (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))))
-Case conversion may be inaccurate. Consider using '#align finset.forall_sups_iff Finset.forall_sups_iffₓ'. -/
 theorem forall_sups_iff {p : α → Prop} : (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b) :=
   forall_image₂_iff
 #align finset.forall_sups_iff Finset.forall_sups_iff
 
-/- warning: finset.sups_subset_iff -> Finset.sups_subset_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) u)))
-Case conversion may be inaccurate. Consider using '#align finset.sups_subset_iff Finset.sups_subset_iffₓ'. -/
 @[simp]
 theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u :=
   image₂_subset_iff
@@ -216,34 +174,16 @@ theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
 #align finset.sups_eq_empty Finset.sups_eq_empty
 -/
 
-/- warning: finset.singleton_sups -> Finset.singleton_sups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) t)
-Case conversion may be inaccurate. Consider using '#align finset.singleton_sups Finset.singleton_supsₓ'. -/
 @[simp]
 theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b :=
   image₂_singleton_left
 #align finset.singleton_sups Finset.singleton_sups
 
-/- warning: finset.sups_singleton -> Finset.sups_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)
-Case conversion may be inaccurate. Consider using '#align finset.sups_singleton Finset.sups_singletonₓ'. -/
 @[simp]
 theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b :=
   image₂_singleton_right
 #align finset.sups_singleton Finset.sups_singleton
 
-/- warning: finset.singleton_sups_singleton -> Finset.singleton_sups_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))
-Case conversion may be inaccurate. Consider using '#align finset.singleton_sups_singleton Finset.singleton_sups_singletonₓ'. -/
 theorem singleton_sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
   image₂_singleton
 #align finset.singleton_sups_singleton Finset.singleton_sups_singleton
@@ -281,32 +221,14 @@ theorem subset_sups {s t : Set α} :
 
 variable (s t u v)
 
-/- warning: finset.bUnion_image_sup_left -> Finset.biUnion_image_sup_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.1857 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1859 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1857 x._@.Mathlib.Data.Finset.Sups._hyg.1859) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_left Finset.biUnion_image_sup_leftₓ'. -/
 theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
   biUnion_image_left
 #align finset.bUnion_image_sup_left Finset.biUnion_image_sup_left
 
-/- warning: finset.bUnion_image_sup_right -> Finset.biUnion_image_sup_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_right Finset.biUnion_image_sup_rightₓ'. -/
 theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
   biUnion_image_right
 #align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
 
-/- warning: finset.image_sup_product -> Finset.image_sup_product is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2))) (Finset.product.{u1, u1} α α s t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (fun (x._@.Mathlib.Data.Finset.Sups._hyg.1973 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1975 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1973 x._@.Mathlib.Data.Finset.Sups._hyg.1975)) (Finset.product.{u1, u1} α α s t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.image_sup_product Finset.image_sup_productₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem image_sup_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
@@ -360,12 +282,6 @@ scoped[FinsetFamily] attribute [instance] Finset.hasInfs
 
 variable {s t} {a b c : α}
 
-/- warning: finset.mem_infs -> Finset.mem_infs is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => Eq.{succ u1} α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) c)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (Eq.{succ u1} α (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) c)))))
-Case conversion may be inaccurate. Consider using '#align finset.mem_infs Finset.mem_infsₓ'. -/
 @[simp]
 theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c := by simp [(· ⊼ ·)]
 #align finset.mem_infs Finset.mem_infs
@@ -385,12 +301,6 @@ theorem card_infs_le : (s ⊼ t).card ≤ s.card * t.card :=
 #align finset.card_infs_le Finset.card_infs_le
 -/
 
-/- warning: finset.card_infs_iff -> Finset.card_infs_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) t)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α (Finset.toSet.{u1} α s) (Finset.toSet.{u1} α t)))
-Case conversion may be inaccurate. Consider using '#align finset.card_infs_iff Finset.card_infs_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem card_infs_iff :
     (s ⊼ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊓ x.2 :=
@@ -399,12 +309,6 @@ theorem card_infs_iff :
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
-/- warning: finset.inf_mem_infs -> Finset.inf_mem_infs is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.inf_mem_infs Finset.inf_mem_infsₓ'. -/
 theorem inf_mem_infs : a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t :=
   mem_image₂_of_mem
 #align finset.inf_mem_infs Finset.inf_mem_infs
@@ -427,42 +331,18 @@ theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t :=
 #align finset.infs_subset_right Finset.infs_subset_right
 -/
 
-/- warning: finset.image_subset_infs_left -> Finset.image_subset_infs_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.image_subset_infs_left Finset.image_subset_infs_leftₓ'. -/
 theorem image_subset_infs_left : b ∈ t → (s.image fun a => a ⊓ b) ⊆ s ⊼ t :=
   image_subset_image₂_left
 #align finset.image_subset_infs_left Finset.image_subset_infs_left
 
-/- warning: finset.image_subset_infs_right -> Finset.image_subset_infs_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (x._@.Mathlib.Data.Finset.Sups._hyg.3023 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a x._@.Mathlib.Data.Finset.Sups._hyg.3023) t) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
-Case conversion may be inaccurate. Consider using '#align finset.image_subset_infs_right Finset.image_subset_infs_rightₓ'. -/
 theorem image_subset_infs_right : a ∈ s → t.image ((· ⊓ ·) a) ⊆ s ⊼ t :=
   image_subset_image₂_right
 #align finset.image_subset_infs_right Finset.image_subset_infs_right
 
-/- warning: finset.forall_infs_iff -> Finset.forall_infs_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (p (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (p (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b))))
-Case conversion may be inaccurate. Consider using '#align finset.forall_infs_iff Finset.forall_infs_iffₓ'. -/
 theorem forall_infs_iff {p : α → Prop} : (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b) :=
   forall_image₂_iff
 #align finset.forall_infs_iff Finset.forall_infs_iff
 
-/- warning: finset.infs_subset_iff -> Finset.infs_subset_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) u)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) u)))
-Case conversion may be inaccurate. Consider using '#align finset.infs_subset_iff Finset.infs_subset_iffₓ'. -/
 @[simp]
 theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u :=
   image₂_subset_iff
@@ -514,34 +394,16 @@ theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
 #align finset.infs_eq_empty Finset.infs_eq_empty
 -/
 
-/- warning: finset.singleton_infs -> Finset.singleton_infs is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) t)
-Case conversion may be inaccurate. Consider using '#align finset.singleton_infs Finset.singleton_infsₓ'. -/
 @[simp]
 theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b :=
   image₂_singleton_left
 #align finset.singleton_infs Finset.singleton_infs
 
-/- warning: finset.infs_singleton -> Finset.infs_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)
-Case conversion may be inaccurate. Consider using '#align finset.infs_singleton Finset.infs_singletonₓ'. -/
 @[simp]
 theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b :=
   image₂_singleton_right
 #align finset.infs_singleton Finset.infs_singleton
 
-/- warning: finset.singleton_infs_singleton -> Finset.singleton_infs_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b))
-Case conversion may be inaccurate. Consider using '#align finset.singleton_infs_singleton Finset.singleton_infs_singletonₓ'. -/
 theorem singleton_infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
   image₂_singleton
 #align finset.singleton_infs_singleton Finset.singleton_infs_singleton
@@ -579,32 +441,14 @@ theorem subset_infs {s t : Set α} :
 
 variable (s t u v)
 
-/- warning: finset.bUnion_image_inf_left -> Finset.biUnion_image_inf_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.4108 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4110 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4108 x._@.Mathlib.Data.Finset.Sups._hyg.4110) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_left Finset.biUnion_image_inf_leftₓ'. -/
 theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
   biUnion_image_left
 #align finset.bUnion_image_inf_left Finset.biUnion_image_inf_left
 
-/- warning: finset.bUnion_image_inf_right -> Finset.biUnion_image_inf_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_right Finset.biUnion_image_inf_rightₓ'. -/
 theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
   biUnion_image_right
 #align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
 
-/- warning: finset.image_inf_product -> Finset.image_inf_product is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2))) (Finset.product.{u1, u1} α α s t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (fun (x._@.Mathlib.Data.Finset.Sups._hyg.4224 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4226 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4224 x._@.Mathlib.Data.Finset.Sups._hyg.4226)) (Finset.product.{u1, u1} α α s t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.image_inf_product Finset.image_inf_productₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem image_inf_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
@@ -679,12 +523,6 @@ section DisjSups
 
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
 
-/- warning: finset.disj_sups -> Finset.disjSups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)], (Finset.{u1} α) -> (Finset.{u1} α) -> (Finset.{u1} α)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)], (Finset.{u1} α) -> (Finset.{u1} α) -> (Finset.{u1} α)
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups Finset.disjSupsₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a` and `b` are disjoint.
 -/
@@ -697,23 +535,11 @@ scoped[FinsetFamily] infixl:74 " ○ " => Finset.disjSups
 
 variable {s t u} {a b c : α}
 
-/- warning: finset.mem_disj_sups -> Finset.mem_disjSups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c))))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) c))))))
-Case conversion may be inaccurate. Consider using '#align finset.mem_disj_sups Finset.mem_disjSupsₓ'. -/
 @[simp]
 theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c := by
   simp [disj_sups, and_assoc']
 #align finset.mem_disj_sups Finset.mem_disjSups
 
-/- warning: finset.disj_sups_subset_sups -> Finset.disjSups_subset_sups is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_sups Finset.disjSups_subset_supsₓ'. -/
 theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
   by
   simp_rw [subset_iff, mem_sups, mem_disj_sups]
@@ -722,54 +548,24 @@ theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
 
 variable (s t)
 
-/- warning: finset.card_disj_sups_le -> Finset.card_disjSups_le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), LE.le.{0} Nat instLENat (Finset.card.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))
-Case conversion may be inaccurate. Consider using '#align finset.card_disj_sups_le Finset.card_disjSups_leₓ'. -/
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
   (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
-/- warning: finset.disj_sups_subset -> Finset.disjSups_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t₂))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t₂))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset Finset.disjSups_subsetₓ'. -/
 theorem disjSups_subset (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) : s₁ ○ t₁ ⊆ s₂ ○ t₂ :=
   image_subset_image <| filter_subset_filter _ <| product_subset_product hs ht
 #align finset.disj_sups_subset Finset.disjSups_subset
 
-/- warning: finset.disj_sups_subset_left -> Finset.disjSups_subset_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_left Finset.disjSups_subset_leftₓ'. -/
 theorem disjSups_subset_left (ht : t₁ ⊆ t₂) : s ○ t₁ ⊆ s ○ t₂ :=
   disjSups_subset Subset.rfl ht
 #align finset.disj_sups_subset_left Finset.disjSups_subset_left
 
-/- warning: finset.disj_sups_subset_right -> Finset.disjSups_subset_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_right Finset.disjSups_subset_rightₓ'. -/
 theorem disjSups_subset_right (hs : s₁ ⊆ s₂) : s₁ ○ t ⊆ s₂ ○ t :=
   disjSups_subset hs Subset.rfl
 #align finset.disj_sups_subset_right Finset.disjSups_subset_right
 
-/- warning: finset.forall_disj_sups_iff -> Finset.forall_disjSups_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))))
-Case conversion may be inaccurate. Consider using '#align finset.forall_disj_sups_iff Finset.forall_disjSups_iffₓ'. -/
 theorem forall_disjSups_iff {p : α → Prop} :
     (∀ c ∈ s ○ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → p (a ⊔ b) :=
   by
@@ -779,115 +575,49 @@ theorem forall_disjSups_iff {p : α → Prop} :
   exact h _ ha _ hb hab
 #align finset.forall_disj_sups_iff Finset.forall_disjSups_iff
 
-/- warning: finset.disj_sups_subset_iff -> Finset.disjSups_subset_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) u)))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_iff Finset.disjSups_subset_iffₓ'. -/
 @[simp]
 theorem disjSups_subset_iff : s ○ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → a ⊔ b ∈ u :=
   forall_disjSups_iff
 #align finset.disj_sups_subset_iff Finset.disjSups_subset_iff
 
-/- warning: finset.nonempty.of_disj_sups_left -> Finset.Nonempty.of_disjSups_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_leftₓ'. -/
 theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty := by
   simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
 #align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_left
 
-/- warning: finset.nonempty.of_disj_sups_right -> Finset.Nonempty.of_disjSups_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α t)
-Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_rightₓ'. -/
 theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty := by
   simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
 #align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_right
 
-/- warning: finset.disj_sups_empty_left -> Finset.disjSups_empty_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)) t) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α)) t) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_empty_left Finset.disjSups_empty_leftₓ'. -/
 @[simp]
 theorem disjSups_empty_left : ∅ ○ t = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_left Finset.disjSups_empty_left
 
-/- warning: finset.disj_sups_empty_right -> Finset.disjSups_empty_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_empty_right Finset.disjSups_empty_rightₓ'. -/
 @[simp]
 theorem disjSups_empty_right : s ○ ∅ = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_right Finset.disjSups_empty_right
 
-/- warning: finset.disj_sups_singleton -> Finset.disjSups_singleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α)))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_singleton Finset.disjSups_singletonₓ'. -/
 theorem disjSups_singleton : ({a} ○ {b} : Finset α) = if Disjoint a b then {a ⊔ b} else ∅ := by
   split_ifs <;> simp [disj_sups, filter_singleton, h]
 #align finset.disj_sups_singleton Finset.disjSups_singleton
 
-/- warning: finset.disj_sups_union_left -> Finset.disjSups_union_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_union_left Finset.disjSups_union_leftₓ'. -/
 theorem disjSups_union_left : (s₁ ∪ s₂) ○ t = s₁ ○ t ∪ s₂ ○ t := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_left Finset.disjSups_union_left
 
-/- warning: finset.disj_sups_union_right -> Finset.disjSups_union_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_union_right Finset.disjSups_union_rightₓ'. -/
 theorem disjSups_union_right : s ○ (t₁ ∪ t₂) = s ○ t₁ ∪ s ○ t₂ := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_right Finset.disjSups_union_right
 
-/- warning: finset.disj_sups_inter_subset_left -> Finset.disjSups_inter_subset_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_leftₓ'. -/
 theorem disjSups_inter_subset_left : (s₁ ∩ s₂) ○ t ⊆ s₁ ○ t ∩ s₂ ○ t := by
   simpa only [disj_sups, inter_product, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_left
 
-/- warning: finset.disj_sups_inter_subset_right -> Finset.disjSups_inter_subset_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_rightₓ'. -/
 theorem disjSups_inter_subset_right : s ○ (t₁ ∩ t₂) ⊆ s ○ t₁ ∩ s ○ t₂ := by
   simpa only [disj_sups, product_inter, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_right
 
 variable (s t)
 
-/- warning: finset.disj_sups_comm -> Finset.disjSups_comm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t s)
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_comm Finset.disjSups_commₓ'. -/
 theorem disjSups_comm : s ○ t = t ○ s := by ext; rw [mem_disj_sups, exists₂_comm];
   simp [sup_comm, disjoint_comm]
 #align finset.disj_sups_comm Finset.disjSups_comm
@@ -900,12 +630,6 @@ section DistribLattice
 
 variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u v : Finset α)
 
-/- warning: finset.disj_sups_assoc -> Finset.disjSups_assoc is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_assoc Finset.disjSups_assocₓ'. -/
 theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u) :=
   by
   refine' associative_of_commutative_of_le disj_sups_comm _
@@ -915,31 +639,13 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
 
-/- warning: finset.disj_sups_left_comm -> Finset.disjSups_left_comm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_left_comm Finset.disjSups_left_commₓ'. -/
 theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
   simp_rw [← disj_sups_assoc, disj_sups_comm s]
 #align finset.disj_sups_left_comm Finset.disjSups_left_comm
 
-/- warning: finset.disj_sups_right_comm -> Finset.disjSups_right_comm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) t)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) t)
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_right_comm Finset.disjSups_right_commₓ'. -/
 theorem disjSups_right_comm : s ○ t ○ u = s ○ u ○ t := by simp_rw [disj_sups_assoc, disj_sups_comm]
 #align finset.disj_sups_right_comm Finset.disjSups_right_comm
 
-/- warning: finset.disj_sups_disj_sups_disj_sups_comm -> Finset.disjSups_disjSups_disjSups_comm is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α) (v : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) u v)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t v))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α) (v : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) u v)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t v))
-Case conversion may be inaccurate. Consider using '#align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_commₓ'. -/
 theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v) := by
   simp_rw [← disj_sups_assoc, disj_sups_right_comm]
 #align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
Diff
@@ -796,10 +796,8 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α s)
 Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_leftₓ'. -/
-theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty :=
-  by
-  simp_rw [Finset.Nonempty, mem_disj_sups]
-  exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
+theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty := by
+  simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
 #align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_left
 
 /- warning: finset.nonempty.of_disj_sups_right -> Finset.Nonempty.of_disjSups_right is a dubious translation:
@@ -808,10 +806,8 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α t)
 Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_rightₓ'. -/
-theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty :=
-  by
-  simp_rw [Finset.Nonempty, mem_disj_sups]
-  exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
+theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty := by
+  simp_rw [Finset.Nonempty, mem_disj_sups]; exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
 #align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_right
 
 /- warning: finset.disj_sups_empty_left -> Finset.disjSups_empty_left is a dubious translation:
@@ -892,9 +888,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t s)
 Case conversion may be inaccurate. Consider using '#align finset.disj_sups_comm Finset.disjSups_commₓ'. -/
-theorem disjSups_comm : s ○ t = t ○ s := by
-  ext
-  rw [mem_disj_sups, exists₂_comm]
+theorem disjSups_comm : s ○ t = t ○ s := by ext; rw [mem_disj_sups, exists₂_comm];
   simp [sup_comm, disjoint_comm]
 #align finset.disj_sups_comm Finset.disjSups_comm
 
Diff
@@ -679,14 +679,18 @@ section DisjSups
 
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
 
+/- warning: finset.disj_sups -> Finset.disjSups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)], (Finset.{u1} α) -> (Finset.{u1} α) -> (Finset.{u1} α)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)], (Finset.{u1} α) -> (Finset.{u1} α) -> (Finset.{u1} α)
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups Finset.disjSupsₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-#print Finset.disjSups /-
 /-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a` and `b` are disjoint.
 -/
 def disjSups : Finset α :=
   ((s ×ˢ t).filterₓ fun ab : α × α => Disjoint ab.1 ab.2).image fun ab => ab.1 ⊔ ab.2
 #align finset.disj_sups Finset.disjSups
--/
 
 -- mathport name: finset.disj_sups
 scoped[FinsetFamily] infixl:74 " ○ " => Finset.disjSups
@@ -695,7 +699,7 @@ variable {s t u} {a b c : α}
 
 /- warning: finset.mem_disj_sups -> Finset.mem_disjSups is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c))))))
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c))))))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) c))))))
 Case conversion may be inaccurate. Consider using '#align finset.mem_disj_sups Finset.mem_disjSupsₓ'. -/
@@ -704,45 +708,65 @@ theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b
   simp [disj_sups, and_assoc']
 #align finset.mem_disj_sups Finset.mem_disjSups
 
-#print Finset.disjSups_subset_sups /-
+/- warning: finset.disj_sups_subset_sups -> Finset.disjSups_subset_sups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_sups Finset.disjSups_subset_supsₓ'. -/
 theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
   by
   simp_rw [subset_iff, mem_sups, mem_disj_sups]
   exact fun c ⟨a, b, ha, hb, h, hc⟩ => ⟨a, b, ha, hb, hc⟩
 #align finset.disj_sups_subset_sups Finset.disjSups_subset_sups
--/
 
 variable (s t)
 
-#print Finset.card_disjSups_le /-
+/- warning: finset.card_disj_sups_le -> Finset.card_disjSups_le is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), LE.le.{0} Nat instLENat (Finset.card.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))
+Case conversion may be inaccurate. Consider using '#align finset.card_disj_sups_le Finset.card_disjSups_leₓ'. -/
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
   (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
--/
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
-#print Finset.disjSups_subset /-
+/- warning: finset.disj_sups_subset -> Finset.disjSups_subset is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t₂))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t₂))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset Finset.disjSups_subsetₓ'. -/
 theorem disjSups_subset (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) : s₁ ○ t₁ ⊆ s₂ ○ t₂ :=
   image_subset_image <| filter_subset_filter _ <| product_subset_product hs ht
 #align finset.disj_sups_subset Finset.disjSups_subset
--/
 
-#print Finset.disjSups_subset_left /-
+/- warning: finset.disj_sups_subset_left -> Finset.disjSups_subset_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) t₁ t₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_left Finset.disjSups_subset_leftₓ'. -/
 theorem disjSups_subset_left (ht : t₁ ⊆ t₂) : s ○ t₁ ⊆ s ○ t₂ :=
   disjSups_subset Subset.rfl ht
 #align finset.disj_sups_subset_left Finset.disjSups_subset_left
--/
 
-#print Finset.disjSups_subset_right /-
+/- warning: finset.disj_sups_subset_right -> Finset.disjSups_subset_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) s₁ s₂) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_right Finset.disjSups_subset_rightₓ'. -/
 theorem disjSups_subset_right (hs : s₁ ⊆ s₂) : s₁ ○ t ⊆ s₂ ○ t :=
   disjSups_subset hs Subset.rfl
 #align finset.disj_sups_subset_right Finset.disjSups_subset_right
--/
 
 /- warning: finset.forall_disj_sups_iff -> Finset.forall_disjSups_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))))
 Case conversion may be inaccurate. Consider using '#align finset.forall_disj_sups_iff Finset.forall_disjSups_iffₓ'. -/
@@ -757,7 +781,7 @@ theorem forall_disjSups_iff {p : α → Prop} :
 
 /- warning: finset.disj_sups_subset_iff -> Finset.disjSups_subset_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) u)))
 Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_iff Finset.disjSups_subset_iffₓ'. -/
@@ -766,37 +790,53 @@ theorem disjSups_subset_iff : s ○ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoi
   forall_disjSups_iff
 #align finset.disj_sups_subset_iff Finset.disjSups_subset_iff
 
-#print Finset.Nonempty.of_disjSups_left /-
+/- warning: finset.nonempty.of_disj_sups_left -> Finset.Nonempty.of_disjSups_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α s)
+Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_leftₓ'. -/
 theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty :=
   by
   simp_rw [Finset.Nonempty, mem_disj_sups]
   exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
 #align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_left
--/
 
-#print Finset.Nonempty.of_disjSups_right /-
+/- warning: finset.nonempty.of_disj_sups_right -> Finset.Nonempty.of_disjSups_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α}, (Finset.Nonempty.{u1} α (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (Finset.Nonempty.{u1} α t)
+Case conversion may be inaccurate. Consider using '#align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_rightₓ'. -/
 theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty :=
   by
   simp_rw [Finset.Nonempty, mem_disj_sups]
   exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
 #align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_right
--/
 
-#print Finset.disjSups_empty_left /-
+/- warning: finset.disj_sups_empty_left -> Finset.disjSups_empty_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)) t) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α)) t) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_empty_left Finset.disjSups_empty_leftₓ'. -/
 @[simp]
 theorem disjSups_empty_left : ∅ ○ t = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_left Finset.disjSups_empty_left
--/
 
-#print Finset.disjSups_empty_right /-
+/- warning: finset.disj_sups_empty_right -> Finset.disjSups_empty_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_empty_right Finset.disjSups_empty_rightₓ'. -/
 @[simp]
 theorem disjSups_empty_right : s ○ ∅ = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_right Finset.disjSups_empty_right
--/
 
 /- warning: finset.disj_sups_singleton -> Finset.disjSups_singleton is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)))
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α)))
 Case conversion may be inaccurate. Consider using '#align finset.disj_sups_singleton Finset.disjSups_singletonₓ'. -/
@@ -804,39 +844,59 @@ theorem disjSups_singleton : ({a} ○ {b} : Finset α) = if Disjoint a b then {a
   split_ifs <;> simp [disj_sups, filter_singleton, h]
 #align finset.disj_sups_singleton Finset.disjSups_singleton
 
-#print Finset.disjSups_union_left /-
+/- warning: finset.disj_sups_union_left -> Finset.disjSups_union_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_union_left Finset.disjSups_union_leftₓ'. -/
 theorem disjSups_union_left : (s₁ ∪ s₂) ○ t = s₁ ○ t ∪ s₂ ○ t := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_left Finset.disjSups_union_left
--/
 
-#print Finset.disjSups_union_right /-
+/- warning: finset.disj_sups_union_right -> Finset.disjSups_union_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.hasUnion.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Union.union.{u1} (Finset.{u1} α) (Finset.instUnionFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_union_right Finset.disjSups_union_rightₓ'. -/
 theorem disjSups_union_right : s ○ (t₁ ∪ t₂) = s ○ t₁ ∪ s ○ t₂ := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_right Finset.disjSups_union_right
--/
 
-#print Finset.disjSups_inter_subset_left /-
+/- warning: finset.disj_sups_inter_subset_left -> Finset.disjSups_inter_subset_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s₁ : Finset.{u1} α} {s₂ : Finset.{u1} α} {t : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) s₁ s₂) t) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₁ t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s₂ t))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_leftₓ'. -/
 theorem disjSups_inter_subset_left : (s₁ ∩ s₂) ○ t ⊆ s₁ ○ t ∩ s₂ ○ t := by
   simpa only [disj_sups, inter_product, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_left
--/
 
-#print Finset.disjSups_inter_subset_right /-
+/- warning: finset.disj_sups_inter_subset_right -> Finset.disjSups_inter_subset_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Inter.inter.{u1} (Finset.{u1} α) (Finset.hasInter.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t₁ : Finset.{u1} α} {t₂ : Finset.{u1} α}, HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) t₁ t₂)) (Inter.inter.{u1} (Finset.{u1} α) (Finset.instInterFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₁) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t₂))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_rightₓ'. -/
 theorem disjSups_inter_subset_right : s ○ (t₁ ∩ t₂) ⊆ s ○ t₁ ∩ s ○ t₂ := by
   simpa only [disj_sups, product_inter, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_right
--/
 
 variable (s t)
 
-#print Finset.disjSups_comm /-
+/- warning: finset.disj_sups_comm -> Finset.disjSups_comm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t s)
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_comm Finset.disjSups_commₓ'. -/
 theorem disjSups_comm : s ○ t = t ○ s := by
   ext
   rw [mem_disj_sups, exists₂_comm]
   simp [sup_comm, disjoint_comm]
 #align finset.disj_sups_comm Finset.disjSups_comm
--/
 
 end DisjSups
 
@@ -846,7 +906,12 @@ section DistribLattice
 
 variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u v : Finset α)
 
-#print Finset.disjSups_assoc /-
+/- warning: finset.disj_sups_assoc -> Finset.disjSups_assoc is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_assoc Finset.disjSups_assocₓ'. -/
 theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u) :=
   by
   refine' associative_of_commutative_of_le disj_sups_comm _
@@ -855,24 +920,35 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   rw [disjoint_sup_left] at habc
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
--/
 
-#print Finset.disjSups_left_comm /-
+/- warning: finset.disj_sups_left_comm -> Finset.disjSups_left_comm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t u)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_left_comm Finset.disjSups_left_commₓ'. -/
 theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
   simp_rw [← disj_sups_assoc, disj_sups_comm s]
 #align finset.disj_sups_left_comm Finset.disjSups_left_comm
--/
 
-#print Finset.disjSups_right_comm /-
+/- warning: finset.disj_sups_right_comm -> Finset.disjSups_right_comm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) t)
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_right_comm Finset.disjSups_right_commₓ'. -/
 theorem disjSups_right_comm : s ○ t ○ u = s ○ u ○ t := by simp_rw [disj_sups_assoc, disj_sups_comm]
 #align finset.disj_sups_right_comm Finset.disjSups_right_comm
--/
 
-#print Finset.disjSups_disjSups_disjSups_comm /-
+/- warning: finset.disj_sups_disj_sups_disj_sups_comm -> Finset.disjSups_disjSups_disjSups_comm is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α) (v : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) u v)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t v))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : DistribLattice.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)))))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_2))) _inst_3)] (s : Finset.{u1} α) (t : Finset.{u1} α) (u : Finset.{u1} α) (v : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) u v)) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s u) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_2)) _inst_3 (fun (a : α) (b : α) => _inst_4 a b) t v))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_commₓ'. -/
 theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v) := by
   simp_rw [← disj_sups_assoc, disj_sups_right_comm]
 #align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
--/
 
 end DistribLattice
 
Diff
@@ -281,25 +281,25 @@ theorem subset_sups {s t : Set α} :
 
 variable (s t u v)
 
-/- warning: finset.bUnion_image_sup_left -> Finset.bunionᵢ_image_sup_left is a dubious translation:
+/- warning: finset.bUnion_image_sup_left -> Finset.biUnion_image_sup_left is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.1857 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1859 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1857 x._@.Mathlib.Data.Finset.Sups._hyg.1859) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_left Finset.bunionᵢ_image_sup_leftₓ'. -/
-theorem bunionᵢ_image_sup_left : (s.bunionᵢ fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
-  bunionᵢ_image_left
-#align finset.bUnion_image_sup_left Finset.bunionᵢ_image_sup_left
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.1857 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1859 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1857 x._@.Mathlib.Data.Finset.Sups._hyg.1859) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_left Finset.biUnion_image_sup_leftₓ'. -/
+theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
+  biUnion_image_left
+#align finset.bUnion_image_sup_left Finset.biUnion_image_sup_left
 
-/- warning: finset.bUnion_image_sup_right -> Finset.bunionᵢ_image_sup_right is a dubious translation:
+/- warning: finset.bUnion_image_sup_right -> Finset.biUnion_image_sup_right is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_right Finset.bunionᵢ_image_sup_rightₓ'. -/
-theorem bunionᵢ_image_sup_right : (t.bunionᵢ fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
-  bunionᵢ_image_right
-#align finset.bUnion_image_sup_right Finset.bunionᵢ_image_sup_right
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_right Finset.biUnion_image_sup_rightₓ'. -/
+theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
+  biUnion_image_right
+#align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
 
 /- warning: finset.image_sup_product -> Finset.image_sup_product is a dubious translation:
 lean 3 declaration is
@@ -579,25 +579,25 @@ theorem subset_infs {s t : Set α} :
 
 variable (s t u v)
 
-/- warning: finset.bUnion_image_inf_left -> Finset.bunionᵢ_image_inf_left is a dubious translation:
+/- warning: finset.bUnion_image_inf_left -> Finset.biUnion_image_inf_left is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.4108 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4110 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4108 x._@.Mathlib.Data.Finset.Sups._hyg.4110) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_left Finset.bunionᵢ_image_inf_leftₓ'. -/
-theorem bunionᵢ_image_inf_left : (s.bunionᵢ fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
-  bunionᵢ_image_left
-#align finset.bUnion_image_inf_left Finset.bunionᵢ_image_inf_left
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.4108 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4110 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4108 x._@.Mathlib.Data.Finset.Sups._hyg.4110) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_left Finset.biUnion_image_inf_leftₓ'. -/
+theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
+  biUnion_image_left
+#align finset.bUnion_image_inf_left Finset.biUnion_image_inf_left
 
-/- warning: finset.bUnion_image_inf_right -> Finset.bunionᵢ_image_inf_right is a dubious translation:
+/- warning: finset.bUnion_image_inf_right -> Finset.biUnion_image_inf_right is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
-Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_right Finset.bunionᵢ_image_inf_rightₓ'. -/
-theorem bunionᵢ_image_inf_right : (t.bunionᵢ fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
-  bunionᵢ_image_right
-#align finset.bUnion_image_inf_right Finset.bunionᵢ_image_inf_right
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_right Finset.biUnion_image_inf_rightₓ'. -/
+theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
+  biUnion_image_right
+#align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
 
 /- warning: finset.image_inf_product -> Finset.image_inf_product is a dubious translation:
 lean 3 declaration is
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
 
 ! This file was ported from Lean 3 source module data.finset.sups
-! leanprover-community/mathlib commit 20715f4ac6819ef2453d9e5106ecd086a5dc2a5e
+! leanprover-community/mathlib commit 25a9423c6b2c8626e91c688bfd6c1d0a986a3e6e
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Data.Set.Sups
 /-!
 # Set family operations
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file defines a few binary operations on `finset α` for use in set family combinatorics.
 
 ## Main declarations
Diff
@@ -48,30 +48,48 @@ section Sups
 
 variable [SemilatticeSup α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
+#print Finset.hasSups /-
 /-- `s ⊻ t` is the finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasSups : HasSups (Finset α) :=
   ⟨image₂ (· ⊔ ·)⟩
 #align finset.has_sups Finset.hasSups
+-/
 
 scoped[FinsetFamily] attribute [instance] Finset.hasSups
 
 variable {s t} {a b c : α}
 
+/- warning: finset.mem_sups -> Finset.mem_sups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c)))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) c)))))
+Case conversion may be inaccurate. Consider using '#align finset.mem_sups Finset.mem_supsₓ'. -/
 @[simp]
 theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c := by simp [(· ⊻ ·)]
 #align finset.mem_sups Finset.mem_sups
 
 variable (s t)
 
+#print Finset.coe_sups /-
 @[simp, norm_cast]
 theorem coe_sups : (↑(s ⊻ t) : Set α) = s ⊻ t :=
   coe_image₂ _ _ _
 #align finset.coe_sups Finset.coe_sups
+-/
 
+#print Finset.card_sups_le /-
 theorem card_sups_le : (s ⊻ t).card ≤ s.card * t.card :=
   card_image₂_le _ _ _
 #align finset.card_sups_le Finset.card_sups_le
+-/
 
+/- warning: finset.card_sups_iff -> Finset.card_sups_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) t)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α (Finset.toSet.{u1} α s) (Finset.toSet.{u1} α t)))
+Case conversion may be inaccurate. Consider using '#align finset.card_sups_iff Finset.card_sups_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem card_sups_iff :
     (s ⊻ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊔ x.2 :=
@@ -80,141 +98,247 @@ theorem card_sups_iff :
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+/- warning: finset.sup_mem_sups -> Finset.sup_mem_sups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.sup_mem_sups Finset.sup_mem_supsₓ'. -/
 theorem sup_mem_sups : a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t :=
   mem_image₂_of_mem
 #align finset.sup_mem_sups Finset.sup_mem_sups
 
+#print Finset.sups_subset /-
 theorem sups_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊻ t₁ ⊆ s₂ ⊻ t₂ :=
   image₂_subset
 #align finset.sups_subset Finset.sups_subset
+-/
 
+#print Finset.sups_subset_left /-
 theorem sups_subset_left : t₁ ⊆ t₂ → s ⊻ t₁ ⊆ s ⊻ t₂ :=
   image₂_subset_left
 #align finset.sups_subset_left Finset.sups_subset_left
+-/
 
+#print Finset.sups_subset_right /-
 theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t :=
   image₂_subset_right
 #align finset.sups_subset_right Finset.sups_subset_right
+-/
 
+/- warning: finset.image_subset_sups_left -> Finset.image_subset_sups_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.image_subset_sups_left Finset.image_subset_sups_leftₓ'. -/
 theorem image_subset_sups_left : b ∈ t → (s.image fun a => a ⊔ b) ⊆ s ⊻ t :=
   image_subset_image₂_left
 #align finset.image_subset_sups_left Finset.image_subset_sups_left
 
+/- warning: finset.image_subset_sups_right -> Finset.image_subset_sups_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (x._@.Mathlib.Data.Finset.Sups._hyg.772 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a x._@.Mathlib.Data.Finset.Sups._hyg.772) t) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.image_subset_sups_right Finset.image_subset_sups_rightₓ'. -/
 theorem image_subset_sups_right : a ∈ s → t.image ((· ⊔ ·) a) ⊆ s ⊻ t :=
   image_subset_image₂_right
 #align finset.image_subset_sups_right Finset.image_subset_sups_right
 
+/- warning: finset.forall_sups_iff -> Finset.forall_sups_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (p (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))))
+Case conversion may be inaccurate. Consider using '#align finset.forall_sups_iff Finset.forall_sups_iffₓ'. -/
 theorem forall_sups_iff {p : α → Prop} : (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b) :=
   forall_image₂_iff
 #align finset.forall_sups_iff Finset.forall_sups_iff
 
+/- warning: finset.sups_subset_iff -> Finset.sups_subset_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) u)))
+Case conversion may be inaccurate. Consider using '#align finset.sups_subset_iff Finset.sups_subset_iffₓ'. -/
 @[simp]
 theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u :=
   image₂_subset_iff
 #align finset.sups_subset_iff Finset.sups_subset_iff
 
+#print Finset.sups_nonempty /-
 @[simp]
 theorem sups_nonempty : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.sups_nonempty Finset.sups_nonempty
+-/
 
+#print Finset.Nonempty.sups /-
 protected theorem Nonempty.sups : s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty :=
   Nonempty.image₂
 #align finset.nonempty.sups Finset.Nonempty.sups
+-/
 
+#print Finset.Nonempty.of_sups_left /-
 theorem Nonempty.of_sups_left : (s ⊻ t).Nonempty → s.Nonempty :=
   Nonempty.of_image₂_left
 #align finset.nonempty.of_sups_left Finset.Nonempty.of_sups_left
+-/
 
+#print Finset.Nonempty.of_sups_right /-
 theorem Nonempty.of_sups_right : (s ⊻ t).Nonempty → t.Nonempty :=
   Nonempty.of_image₂_right
 #align finset.nonempty.of_sups_right Finset.Nonempty.of_sups_right
+-/
 
+#print Finset.empty_sups /-
 @[simp]
 theorem empty_sups : ∅ ⊻ t = ∅ :=
   image₂_empty_left
 #align finset.empty_sups Finset.empty_sups
+-/
 
+#print Finset.sups_empty /-
 @[simp]
 theorem sups_empty : s ⊻ ∅ = ∅ :=
   image₂_empty_right
 #align finset.sups_empty Finset.sups_empty
+-/
 
+#print Finset.sups_eq_empty /-
 @[simp]
 theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
 #align finset.sups_eq_empty Finset.sups_eq_empty
+-/
 
+/- warning: finset.singleton_sups -> Finset.singleton_sups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) t)
+Case conversion may be inaccurate. Consider using '#align finset.singleton_sups Finset.singleton_supsₓ'. -/
 @[simp]
 theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b :=
   image₂_singleton_left
 #align finset.singleton_sups Finset.singleton_sups
 
+/- warning: finset.sups_singleton -> Finset.sups_singleton is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)
+Case conversion may be inaccurate. Consider using '#align finset.sups_singleton Finset.sups_singletonₓ'. -/
 @[simp]
 theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b :=
   image₂_singleton_right
 #align finset.sups_singleton Finset.sups_singleton
 
+/- warning: finset.singleton_sups_singleton -> Finset.singleton_sups_singleton is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))
+Case conversion may be inaccurate. Consider using '#align finset.singleton_sups_singleton Finset.singleton_sups_singletonₓ'. -/
 theorem singleton_sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
   image₂_singleton
 #align finset.singleton_sups_singleton Finset.singleton_sups_singleton
 
+#print Finset.sups_union_left /-
 theorem sups_union_left : (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t :=
   image₂_union_left
 #align finset.sups_union_left Finset.sups_union_left
+-/
 
+#print Finset.sups_union_right /-
 theorem sups_union_right : s ⊻ (t₁ ∪ t₂) = s ⊻ t₁ ∪ s ⊻ t₂ :=
   image₂_union_right
 #align finset.sups_union_right Finset.sups_union_right
+-/
 
+#print Finset.sups_inter_subset_left /-
 theorem sups_inter_subset_left : (s₁ ∩ s₂) ⊻ t ⊆ s₁ ⊻ t ∩ s₂ ⊻ t :=
   image₂_inter_subset_left
 #align finset.sups_inter_subset_left Finset.sups_inter_subset_left
+-/
 
+#print Finset.sups_inter_subset_right /-
 theorem sups_inter_subset_right : s ⊻ (t₁ ∩ t₂) ⊆ s ⊻ t₁ ∩ s ⊻ t₂ :=
   image₂_inter_subset_right
 #align finset.sups_inter_subset_right Finset.sups_inter_subset_right
+-/
 
+#print Finset.subset_sups /-
 theorem subset_sups {s t : Set α} :
     ↑u ⊆ s ⊻ t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊻ t' :=
   subset_image₂
 #align finset.subset_sups Finset.subset_sups
+-/
 
 variable (s t u v)
 
+/- warning: finset.bUnion_image_sup_left -> Finset.bunionᵢ_image_sup_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.1857 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1859 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1857 x._@.Mathlib.Data.Finset.Sups._hyg.1859) a) t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_left Finset.bunionᵢ_image_sup_leftₓ'. -/
 theorem bunionᵢ_image_sup_left : (s.bunionᵢ fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
   bunionᵢ_image_left
 #align finset.bUnion_image_sup_left Finset.bunionᵢ_image_sup_left
 
+/- warning: finset.bUnion_image_sup_right -> Finset.bunionᵢ_image_sup_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) s)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_sup_right Finset.bunionᵢ_image_sup_rightₓ'. -/
 theorem bunionᵢ_image_sup_right : (t.bunionᵢ fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
   bunionᵢ_image_right
 #align finset.bUnion_image_sup_right Finset.bunionᵢ_image_sup_right
 
+/- warning: finset.image_sup_product -> Finset.image_sup_product is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2))) (Finset.product.{u1, u1} α α s t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (fun (x._@.Mathlib.Data.Finset.Sups._hyg.1973 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.1975 : α) => Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.1973 x._@.Mathlib.Data.Finset.Sups._hyg.1975)) (Finset.product.{u1, u1} α α s t)) (HasSups.sups.{u1} (Finset.{u1} α) (Finset.hasSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.image_sup_product Finset.image_sup_productₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem image_sup_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
   image_uncurry_product _ _ _
 #align finset.image_sup_product Finset.image_sup_product
 
+#print Finset.sups_assoc /-
 theorem sups_assoc : s ⊻ t ⊻ u = s ⊻ (t ⊻ u) :=
   image₂_assoc fun _ _ _ => sup_assoc
 #align finset.sups_assoc Finset.sups_assoc
+-/
 
+#print Finset.sups_comm /-
 theorem sups_comm : s ⊻ t = t ⊻ s :=
   image₂_comm fun _ _ => sup_comm
 #align finset.sups_comm Finset.sups_comm
+-/
 
+#print Finset.sups_left_comm /-
 theorem sups_left_comm : s ⊻ (t ⊻ u) = t ⊻ (s ⊻ u) :=
   image₂_left_comm sup_left_comm
 #align finset.sups_left_comm Finset.sups_left_comm
+-/
 
+#print Finset.sups_right_comm /-
 theorem sups_right_comm : s ⊻ t ⊻ u = s ⊻ u ⊻ t :=
   image₂_right_comm sup_right_comm
 #align finset.sups_right_comm Finset.sups_right_comm
+-/
 
+#print Finset.sups_sups_sups_comm /-
 theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
   image₂_image₂_image₂_comm sup_sup_sup_comm
 #align finset.sups_sups_sups_comm Finset.sups_sups_sups_comm
+-/
 
 end Sups
 
@@ -222,30 +346,48 @@ section Infs
 
 variable [SemilatticeInf α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
+#print Finset.hasInfs /-
 /-- `s ⊼ t` is the finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasInfs : HasInfs (Finset α) :=
   ⟨image₂ (· ⊓ ·)⟩
 #align finset.has_infs Finset.hasInfs
+-/
 
 scoped[FinsetFamily] attribute [instance] Finset.hasInfs
 
 variable {s t} {a b c : α}
 
+/- warning: finset.mem_infs -> Finset.mem_infs is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => Eq.{succ u1} α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) c)))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (Eq.{succ u1} α (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) c)))))
+Case conversion may be inaccurate. Consider using '#align finset.mem_infs Finset.mem_infsₓ'. -/
 @[simp]
 theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c := by simp [(· ⊼ ·)]
 #align finset.mem_infs Finset.mem_infs
 
 variable (s t)
 
+#print Finset.coe_infs /-
 @[simp, norm_cast]
 theorem coe_infs : (↑(s ⊼ t) : Set α) = s ⊼ t :=
   coe_image₂ _ _ _
 #align finset.coe_infs Finset.coe_infs
+-/
 
+#print Finset.card_infs_le /-
 theorem card_infs_le : (s ⊼ t).card ≤ s.card * t.card :=
   card_image₂_le _ _ _
 #align finset.card_infs_le Finset.card_infs_le
+-/
 
+/- warning: finset.card_infs_iff -> Finset.card_infs_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Finset.{u1} α) (Set.{u1} α) (HasLiftT.mk.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} (Finset.{u1} α) (Set.{u1} α) (Finset.Set.hasCoeT.{u1} α))) t)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Iff (Eq.{1} Nat (Finset.card.{u1} α (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (Finset.card.{u1} α s) (Finset.card.{u1} α t))) (Set.InjOn.{u1, u1} (Prod.{u1, u1} α α) α (fun (x : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) (Prod.fst.{u1, u1} α α x) (Prod.snd.{u1, u1} α α x)) (Set.prod.{u1, u1} α α (Finset.toSet.{u1} α s) (Finset.toSet.{u1} α t)))
+Case conversion may be inaccurate. Consider using '#align finset.card_infs_iff Finset.card_infs_iffₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem card_infs_iff :
     (s ⊼ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x => x.1 ⊓ x.2 :=
@@ -254,141 +396,247 @@ theorem card_infs_iff :
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+/- warning: finset.inf_mem_infs -> Finset.inf_mem_infs is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.inf_mem_infs Finset.inf_mem_infsₓ'. -/
 theorem inf_mem_infs : a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t :=
   mem_image₂_of_mem
 #align finset.inf_mem_infs Finset.inf_mem_infs
 
+#print Finset.infs_subset /-
 theorem infs_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊼ t₁ ⊆ s₂ ⊼ t₂ :=
   image₂_subset
 #align finset.infs_subset Finset.infs_subset
+-/
 
+#print Finset.infs_subset_left /-
 theorem infs_subset_left : t₁ ⊆ t₂ → s ⊼ t₁ ⊆ s ⊼ t₂ :=
   image₂_subset_left
 #align finset.infs_subset_left Finset.infs_subset_left
+-/
 
+#print Finset.infs_subset_right /-
 theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t :=
   image₂_subset_right
 #align finset.infs_subset_right Finset.infs_subset_right
+-/
 
+/- warning: finset.image_subset_infs_left -> Finset.image_subset_infs_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.image_subset_infs_left Finset.image_subset_infs_leftₓ'. -/
 theorem image_subset_infs_left : b ∈ t → (s.image fun a => a ⊓ b) ⊆ s ⊼ t :=
   image_subset_image₂_left
 #align finset.image_subset_infs_left Finset.image_subset_infs_left
 
+/- warning: finset.image_subset_infs_right -> Finset.image_subset_infs_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (x._@.Mathlib.Data.Finset.Sups._hyg.3023 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a x._@.Mathlib.Data.Finset.Sups._hyg.3023) t) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t))
+Case conversion may be inaccurate. Consider using '#align finset.image_subset_infs_right Finset.image_subset_infs_rightₓ'. -/
 theorem image_subset_infs_right : a ∈ s → t.image ((· ⊓ ·) a) ⊆ s ⊼ t :=
   image_subset_image₂_right
 #align finset.image_subset_infs_right Finset.image_subset_infs_right
 
+/- warning: finset.forall_infs_iff -> Finset.forall_infs_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (p (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (p (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b))))
+Case conversion may be inaccurate. Consider using '#align finset.forall_infs_iff Finset.forall_infs_iffₓ'. -/
 theorem forall_infs_iff {p : α → Prop} : (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b) :=
   forall_image₂_iff
 #align finset.forall_infs_iff Finset.forall_infs_iff
 
+/- warning: finset.infs_subset_iff -> Finset.infs_subset_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) u)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) u)))
+Case conversion may be inaccurate. Consider using '#align finset.infs_subset_iff Finset.infs_subset_iffₓ'. -/
 @[simp]
 theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u :=
   image₂_subset_iff
 #align finset.infs_subset_iff Finset.infs_subset_iff
 
+#print Finset.infs_nonempty /-
 @[simp]
 theorem infs_nonempty : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.infs_nonempty Finset.infs_nonempty
+-/
 
+#print Finset.Nonempty.infs /-
 protected theorem Nonempty.infs : s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty :=
   Nonempty.image₂
 #align finset.nonempty.infs Finset.Nonempty.infs
+-/
 
+#print Finset.Nonempty.of_infs_left /-
 theorem Nonempty.of_infs_left : (s ⊼ t).Nonempty → s.Nonempty :=
   Nonempty.of_image₂_left
 #align finset.nonempty.of_infs_left Finset.Nonempty.of_infs_left
+-/
 
+#print Finset.Nonempty.of_infs_right /-
 theorem Nonempty.of_infs_right : (s ⊼ t).Nonempty → t.Nonempty :=
   Nonempty.of_image₂_right
 #align finset.nonempty.of_infs_right Finset.Nonempty.of_infs_right
+-/
 
+#print Finset.empty_infs /-
 @[simp]
 theorem empty_infs : ∅ ⊼ t = ∅ :=
   image₂_empty_left
 #align finset.empty_infs Finset.empty_infs
+-/
 
+#print Finset.infs_empty /-
 @[simp]
 theorem infs_empty : s ⊼ ∅ = ∅ :=
   image₂_empty_right
 #align finset.infs_empty Finset.infs_empty
+-/
 
+#print Finset.infs_eq_empty /-
 @[simp]
 theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
 #align finset.infs_eq_empty Finset.infs_eq_empty
+-/
 
+/- warning: finset.singleton_infs -> Finset.singleton_infs is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {t : Finset.{u1} α} {a : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) t) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (b : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) t)
+Case conversion may be inaccurate. Consider using '#align finset.singleton_infs Finset.singleton_infsₓ'. -/
 @[simp]
 theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b :=
   image₂_singleton_left
 #align finset.singleton_infs Finset.singleton_infs
 
+/- warning: finset.infs_singleton -> Finset.infs_singleton is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {s : Finset.{u1} α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)
+Case conversion may be inaccurate. Consider using '#align finset.infs_singleton Finset.infs_singletonₓ'. -/
 @[simp]
 theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b :=
   image₂_singleton_right
 #align finset.infs_singleton Finset.infs_singleton
 
+/- warning: finset.singleton_infs_singleton -> Finset.singleton_infs_singleton is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b))
+Case conversion may be inaccurate. Consider using '#align finset.singleton_infs_singleton Finset.singleton_infs_singletonₓ'. -/
 theorem singleton_infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
   image₂_singleton
 #align finset.singleton_infs_singleton Finset.singleton_infs_singleton
 
+#print Finset.infs_union_left /-
 theorem infs_union_left : (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t :=
   image₂_union_left
 #align finset.infs_union_left Finset.infs_union_left
+-/
 
+#print Finset.infs_union_right /-
 theorem infs_union_right : s ⊼ (t₁ ∪ t₂) = s ⊼ t₁ ∪ s ⊼ t₂ :=
   image₂_union_right
 #align finset.infs_union_right Finset.infs_union_right
+-/
 
+#print Finset.infs_inter_subset_left /-
 theorem infs_inter_subset_left : (s₁ ∩ s₂) ⊼ t ⊆ s₁ ⊼ t ∩ s₂ ⊼ t :=
   image₂_inter_subset_left
 #align finset.infs_inter_subset_left Finset.infs_inter_subset_left
+-/
 
+#print Finset.infs_inter_subset_right /-
 theorem infs_inter_subset_right : s ⊼ (t₁ ∩ t₂) ⊆ s ⊼ t₁ ∩ s ⊼ t₂ :=
   image₂_inter_subset_right
 #align finset.infs_inter_subset_right Finset.infs_inter_subset_right
+-/
 
+#print Finset.subset_infs /-
 theorem subset_infs {s t : Set α} :
     ↑u ⊆ s ⊼ t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊼ t' :=
   subset_image₂
 #align finset.subset_infs Finset.subset_infs
+-/
 
 variable (s t u v)
 
+/- warning: finset.bUnion_image_inf_left -> Finset.bunionᵢ_image_inf_left is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) s (fun (a : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) ((fun (x._@.Mathlib.Data.Finset.Sups._hyg.4108 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4110 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4108 x._@.Mathlib.Data.Finset.Sups._hyg.4110) a) t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_left Finset.bunionᵢ_image_inf_leftₓ'. -/
 theorem bunionᵢ_image_inf_left : (s.bunionᵢ fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
   bunionᵢ_image_left
 #align finset.bUnion_image_inf_left Finset.bunionᵢ_image_inf_left
 
+/- warning: finset.bUnion_image_inf_right -> Finset.bunionᵢ_image_inf_right is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) t (fun (b : α) => Finset.image.{u1, u1} α α (fun (a : α) (b : α) => _inst_1 a b) (fun (a : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) a b) s)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.bUnion_image_inf_right Finset.bunionᵢ_image_inf_rightₓ'. -/
 theorem bunionᵢ_image_inf_right : (t.bunionᵢ fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
   bunionᵢ_image_right
 #align finset.bUnion_image_inf_right Finset.bunionᵢ_image_inf_right
 
+/- warning: finset.image_inf_product -> Finset.image_inf_product is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α _inst_2))) (Finset.product.{u1, u1} α α s t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeInf.{u1} α] (s : Finset.{u1} α) (t : Finset.{u1} α), Eq.{succ u1} (Finset.{u1} α) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_1 a b) (Function.uncurry.{u1, u1, u1} α α α (fun (x._@.Mathlib.Data.Finset.Sups._hyg.4224 : α) (x._@.Mathlib.Data.Finset.Sups._hyg.4226 : α) => Inf.inf.{u1} α (SemilatticeInf.toInf.{u1} α _inst_2) x._@.Mathlib.Data.Finset.Sups._hyg.4224 x._@.Mathlib.Data.Finset.Sups._hyg.4226)) (Finset.product.{u1, u1} α α s t)) (HasInfs.infs.{u1} (Finset.{u1} α) (Finset.hasInfs.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2) s t)
+Case conversion may be inaccurate. Consider using '#align finset.image_inf_product Finset.image_inf_productₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem image_inf_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
   image_uncurry_product _ _ _
 #align finset.image_inf_product Finset.image_inf_product
 
+#print Finset.infs_assoc /-
 theorem infs_assoc : s ⊼ t ⊼ u = s ⊼ (t ⊼ u) :=
   image₂_assoc fun _ _ _ => inf_assoc
 #align finset.infs_assoc Finset.infs_assoc
+-/
 
+#print Finset.infs_comm /-
 theorem infs_comm : s ⊼ t = t ⊼ s :=
   image₂_comm fun _ _ => inf_comm
 #align finset.infs_comm Finset.infs_comm
+-/
 
+#print Finset.infs_left_comm /-
 theorem infs_left_comm : s ⊼ (t ⊼ u) = t ⊼ (s ⊼ u) :=
   image₂_left_comm inf_left_comm
 #align finset.infs_left_comm Finset.infs_left_comm
+-/
 
+#print Finset.infs_right_comm /-
 theorem infs_right_comm : s ⊼ t ⊼ u = s ⊼ u ⊼ t :=
   image₂_right_comm inf_right_comm
 #align finset.infs_right_comm Finset.infs_right_comm
+-/
 
+#print Finset.infs_infs_infs_comm /-
 theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
   image₂_image₂_image₂_comm inf_inf_inf_comm
 #align finset.infs_infs_infs_comm Finset.infs_infs_infs_comm
+-/
 
 end Infs
 
@@ -398,21 +646,29 @@ section DistribLattice
 
 variable [DistribLattice α] (s t u : Finset α)
 
+#print Finset.sups_infs_subset_left /-
 theorem sups_infs_subset_left : s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u) :=
   image₂_distrib_subset_left fun _ _ _ => sup_inf_left
 #align finset.sups_infs_subset_left Finset.sups_infs_subset_left
+-/
 
+#print Finset.sups_infs_subset_right /-
 theorem sups_infs_subset_right : t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s) :=
   image₂_distrib_subset_right fun _ _ _ => sup_inf_right
 #align finset.sups_infs_subset_right Finset.sups_infs_subset_right
+-/
 
+#print Finset.infs_sups_subset_left /-
 theorem infs_sups_subset_left : s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u :=
   image₂_distrib_subset_left fun _ _ _ => inf_sup_left
 #align finset.infs_sups_subset_left Finset.infs_sups_subset_left
+-/
 
+#print Finset.infs_sups_subset_right /-
 theorem infs_sups_subset_right : (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s :=
   image₂_distrib_subset_right fun _ _ _ => inf_sup_right
 #align finset.infs_sups_subset_right Finset.infs_sups_subset_right
+-/
 
 end DistribLattice
 
@@ -421,48 +677,72 @@ section DisjSups
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finset.disjSups /-
 /-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a` and `b` are disjoint.
 -/
 def disjSups : Finset α :=
   ((s ×ˢ t).filterₓ fun ab : α × α => Disjoint ab.1 ab.2).image fun ab => ab.1 ⊔ ab.2
 #align finset.disj_sups Finset.disjSups
+-/
 
 -- mathport name: finset.disj_sups
 scoped[FinsetFamily] infixl:74 " ○ " => Finset.disjSups
 
 variable {s t u} {a b c : α}
 
+/- warning: finset.mem_disj_sups -> Finset.mem_disjSups is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) => Exists.{succ u1} α (fun (b : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) => And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) c))))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {c : α}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) (Exists.{succ u1} α (fun (a : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) (Exists.{succ u1} α (fun (b : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) (And (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) c))))))
+Case conversion may be inaccurate. Consider using '#align finset.mem_disj_sups Finset.mem_disjSupsₓ'. -/
 @[simp]
 theorem mem_disjSups : c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c := by
   simp [disj_sups, and_assoc']
 #align finset.mem_disj_sups Finset.mem_disjSups
 
+#print Finset.disjSups_subset_sups /-
 theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t :=
   by
   simp_rw [subset_iff, mem_sups, mem_disj_sups]
   exact fun c ⟨a, b, ha, hb, h, hc⟩ => ⟨a, b, ha, hb, hc⟩
 #align finset.disj_sups_subset_sups Finset.disjSups_subset_sups
+-/
 
 variable (s t)
 
+#print Finset.card_disjSups_le /-
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
   (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
+-/
 
 variable {s s₁ s₂ t t₁ t₂ u}
 
+#print Finset.disjSups_subset /-
 theorem disjSups_subset (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) : s₁ ○ t₁ ⊆ s₂ ○ t₂ :=
   image_subset_image <| filter_subset_filter _ <| product_subset_product hs ht
 #align finset.disj_sups_subset Finset.disjSups_subset
+-/
 
+#print Finset.disjSups_subset_left /-
 theorem disjSups_subset_left (ht : t₁ ⊆ t₂) : s ○ t₁ ⊆ s ○ t₂ :=
   disjSups_subset Subset.rfl ht
 #align finset.disj_sups_subset_left Finset.disjSups_subset_left
+-/
 
+#print Finset.disjSups_subset_right /-
 theorem disjSups_subset_right (hs : s₁ ⊆ s₂) : s₁ ○ t ⊆ s₂ ○ t :=
   disjSups_subset hs Subset.rfl
 #align finset.disj_sups_subset_right Finset.disjSups_subset_right
+-/
 
+/- warning: finset.forall_disj_sups_iff -> Finset.forall_disjSups_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {p : α -> Prop}, Iff (forall (c : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t)) -> (p c)) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (p (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b))))
+Case conversion may be inaccurate. Consider using '#align finset.forall_disj_sups_iff Finset.forall_disjSups_iffₓ'. -/
 theorem forall_disjSups_iff {p : α → Prop} :
     (∀ c ∈ s ○ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → p (a ⊔ b) :=
   by
@@ -472,58 +752,88 @@ theorem forall_disjSups_iff {p : α → Prop} :
   exact h _ ha _ hb hab
 #align finset.forall_disj_sups_iff Finset.forall_disjSups_iff
 
+/- warning: finset.disj_sups_subset_iff -> Finset.disjSups_subset_iff is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (forall (b : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b) u)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {s : Finset.{u1} α} {t : Finset.{u1} α} {u : Finset.{u1} α}, Iff (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) s t) u) (forall (a : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (forall (b : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b t) -> (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b) u)))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_subset_iff Finset.disjSups_subset_iffₓ'. -/
 @[simp]
 theorem disjSups_subset_iff : s ○ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, Disjoint a b → a ⊔ b ∈ u :=
   forall_disjSups_iff
 #align finset.disj_sups_subset_iff Finset.disjSups_subset_iff
 
+#print Finset.Nonempty.of_disjSups_left /-
 theorem Nonempty.of_disjSups_left : (s ○ t).Nonempty → s.Nonempty :=
   by
   simp_rw [Finset.Nonempty, mem_disj_sups]
   exact fun ⟨_, a, ha, _⟩ => ⟨a, ha⟩
 #align finset.nonempty.of_disj_sups_left Finset.Nonempty.of_disjSups_left
+-/
 
+#print Finset.Nonempty.of_disjSups_right /-
 theorem Nonempty.of_disjSups_right : (s ○ t).Nonempty → t.Nonempty :=
   by
   simp_rw [Finset.Nonempty, mem_disj_sups]
   exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
 #align finset.nonempty.of_disj_sups_right Finset.Nonempty.of_disjSups_right
+-/
 
+#print Finset.disjSups_empty_left /-
 @[simp]
 theorem disjSups_empty_left : ∅ ○ t = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_left Finset.disjSups_empty_left
+-/
 
+#print Finset.disjSups_empty_right /-
 @[simp]
 theorem disjSups_empty_right : s ○ ∅ = ∅ := by simp [disj_sups]
 #align finset.disj_sups_empty_right Finset.disjSups_empty_right
+-/
 
+/- warning: finset.disj_sups_singleton -> Finset.disjSups_singleton is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α)))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] [_inst_4 : DecidableRel.{succ u1} α (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3)] {a : α} {b : α}, Eq.{succ u1} (Finset.{u1} α) (Finset.disjSups.{u1} α (fun (a : α) (b : α) => _inst_1 a b) _inst_2 _inst_3 (fun (a : α) (b : α) => _inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) b)) (ite.{succ u1} (Finset.{u1} α) (Disjoint.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2) _inst_3 a b) (_inst_4 a b) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α _inst_2) a b)) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α)))
+Case conversion may be inaccurate. Consider using '#align finset.disj_sups_singleton Finset.disjSups_singletonₓ'. -/
 theorem disjSups_singleton : ({a} ○ {b} : Finset α) = if Disjoint a b then {a ⊔ b} else ∅ := by
   split_ifs <;> simp [disj_sups, filter_singleton, h]
 #align finset.disj_sups_singleton Finset.disjSups_singleton
 
+#print Finset.disjSups_union_left /-
 theorem disjSups_union_left : (s₁ ∪ s₂) ○ t = s₁ ○ t ∪ s₂ ○ t := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_left Finset.disjSups_union_left
+-/
 
+#print Finset.disjSups_union_right /-
 theorem disjSups_union_right : s ○ (t₁ ∪ t₂) = s ○ t₁ ∪ s ○ t₂ := by
   simp [disj_sups, filter_union, image_union]
 #align finset.disj_sups_union_right Finset.disjSups_union_right
+-/
 
+#print Finset.disjSups_inter_subset_left /-
 theorem disjSups_inter_subset_left : (s₁ ∩ s₂) ○ t ⊆ s₁ ○ t ∩ s₂ ○ t := by
   simpa only [disj_sups, inter_product, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_left Finset.disjSups_inter_subset_left
+-/
 
+#print Finset.disjSups_inter_subset_right /-
 theorem disjSups_inter_subset_right : s ○ (t₁ ∩ t₂) ⊆ s ○ t₁ ∩ s ○ t₂ := by
   simpa only [disj_sups, product_inter, filter_inter_distrib] using image_inter_subset _ _ _
 #align finset.disj_sups_inter_subset_right Finset.disjSups_inter_subset_right
+-/
 
 variable (s t)
 
+#print Finset.disjSups_comm /-
 theorem disjSups_comm : s ○ t = t ○ s := by
   ext
   rw [mem_disj_sups, exists₂_comm]
   simp [sup_comm, disjoint_comm]
 #align finset.disj_sups_comm Finset.disjSups_comm
+-/
 
 end DisjSups
 
@@ -533,6 +843,7 @@ section DistribLattice
 
 variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u v : Finset α)
 
+#print Finset.disjSups_assoc /-
 theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u) :=
   by
   refine' associative_of_commutative_of_le disj_sups_comm _
@@ -541,17 +852,24 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   rw [disjoint_sup_left] at habc
   exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
+-/
 
+#print Finset.disjSups_left_comm /-
 theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
   simp_rw [← disj_sups_assoc, disj_sups_comm s]
 #align finset.disj_sups_left_comm Finset.disjSups_left_comm
+-/
 
+#print Finset.disjSups_right_comm /-
 theorem disjSups_right_comm : s ○ t ○ u = s ○ u ○ t := by simp_rw [disj_sups_assoc, disj_sups_comm]
 #align finset.disj_sups_right_comm Finset.disjSups_right_comm
+-/
 
+#print Finset.disjSups_disjSups_disjSups_comm /-
 theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v) := by
   simp_rw [← disj_sups_assoc, disj_sups_right_comm]
 #align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
+-/
 
 end DistribLattice
 
Diff
@@ -4,11 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
 
 ! This file was ported from Lean 3 source module data.finset.sups
-! leanprover-community/mathlib commit 1990ff7e1ce55c2d37ad7e357976f1afb0da6618
+! leanprover-community/mathlib commit 20715f4ac6819ef2453d9e5106ecd086a5dc2a5e
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Data.Finset.NAry
+import Mathbin.Data.Set.Sups
 
 /-!
 # Set family operations
@@ -17,16 +18,16 @@ This file defines a few binary operations on `finset α` for use in set family c
 
 ## Main declarations
 
-* `finset.sups s t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`.
-* `finset.infs s t`: Finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`.
+* `s ⊻ t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`.
+* `s ⊼ t`: Finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`.
 * `finset.disj_sups s t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a`
   and `b` are disjoint.
 
 ## Notation
 
 We define the following notation in locale `finset_family`:
-* `s ⊻ t` for `finset.sups s t`
-* `s ⊼ t` for `finset.infs s t`
+* `s ⊻ t`
+* `s ⊼ t`
 * `s ○ t` for `finset.disj_sups s t`
 
 ## References
@@ -37,32 +38,33 @@ We define the following notation in locale `finset_family`:
 
 open Function
 
+open SetFamily
+
 variable {α : Type _} [DecidableEq α]
 
 namespace Finset
 
 section Sups
 
-variable [SemilatticeSup α] (s s₁ s₂ t t₁ t₂ u : Finset α)
+variable [SemilatticeSup α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
-/-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
-def sups (s t : Finset α) : Finset α :=
-  image₂ (· ⊔ ·) s t
-#align finset.sups Finset.sups
+/-- `s ⊻ t` is the finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
+protected def hasSups : HasSups (Finset α) :=
+  ⟨image₂ (· ⊔ ·)⟩
+#align finset.has_sups Finset.hasSups
 
--- mathport name: finset.sups
-scoped[FinsetFamily] infixl:74 " ⊻ " => Finset.sups
+scoped[FinsetFamily] attribute [instance] Finset.hasSups
 
 variable {s t} {a b c : α}
 
 @[simp]
-theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c := by simp [sups]
+theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c := by simp [(· ⊻ ·)]
 #align finset.mem_sups Finset.mem_sups
 
 variable (s t)
 
 @[simp, norm_cast]
-theorem coe_sups : (s ⊻ t : Set α) = Set.image2 (· ⊔ ·) s t :=
+theorem coe_sups : (↑(s ⊻ t) : Set α) = s ⊻ t :=
   coe_image₂ _ _ _
 #align finset.coe_sups Finset.coe_sups
 
@@ -94,11 +96,11 @@ theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t :=
   image₂_subset_right
 #align finset.sups_subset_right Finset.sups_subset_right
 
-theorem image_subset_sups_left : b ∈ t → (fun a => a ⊔ b) '' s ⊆ s ⊻ t :=
+theorem image_subset_sups_left : b ∈ t → (s.image fun a => a ⊔ b) ⊆ s ⊻ t :=
   image_subset_image₂_left
 #align finset.image_subset_sups_left Finset.image_subset_sups_left
 
-theorem image_subset_sups_right : a ∈ s → (· ⊔ ·) a '' t ⊆ s ⊻ t :=
+theorem image_subset_sups_right : a ∈ s → t.image ((· ⊔ ·) a) ⊆ s ⊻ t :=
   image_subset_image₂_right
 #align finset.image_subset_sups_right Finset.image_subset_sups_right
 
@@ -112,11 +114,11 @@ theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b 
 #align finset.sups_subset_iff Finset.sups_subset_iff
 
 @[simp]
-theorem sups_nonempty_iff : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
+theorem sups_nonempty : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
-#align finset.sups_nonempty_iff Finset.sups_nonempty_iff
+#align finset.sups_nonempty Finset.sups_nonempty
 
-theorem Nonempty.sups : s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty :=
+protected theorem Nonempty.sups : s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty :=
   Nonempty.image₂
 #align finset.nonempty.sups Finset.Nonempty.sups
 
@@ -129,37 +131,33 @@ theorem Nonempty.of_sups_right : (s ⊻ t).Nonempty → t.Nonempty :=
 #align finset.nonempty.of_sups_right Finset.Nonempty.of_sups_right
 
 @[simp]
-theorem sups_empty_left : ∅ ⊻ t = ∅ :=
+theorem empty_sups : ∅ ⊻ t = ∅ :=
   image₂_empty_left
-#align finset.sups_empty_left Finset.sups_empty_left
+#align finset.empty_sups Finset.empty_sups
 
 @[simp]
-theorem sups_empty_right : s ⊻ ∅ = ∅ :=
+theorem sups_empty : s ⊻ ∅ = ∅ :=
   image₂_empty_right
-#align finset.sups_empty_right Finset.sups_empty_right
+#align finset.sups_empty Finset.sups_empty
 
 @[simp]
-theorem sups_eq_empty_iff : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
+theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
-#align finset.sups_eq_empty_iff Finset.sups_eq_empty_iff
+#align finset.sups_eq_empty Finset.sups_eq_empty
 
 @[simp]
-theorem sups_singleton_left : {a} ⊻ t = t.image fun b => a ⊔ b :=
+theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b :=
   image₂_singleton_left
-#align finset.sups_singleton_left Finset.sups_singleton_left
+#align finset.singleton_sups Finset.singleton_sups
 
 @[simp]
-theorem sups_singleton_right : s ⊻ {b} = s.image fun a => a ⊔ b :=
+theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b :=
   image₂_singleton_right
-#align finset.sups_singleton_right Finset.sups_singleton_right
-
-theorem sups_singleton_left' : {a} ⊻ t = t.image ((· ⊔ ·) a) :=
-  image₂_singleton_left'
-#align finset.sups_singleton_left' Finset.sups_singleton_left'
+#align finset.sups_singleton Finset.sups_singleton
 
-theorem sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
+theorem singleton_sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
   image₂_singleton
-#align finset.sups_singleton Finset.sups_singleton
+#align finset.singleton_sups_singleton Finset.singleton_sups_singleton
 
 theorem sups_union_left : (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t :=
   image₂_union_left
@@ -178,11 +176,11 @@ theorem sups_inter_subset_right : s ⊻ (t₁ ∩ t₂) ⊆ s ⊻ t₁ ∩ s ⊻
 #align finset.sups_inter_subset_right Finset.sups_inter_subset_right
 
 theorem subset_sups {s t : Set α} :
-    ↑u ⊆ Set.image2 (· ⊔ ·) s t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊻ t' :=
+    ↑u ⊆ s ⊻ t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊻ t' :=
   subset_image₂
 #align finset.subset_sups Finset.subset_sups
 
-variable (s t u)
+variable (s t u v)
 
 theorem bunionᵢ_image_sup_left : (s.bunionᵢ fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
   bunionᵢ_image_left
@@ -214,30 +212,33 @@ theorem sups_right_comm : s ⊻ t ⊻ u = s ⊻ u ⊻ t :=
   image₂_right_comm sup_right_comm
 #align finset.sups_right_comm Finset.sups_right_comm
 
+theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
+  image₂_image₂_image₂_comm sup_sup_sup_comm
+#align finset.sups_sups_sups_comm Finset.sups_sups_sups_comm
+
 end Sups
 
 section Infs
 
-variable [SemilatticeInf α] (s s₁ s₂ t t₁ t₂ u : Finset α)
+variable [SemilatticeInf α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
-/-- The finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
-def infs (s t : Finset α) : Finset α :=
-  image₂ (· ⊓ ·) s t
-#align finset.infs Finset.infs
+/-- `s ⊼ t` is the finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
+protected def hasInfs : HasInfs (Finset α) :=
+  ⟨image₂ (· ⊓ ·)⟩
+#align finset.has_infs Finset.hasInfs
 
--- mathport name: finset.infs
-scoped[FinsetFamily] infixl:74 " ⊼ " => Finset.infs
+scoped[FinsetFamily] attribute [instance] Finset.hasInfs
 
 variable {s t} {a b c : α}
 
 @[simp]
-theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c := by simp [infs]
+theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c := by simp [(· ⊼ ·)]
 #align finset.mem_infs Finset.mem_infs
 
 variable (s t)
 
 @[simp, norm_cast]
-theorem coe_infs : (s ⊼ t : Set α) = Set.image2 (· ⊓ ·) s t :=
+theorem coe_infs : (↑(s ⊼ t) : Set α) = s ⊼ t :=
   coe_image₂ _ _ _
 #align finset.coe_infs Finset.coe_infs
 
@@ -269,11 +270,11 @@ theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t :=
   image₂_subset_right
 #align finset.infs_subset_right Finset.infs_subset_right
 
-theorem image_subset_infs_left : b ∈ t → (fun a => a ⊓ b) '' s ⊆ s ⊼ t :=
+theorem image_subset_infs_left : b ∈ t → (s.image fun a => a ⊓ b) ⊆ s ⊼ t :=
   image_subset_image₂_left
 #align finset.image_subset_infs_left Finset.image_subset_infs_left
 
-theorem image_subset_infs_right : a ∈ s → (· ⊓ ·) a '' t ⊆ s ⊼ t :=
+theorem image_subset_infs_right : a ∈ s → t.image ((· ⊓ ·) a) ⊆ s ⊼ t :=
   image_subset_image₂_right
 #align finset.image_subset_infs_right Finset.image_subset_infs_right
 
@@ -287,11 +288,11 @@ theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b 
 #align finset.infs_subset_iff Finset.infs_subset_iff
 
 @[simp]
-theorem infs_nonempty_iff : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
+theorem infs_nonempty : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
-#align finset.infs_nonempty_iff Finset.infs_nonempty_iff
+#align finset.infs_nonempty Finset.infs_nonempty
 
-theorem Nonempty.infs : s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty :=
+protected theorem Nonempty.infs : s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty :=
   Nonempty.image₂
 #align finset.nonempty.infs Finset.Nonempty.infs
 
@@ -304,37 +305,33 @@ theorem Nonempty.of_infs_right : (s ⊼ t).Nonempty → t.Nonempty :=
 #align finset.nonempty.of_infs_right Finset.Nonempty.of_infs_right
 
 @[simp]
-theorem infs_empty_left : ∅ ⊼ t = ∅ :=
+theorem empty_infs : ∅ ⊼ t = ∅ :=
   image₂_empty_left
-#align finset.infs_empty_left Finset.infs_empty_left
+#align finset.empty_infs Finset.empty_infs
 
 @[simp]
-theorem infs_empty_right : s ⊼ ∅ = ∅ :=
+theorem infs_empty : s ⊼ ∅ = ∅ :=
   image₂_empty_right
-#align finset.infs_empty_right Finset.infs_empty_right
+#align finset.infs_empty Finset.infs_empty
 
 @[simp]
-theorem infs_eq_empty_iff : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
+theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
-#align finset.infs_eq_empty_iff Finset.infs_eq_empty_iff
+#align finset.infs_eq_empty Finset.infs_eq_empty
 
 @[simp]
-theorem infs_singleton_left : {a} ⊼ t = t.image fun b => a ⊓ b :=
+theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b :=
   image₂_singleton_left
-#align finset.infs_singleton_left Finset.infs_singleton_left
+#align finset.singleton_infs Finset.singleton_infs
 
 @[simp]
-theorem infs_singleton_right : s ⊼ {b} = s.image fun a => a ⊓ b :=
+theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b :=
   image₂_singleton_right
-#align finset.infs_singleton_right Finset.infs_singleton_right
-
-theorem infs_singleton_left' : {a} ⊼ t = t.image ((· ⊓ ·) a) :=
-  image₂_singleton_left'
-#align finset.infs_singleton_left' Finset.infs_singleton_left'
+#align finset.infs_singleton Finset.infs_singleton
 
-theorem infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
+theorem singleton_infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
   image₂_singleton
-#align finset.infs_singleton Finset.infs_singleton
+#align finset.singleton_infs_singleton Finset.singleton_infs_singleton
 
 theorem infs_union_left : (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t :=
   image₂_union_left
@@ -353,11 +350,11 @@ theorem infs_inter_subset_right : s ⊼ (t₁ ∩ t₂) ⊆ s ⊼ t₁ ∩ s ⊼
 #align finset.infs_inter_subset_right Finset.infs_inter_subset_right
 
 theorem subset_infs {s t : Set α} :
-    ↑u ⊆ Set.image2 (· ⊓ ·) s t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊼ t' :=
+    ↑u ⊆ s ⊼ t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' ⊼ t' :=
   subset_image₂
 #align finset.subset_infs Finset.subset_infs
 
-variable (s t u)
+variable (s t u v)
 
 theorem bunionᵢ_image_inf_left : (s.bunionᵢ fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
   bunionᵢ_image_left
@@ -389,10 +386,36 @@ theorem infs_right_comm : s ⊼ t ⊼ u = s ⊼ u ⊼ t :=
   image₂_right_comm inf_right_comm
 #align finset.infs_right_comm Finset.infs_right_comm
 
+theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
+  image₂_image₂_image₂_comm inf_inf_inf_comm
+#align finset.infs_infs_infs_comm Finset.infs_infs_infs_comm
+
 end Infs
 
 open FinsetFamily
 
+section DistribLattice
+
+variable [DistribLattice α] (s t u : Finset α)
+
+theorem sups_infs_subset_left : s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u) :=
+  image₂_distrib_subset_left fun _ _ _ => sup_inf_left
+#align finset.sups_infs_subset_left Finset.sups_infs_subset_left
+
+theorem sups_infs_subset_right : t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s) :=
+  image₂_distrib_subset_right fun _ _ _ => sup_inf_right
+#align finset.sups_infs_subset_right Finset.sups_infs_subset_right
+
+theorem infs_sups_subset_left : s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u :=
+  image₂_distrib_subset_left fun _ _ _ => inf_sup_left
+#align finset.infs_sups_subset_left Finset.infs_sups_subset_left
+
+theorem infs_sups_subset_right : (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s :=
+  image₂_distrib_subset_right fun _ _ _ => inf_sup_right
+#align finset.infs_sups_subset_right Finset.infs_sups_subset_right
+
+end DistribLattice
+
 section DisjSups
 
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
@@ -508,7 +531,7 @@ open FinsetFamily
 
 section DistribLattice
 
-variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u : Finset α)
+variable [DistribLattice α] [OrderBot α] [@DecidableRel α Disjoint] (s t u v : Finset α)
 
 theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u) :=
   by
@@ -526,6 +549,10 @@ theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
 theorem disjSups_right_comm : s ○ t ○ u = s ○ u ○ t := by simp_rw [disj_sups_assoc, disj_sups_comm]
 #align finset.disj_sups_right_comm Finset.disjSups_right_comm
 
+theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t ○ v) := by
+  simp_rw [← disj_sups_assoc, disj_sups_right_comm]
+#align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
+
 end DistribLattice
 
 end Finset

Changes in mathlib4

mathlib3
mathlib4
chore(Set/Finset): standardize names of distributivity laws (#11572)

Standardizes the following names for distributivity laws across Finset and Set:

  • inter_union_distrib_left
  • inter_union_distrib_right
  • union_inter_distrib_left
  • union_inter_distrib_right

Makes arguments explicit in:

  • Set.union_inter_distrib_right
  • Set.union_inter_distrib_left
  • Set.inter_union_distrib_right

Deprecates these theorem names:

  • Finset.inter_distrib_left
  • Finset.inter_distrib_right
  • Finset.union_distrib_right
  • Finset.union_distrib_left
  • Set.inter_distrib_left
  • Set.inter_distrib_right
  • Set.union_distrib_right
  • Set.union_distrib_left

Fixes use of deprecated names and implicit arguments in these files:

  • Topology/Basic
  • Topology/Connected/Basic
  • MeasureTheory/MeasurableSpace/Basic
  • MeasureTheory/Covering/Differentiation
  • MeasureTheory/Constructions/BorelSpace/Basic
  • Data/Set/Image
  • Data/Set/Basic
  • Data/PFun
  • Data/Matroid/Dual
  • Data/Finset/Sups
  • Data/Finset/Basic
  • Combinatorics/SetFamily/FourFunctions
  • Combinatorics/Additive/SalemSpencer
  • Counterexamples/Phillips.lean
  • Archive/Imo/Imo2021Q1.lean
Diff
@@ -445,7 +445,7 @@ variable {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} {a : α}
   ext u
   simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
   refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [← inter_distrib_right, inter_eq_right]
+  · rwa [← union_inter_distrib_right, inter_eq_right]
   · rintro ⟨v, hv, w, hw, rfl⟩
     exact union_subset_union hv hw
 
chore: replace λ by fun (#11301)

Per the style guidelines, λ is disallowed in mathlib. This is close to exhaustive; I left some tactic code alone when it seemed to me that tactic could be upstreamed soon.

Notes

  • In lines I was modifying anyway, I also converted => to .
  • Also contains some mild in-passing indentation fixes in Mathlib/Order/SupClosed.
  • Some doc comments still contained Lean 3 syntax λ x, , which I also replaced.
Diff
@@ -739,10 +739,10 @@ protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
 @[simp] lemma compls_inter (s t : Finset α) : (s ∩ t)ᶜˢ = sᶜˢ ∩ tᶜˢ := map_inter _ _
 
 @[simp] lemma compls_infs (s t : Finset α) : (s ⊼ t)ᶜˢ = sᶜˢ ⊻ tᶜˢ := by
-  simp_rw [← image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_inf
+  simp_rw [← image_compl]; exact image_image₂_distrib fun _ _ ↦ compl_inf
 
 @[simp] lemma compls_sups (s t : Finset α) : (s ⊻ t)ᶜˢ = sᶜˢ ⊼ tᶜˢ := by
-  simp_rw [← image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_sup
+  simp_rw [← image_compl]; exact image_image₂_distrib fun _ _ ↦ compl_sup
 
 @[simp] lemma infs_compls_eq_diffs (s t : Finset α) : s ⊼ tᶜˢ = s \\ t := by
   ext; simp [sdiff_eq]; aesop
@@ -757,7 +757,7 @@ variable [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ}
 
 protected lemma _root_.Set.Sized.compls (h𝒜 : (𝒜 : Set (Finset α)).Sized n) :
     (𝒜ᶜˢ : Set (Finset α)).Sized (Fintype.card α - n) :=
-  Finset.forall_mem_compls.2 <| λ s hs ↦ by rw [Finset.card_compl, h𝒜 hs]
+  Finset.forall_mem_compls.2 <| fun s hs ↦ by rw [Finset.card_compl, h𝒜 hs]
 
 lemma sized_compls (hn : n ≤ Fintype.card α) :
     (𝒜ᶜˢ : Set (Finset α)).Sized n ↔ (𝒜 : Set (Finset α)).Sized (Fintype.card α - n) where
chore(Order): Make more arguments explicit (#11033)

Those lemmas have historically been very annoying to use in rw since all their arguments were implicit. One too many people complained about it on Zulip, so I'm changing them.

Downstream code broken by this change can fix it by adding appropriately many _s.

Also marks CauSeq.ext @[ext].

Order.BoundedOrder

  • top_sup_eq
  • sup_top_eq
  • bot_sup_eq
  • sup_bot_eq
  • top_inf_eq
  • inf_top_eq
  • bot_inf_eq
  • inf_bot_eq

Order.Lattice

  • sup_idem
  • sup_comm
  • sup_assoc
  • sup_left_idem
  • sup_right_idem
  • inf_idem
  • inf_comm
  • inf_assoc
  • inf_left_idem
  • inf_right_idem
  • sup_inf_left
  • sup_inf_right
  • inf_sup_left
  • inf_sup_right

Order.MinMax

  • max_min_distrib_left
  • max_min_distrib_right
  • min_max_distrib_left
  • min_max_distrib_right

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -186,7 +186,7 @@ lemma map_sups (f : F) (hf) (s t : Finset α) :
     map ⟨f, hf⟩ (s ⊻ t) = map ⟨f, hf⟩ s ⊻ map ⟨f, hf⟩ t := by
   simpa [map_eq_image] using image_sups f s t
 
-lemma subset_sups_self : s ⊆ s ⊻ s := fun _a ha ↦ mem_sups.2 ⟨_, ha, _, ha, sup_idem⟩
+lemma subset_sups_self : s ⊆ s ⊻ s := fun _a ha ↦ mem_sups.2 ⟨_, ha, _, ha, sup_idem _⟩
 lemma sups_subset_self : s ⊻ s ⊆ s ↔ SupClosed (s : Set α) := sups_subset_iff
 @[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed (s : Set α) := by simp [← coe_inj]
 
@@ -209,12 +209,10 @@ theorem image_sup_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊔
   image_uncurry_product _ _ _
 #align finset.image_sup_product Finset.image_sup_product
 
-theorem sups_assoc : s ⊻ t ⊻ u = s ⊻ (t ⊻ u) :=
-  image₂_assoc fun _ _ _ => sup_assoc
+theorem sups_assoc : s ⊻ t ⊻ u = s ⊻ (t ⊻ u) := image₂_assoc sup_assoc
 #align finset.sups_assoc Finset.sups_assoc
 
-theorem sups_comm : s ⊻ t = t ⊻ s :=
-  image₂_comm fun _ _ => sup_comm
+theorem sups_comm : s ⊻ t = t ⊻ s := image₂_comm sup_comm
 #align finset.sups_comm Finset.sups_comm
 
 theorem sups_left_comm : s ⊻ (t ⊻ u) = t ⊻ (s ⊻ u) :=
@@ -371,7 +369,7 @@ lemma map_infs (f : F) (hf) (s t : Finset α) :
     map ⟨f, hf⟩ (s ⊼ t) = map ⟨f, hf⟩ s ⊼ map ⟨f, hf⟩ t := by
   simpa [map_eq_image] using image_infs f s t
 
-lemma subset_infs_self : s ⊆ s ⊼ s := fun _a ha ↦ mem_infs.2 ⟨_, ha, _, ha, inf_idem⟩
+lemma subset_infs_self : s ⊆ s ⊼ s := fun _a ha ↦ mem_infs.2 ⟨_, ha, _, ha, inf_idem _⟩
 lemma infs_self_subset : s ⊼ s ⊆ s ↔ InfClosed (s : Set α) := infs_subset_iff
 @[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed (s : Set α) := by simp [← coe_inj]
 
@@ -394,12 +392,10 @@ theorem image_inf_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊓
   image_uncurry_product _ _ _
 #align finset.image_inf_product Finset.image_inf_product
 
-theorem infs_assoc : s ⊼ t ⊼ u = s ⊼ (t ⊼ u) :=
-  image₂_assoc fun _ _ _ => inf_assoc
+theorem infs_assoc : s ⊼ t ⊼ u = s ⊼ (t ⊼ u) := image₂_assoc inf_assoc
 #align finset.infs_assoc Finset.infs_assoc
 
-theorem infs_comm : s ⊼ t = t ⊼ s :=
-  image₂_comm fun _ _ => inf_comm
+theorem infs_comm : s ⊼ t = t ⊼ s := image₂_comm inf_comm
 #align finset.infs_comm Finset.infs_comm
 
 theorem infs_left_comm : s ⊼ (t ⊼ u) = t ⊼ (s ⊼ u) :=
@@ -425,19 +421,19 @@ section DistribLattice
 variable [DistribLattice α] (s t u : Finset α)
 
 theorem sups_infs_subset_left : s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u) :=
-  image₂_distrib_subset_left fun _ _ _ => sup_inf_left
+  image₂_distrib_subset_left sup_inf_left
 #align finset.sups_infs_subset_left Finset.sups_infs_subset_left
 
 theorem sups_infs_subset_right : t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s) :=
-  image₂_distrib_subset_right fun _ _ _ => sup_inf_right
+  image₂_distrib_subset_right sup_inf_right
 #align finset.sups_infs_subset_right Finset.sups_infs_subset_right
 
 theorem infs_sups_subset_left : s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u :=
-  image₂_distrib_subset_left fun _ _ _ => inf_sup_left
+  image₂_distrib_subset_left inf_sup_left
 #align finset.infs_sups_subset_left Finset.infs_sups_subset_left
 
 theorem infs_sups_subset_right : (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s :=
-  image₂_distrib_subset_right fun _ _ _ => inf_sup_right
+  image₂_distrib_subset_right inf_sup_right
 #align finset.infs_sups_subset_right Finset.infs_sups_subset_right
 
 end DistribLattice
@@ -596,7 +592,7 @@ theorem disjSups_assoc : ∀ s t u : Finset α, s ○ t ○ u = s ○ (t ○ u)
   simp only [le_eq_subset, disjSups_subset_iff, mem_disjSups]
   rintro s t u _ ⟨a, ha, b, hb, hab, rfl⟩ c hc habc
   rw [disjoint_sup_left] at habc
-  exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
+  exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, (sup_assoc ..).symm⟩
 #align finset.disj_sups_assoc Finset.disjSups_assoc
 
 theorem disjSups_left_comm : s ○ (t ○ u) = t ○ (s ○ u) := by
chore: bump aesop; update syntax (#10955)

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

Diff
@@ -116,7 +116,7 @@ theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b 
   image₂_subset_iff
 #align finset.sups_subset_iff Finset.sups_subset_iff
 
-@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+@[simp, aesop safe apply (rule_sets := [finsetNonempty])]
 theorem sups_nonempty : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.sups_nonempty Finset.sups_nonempty
@@ -301,7 +301,7 @@ theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b 
   image₂_subset_iff
 #align finset.infs_subset_iff Finset.infs_subset_iff
 
-@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+@[simp, aesop safe apply (rule_sets := [finsetNonempty])]
 theorem infs_nonempty : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.infs_nonempty Finset.infs_nonempty
@@ -656,7 +656,7 @@ lemma forall_mem_diffs {p : α → Prop} : (∀ c ∈ s \\ t, p c) ↔ ∀ a ∈
 
 @[simp] lemma diffs_subset_iff : s \\ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a \ b ∈ u := image₂_subset_iff
 
-@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+@[simp, aesop safe apply (rule_sets := [finsetNonempty])]
 lemma diffs_nonempty : (s \\ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty := image₂_nonempty_iff
 
 protected lemma Nonempty.diffs : s.Nonempty → t.Nonempty → (s \\ t).Nonempty := Nonempty.image₂
@@ -730,7 +730,7 @@ lemma exists_compls_iff {p : α → Prop} : (∃ a ∈ sᶜˢ, p a) ↔ ∃ a 
 
 lemma compls_subset_iff : sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ := by rw [← compls_subset_compls, compls_compls]
 
-@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+@[simp, aesop safe apply (rule_sets := [finsetNonempty])]
 lemma compls_nonempty : sᶜˢ.Nonempty ↔ s.Nonempty := map_nonempty
 
 protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
feat: Positivity extension for Finset.sum (#10538)

Also define a new aesop rule-set and an auxiliary metaprogram proveFinsetNonempty for dealing with Finset.Nonempty conditions.

From LeanAPAP

Co-authored-by: Alex J. Best <alex.j.best@gmail.com>

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Alex J Best <alex.j.best@gmail.com>

Diff
@@ -116,7 +116,7 @@ theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b 
   image₂_subset_iff
 #align finset.sups_subset_iff Finset.sups_subset_iff
 
-@[simp]
+@[simp, aesop safe apply (rule_sets [finsetNonempty])]
 theorem sups_nonempty : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.sups_nonempty Finset.sups_nonempty
@@ -301,7 +301,7 @@ theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b 
   image₂_subset_iff
 #align finset.infs_subset_iff Finset.infs_subset_iff
 
-@[simp]
+@[simp, aesop safe apply (rule_sets [finsetNonempty])]
 theorem infs_nonempty : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty :=
   image₂_nonempty_iff
 #align finset.infs_nonempty Finset.infs_nonempty
@@ -656,7 +656,8 @@ lemma forall_mem_diffs {p : α → Prop} : (∀ c ∈ s \\ t, p c) ↔ ∀ a ∈
 
 @[simp] lemma diffs_subset_iff : s \\ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a \ b ∈ u := image₂_subset_iff
 
-@[simp] lemma diffs_nonempty : (s \\ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty := image₂_nonempty_iff
+@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+lemma diffs_nonempty : (s \\ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty := image₂_nonempty_iff
 
 protected lemma Nonempty.diffs : s.Nonempty → t.Nonempty → (s \\ t).Nonempty := Nonempty.image₂
 
@@ -729,7 +730,8 @@ lemma exists_compls_iff {p : α → Prop} : (∃ a ∈ sᶜˢ, p a) ↔ ∃ a 
 
 lemma compls_subset_iff : sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ := by rw [← compls_subset_compls, compls_compls]
 
-@[simp] lemma compls_nonempty : sᶜˢ.Nonempty ↔ s.Nonempty := map_nonempty
+@[simp, aesop safe apply (rule_sets [finsetNonempty])]
+lemma compls_nonempty : sᶜˢ.Nonempty ↔ s.Nonempty := map_nonempty
 
 protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
 
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -49,7 +49,8 @@ variable {F α β : Type*} [DecidableEq α] [DecidableEq β]
 namespace Finset
 
 section Sups
-variable [SemilatticeSup α] [SemilatticeSup β] [SupHomClass F α β] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+variable [SemilatticeSup α] [SemilatticeSup β] [FunLike F α β] [SupHomClass F α β]
+variable (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
 /-- `s ⊻ t` is the finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasSups : HasSups (Finset α) :=
@@ -233,7 +234,8 @@ theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
 end Sups
 
 section Infs
-variable [SemilatticeInf α] [SemilatticeInf β] [InfHomClass F α β] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+variable [SemilatticeInf α] [SemilatticeInf β] [FunLike F α β] [InfHomClass F α β]
+variable (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
 /-- `s ⊼ t` is the finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasInfs : HasInfs (Finset α) :=
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -179,7 +179,7 @@ theorem subset_sups {s t : Set α} :
 #align finset.subset_sups Finset.subset_sups
 
 lemma image_sups (f : F) (s t : Finset α) : image f (s ⊻ t) = image f s ⊻ image f t :=
-  image_image₂_distrib $ map_sup f
+  image_image₂_distrib <| map_sup f
 
 lemma map_sups (f : F) (hf) (s t : Finset α) :
     map ⟨f, hf⟩ (s ⊻ t) = map ⟨f, hf⟩ s ⊻ map ⟨f, hf⟩ t := by
@@ -363,7 +363,7 @@ theorem subset_infs {s t : Set α} :
 #align finset.subset_infs Finset.subset_infs
 
 lemma image_infs (f : F) (s t : Finset α) : image f (s ⊼ t) = image f s ⊼ image f t :=
-  image_image₂_distrib $ map_inf f
+  image_image₂_distrib <| map_inf f
 
 lemma map_infs (f : F) (hf) (s t : Finset α) :
     map ⟨f, hf⟩ (s ⊼ t) = map ⟨f, hf⟩ s ⊼ map ⟨f, hf⟩ t := by
@@ -757,7 +757,7 @@ variable [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ}
 
 protected lemma _root_.Set.Sized.compls (h𝒜 : (𝒜 : Set (Finset α)).Sized n) :
     (𝒜ᶜˢ : Set (Finset α)).Sized (Fintype.card α - n) :=
-  Finset.forall_mem_compls.2 $ λ s hs ↦ by rw [Finset.card_compl, h𝒜 hs]
+  Finset.forall_mem_compls.2 <| λ s hs ↦ by rw [Finset.card_compl, h𝒜 hs]
 
 lemma sized_compls (hn : n ≤ Fintype.card α) :
     (𝒜ᶜˢ : Set (Finset α)).Sized n ↔ (𝒜 : Set (Finset α)).Sized (Fintype.card α - n) where
chore: Improve Finset lemma names (#8894)

Change a few lemma names that have historically bothered me.

  • Finset.card_le_of_subsetFinset.card_le_card
  • Multiset.card_le_of_leMultiset.card_le_card
  • Multiset.card_lt_of_ltMultiset.card_lt_card
  • Set.ncard_le_of_subsetSet.ncard_le_ncard
  • Finset.image_filterFinset.filter_image
  • CompleteLattice.finset_sup_compact_of_compactCompleteLattice.isCompactElement_finset_sup
Diff
@@ -500,7 +500,7 @@ theorem disjSups_subset_sups : s ○ t ⊆ s ⊻ t := by
 variable (s t)
 
 theorem card_disjSups_le : (s ○ t).card ≤ s.card * t.card :=
-  (card_le_of_subset disjSups_subset_sups).trans <| card_sups_le _ _
+  (card_le_card disjSups_subset_sups).trans <| card_sups_le _ _
 #align finset.card_disj_sups_le Finset.card_disjSups_le
 
 variable {s s₁ s₂ t t₁ t₂}
chore: space after (#8178)

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

Diff
@@ -187,13 +187,13 @@ lemma map_sups (f : F) (hf) (s t : Finset α) :
 
 lemma subset_sups_self : s ⊆ s ⊻ s := fun _a ha ↦ mem_sups.2 ⟨_, ha, _, ha, sup_idem⟩
 lemma sups_subset_self : s ⊻ s ⊆ s ↔ SupClosed (s : Set α) := sups_subset_iff
-@[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed (s : Set α) := by simp [←coe_inj]
+@[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed (s : Set α) := by simp [← coe_inj]
 
 @[simp] lemma univ_sups_univ [Fintype α] : (univ : Finset α) ⊻ univ = univ := by simp
 
 lemma filter_sups_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
     (s ⊻ t).filter (· ≤ a) = s.filter (· ≤ a) ⊻ t.filter (· ≤ a) := by
-  simp only [←coe_inj, coe_filter, coe_sups, ←mem_coe, Set.sep_sups_le]
+  simp only [← coe_inj, coe_filter, coe_sups, ← mem_coe, Set.sep_sups_le]
 
 variable (s t u)
 
@@ -371,13 +371,13 @@ lemma map_infs (f : F) (hf) (s t : Finset α) :
 
 lemma subset_infs_self : s ⊆ s ⊼ s := fun _a ha ↦ mem_infs.2 ⟨_, ha, _, ha, inf_idem⟩
 lemma infs_self_subset : s ⊼ s ⊆ s ↔ InfClosed (s : Set α) := infs_subset_iff
-@[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed (s : Set α) := by simp [←coe_inj]
+@[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed (s : Set α) := by simp [← coe_inj]
 
 @[simp] lemma univ_infs_univ [Fintype α] : (univ : Finset α) ⊼ univ = univ := by simp
 
 lemma filter_infs_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
     (s ⊼ t).filter (a ≤ ·) = s.filter (a ≤ ·) ⊼ t.filter (a ≤ ·) := by
-  simp only [←coe_inj, coe_filter, coe_infs, ←mem_coe, Set.sep_infs_le]
+  simp only [← coe_inj, coe_filter, coe_infs, ← mem_coe, Set.sep_infs_le]
 
 variable (s t u)
 
@@ -447,7 +447,7 @@ variable {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} {a : α}
   ext u
   simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
   refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_distrib_right, inter_eq_right]
+  · rwa [← inter_distrib_right, inter_eq_right]
   · rintro ⟨v, hv, w, hw, rfl⟩
     exact union_subset_union hv hw
 
@@ -455,15 +455,15 @@ variable {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} {a : α}
   ext u
   simp only [mem_infs, mem_powerset, le_eq_subset, inf_eq_inter]
   refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_inter_distrib_right, inter_eq_right]
+  · rwa [← inter_inter_distrib_right, inter_eq_right]
   · rintro ⟨v, hv, w, hw, rfl⟩
     exact inter_subset_inter hv hw
 
 @[simp] lemma powerset_sups_powerset_self (s : Finset α) :
-    s.powerset ⊻ s.powerset = s.powerset := by simp [←powerset_union]
+    s.powerset ⊻ s.powerset = s.powerset := by simp [← powerset_union]
 
 @[simp] lemma powerset_infs_powerset_self (s : Finset α) :
-    s.powerset ⊼ s.powerset = s.powerset := by simp [←powerset_inter]
+    s.powerset ⊼ s.powerset = s.powerset := by simp [← powerset_inter]
 
 lemma union_mem_sups : s ∈ 𝒜 → t ∈ ℬ → s ∪ t ∈ 𝒜 ⊻ ℬ := sup_mem_sups
 lemma inter_mem_infs : s ∈ 𝒜 → t ∈ ℬ → s ∩ t ∈ 𝒜 ⊼ ℬ := inf_mem_infs
@@ -706,7 +706,7 @@ open FinsetFamily
 variable {s t} {a b c : α}
 
 @[simp] lemma mem_compls : a ∈ sᶜˢ ↔ aᶜ ∈ s := by
-  rw [Iff.comm, ←mem_map' ⟨compl, compl_injective⟩, Embedding.coeFn_mk, compl_compl, compls]
+  rw [Iff.comm, ← mem_map' ⟨compl, compl_injective⟩, Embedding.coeFn_mk, compl_compl, compls]
 
 variable (s t)
 
@@ -725,7 +725,7 @@ lemma exists_compls_iff {p : α → Prop} : (∃ a ∈ sᶜˢ, p a) ↔ ∃ a 
 
 @[simp] lemma compls_compls (s : Finset α) : sᶜˢᶜˢ = s := by ext; simp
 
-lemma compls_subset_iff : sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ := by rw [←compls_subset_compls, compls_compls]
+lemma compls_subset_iff : sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ := by rw [← compls_subset_compls, compls_compls]
 
 @[simp] lemma compls_nonempty : sᶜˢ.Nonempty ↔ s.Nonempty := map_nonempty
 
@@ -739,10 +739,10 @@ protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
 @[simp] lemma compls_inter (s t : Finset α) : (s ∩ t)ᶜˢ = sᶜˢ ∩ tᶜˢ := map_inter _ _
 
 @[simp] lemma compls_infs (s t : Finset α) : (s ⊼ t)ᶜˢ = sᶜˢ ⊻ tᶜˢ := by
-  simp_rw [←image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_inf
+  simp_rw [← image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_inf
 
 @[simp] lemma compls_sups (s t : Finset α) : (s ⊻ t)ᶜˢ = sᶜˢ ⊼ tᶜˢ := by
-  simp_rw [←image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_sup
+  simp_rw [← image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_sup
 
 @[simp] lemma infs_compls_eq_diffs (s t : Finset α) : s ⊼ tᶜˢ = s \\ t := by
   ext; simp [sdiff_eq]; aesop
@@ -751,7 +751,7 @@ protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
   rw [infs_comm, infs_compls_eq_diffs]
 
 @[simp] lemma diffs_compls_eq_infs (s t : Finset α) : s \\ tᶜˢ = s ⊼ t := by
-  rw [←infs_compls_eq_diffs, compls_compls]
+  rw [← infs_compls_eq_diffs, compls_compls]
 
 variable [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ}
 
feat: The four functions theorem (#7551)

Prove the four functions theorem, aka Ahlswede-Daykin inequality, and derive the Holley, Fortuin-Kastelyn-Ginibre and Marica-Schönheim inequalities.

Diff
@@ -189,6 +189,8 @@ lemma subset_sups_self : s ⊆ s ⊻ s := fun _a ha ↦ mem_sups.2 ⟨_, ha, _,
 lemma sups_subset_self : s ⊻ s ⊆ s ↔ SupClosed (s : Set α) := sups_subset_iff
 @[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed (s : Set α) := by simp [←coe_inj]
 
+@[simp] lemma univ_sups_univ [Fintype α] : (univ : Finset α) ⊻ univ = univ := by simp
+
 lemma filter_sups_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
     (s ⊻ t).filter (· ≤ a) = s.filter (· ≤ a) ⊻ t.filter (· ≤ a) := by
   simp only [←coe_inj, coe_filter, coe_sups, ←mem_coe, Set.sep_sups_le]
@@ -371,6 +373,8 @@ lemma subset_infs_self : s ⊆ s ⊼ s := fun _a ha ↦ mem_infs.2 ⟨_, ha, _,
 lemma infs_self_subset : s ⊼ s ⊆ s ↔ InfClosed (s : Set α) := infs_subset_iff
 @[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed (s : Set α) := by simp [←coe_inj]
 
+@[simp] lemma univ_infs_univ [Fintype α] : (univ : Finset α) ⊼ univ = univ := by simp
+
 lemma filter_infs_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
     (s ⊼ t).filter (a ≤ ·) = s.filter (a ≤ ·) ⊼ t.filter (a ≤ ·) := by
   simp only [←coe_inj, coe_filter, coe_infs, ←mem_coe, Set.sep_infs_le]
@@ -414,22 +418,6 @@ end Infs
 
 open FinsetFamily
 
-@[simp] lemma powerset_union (s t : Finset α) : (s ∪ t).powerset = s.powerset ⊻ t.powerset := by
-  ext u
-  simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
-  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_distrib_right, inter_eq_right]
-  · rintro ⟨v, hv, w, hw, rfl⟩
-    exact union_subset_union hv hw
-
-@[simp] lemma powerset_inter (s t : Finset α) : (s ∩ t).powerset = s.powerset ⊼ t.powerset := by
-  ext u
-  simp only [mem_infs, mem_powerset, le_eq_subset, inf_eq_inter]
-  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_inter_distrib_right, inter_eq_right]
-  · rintro ⟨v, hv, w, hw, rfl⟩
-    exact inter_subset_inter hv hw
-
 section DistribLattice
 
 variable [DistribLattice α] (s t u : Finset α)
@@ -452,6 +440,36 @@ theorem infs_sups_subset_right : (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s :=
 
 end DistribLattice
 
+section Finset
+variable {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} {a : α}
+
+@[simp] lemma powerset_union (s t : Finset α) : (s ∪ t).powerset = s.powerset ⊻ t.powerset := by
+  ext u
+  simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
+  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
+  · rwa [←inter_distrib_right, inter_eq_right]
+  · rintro ⟨v, hv, w, hw, rfl⟩
+    exact union_subset_union hv hw
+
+@[simp] lemma powerset_inter (s t : Finset α) : (s ∩ t).powerset = s.powerset ⊼ t.powerset := by
+  ext u
+  simp only [mem_infs, mem_powerset, le_eq_subset, inf_eq_inter]
+  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
+  · rwa [←inter_inter_distrib_right, inter_eq_right]
+  · rintro ⟨v, hv, w, hw, rfl⟩
+    exact inter_subset_inter hv hw
+
+@[simp] lemma powerset_sups_powerset_self (s : Finset α) :
+    s.powerset ⊻ s.powerset = s.powerset := by simp [←powerset_union]
+
+@[simp] lemma powerset_infs_powerset_self (s : Finset α) :
+    s.powerset ⊼ s.powerset = s.powerset := by simp [←powerset_inter]
+
+lemma union_mem_sups : s ∈ 𝒜 → t ∈ ℬ → s ∪ t ∈ 𝒜 ⊻ ℬ := sup_mem_sups
+lemma inter_mem_infs : s ∈ 𝒜 → t ∈ ℬ → s ∩ t ∈ 𝒜 ⊼ ℬ := inf_mem_infs
+
+end Finset
+
 section DisjSups
 
 variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s₂ t t₁ t₂ u : Finset α)
feat: Filtering sups (#7254)

Match https://github.com/leanprover-community/mathlib/pull/18612.

The lemmas were already added in #7382, though a slight difference in the statement means that we need a new decidableExistsAndFinsetCoe instance.

Diff
@@ -7,7 +7,7 @@ import Mathlib.Data.Finset.NAry
 import Mathlib.Data.Finset.Slice
 import Mathlib.Data.Set.Sups
 
-#align_import data.finset.sups from "leanprover-community/mathlib"@"20715f4ac6819ef2453d9e5106ecd086a5dc2a5e"
+#align_import data.finset.sups from "leanprover-community/mathlib"@"8818fdefc78642a7e6afcd20be5c184f3c7d9699"
 
 /-!
 # Set family operations
@@ -37,6 +37,9 @@ We define the following notation in locale `FinsetFamily`:
 [B. Bollobás, *Combinatorics*][bollobas1986]
 -/
 
+#align finset.decidable_pred_mem_upper_closure instDecidablePredMemUpperClosure
+#align finset.decidable_pred_mem_lower_closure instDecidablePredMemLowerClosure
+
 open Function
 
 open SetFamily
@@ -223,6 +226,8 @@ theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
   image₂_image₂_image₂_comm sup_sup_sup_comm
 #align finset.sups_sups_sups_comm Finset.sups_sups_sups_comm
 
+#align finset.filter_sups_le Finset.filter_sups_le
+
 end Sups
 
 section Infs
@@ -403,6 +408,8 @@ theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) :=
   image₂_image₂_image₂_comm inf_inf_inf_comm
 #align finset.infs_infs_infs_comm Finset.infs_infs_infs_comm
 
+#align finset.filter_infs_ge Finset.filter_infs_le
+
 end Infs
 
 open FinsetFamily
feat: Pointwise set difference, complement (#7383)

Define Finset.diffs and Finset.compls, the pointwise set difference of two finsets and pointwise complement of a finset.

diffs appears in the statement of the Marica-Schönheim inequality and compls in the proof.

Also fix the corresponding statements for sups and infs to use the new · notation.

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
 -/
 import Mathlib.Data.Finset.NAry
+import Mathlib.Data.Finset.Slice
 import Mathlib.Data.Set.Sups
 
 #align_import data.finset.sups from "leanprover-community/mathlib"@"20715f4ac6819ef2453d9e5106ecd086a5dc2a5e"
@@ -15,17 +16,21 @@ This file defines a few binary operations on `Finset α` for use in set family c
 
 ## Main declarations
 
-* `s ⊻ t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`.
-* `s ⊼ t`: Finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`.
+* `Finset.sups s t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`.
+* `Finset.infs s t`: Finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`.
 * `Finset.disjSups s t`: Finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a`
   and `b` are disjoint.
+* `Finset.diffs`: Finset of elements of the form `a \ b` where `a ∈ s`, `b ∈ t`.
+* `Finset.compls`: Finset of elements of the form `aᶜ` where `a ∈ s`.
 
 ## Notation
 
 We define the following notation in locale `FinsetFamily`:
-* `s ⊻ t`
-* `s ⊼ t`
+* `s ⊻ t` for `Finset.sups`
+* `s ⊼ t` for `Finset.infs`
 * `s ○ t` for `Finset.disjSups s t`
+* `s \\ t` for `Finset.diffs`
+* `sᶜˢ` for `Finset.compls`
 
 ## References
 
@@ -92,12 +97,10 @@ theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t :=
   image₂_subset_right
 #align finset.sups_subset_right Finset.sups_subset_right
 
-theorem image_subset_sups_left : b ∈ t → (s.image fun a => a ⊔ b) ⊆ s ⊻ t :=
-  image_subset_image₂_left
+lemma image_subset_sups_left : b ∈ t → s.image (· ⊔ b) ⊆ s ⊻ t := image_subset_image₂_left
 #align finset.image_subset_sups_left Finset.image_subset_sups_left
 
-theorem image_subset_sups_right : a ∈ s → t.image (a ⊔ ·) ⊆ s ⊻ t :=
-  image_subset_image₂_right (f := (· ⊔ ·))
+lemma image_subset_sups_right : a ∈ s → t.image (a ⊔ ·) ⊆ s ⊻ t := image_subset_image₂_right
 #align finset.image_subset_sups_right Finset.image_subset_sups_right
 
 theorem forall_sups_iff {p : α → Prop} : (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b) :=
@@ -141,14 +144,10 @@ theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
 #align finset.sups_eq_empty Finset.sups_eq_empty
 
-@[simp]
-theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b :=
-  image₂_singleton_left
+@[simp] lemma singleton_sups : {a} ⊻ t = t.image (a ⊔ ·) := image₂_singleton_left
 #align finset.singleton_sups Finset.singleton_sups
 
-@[simp]
-theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b :=
-  image₂_singleton_right
+@[simp] lemma sups_singleton : s ⊻ {b} = s.image (· ⊔ b) := image₂_singleton_right
 #align finset.sups_singleton Finset.sups_singleton
 
 theorem singleton_sups_singleton : ({a} ⊻ {b} : Finset α) = {a ⊔ b} :=
@@ -193,12 +192,10 @@ lemma filter_sups_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
 
 variable (s t u)
 
-theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
-  biUnion_image_left
+lemma biUnion_image_sup_left : s.biUnion (fun a ↦ t.image (a ⊔ ·)) = s ⊻ t := biUnion_image_left
 #align finset.bUnion_image_sup_left Finset.biUnion_image_sup_left
 
-theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
-  biUnion_image_right
+lemma biUnion_image_sup_right : t.biUnion (fun b ↦ s.image (· ⊔ b)) = s ⊻ t := biUnion_image_right
 #align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
@@ -280,12 +277,10 @@ theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t :=
   image₂_subset_right
 #align finset.infs_subset_right Finset.infs_subset_right
 
-theorem image_subset_infs_left : b ∈ t → (s.image fun a => a ⊓ b) ⊆ s ⊼ t :=
-  image_subset_image₂_left
+lemma image_subset_infs_left : b ∈ t → s.image (· ⊓ b) ⊆ s ⊼ t := image_subset_image₂_left
 #align finset.image_subset_infs_left Finset.image_subset_infs_left
 
-theorem image_subset_infs_right : a ∈ s → t.image (a ⊓ ·) ⊆ s ⊼ t :=
-  image_subset_image₂_right (f := (· ⊓ ·))
+lemma image_subset_infs_right : a ∈ s → t.image (a ⊓ ·) ⊆ s ⊼ t := image_subset_image₂_right
 #align finset.image_subset_infs_right Finset.image_subset_infs_right
 
 theorem forall_infs_iff {p : α → Prop} : (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b) :=
@@ -329,14 +324,10 @@ theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ :=
   image₂_eq_empty_iff
 #align finset.infs_eq_empty Finset.infs_eq_empty
 
-@[simp]
-theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b :=
-  image₂_singleton_left
+@[simp] lemma singleton_infs : {a} ⊼ t = t.image (a ⊓ ·) := image₂_singleton_left
 #align finset.singleton_infs Finset.singleton_infs
 
-@[simp]
-theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b :=
-  image₂_singleton_right
+@[simp] lemma infs_singleton : s ⊼ {b} = s.image (· ⊓ b) := image₂_singleton_right
 #align finset.infs_singleton Finset.infs_singleton
 
 theorem singleton_infs_singleton : ({a} ⊼ {b} : Finset α) = {a ⊓ b} :=
@@ -381,12 +372,10 @@ lemma filter_infs_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
 
 variable (s t u)
 
-theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
-  biUnion_image_left
+lemma biUnion_image_inf_left : s.biUnion (fun a ↦ t.image (a ⊓ ·)) = s ⊼ t := biUnion_image_left
 #align finset.bUnion_image_inf_left Finset.biUnion_image_inf_left
 
-theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
-  biUnion_image_right
+lemma biUnion_image_inf_right : t.biUnion (fun b ↦ s.image (· ⊓ b)) = s ⊼ t := biUnion_image_right
 #align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
@@ -595,5 +584,160 @@ theorem disjSups_disjSups_disjSups_comm : s ○ t ○ (u ○ v) = s ○ u ○ (t
 #align finset.disj_sups_disj_sups_disj_sups_comm Finset.disjSups_disjSups_disjSups_comm
 
 end DistribLattice
+section Diffs
+variable [GeneralizedBooleanAlgebra α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+
+/-- `s \\ t` is the finset of elements of the form `a \ b` where `a ∈ s`, `b ∈ t`. -/
+def diffs : Finset α → Finset α → Finset α := image₂ (· \ ·)
+
+@[inherit_doc]
+scoped[FinsetFamily] infixl:74 " \\\\ " => Finset.diffs
+  -- This notation is meant to have higher precedence than `\` and `⊓`, but still within the
+  -- realm of other binary notation
+
+open FinsetFamily
+
+variable {s t} {a b c : α}
+
+@[simp] lemma mem_diffs : c ∈ s \\ t ↔ ∃ a ∈ s, ∃ b ∈ t, a \ b = c := by simp [(· \\ ·)]
+
+variable (s t)
+
+@[simp, norm_cast] lemma coe_diffs : (↑(s \\ t) : Set α) = Set.image2 (· \ ·) s t :=
+  coe_image₂ _ _ _
+
+lemma card_diffs_le : (s \\ t).card ≤ s.card * t.card := card_image₂_le _ _ _
+
+lemma card_diffs_iff :
+    (s \\ t).card = s.card * t.card ↔ (s ×ˢ t : Set (α × α)).InjOn fun x ↦ x.1 \ x.2 :=
+  card_image₂_iff
+
+variable {s s₁ s₂ t t₁ t₂ u}
+
+lemma sdiff_mem_diffs : a ∈ s → b ∈ t → a \ b ∈ s \\ t := mem_image₂_of_mem
+
+lemma diffs_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ \\ t₁ ⊆ s₂ \\ t₂ := image₂_subset
+lemma diffs_subset_left : t₁ ⊆ t₂ → s \\ t₁ ⊆ s \\ t₂ := image₂_subset_left
+lemma diffs_subset_right : s₁ ⊆ s₂ → s₁ \\ t ⊆ s₂ \\ t := image₂_subset_right
+
+lemma image_subset_diffs_left : b ∈ t → s.image (· \ b) ⊆ s \\ t := image_subset_image₂_left
+
+lemma image_subset_diffs_right : a ∈ s → t.image (a \ ·) ⊆ s \\ t := image_subset_image₂_right
+
+lemma forall_mem_diffs {p : α → Prop} : (∀ c ∈ s \\ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a \ b) :=
+  forall_image₂_iff
+
+@[simp] lemma diffs_subset_iff : s \\ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a \ b ∈ u := image₂_subset_iff
+
+@[simp] lemma diffs_nonempty : (s \\ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty := image₂_nonempty_iff
+
+protected lemma Nonempty.diffs : s.Nonempty → t.Nonempty → (s \\ t).Nonempty := Nonempty.image₂
+
+lemma Nonempty.of_diffs_left : (s \\ t).Nonempty → s.Nonempty := Nonempty.of_image₂_left
+lemma Nonempty.of_diffs_right : (s \\ t).Nonempty → t.Nonempty := Nonempty.of_image₂_right
+
+@[simp] lemma empty_diffs : ∅ \\ t = ∅ := image₂_empty_left
+@[simp] lemma diffs_empty : s \\ ∅ = ∅ := image₂_empty_right
+@[simp] lemma diffs_eq_empty : s \\ t = ∅ ↔ s = ∅ ∨ t = ∅ := image₂_eq_empty_iff
+
+@[simp] lemma singleton_diffs : {a} \\ t = t.image (a \ ·) := image₂_singleton_left
+@[simp] lemma diffs_singleton : s \\ {b} = s.image (· \ b) := image₂_singleton_right
+lemma singleton_diffs_singleton : ({a} \\ {b} : Finset α) = {a \ b} := image₂_singleton
+
+lemma diffs_union_left : (s₁ ∪ s₂) \\ t = s₁ \\ t ∪ s₂ \\ t := image₂_union_left
+lemma diffs_union_right : s \\ (t₁ ∪ t₂) = s \\ t₁ ∪ s \\ t₂ := image₂_union_right
+
+lemma diffs_inter_subset_left : (s₁ ∩ s₂) \\ t ⊆ s₁ \\ t ∩ s₂ \\ t := image₂_inter_subset_left
+lemma diffs_inter_subset_right : s \\ (t₁ ∩ t₂) ⊆ s \\ t₁ ∩ s \\ t₂ := image₂_inter_subset_right
+
+lemma subset_diffs {s t : Set α} :
+    ↑u ⊆ Set.image2 (· \ ·) s t → ∃ s' t' : Finset α, ↑s' ⊆ s ∧ ↑t' ⊆ t ∧ u ⊆ s' \\ t' :=
+  subset_image₂
+
+variable (s t u)
+
+lemma biUnion_image_sdiff_left : s.biUnion (fun a ↦ t.image (a \ ·)) = s \\ t := biUnion_image_left
+lemma biUnion_image_sdiff_right : t.biUnion (fun b ↦ s.image (· \ b)) = s \\ t :=
+  biUnion_image_right
+
+lemma image_sdiff_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· \ ·)) = s \\ t :=
+  image_uncurry_product _ _ _
+
+lemma diffs_right_comm : s \\ t \\ u = s \\ u \\ t := image₂_right_comm sdiff_right_comm
+
+end Diffs
+
+section Compls
+variable [BooleanAlgebra α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+
+/-- `sᶜˢ` is the finset of elements of the form `aᶜ` where `a ∈ s`. -/
+def compls : Finset α → Finset α := map ⟨compl, compl_injective⟩
+
+@[inherit_doc]
+scoped[FinsetFamily] postfix:max "ᶜˢ" => Finset.compls
+
+open FinsetFamily
+
+variable {s t} {a b c : α}
+
+@[simp] lemma mem_compls : a ∈ sᶜˢ ↔ aᶜ ∈ s := by
+  rw [Iff.comm, ←mem_map' ⟨compl, compl_injective⟩, Embedding.coeFn_mk, compl_compl, compls]
+
+variable (s t)
+
+@[simp] lemma image_compl : s.image compl = sᶜˢ := by simp [compls, map_eq_image]
+
+@[simp, norm_cast] lemma coe_compls : (↑sᶜˢ : Set α) = compl '' ↑s := coe_map _ _
+
+@[simp] lemma card_compls : sᶜˢ.card = s.card := card_map _
+
+variable {s s₁ s₂ t t₁ t₂ u}
+
+lemma compl_mem_compls : a ∈ s → aᶜ ∈ sᶜˢ := mem_map_of_mem _
+@[simp] lemma compls_subset_compls : s₁ᶜˢ ⊆ s₂ᶜˢ ↔ s₁ ⊆ s₂ := map_subset_map
+lemma forall_mem_compls {p : α → Prop} : (∀ a ∈ sᶜˢ, p a) ↔ ∀ a ∈ s, p aᶜ := forall_mem_map
+lemma exists_compls_iff {p : α → Prop} : (∃ a ∈ sᶜˢ, p a) ↔ ∃ a ∈ s, p aᶜ := by aesop
+
+@[simp] lemma compls_compls (s : Finset α) : sᶜˢᶜˢ = s := by ext; simp
+
+lemma compls_subset_iff : sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ := by rw [←compls_subset_compls, compls_compls]
+
+@[simp] lemma compls_nonempty : sᶜˢ.Nonempty ↔ s.Nonempty := map_nonempty
+
+protected alias ⟨Nonempty.of_compls, Nonempty.compls⟩ := compls_nonempty
+
+@[simp] lemma compls_empty : (∅ : Finset α)ᶜˢ = ∅ := map_empty _
+@[simp] lemma compls_eq_empty : sᶜˢ = ∅ ↔ s = ∅ := map_eq_empty
+@[simp] lemma compls_singleton (a : α) : {a}ᶜˢ = {aᶜ} := map_singleton _ _
+@[simp] lemma compls_univ [Fintype α] : (univ : Finset α)ᶜˢ = univ := by ext; simp
+@[simp] lemma compls_union (s t : Finset α) : (s ∪ t)ᶜˢ = sᶜˢ ∪ tᶜˢ := map_union _ _
+@[simp] lemma compls_inter (s t : Finset α) : (s ∩ t)ᶜˢ = sᶜˢ ∩ tᶜˢ := map_inter _ _
+
+@[simp] lemma compls_infs (s t : Finset α) : (s ⊼ t)ᶜˢ = sᶜˢ ⊻ tᶜˢ := by
+  simp_rw [←image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_inf
+
+@[simp] lemma compls_sups (s t : Finset α) : (s ⊻ t)ᶜˢ = sᶜˢ ⊼ tᶜˢ := by
+  simp_rw [←image_compl]; exact image_image₂_distrib λ _ _ ↦ compl_sup
+
+@[simp] lemma infs_compls_eq_diffs (s t : Finset α) : s ⊼ tᶜˢ = s \\ t := by
+  ext; simp [sdiff_eq]; aesop
+
+@[simp] lemma compls_infs_eq_diffs (s t : Finset α) : sᶜˢ ⊼ t = t \\ s := by
+  rw [infs_comm, infs_compls_eq_diffs]
+
+@[simp] lemma diffs_compls_eq_infs (s t : Finset α) : s \\ tᶜˢ = s ⊼ t := by
+  rw [←infs_compls_eq_diffs, compls_compls]
+
+variable [Fintype α] {𝒜 : Finset (Finset α)} {n : ℕ}
+
+protected lemma _root_.Set.Sized.compls (h𝒜 : (𝒜 : Set (Finset α)).Sized n) :
+    (𝒜ᶜˢ : Set (Finset α)).Sized (Fintype.card α - n) :=
+  Finset.forall_mem_compls.2 $ λ s hs ↦ by rw [Finset.card_compl, h𝒜 hs]
+
+lemma sized_compls (hn : n ≤ Fintype.card α) :
+    (𝒜ᶜˢ : Set (Finset α)).Sized n ↔ (𝒜 : Set (Finset α)).Sized (Fintype.card α - n) where
+  mp h𝒜 := by simpa using h𝒜.compls
+  mpr h𝒜 := by simpa only [tsub_tsub_cancel_of_le hn] using h𝒜.compls
 
+end Compls
 end Finset
chore: Make Set/Finset lemmas match lattice lemma names (#7378)

Rename union_eq_left_iff_subset to union_eq_left to match sup_eq_left. Similarly for the right and inter versions.

Diff
@@ -422,7 +422,7 @@ open FinsetFamily
   ext u
   simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
   refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_distrib_right, inter_eq_right_iff_subset]
+  · rwa [←inter_distrib_right, inter_eq_right]
   · rintro ⟨v, hv, w, hw, rfl⟩
     exact union_subset_union hv hw
 
@@ -430,7 +430,7 @@ open FinsetFamily
   ext u
   simp only [mem_infs, mem_powerset, le_eq_subset, inf_eq_inter]
   refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
-  · rwa [←inter_inter_distrib_right, inter_eq_right_iff_subset]
+  · rwa [←inter_inter_distrib_right, inter_eq_right]
   · rintro ⟨v, hv, w, hw, rfl⟩
     exact inter_subset_inter hv hw
 
feat: Extra sups lemmas (#7382)
Diff
@@ -32,18 +32,16 @@ We define the following notation in locale `FinsetFamily`:
 [B. Bollobás, *Combinatorics*][bollobas1986]
 -/
 
-
 open Function
 
 open SetFamily
 
-variable {α : Type*} [DecidableEq α]
+variable {F α β : Type*} [DecidableEq α] [DecidableEq β]
 
 namespace Finset
 
 section Sups
-
-variable [SemilatticeSup α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+variable [SemilatticeSup α] [SemilatticeSup β] [SupHomClass F α β] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
 /-- `s ⊻ t` is the finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasSups : HasSups (Finset α) :=
@@ -178,6 +176,21 @@ theorem subset_sups {s t : Set α} :
   subset_image₂
 #align finset.subset_sups Finset.subset_sups
 
+lemma image_sups (f : F) (s t : Finset α) : image f (s ⊻ t) = image f s ⊻ image f t :=
+  image_image₂_distrib $ map_sup f
+
+lemma map_sups (f : F) (hf) (s t : Finset α) :
+    map ⟨f, hf⟩ (s ⊻ t) = map ⟨f, hf⟩ s ⊻ map ⟨f, hf⟩ t := by
+  simpa [map_eq_image] using image_sups f s t
+
+lemma subset_sups_self : s ⊆ s ⊻ s := fun _a ha ↦ mem_sups.2 ⟨_, ha, _, ha, sup_idem⟩
+lemma sups_subset_self : s ⊻ s ⊆ s ↔ SupClosed (s : Set α) := sups_subset_iff
+@[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed (s : Set α) := by simp [←coe_inj]
+
+lemma filter_sups_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
+    (s ⊻ t).filter (· ≤ a) = s.filter (· ≤ a) ⊻ t.filter (· ≤ a) := by
+  simp only [←coe_inj, coe_filter, coe_sups, ←mem_coe, Set.sep_sups_le]
+
 variable (s t u)
 
 theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
@@ -216,8 +229,7 @@ theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) :=
 end Sups
 
 section Infs
-
-variable [SemilatticeInf α] (s s₁ s₂ t t₁ t₂ u v : Finset α)
+variable [SemilatticeInf α] [SemilatticeInf β] [InfHomClass F α β] (s s₁ s₂ t t₁ t₂ u v : Finset α)
 
 /-- `s ⊼ t` is the finset of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
 protected def hasInfs : HasInfs (Finset α) :=
@@ -352,6 +364,21 @@ theorem subset_infs {s t : Set α} :
   subset_image₂
 #align finset.subset_infs Finset.subset_infs
 
+lemma image_infs (f : F) (s t : Finset α) : image f (s ⊼ t) = image f s ⊼ image f t :=
+  image_image₂_distrib $ map_inf f
+
+lemma map_infs (f : F) (hf) (s t : Finset α) :
+    map ⟨f, hf⟩ (s ⊼ t) = map ⟨f, hf⟩ s ⊼ map ⟨f, hf⟩ t := by
+  simpa [map_eq_image] using image_infs f s t
+
+lemma subset_infs_self : s ⊆ s ⊼ s := fun _a ha ↦ mem_infs.2 ⟨_, ha, _, ha, inf_idem⟩
+lemma infs_self_subset : s ⊼ s ⊆ s ↔ InfClosed (s : Set α) := infs_subset_iff
+@[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed (s : Set α) := by simp [←coe_inj]
+
+lemma filter_infs_le [@DecidableRel α (· ≤ ·)] (s t : Finset α) (a : α) :
+    (s ⊼ t).filter (a ≤ ·) = s.filter (a ≤ ·) ⊼ t.filter (a ≤ ·) := by
+  simp only [←coe_inj, coe_filter, coe_infs, ←mem_coe, Set.sep_infs_le]
+
 variable (s t u)
 
 theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
@@ -391,6 +418,22 @@ end Infs
 
 open FinsetFamily
 
+@[simp] lemma powerset_union (s t : Finset α) : (s ∪ t).powerset = s.powerset ⊻ t.powerset := by
+  ext u
+  simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
+  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
+  · rwa [←inter_distrib_right, inter_eq_right_iff_subset]
+  · rintro ⟨v, hv, w, hw, rfl⟩
+    exact union_subset_union hv hw
+
+@[simp] lemma powerset_inter (s t : Finset α) : (s ∩ t).powerset = s.powerset ⊼ t.powerset := by
+  ext u
+  simp only [mem_infs, mem_powerset, le_eq_subset, inf_eq_inter]
+  refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
+  · rwa [←inter_inter_distrib_right, inter_eq_right_iff_subset]
+  · rintro ⟨v, hv, w, hw, rfl⟩
+    exact inter_subset_inter hv hw
+
 section DistribLattice
 
 variable [DistribLattice α] (s t u : Finset α)
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
@@ -37,7 +37,7 @@ open Function
 
 open SetFamily
 
-variable {α : Type _} [DecidableEq α]
+variable {α : Type*} [DecidableEq α]
 
 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) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
-
-! This file was ported from Lean 3 source module data.finset.sups
-! leanprover-community/mathlib commit 20715f4ac6819ef2453d9e5106ecd086a5dc2a5e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Finset.NAry
 import Mathlib.Data.Set.Sups
 
+#align_import data.finset.sups from "leanprover-community/mathlib"@"20715f4ac6819ef2453d9e5106ecd086a5dc2a5e"
+
 /-!
 # Set family operations
 
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

Currently, the following notations are changed from · ×ˢ · because Lean 4 can't deal with ambiguous notations. | Definition | Notation | | :

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -192,7 +192,7 @@ theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b)
 #align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
-theorem image_sup_product (s t : Finset α) : (s ×ᶠ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
+theorem image_sup_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
   image_uncurry_product _ _ _
 #align finset.image_sup_product Finset.image_sup_product
 
@@ -366,7 +366,7 @@ theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b)
 #align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
-theorem image_inf_product (s t : Finset α) : (s ×ᶠ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
+theorem image_inf_product (s t : Finset α) : (s ×ˢ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
   image_uncurry_product _ _ _
 #align finset.image_inf_product Finset.image_inf_product
 
@@ -423,7 +423,7 @@ variable [SemilatticeSup α] [OrderBot α] [@DecidableRel α Disjoint] (s s₁ s
 /-- The finset of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t` and `a` and `b` are disjoint.
 -/
 def disjSups : Finset α :=
-  ((s ×ᶠ t).filter fun ab : α × α => Disjoint ab.1 ab.2).image fun ab => ab.1 ⊔ ab.2
+  ((s ×ˢ t).filter fun ab : α × α => Disjoint ab.1 ab.2).image fun ab => ab.1 ⊔ ab.2
 #align finset.disj_sups Finset.disjSups
 
 @[inherit_doc]
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
@@ -183,13 +183,13 @@ theorem subset_sups {s t : Set α} :
 
 variable (s t u)
 
-theorem bunionᵢ_image_sup_left : (s.bunionᵢ fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
-  bunionᵢ_image_left
-#align finset.bUnion_image_sup_left Finset.bunionᵢ_image_sup_left
+theorem biUnion_image_sup_left : (s.biUnion fun a => t.image <| (· ⊔ ·) a) = s ⊻ t :=
+  biUnion_image_left
+#align finset.bUnion_image_sup_left Finset.biUnion_image_sup_left
 
-theorem bunionᵢ_image_sup_right : (t.bunionᵢ fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
-  bunionᵢ_image_right
-#align finset.bUnion_image_sup_right Finset.bunionᵢ_image_sup_right
+theorem biUnion_image_sup_right : (t.biUnion fun b => s.image fun a => a ⊔ b) = s ⊻ t :=
+  biUnion_image_right
+#align finset.bUnion_image_sup_right Finset.biUnion_image_sup_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
 theorem image_sup_product (s t : Finset α) : (s ×ᶠ t).image (uncurry (· ⊔ ·)) = s ⊻ t :=
@@ -357,13 +357,13 @@ theorem subset_infs {s t : Set α} :
 
 variable (s t u)
 
-theorem bunionᵢ_image_inf_left : (s.bunionᵢ fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
-  bunionᵢ_image_left
-#align finset.bUnion_image_inf_left Finset.bunionᵢ_image_inf_left
+theorem biUnion_image_inf_left : (s.biUnion fun a => t.image <| (· ⊓ ·) a) = s ⊼ t :=
+  biUnion_image_left
+#align finset.bUnion_image_inf_left Finset.biUnion_image_inf_left
 
-theorem bunionᵢ_image_inf_right : (t.bunionᵢ fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
-  bunionᵢ_image_right
-#align finset.bUnion_image_inf_right Finset.bunionᵢ_image_inf_right
+theorem biUnion_image_inf_right : (t.biUnion fun b => s.image fun a => a ⊓ b) = s ⊼ t :=
+  biUnion_image_right
+#align finset.bUnion_image_inf_right Finset.biUnion_image_inf_right
 
 -- Porting note: simpNF linter doesn't like @[simp]
 theorem image_inf_product (s t : Finset α) : (s ×ᶠ t).image (uncurry (· ⊓ ·)) = s ⊼ t :=
feat: port Data.Finset.Sups (#1663)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>

Dependencies 6 + 219

220 files ported (97.3%)
96891 lines ported (97.8%)
Show graph

The unported dependencies are