order.partition.finpartitionMathlib.Order.Partition.Finpartition

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -625,7 +625,7 @@ theorem mem_atomise :
       t.Nonempty ∧ ∃ (Q : _) (_ : Q ⊆ F), (s.filterₓ fun i => ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t :=
   by
   simp only [atomise, of_erase, bot_eq_empty, mem_erase, mem_image, nonempty_iff_ne_empty,
-    mem_singleton, and_comm', mem_powerset, exists_prop]
+    mem_singleton, and_comm, mem_powerset, exists_prop]
 #align finpartition.mem_atomise Finpartition.mem_atomise
 -/
 
@@ -668,7 +668,7 @@ theorem card_filter_atomise_le_two_pow (ht : t ∈ F) :
   · refine' (card_le_of_subset h).trans (card_image_le.trans _)
     rw [card_powerset, card_erase_of_mem ht]
   rw [subset_iff]
-  simp only [mem_erase, mem_sdiff, mem_powerset, mem_image, exists_prop, mem_filter, and_assoc',
+  simp only [mem_erase, mem_sdiff, mem_powerset, mem_image, exists_prop, mem_filter, and_assoc,
     Finset.Nonempty, exists_imp, and_imp, mem_atomise, forall_apply_eq_imp_iff₂]
   rintro P' i hi P PQ rfl hy₂ j hj
   refine' ⟨P.erase t, erase_subset_erase _ PQ, _⟩
Diff
@@ -618,7 +618,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
Diff
@@ -275,9 +275,9 @@ instance [Decidable (a = ⊥)] : OrderTop (Finpartition a)
 theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a).parts ⊆ {a} :=
   by
   intro b hb
-  change b ∈ Finpartition.parts (dite _ _ _) at hb 
-  split_ifs at hb 
-  · simp only [copy_parts, empty_parts, not_mem_empty] at hb 
+  change b ∈ Finpartition.parts (dite _ _ _) at hb
+  split_ifs at hb
+  · simp only [copy_parts, empty_parts, not_mem_empty] at hb
     exact hb.elim
   · exact hb
 #align finpartition.parts_top_subset Finpartition.parts_top_subset
@@ -338,12 +338,12 @@ instance : SemilatticeInf (Finpartition a) :=
     inf_le_left := fun P Q b hb =>
       by
       obtain ⟨c, hc, rfl⟩ := mem_image.1 (mem_of_mem_erase hb)
-      rw [mem_product] at hc 
+      rw [mem_product] at hc
       exact ⟨c.1, hc.1, inf_le_left⟩
     inf_le_right := fun P Q b hb =>
       by
       obtain ⟨c, hc, rfl⟩ := mem_image.1 (mem_of_mem_erase hb)
-      rw [mem_product] at hc 
+      rw [mem_product] at hc
       exact ⟨c.2, hc.2, inf_le_right⟩
     le_inf := fun P Q R hPQ hPR b hb =>
       by
@@ -402,7 +402,7 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
   SupIndep := by
     rw [sup_indep_iff_pairwise_disjoint]
     rintro a ha b hb h
-    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb 
+    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb
     obtain ⟨⟨A, hA⟩, -, ha⟩ := ha
     obtain ⟨⟨B, hB⟩, -, hb⟩ := hb
     obtain rfl | hAB := eq_or_ne A B
@@ -413,7 +413,7 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     rw [eq_comm, ← Finset.sup_attach]
     exact sup_congr rfl fun b hb => (Q b.1 b.2).sup_parts.symm
   not_bot_mem h := by
-    rw [Finset.mem_biUnion] at h 
+    rw [Finset.mem_biUnion] at h
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
@@ -439,7 +439,7 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
   rintro ⟨b, hb⟩ - ⟨c, hc⟩ - hbc
   rw [Finset.disjoint_left]
   rintro d hdb hdc
-  rw [Ne.def, Subtype.mk_eq_mk] at hbc 
+  rw [Ne.def, Subtype.mk_eq_mk] at hbc
   exact
     (Q b hb).ne_bot hdb
       (eq_bot_iff.2 <|
@@ -515,7 +515,7 @@ theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty
 -/
 
 #print Finpartition.exists_mem /-
-theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha ;
+theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha;
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 -/
@@ -569,7 +569,7 @@ theorem mem_bot_iff : t ∈ (⊥ : Finpartition s).parts ↔ ∃ a ∈ s, {a} =
 instance (s : Finset α) : OrderBot (Finpartition s) :=
   { Finpartition.hasBot s with
     bot_le := fun P t ht => by
-      rw [mem_bot_iff] at ht 
+      rw [mem_bot_iff] at ht
       obtain ⟨a, ha, rfl⟩ := ht
       obtain ⟨t, ht, hat⟩ := P.exists_mem ha
       exact ⟨t, ht, singleton_subset_iff.2 hat⟩ }
@@ -590,20 +590,20 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
     (Set.PairwiseDisjoint.supIndep fun x hx y hy h =>
       disjoint_left.mpr fun z hz1 hz2 =>
         h (by
-            rw [mem_coe, mem_image] at hx hy 
+            rw [mem_coe, mem_image] at hx hy
             obtain ⟨Q, hQ, rfl⟩ := hx
             obtain ⟨R, hR, rfl⟩ := hy
             suffices h : Q = R
             · subst h
-            rw [id, mem_filter] at hz1 hz2 
-            rw [mem_powerset] at hQ hR 
+            rw [id, mem_filter] at hz1 hz2
+            rw [mem_powerset] at hQ hR
             ext i
             refine' ⟨fun hi => _, fun hi => _⟩
             · rwa [hz2.2 _ (hQ hi), ← hz1.2 _ (hQ hi)]
             · rwa [hz1.2 _ (hR hi), ← hz2.2 _ (hR hi)]))
     (by
       refine' (Finset.sup_le fun t ht => _).antisymm fun a ha => _
-      · rw [mem_image] at ht 
+      · rw [mem_image] at ht
         obtain ⟨A, hA, rfl⟩ := ht
         exact s.filter_subset _
       · rw [mem_sup]
@@ -653,7 +653,7 @@ theorem biUnion_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
   obtain ⟨u, hu, hau⟩ := (atomise s F).exists_mem (hts ha)
   refine' ⟨u, mem_filter.2 ⟨hu, fun b hb => _, _, hau⟩, hau⟩
   obtain ⟨Q, hQ, rfl⟩ := (mem_atomise.1 hu).2
-  rw [mem_filter] at hau hb 
+  rw [mem_filter] at hau hb
   rwa [← hb.2 _ ht, hau.2 _ ht]
 #align finpartition.bUnion_filter_atomise Finpartition.biUnion_filter_atomise
 -/
Diff
@@ -70,7 +70,7 @@ variable {α : Type _}
 structure Finpartition [Lattice α] [OrderBot α] (a : α) where
   parts : Finset α
   SupIndep : parts.SupIndep id
-  supParts : parts.sup id = a
+  sup_parts : parts.sup id = a
   not_bot_mem : ⊥ ∉ parts
   deriving DecidableEq
 #align finpartition Finpartition
@@ -92,7 +92,7 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
     where
   parts := parts.eraseₓ ⊥
   SupIndep := sup_indep.Subset (erase_subset _ _)
-  supParts := (sup_erase_bot _).trans sup_parts
+  sup_parts := (sup_erase_bot _).trans sup_parts
   not_bot_mem := not_mem_erase _ _
 #align finpartition.of_erase Finpartition.ofErase
 -/
@@ -104,7 +104,7 @@ def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts
     (sup_parts : parts.sup id = b) : Finpartition b :=
   { parts
     SupIndep := P.SupIndep.Subset subset
-    supParts
+    sup_parts
     not_bot_mem := fun h => P.not_bot_mem (subset h) }
 #align finpartition.of_subset Finpartition.ofSubset
 -/
@@ -116,7 +116,7 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
     where
   parts := P.parts
   SupIndep := P.SupIndep
-  supParts := h ▸ P.supParts
+  sup_parts := h ▸ P.sup_parts
   not_bot_mem := P.not_bot_mem
 #align finpartition.copy Finpartition.copy
 -/
@@ -130,7 +130,7 @@ protected def empty : Finpartition (⊥ : α)
     where
   parts := ∅
   SupIndep := supIndep_empty _
-  supParts := Finset.sup_empty
+  sup_parts := Finset.sup_empty
   not_bot_mem := not_mem_empty ⊥
 #align finpartition.empty Finpartition.empty
 -/
@@ -154,7 +154,7 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
     where
   parts := {a}
   SupIndep := supIndep_singleton _ _
-  supParts := Finset.sup_singleton
+  sup_parts := Finset.sup_singleton
   not_bot_mem h := ha (mem_singleton.1 h).symm
 #align finpartition.indiscrete Finpartition.indiscrete
 -/
@@ -163,7 +163,7 @@ variable (P : Finpartition a)
 
 #print Finpartition.le /-
 protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
-  (le_sup hb).trans P.supParts.le
+  (le_sup hb).trans P.sup_parts.le
 #align finpartition.le Finpartition.le
 -/
 
@@ -408,10 +408,10 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     obtain rfl | hAB := eq_or_ne A B
     · exact (Q A hA).Disjoint ha hb h
     · exact (P.disjoint hA hB hAB).mono ((Q A hA).le ha) ((Q B hB).le hb)
-  supParts := by
+  sup_parts := by
     simp_rw [sup_bUnion, ← P.sup_parts]
     rw [eq_comm, ← Finset.sup_attach]
-    exact sup_congr rfl fun b hb => (Q b.1 b.2).supParts.symm
+    exact sup_congr rfl fun b hb => (Q b.1 b.2).sup_parts.symm
   not_bot_mem h := by
     rw [Finset.mem_biUnion] at h 
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
@@ -458,7 +458,7 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
   SupIndep := by
     rw [sup_indep_iff_pairwise_disjoint, coe_insert]
     exact P.disjoint.insert fun d hd hbd => hab.symm.mono_right <| P.le hd
-  supParts := by rwa [sup_insert, P.sup_parts, id, _root_.sup_comm]
+  sup_parts := by rwa [sup_insert, P.sup_parts, id, _root_.sup_comm]
   not_bot_mem h := (mem_insert.1 h).elim hb.symm P.not_bot_mem
 #align finpartition.extend Finpartition.extend
 -/
@@ -522,7 +522,7 @@ theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by si
 
 #print Finpartition.biUnion_parts /-
 theorem biUnion_parts : P.parts.biUnion id = s :=
-  (sup_eq_biUnion _ _).symm.trans P.supParts
+  (sup_eq_biUnion _ _).symm.trans P.sup_parts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 -/
 
@@ -543,7 +543,7 @@ instance (s : Finset α) : Bot (Finpartition s) :=
           (by
             rw [Finset.coe_map]
             exact finset.pairwise_disjoint_range_singleton.subset (Set.image_subset_range _ _))
-      supParts := by rw [sup_map, comp.left_id, embedding.coe_fn_mk, Finset.sup_singleton']
+      sup_parts := by rw [sup_map, comp.left_id, embedding.coe_fn_mk, Finset.sup_singleton']
       not_bot_mem := by simp }⟩
 
 #print Finpartition.parts_bot /-
Diff
@@ -375,6 +375,14 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
 #print Finpartition.card_mono /-
 theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card := by
   classical
+  have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
+  choose f hP hf using this
+  rw [← card_attach]
+  refine' card_le_card_of_inj_on (fun b => f _ b.2) (fun b _ => hP _ b.2) fun b hb c hc h => _
+  exact
+    Subtype.coe_injective
+      (Q.disjoint.elim b.2 c.2 fun H =>
+        P.ne_bot (hP _ b.2) <| disjoint_self.1 <| H.mono (hf _ b.2) <| h.le.trans <| hf _ c.2)
 #align finpartition.card_mono Finpartition.card_mono
 -/
 
Diff
@@ -375,14 +375,6 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
 #print Finpartition.card_mono /-
 theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card := by
   classical
-  have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
-  choose f hP hf using this
-  rw [← card_attach]
-  refine' card_le_card_of_inj_on (fun b => f _ b.2) (fun b _ => hP _ b.2) fun b hb c hc h => _
-  exact
-    Subtype.coe_injective
-      (Q.disjoint.elim b.2 c.2 fun H =>
-        P.ne_bot (hP _ b.2) <| disjoint_self.1 <| H.mono (hf _ b.2) <| h.le.trans <| hf _ c.2)
 #align finpartition.card_mono Finpartition.card_mono
 -/
 
Diff
@@ -640,7 +640,7 @@ theorem atomise_empty (hs : s.Nonempty) : (atomise s ∅).parts = {s} :=
 
 #print Finpartition.card_atomise_le /-
 theorem card_atomise_le : (atomise s F).parts.card ≤ 2 ^ F.card :=
-  (card_le_of_subset <| erase_subset _ _).trans <| Finset.card_image_le.trans (card_powerset _).le
+  (card_le_card <| erase_subset _ _).trans <| Finset.card_image_le.trans (card_powerset _).le
 #align finpartition.card_atomise_le Finpartition.card_atomise_le
 -/
 
Diff
@@ -361,7 +361,7 @@ end Inf
 #print Finpartition.exists_le_of_le /-
 theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b ∈ Q.parts) :
     ∃ c ∈ P.parts, c ≤ b := by
-  by_contra' H
+  by_contra! H
   refine' Q.ne_bot hb (disjoint_self.1 <| Disjoint.mono_right (Q.le hb) _)
   rw [← P.sup_parts, Finset.disjoint_sup_right]
   rintro c hc
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Bhavik Mehta
 -/
-import Mathbin.Algebra.BigOperators.Basic
-import Mathbin.Order.Atoms.Finite
-import Mathbin.Order.SupIndep
+import Algebra.BigOperators.Basic
+import Order.Atoms.Finite
+import Order.SupIndep
 
 #align_import order.partition.finpartition from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
 
@@ -618,7 +618,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Bhavik Mehta
-
-! This file was ported from Lean 3 source module order.partition.finpartition
-! leanprover-community/mathlib commit 0a0ec35061ed9960bf0e7ffb0335f44447b58977
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.BigOperators.Basic
 import Mathbin.Order.Atoms.Finite
 import Mathbin.Order.SupIndep
 
+#align_import order.partition.finpartition from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
+
 /-!
 # Finite partitions
 
@@ -621,7 +618,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
Diff
@@ -126,6 +126,7 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
 
 variable (α)
 
+#print Finpartition.empty /-
 /-- The empty finpartition. -/
 @[simps]
 protected def empty : Finpartition (⊥ : α)
@@ -135,17 +136,21 @@ protected def empty : Finpartition (⊥ : α)
   supParts := Finset.sup_empty
   not_bot_mem := not_mem_empty ⊥
 #align finpartition.empty Finpartition.empty
+-/
 
 instance : Inhabited (Finpartition (⊥ : α)) :=
   ⟨Finpartition.empty α⟩
 
+#print Finpartition.default_eq_empty /-
 @[simp]
 theorem default_eq_empty : (default : Finpartition (⊥ : α)) = Finpartition.empty α :=
   rfl
 #align finpartition.default_eq_empty Finpartition.default_eq_empty
+-/
 
 variable {α} {a : α}
 
+#print Finpartition.indiscrete /-
 /-- The finpartition in one part, aka indiscrete finpartition. -/
 @[simps]
 def indiscrete (ha : a ≠ ⊥) : Finpartition a
@@ -155,6 +160,7 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
   supParts := Finset.sup_singleton
   not_bot_mem h := ha (mem_singleton.1 h).symm
 #align finpartition.indiscrete Finpartition.indiscrete
+-/
 
 variable (P : Finpartition a)
 
@@ -164,8 +170,10 @@ protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
 #align finpartition.le Finpartition.le
 -/
 
+#print Finpartition.ne_bot /-
 theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ := fun h => P.not_bot_mem <| h.subst hb
 #align finpartition.ne_bot Finpartition.ne_bot
+-/
 
 #print Finpartition.disjoint /-
 protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
@@ -175,6 +183,7 @@ protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
 
 variable {P}
 
+#print Finpartition.parts_eq_empty_iff /-
 theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ :=
   by
   simp_rw [← P.sup_parts]
@@ -183,20 +192,26 @@ theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ :=
     exact Finset.sup_empty
   · rwa [← le_bot_iff.1 ((le_sup hb).trans h.le)]
 #align finpartition.parts_eq_empty_iff Finpartition.parts_eq_empty_iff
+-/
 
+#print Finpartition.parts_nonempty_iff /-
 theorem parts_nonempty_iff : P.parts.Nonempty ↔ a ≠ ⊥ := by
   rw [nonempty_iff_ne_empty, not_iff_not, parts_eq_empty_iff]
 #align finpartition.parts_nonempty_iff Finpartition.parts_nonempty_iff
+-/
 
+#print Finpartition.parts_nonempty /-
 theorem parts_nonempty (P : Finpartition a) (ha : a ≠ ⊥) : P.parts.Nonempty :=
   parts_nonempty_iff.2 ha
 #align finpartition.parts_nonempty Finpartition.parts_nonempty
+-/
 
 instance : Unique (Finpartition (⊥ : α)) :=
   { Finpartition.inhabited α with
     uniq := fun P => by ext a;
       exact iff_of_false (fun h => P.ne_bot h <| le_bot_iff.1 <| P.le h) (not_mem_empty a) }
 
+#print IsAtom.uniqueFinpartition /-
 -- See note [reducible non instances]
 /-- There's a unique partition of an atom. -/
 @[reducible]
@@ -214,6 +229,7 @@ def IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
     simp_rw [← h c hc]
     exact hc
 #align is_atom.unique_finpartition IsAtom.uniqueFinpartition
+-/
 
 instance [Fintype α] [DecidableEq α] (a : α) : Fintype (Finpartition a) :=
   @Fintype.ofSurjective { p : Finset α // p.SupIndep id ∧ p.sup id = a ∧ ⊥ ∉ p } (Finpartition a) _
@@ -258,6 +274,7 @@ instance [Decidable (a = ⊥)] : OrderTop (Finpartition a)
       simpa [h, P.ne_bot hx] using P.le hx
     · exact fun b hb => ⟨a, mem_singleton_self _, P.le hb⟩
 
+#print Finpartition.parts_top_subset /-
 theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a).parts ⊆ {a} :=
   by
   intro b hb
@@ -267,11 +284,14 @@ theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a)
     exact hb.elim
   · exact hb
 #align finpartition.parts_top_subset Finpartition.parts_top_subset
+-/
 
+#print Finpartition.parts_top_subsingleton /-
 theorem parts_top_subsingleton (a : α) [Decidable (a = ⊥)] :
     ((⊤ : Finpartition a).parts : Set α).Subsingleton :=
   Set.subsingleton_of_subset_singleton fun b hb => mem_singleton.1 <| parts_top_subset _ hb
 #align finpartition.parts_top_subsingleton Finpartition.parts_top_subsingleton
+-/
 
 end Order
 
@@ -307,11 +327,13 @@ instance : Inf (Finpartition a) :=
         · rw [P.sup_parts, Q.sup_parts, inf_idem])⟩
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Finpartition.parts_inf /-
 @[simp]
 theorem parts_inf (P Q : Finpartition a) :
     (P ⊓ Q).parts = ((P.parts ×ˢ Q.parts).image fun bc : α × α => bc.1 ⊓ bc.2).eraseₓ ⊥ :=
   rfl
 #align finpartition.parts_inf Finpartition.parts_inf
+-/
 
 instance : SemilatticeInf (Finpartition a) :=
   { Finpartition.partialOrder,
@@ -339,6 +361,7 @@ instance : SemilatticeInf (Finpartition a) :=
 
 end Inf
 
+#print Finpartition.exists_le_of_le /-
 theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b ∈ Q.parts) :
     ∃ c ∈ P.parts, c ≤ b := by
   by_contra' H
@@ -350,7 +373,9 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
   rintro rfl
   exact H _ hc hcd
 #align finpartition.exists_le_of_le Finpartition.exists_le_of_le
+-/
 
+#print Finpartition.card_mono /-
 theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card := by
   classical
   have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
@@ -362,6 +387,7 @@ theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card 
       (Q.disjoint.elim b.2 c.2 fun H =>
         P.ne_bot (hP _ b.2) <| disjoint_self.1 <| H.mono (hf _ b.2) <| h.le.trans <| hf _ c.2)
 #align finpartition.card_mono Finpartition.card_mono
+-/
 
 variable [DecidableEq α] {a b c : α}
 
@@ -426,6 +452,7 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
 
 end Bind
 
+#print Finpartition.extend /-
 /-- Adds `b` to a finpartition of `a` to make a finpartition of `a ⊔ b`. -/
 @[simps]
 def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a ⊔ b = c) : Finpartition c
@@ -437,11 +464,14 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
   supParts := by rwa [sup_insert, P.sup_parts, id, _root_.sup_comm]
   not_bot_mem h := (mem_insert.1 h).elim hb.symm P.not_bot_mem
 #align finpartition.extend Finpartition.extend
+-/
 
+#print Finpartition.card_extend /-
 theorem card_extend (P : Finpartition a) (b c : α) {hb : b ≠ ⊥} {hab : Disjoint a b}
     {hc : a ⊔ b = c} : (P.extend hb hab hc).parts.card = P.parts.card + 1 :=
   card_insert_of_not_mem fun h => hb <| hab.symm.eq_bot_of_le <| P.le h
 #align finpartition.card_extend Finpartition.card_extend
+-/
 
 end DistribLattice
 
@@ -449,13 +479,16 @@ section GeneralizedBooleanAlgebra
 
 variable [GeneralizedBooleanAlgebra α] [DecidableEq α] {a b c : α} (P : Finpartition a)
 
+#print Finpartition.avoid /-
 /-- Restricts a finpartition to avoid a given element. -/
 @[simps]
 def avoid (b : α) : Finpartition (a \ b) :=
   ofErase (P.parts.image (· \ b)) (P.Disjoint.image_finset_of_le fun a => sdiff_le).SupIndep
     (by rw [sup_image, comp.left_id, Finset.sup_sdiff_right, ← id_def, P.sup_parts])
 #align finpartition.avoid Finpartition.avoid
+-/
 
+#print Finpartition.mem_avoid /-
 @[simp]
 theorem mem_avoid : c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧ d \ b = c :=
   by
@@ -465,6 +498,7 @@ theorem mem_avoid : c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧
   rintro rfl
   rw [sdiff_eq_bot_iff]
 #align finpartition.mem_avoid Finpartition.mem_avoid
+-/
 
 end GeneralizedBooleanAlgebra
 
@@ -477,24 +511,32 @@ namespace Finpartition
 
 variable [DecidableEq α] {s t : Finset α} (P : Finpartition s)
 
+#print Finpartition.nonempty_of_mem_parts /-
 theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty :=
   nonempty_iff_ne_empty.2 <| P.ne_bot ha
 #align finpartition.nonempty_of_mem_parts Finpartition.nonempty_of_mem_parts
+-/
 
+#print Finpartition.exists_mem /-
 theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha ;
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
+-/
 
+#print Finpartition.biUnion_parts /-
 theorem biUnion_parts : P.parts.biUnion id = s :=
   (sup_eq_biUnion _ _).symm.trans P.supParts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
+-/
 
+#print Finpartition.sum_card_parts /-
 theorem sum_card_parts : ∑ i in P.parts, i.card = s.card :=
   by
   convert congr_arg Finset.card P.bUnion_parts
   rw [card_bUnion P.sup_indep.pairwise_disjoint]
   rfl
 #align finpartition.sum_card_parts Finpartition.sum_card_parts
+-/
 
 /-- `⊥` is the partition in singletons, aka discrete partition. -/
 instance (s : Finset α) : Bot (Finpartition s) :=
@@ -535,12 +577,15 @@ instance (s : Finset α) : OrderBot (Finpartition s) :=
       obtain ⟨t, ht, hat⟩ := P.exists_mem ha
       exact ⟨t, ht, singleton_subset_iff.2 hat⟩ }
 
+#print Finpartition.card_parts_le_card /-
 theorem card_parts_le_card (P : Finpartition s) : P.parts.card ≤ s.card := by rw [← card_bot s];
   exact card_mono bot_le
 #align finpartition.card_parts_le_card Finpartition.card_parts_le_card
+-/
 
 section Atomise
 
+#print Finpartition.atomise /-
 /-- Cuts `s` along the finsets in `F`: Two elements of `s` will be in the same part if they are
 in the same finsets of `F`. -/
 def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
@@ -572,6 +617,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
         rw [mem_filter]
         exact and_iff_right ht)
 #align finpartition.atomise Finpartition.atomise
+-/
 
 variable {F : Finset (Finset α)}
 
Diff
@@ -489,7 +489,7 @@ theorem biUnion_parts : P.parts.biUnion id = s :=
   (sup_eq_biUnion _ _).symm.trans P.supParts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 
-theorem sum_card_parts : (∑ i in P.parts, i.card) = s.card :=
+theorem sum_card_parts : ∑ i in P.parts, i.card = s.card :=
   by
   convert congr_arg Finset.card P.bUnion_parts
   rw [card_bUnion P.sup_indep.pairwise_disjoint]
Diff
@@ -575,7 +575,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
Diff
@@ -262,7 +262,7 @@ theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a)
   by
   intro b hb
   change b ∈ Finpartition.parts (dite _ _ _) at hb 
-  split_ifs  at hb 
+  split_ifs at hb 
   · simp only [copy_parts, empty_parts, not_mem_empty] at hb 
     exact hb.elim
   · exact hb
@@ -353,14 +353,14 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
 
 theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card := by
   classical
-    have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
-    choose f hP hf using this
-    rw [← card_attach]
-    refine' card_le_card_of_inj_on (fun b => f _ b.2) (fun b _ => hP _ b.2) fun b hb c hc h => _
-    exact
-      Subtype.coe_injective
-        (Q.disjoint.elim b.2 c.2 fun H =>
-          P.ne_bot (hP _ b.2) <| disjoint_self.1 <| H.mono (hf _ b.2) <| h.le.trans <| hf _ c.2)
+  have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
+  choose f hP hf using this
+  rw [← card_attach]
+  refine' card_le_card_of_inj_on (fun b => f _ b.2) (fun b _ => hP _ b.2) fun b hb c hc h => _
+  exact
+    Subtype.coe_injective
+      (Q.disjoint.elim b.2 c.2 fun H =>
+        P.ne_bot (hP _ b.2) <| disjoint_self.1 <| H.mono (hf _ b.2) <| h.le.trans <| hf _ c.2)
 #align finpartition.card_mono Finpartition.card_mono
 
 variable [DecidableEq α] {a b c : α}
Diff
@@ -261,9 +261,9 @@ instance [Decidable (a = ⊥)] : OrderTop (Finpartition a)
 theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a).parts ⊆ {a} :=
   by
   intro b hb
-  change b ∈ Finpartition.parts (dite _ _ _) at hb
-  split_ifs  at hb
-  · simp only [copy_parts, empty_parts, not_mem_empty] at hb
+  change b ∈ Finpartition.parts (dite _ _ _) at hb 
+  split_ifs  at hb 
+  · simp only [copy_parts, empty_parts, not_mem_empty] at hb 
     exact hb.elim
   · exact hb
 #align finpartition.parts_top_subset Finpartition.parts_top_subset
@@ -319,12 +319,12 @@ instance : SemilatticeInf (Finpartition a) :=
     inf_le_left := fun P Q b hb =>
       by
       obtain ⟨c, hc, rfl⟩ := mem_image.1 (mem_of_mem_erase hb)
-      rw [mem_product] at hc
+      rw [mem_product] at hc 
       exact ⟨c.1, hc.1, inf_le_left⟩
     inf_le_right := fun P Q b hb =>
       by
       obtain ⟨c, hc, rfl⟩ := mem_image.1 (mem_of_mem_erase hb)
-      rw [mem_product] at hc
+      rw [mem_product] at hc 
       exact ⟨c.2, hc.2, inf_le_right⟩
     le_inf := fun P Q R hPQ hPR b hb =>
       by
@@ -379,7 +379,7 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
   SupIndep := by
     rw [sup_indep_iff_pairwise_disjoint]
     rintro a ha b hb h
-    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb
+    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb 
     obtain ⟨⟨A, hA⟩, -, ha⟩ := ha
     obtain ⟨⟨B, hB⟩, -, hb⟩ := hb
     obtain rfl | hAB := eq_or_ne A B
@@ -390,7 +390,7 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     rw [eq_comm, ← Finset.sup_attach]
     exact sup_congr rfl fun b hb => (Q b.1 b.2).supParts.symm
   not_bot_mem h := by
-    rw [Finset.mem_biUnion] at h
+    rw [Finset.mem_biUnion] at h 
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
@@ -416,7 +416,7 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
   rintro ⟨b, hb⟩ - ⟨c, hc⟩ - hbc
   rw [Finset.disjoint_left]
   rintro d hdb hdc
-  rw [Ne.def, Subtype.mk_eq_mk] at hbc
+  rw [Ne.def, Subtype.mk_eq_mk] at hbc 
   exact
     (Q b hb).ne_bot hdb
       (eq_bot_iff.2 <|
@@ -481,7 +481,7 @@ theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty
   nonempty_iff_ne_empty.2 <| P.ne_bot ha
 #align finpartition.nonempty_of_mem_parts Finpartition.nonempty_of_mem_parts
 
-theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha;
+theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha ;
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
@@ -530,7 +530,7 @@ theorem mem_bot_iff : t ∈ (⊥ : Finpartition s).parts ↔ ∃ a ∈ s, {a} =
 instance (s : Finset α) : OrderBot (Finpartition s) :=
   { Finpartition.hasBot s with
     bot_le := fun P t ht => by
-      rw [mem_bot_iff] at ht
+      rw [mem_bot_iff] at ht 
       obtain ⟨a, ha, rfl⟩ := ht
       obtain ⟨t, ht, hat⟩ := P.exists_mem ha
       exact ⟨t, ht, singleton_subset_iff.2 hat⟩ }
@@ -548,20 +548,20 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
     (Set.PairwiseDisjoint.supIndep fun x hx y hy h =>
       disjoint_left.mpr fun z hz1 hz2 =>
         h (by
-            rw [mem_coe, mem_image] at hx hy
+            rw [mem_coe, mem_image] at hx hy 
             obtain ⟨Q, hQ, rfl⟩ := hx
             obtain ⟨R, hR, rfl⟩ := hy
             suffices h : Q = R
             · subst h
-            rw [id, mem_filter] at hz1 hz2
-            rw [mem_powerset] at hQ hR
+            rw [id, mem_filter] at hz1 hz2 
+            rw [mem_powerset] at hQ hR 
             ext i
             refine' ⟨fun hi => _, fun hi => _⟩
             · rwa [hz2.2 _ (hQ hi), ← hz1.2 _ (hQ hi)]
             · rwa [hz1.2 _ (hR hi), ← hz2.2 _ (hR hi)]))
     (by
       refine' (Finset.sup_le fun t ht => _).antisymm fun a ha => _
-      · rw [mem_image] at ht
+      · rw [mem_image] at ht 
         obtain ⟨A, hA, rfl⟩ := ht
         exact s.filter_subset _
       · rw [mem_sup]
@@ -579,7 +579,7 @@ variable {F : Finset (Finset α)}
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
-      t.Nonempty ∧ ∃ (Q : _)(_ : Q ⊆ F), (s.filterₓ fun i => ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t :=
+      t.Nonempty ∧ ∃ (Q : _) (_ : Q ⊆ F), (s.filterₓ fun i => ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t :=
   by
   simp only [atomise, of_erase, bot_eq_empty, mem_erase, mem_image, nonempty_iff_ne_empty,
     mem_singleton, and_comm', mem_powerset, exists_prop]
@@ -610,7 +610,7 @@ theorem biUnion_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
   obtain ⟨u, hu, hau⟩ := (atomise s F).exists_mem (hts ha)
   refine' ⟨u, mem_filter.2 ⟨hu, fun b hb => _, _, hau⟩, hau⟩
   obtain ⟨Q, hQ, rfl⟩ := (mem_atomise.1 hu).2
-  rw [mem_filter] at hau hb
+  rw [mem_filter] at hau hb 
   rwa [← hb.2 _ ht, hau.2 _ ht]
 #align finpartition.bUnion_filter_atomise Finpartition.biUnion_filter_atomise
 -/
Diff
@@ -62,10 +62,11 @@ the literature and turn the order around?
 
 open Finset Function
 
-open BigOperators
+open scoped BigOperators
 
 variable {α : Type _}
 
+#print Finpartition /-
 /-- A finite partition of `a : α` is a pairwise disjoint finite set of elements whose supremum is
 `a`. We forbid `⊥` as a part. -/
 @[ext]
@@ -76,6 +77,7 @@ structure Finpartition [Lattice α] [OrderBot α] (a : α) where
   not_bot_mem : ⊥ ∉ parts
   deriving DecidableEq
 #align finpartition Finpartition
+-/
 
 attribute [protected] Finpartition.supIndep
 
@@ -85,6 +87,7 @@ section Lattice
 
 variable [Lattice α] [OrderBot α]
 
+#print Finpartition.ofErase /-
 /-- A `finpartition` constructor which does not insist on `⊥` not being a part. -/
 @[simps]
 def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.SupIndep id)
@@ -95,7 +98,9 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
   supParts := (sup_erase_bot _).trans sup_parts
   not_bot_mem := not_mem_erase _ _
 #align finpartition.of_erase Finpartition.ofErase
+-/
 
+#print Finpartition.ofSubset /-
 /-- A `finpartition` constructor from a bigger existing finpartition. -/
 @[simps]
 def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts)
@@ -105,7 +110,9 @@ def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts
     supParts
     not_bot_mem := fun h => P.not_bot_mem (subset h) }
 #align finpartition.of_subset Finpartition.ofSubset
+-/
 
+#print Finpartition.copy /-
 /-- Changes the type of a finpartition to an equal one. -/
 @[simps]
 def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
@@ -115,6 +122,7 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
   supParts := h ▸ P.supParts
   not_bot_mem := P.not_bot_mem
 #align finpartition.copy Finpartition.copy
+-/
 
 variable (α)
 
@@ -150,16 +158,20 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
 
 variable (P : Finpartition a)
 
+#print Finpartition.le /-
 protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
   (le_sup hb).trans P.supParts.le
 #align finpartition.le Finpartition.le
+-/
 
 theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ := fun h => P.not_bot_mem <| h.subst hb
 #align finpartition.ne_bot Finpartition.ne_bot
 
+#print Finpartition.disjoint /-
 protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
   P.SupIndep.PairwiseDisjoint
 #align finpartition.disjoint Finpartition.disjoint
+-/
 
 variable {P}
 
@@ -357,6 +369,7 @@ section Bind
 
 variable {P : Finpartition a} {Q : ∀ i ∈ P.parts, Finpartition i}
 
+#print Finpartition.bind /-
 /-- Given a finpartition `P` of `a` and finpartitions of each part of `P`, this yields the
 finpartition of `a` obtained by juxtaposing all the subpartitions. -/
 @[simps]
@@ -381,7 +394,9 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
+-/
 
+#print Finpartition.mem_bind /-
 theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
   by
   rw [bind, mem_bUnion]
@@ -391,7 +406,9 @@ theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
   · rintro ⟨A, hA, h⟩
     exact ⟨⟨A, hA⟩, mem_attach _ ⟨A, hA⟩, h⟩
 #align finpartition.mem_bind Finpartition.mem_bind
+-/
 
+#print Finpartition.card_bind /-
 theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
     (P.bind Q).parts.card = ∑ A in P.parts.attach, (Q _ A.2).parts.card :=
   by
@@ -405,6 +422,7 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
       (eq_bot_iff.2 <|
         (le_inf ((Q b hb).le hdb) <| (Q c hc).le hdc).trans <| (P.disjoint hb hc hbc).le_bot)
 #align finpartition.card_bind Finpartition.card_bind
+-/
 
 end Bind
 
Diff
@@ -66,12 +66,6 @@ open BigOperators
 
 variable {α : Type _}
 
-/- warning: finpartition -> Finpartition is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], α -> Type.{u1}
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], α -> Type.{u1}
-Case conversion may be inaccurate. Consider using '#align finpartition Finpartitionₓ'. -/
 /-- A finite partition of `a : α` is a pairwise disjoint finite set of elements whose supremum is
 `a`. We forbid `⊥` as a part. -/
 @[ext]
@@ -91,12 +85,6 @@ section Lattice
 
 variable [Lattice α] [OrderBot α]
 
-/- warning: finpartition.of_erase -> Finpartition.ofErase is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (parts : Finset.{u1} α), (Finset.SupIndep.{u1, u1} α α _inst_1 _inst_2 parts (id.{succ u1} α)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) a) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (parts : Finset.{u1} α), (Finset.SupIndep.{u1, u1} α α _inst_1 _inst_2 parts (id.{succ u1} α)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) a) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
-Case conversion may be inaccurate. Consider using '#align finpartition.of_erase Finpartition.ofEraseₓ'. -/
 /-- A `finpartition` constructor which does not insist on `⊥` not being a part. -/
 @[simps]
 def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.SupIndep id)
@@ -108,12 +96,6 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
   not_bot_mem := not_mem_erase _ _
 #align finpartition.of_erase Finpartition.ofErase
 
-/- warning: finpartition.of_subset -> Finpartition.ofSubset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {parts : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) parts (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {parts : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) parts (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
-Case conversion may be inaccurate. Consider using '#align finpartition.of_subset Finpartition.ofSubsetₓ'. -/
 /-- A `finpartition` constructor from a bigger existing finpartition. -/
 @[simps]
 def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts)
@@ -124,12 +106,6 @@ def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts
     not_bot_mem := fun h => P.not_bot_mem (subset h) }
 #align finpartition.of_subset Finpartition.ofSubset
 
-/- warning: finpartition.copy -> Finpartition.copy is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α}, (Finpartition.{u1} α _inst_1 _inst_2 a) -> (Eq.{succ u1} α a b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α}, (Finpartition.{u1} α _inst_1 _inst_2 a) -> (Eq.{succ u1} α a b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
-Case conversion may be inaccurate. Consider using '#align finpartition.copy Finpartition.copyₓ'. -/
 /-- Changes the type of a finpartition to an equal one. -/
 @[simps]
 def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
@@ -142,12 +118,6 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
 
 variable (α)
 
-/- warning: finpartition.empty -> Finpartition.empty is a dubious translation:
-lean 3 declaration is
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))
-but is expected to have type
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))
-Case conversion may be inaccurate. Consider using '#align finpartition.empty Finpartition.emptyₓ'. -/
 /-- The empty finpartition. -/
 @[simps]
 protected def empty : Finpartition (⊥ : α)
@@ -161,12 +131,6 @@ protected def empty : Finpartition (⊥ : α)
 instance : Inhabited (Finpartition (⊥ : α)) :=
   ⟨Finpartition.empty α⟩
 
-/- warning: finpartition.default_eq_empty -> Finpartition.default_eq_empty is a dubious translation:
-lean 3 declaration is
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Eq.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Inhabited.default.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Finpartition.inhabited.{u1} α _inst_1 _inst_2)) (Finpartition.empty.{u1} α _inst_1 _inst_2)
-but is expected to have type
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Eq.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Inhabited.default.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Finpartition.instInhabitedFinpartitionBotToBotToLEToPreorderToPartialOrderToSemilatticeInf.{u1} α _inst_1 _inst_2)) (Finpartition.empty.{u1} α _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align finpartition.default_eq_empty Finpartition.default_eq_emptyₓ'. -/
 @[simp]
 theorem default_eq_empty : (default : Finpartition (⊥ : α)) = Finpartition.empty α :=
   rfl
@@ -174,12 +138,6 @@ theorem default_eq_empty : (default : Finpartition (⊥ : α)) = Finpartition.em
 
 variable {α} {a : α}
 
-/- warning: finpartition.indiscrete -> Finpartition.indiscrete is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
-Case conversion may be inaccurate. Consider using '#align finpartition.indiscrete Finpartition.indiscreteₓ'. -/
 /-- The finpartition in one part, aka indiscrete finpartition. -/
 @[simps]
 def indiscrete (ha : a ≠ ⊥) : Finpartition a
@@ -192,43 +150,19 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
 
 variable (P : Finpartition a)
 
-/- warning: finpartition.le -> Finpartition.le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) b a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) b a)
-Case conversion may be inaccurate. Consider using '#align finpartition.le Finpartition.leₓ'. -/
 protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
   (le_sup hb).trans P.supParts.le
 #align finpartition.le Finpartition.le
 
-/- warning: finpartition.ne_bot -> Finpartition.ne_bot is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align finpartition.ne_bot Finpartition.ne_botₓ'. -/
 theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ := fun h => P.not_bot_mem <| h.subst hb
 #align finpartition.ne_bot Finpartition.ne_bot
 
-/- warning: finpartition.disjoint -> Finpartition.disjoint is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), Set.PairwiseDisjoint.{u1, u1} α α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)) _inst_2 ((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} α))) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (id.{succ u1} α)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), Set.PairwiseDisjoint.{u1, u1} α α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)) _inst_2 (Finset.toSet.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (id.{succ u1} α)
-Case conversion may be inaccurate. Consider using '#align finpartition.disjoint Finpartition.disjointₓ'. -/
 protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
   P.SupIndep.PairwiseDisjoint
 #align finpartition.disjoint Finpartition.disjoint
 
 variable {P}
 
-/- warning: finpartition.parts_eq_empty_iff -> Finpartition.parts_eq_empty_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))) (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_eq_empty_iff Finpartition.parts_eq_empty_iffₓ'. -/
 theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ :=
   by
   simp_rw [← P.sup_parts]
@@ -238,22 +172,10 @@ theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ :=
   · rwa [← le_bot_iff.1 ((le_sup hb).trans h.le)]
 #align finpartition.parts_eq_empty_iff Finpartition.parts_eq_empty_iff
 
-/- warning: finpartition.parts_nonempty_iff -> Finpartition.parts_nonempty_iff is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_nonempty_iff Finpartition.parts_nonempty_iffₓ'. -/
 theorem parts_nonempty_iff : P.parts.Nonempty ↔ a ≠ ⊥ := by
   rw [nonempty_iff_ne_empty, not_iff_not, parts_eq_empty_iff]
 #align finpartition.parts_nonempty_iff Finpartition.parts_nonempty_iff
 
-/- warning: finpartition.parts_nonempty -> Finpartition.parts_nonempty is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P))
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_nonempty Finpartition.parts_nonemptyₓ'. -/
 theorem parts_nonempty (P : Finpartition a) (ha : a ≠ ⊥) : P.parts.Nonempty :=
   parts_nonempty_iff.2 ha
 #align finpartition.parts_nonempty Finpartition.parts_nonempty
@@ -263,12 +185,6 @@ instance : Unique (Finpartition (⊥ : α)) :=
     uniq := fun P => by ext a;
       exact iff_of_false (fun h => P.ne_bot h <| le_bot_iff.1 <| P.le h) (not_mem_empty a) }
 
-/- warning: is_atom.unique_finpartition -> IsAtom.uniqueFinpartition is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {ha : Finpartition.{u1} α _inst_1 _inst_2 a}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
-Case conversion may be inaccurate. Consider using '#align is_atom.unique_finpartition IsAtom.uniqueFinpartitionₓ'. -/
 -- See note [reducible non instances]
 /-- There's a unique partition of an atom. -/
 @[reducible]
@@ -330,12 +246,6 @@ instance [Decidable (a = ⊥)] : OrderTop (Finpartition a)
       simpa [h, P.ne_bot hx] using P.le hx
     · exact fun b hb => ⟨a, mem_singleton_self _, P.le hb⟩
 
-/- warning: finpartition.parts_top_subset -> Finpartition.parts_top_subset is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instLEFinpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instOrderTopFinpartitionInstLEFinpartition.{u1} α _inst_1 _inst_2 a _inst_3)))) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a)
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_top_subset Finpartition.parts_top_subsetₓ'. -/
 theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a).parts ⊆ {a} :=
   by
   intro b hb
@@ -346,12 +256,6 @@ theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a)
   · exact hb
 #align finpartition.parts_top_subset Finpartition.parts_top_subset
 
-/- warning: finpartition.parts_top_subsingleton -> Finpartition.parts_top_subsingleton is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], Set.Subsingleton.{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} α))) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], Set.Subsingleton.{u1} α (Finset.toSet.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instLEFinpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instOrderTopFinpartitionInstLEFinpartition.{u1} α _inst_1 _inst_2 a _inst_3)))))
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_top_subsingleton Finpartition.parts_top_subsingletonₓ'. -/
 theorem parts_top_subsingleton (a : α) [Decidable (a = ⊥)] :
     ((⊤ : Finpartition a).parts : Set α).Subsingleton :=
   Set.subsingleton_of_subset_singleton fun b hb => mem_singleton.1 <| parts_top_subset _ hb
@@ -390,12 +294,6 @@ instance : Inf (Finpartition a) :=
           rfl
         · rw [P.sup_parts, Q.sup_parts, inf_idem])⟩
 
-/- warning: finpartition.parts_inf -> Finpartition.parts_inf is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasInf.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instInfFinpartitionToLattice.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (Lattice.toInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align finpartition.parts_inf Finpartition.parts_infₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem parts_inf (P Q : Finpartition a) :
@@ -429,12 +327,6 @@ instance : SemilatticeInf (Finpartition a) :=
 
 end Inf
 
-/- warning: finpartition.exists_le_of_le -> Finpartition.exists_le_of_le is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) -> (Exists.{succ u1} α (fun (c : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) c b)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instLEFinpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) -> (Exists.{succ u1} α (fun (c : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) c b)))
-Case conversion may be inaccurate. Consider using '#align finpartition.exists_le_of_le Finpartition.exists_le_of_leₓ'. -/
 theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b ∈ Q.parts) :
     ∃ c ∈ P.parts, c ≤ b := by
   by_contra' H
@@ -447,12 +339,6 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
   exact H _ hc hcd
 #align finpartition.exists_le_of_le Finpartition.exists_le_of_le
 
-/- warning: finpartition.card_mono -> Finpartition.card_mono is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instLEFinpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (LE.le.{0} Nat instLENat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)))
-Case conversion may be inaccurate. Consider using '#align finpartition.card_mono Finpartition.card_monoₓ'. -/
 theorem card_mono {a : α} {P Q : Finpartition a} (h : P ≤ Q) : Q.parts.card ≤ P.parts.card := by
   classical
     have : ∀ b ∈ Q.parts, ∃ c ∈ P.parts, c ≤ b := fun b => exists_le_of_le h
@@ -471,12 +357,6 @@ section Bind
 
 variable {P : Finpartition a} {Q : ∀ i ∈ P.parts, Finpartition i}
 
-/- warning: finpartition.bind -> Finpartition.bind is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), (forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), (forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a)
-Case conversion may be inaccurate. Consider using '#align finpartition.bind Finpartition.bindₓ'. -/
 /-- Given a finpartition `P` of `a` and finpartitions of each part of `P`, this yields the
 finpartition of `a` obtained by juxtaposing all the subpartitions. -/
 @[simps]
@@ -502,12 +382,6 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
 
-/- warning: finpartition.mem_bind -> Finpartition.mem_bind is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Exists.{succ u1} α (fun (A : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (hA : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 A (Q A hA)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Exists.{succ u1} α (fun (A : α) => Exists.{0} (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (hA : Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 A (Q A hA)))))
-Case conversion may be inaccurate. Consider using '#align finpartition.mem_bind Finpartition.mem_bindₓ'. -/
 theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
   by
   rw [bind, mem_bUnion]
@@ -518,12 +392,6 @@ theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
     exact ⟨⟨A, hA⟩, mem_attach _ ⟨A, hA⟩, h⟩
 #align finpartition.mem_bind Finpartition.mem_bind
 
-/- warning: finpartition.card_bind -> Finpartition.card_bind is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} (Q : forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)), Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Finset.sum.{0, u1} Nat (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) Nat.addCommMonoid (Finset.attach.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (A : Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) => Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 (Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Q (Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A)))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} (Q : forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)), Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Finset.sum.{0, u1} Nat (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) Nat.addCommMonoid (Finset.attach.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (A : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) => Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Q (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Subtype.property.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A)))))
-Case conversion may be inaccurate. Consider using '#align finpartition.card_bind Finpartition.card_bindₓ'. -/
 theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
     (P.bind Q).parts.card = ∑ A in P.parts.attach, (Q _ A.2).parts.card :=
   by
@@ -540,12 +408,6 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
 
 end Bind
 
-/- warning: finpartition.extend -> Finpartition.extend is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
-Case conversion may be inaccurate. Consider using '#align finpartition.extend Finpartition.extendₓ'. -/
 /-- Adds `b` to a finpartition of `a` to make a finpartition of `a ⊔ b`. -/
 @[simps]
 def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a ⊔ b = c) : Finpartition c
@@ -558,12 +420,6 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
   not_bot_mem h := (mem_insert.1 h).elim hb.symm P.not_bot_mem
 #align finpartition.extend Finpartition.extend
 
-/- warning: finpartition.card_extend -> Finpartition.card_extend is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
-Case conversion may be inaccurate. Consider using '#align finpartition.card_extend Finpartition.card_extendₓ'. -/
 theorem card_extend (P : Finpartition a) (b c : α) {hb : b ≠ ⊥} {hab : Disjoint a b}
     {hc : a ⊔ b = c} : (P.extend hb hab hc).parts.card = P.parts.card + 1 :=
   card_insert_of_not_mem fun h => hb <| hab.symm.eq_bot_of_le <| P.le h
@@ -575,12 +431,6 @@ section GeneralizedBooleanAlgebra
 
 variable [GeneralizedBooleanAlgebra α] [DecidableEq α] {a b c : α} (P : Finpartition a)
 
-/- warning: finpartition.avoid -> Finpartition.avoid is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α}, (Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a) -> (forall (b : α), Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) a b))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α}, (Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a) -> (forall (b : α), Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toSDiff.{u1} α _inst_1) a b))
-Case conversion may be inaccurate. Consider using '#align finpartition.avoid Finpartition.avoidₓ'. -/
 /-- Restricts a finpartition to avoid a given element. -/
 @[simps]
 def avoid (b : α) : Finpartition (a \ b) :=
@@ -588,12 +438,6 @@ def avoid (b : α) : Finpartition (a \ b) :=
     (by rw [sup_image, comp.left_id, Finset.sup_sdiff_right, ← id_def, P.sup_parts])
 #align finpartition.avoid Finpartition.avoid
 
-/- warning: finpartition.mem_avoid -> Finpartition.mem_avoid is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α} (P : Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) a b) (Finpartition.avoid.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a P b))) (Exists.{succ u1} α (fun (d : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) => And (Not (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)))))) d b)) (Eq.{succ u1} α (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) d b) c))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α} (P : Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a), Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toSDiff.{u1} α _inst_1) a b) (Finpartition.avoid.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a P b))) (Exists.{succ u1} α (fun (d : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) (And (Not (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)))))) d b)) (Eq.{succ u1} α (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toSDiff.{u1} α _inst_1) d b) c))))
-Case conversion may be inaccurate. Consider using '#align finpartition.mem_avoid Finpartition.mem_avoidₓ'. -/
 @[simp]
 theorem mem_avoid : c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧ d \ b = c :=
   by
@@ -615,42 +459,18 @@ namespace Finpartition
 
 variable [DecidableEq α] {s t : Finset α} (P : Finpartition s)
 
-/- warning: finpartition.nonempty_of_mem_parts -> Finpartition.nonempty_of_mem_parts is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s) {a : Finset.{u1} α}, (Membership.Mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.hasMem.{u1} (Finset.{u1} α)) a (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P)) -> (Finset.Nonempty.{u1} α a)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s) {a : Finset.{u1} α}, (Membership.mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.instMembershipFinset.{u1} (Finset.{u1} α)) a (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P)) -> (Finset.Nonempty.{u1} α a)
-Case conversion may be inaccurate. Consider using '#align finpartition.nonempty_of_mem_parts Finpartition.nonempty_of_mem_partsₓ'. -/
 theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty :=
   nonempty_iff_ne_empty.2 <| P.ne_bot ha
 #align finpartition.nonempty_of_mem_parts Finpartition.nonempty_of_mem_parts
 
-/- warning: finpartition.exists_mem -> Finpartition.exists_mem is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s) {a : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a s) -> (Exists.{succ u1} (Finset.{u1} α) (fun (t : Finset.{u1} α) => Exists.{0} (Membership.Mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.hasMem.{u1} (Finset.{u1} α)) t (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P)) (fun (H : Membership.Mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.hasMem.{u1} (Finset.{u1} α)) t (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P)) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) a t)))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s) {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Exists.{succ u1} (Finset.{u1} α) (fun (t : Finset.{u1} α) => And (Membership.mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.instMembershipFinset.{u1} (Finset.{u1} α)) t (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P)) (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a t)))
-Case conversion may be inaccurate. Consider using '#align finpartition.exists_mem Finpartition.exists_memₓ'. -/
 theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha;
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
-/- warning: finpartition.bUnion_parts -> Finpartition.biUnion_parts is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
-Case conversion may be inaccurate. Consider using '#align finpartition.bUnion_parts Finpartition.biUnion_partsₓ'. -/
 theorem biUnion_parts : P.parts.biUnion id = s :=
   (sup_eq_biUnion _ _).symm.trans P.supParts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 
-/- warning: finpartition.sum_card_parts -> Finpartition.sum_card_parts is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s), Eq.{1} Nat (Finset.sum.{0, u1} Nat (Finset.{u1} α) Nat.addCommMonoid (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P) (fun (i : Finset.{u1} α) => Finset.card.{u1} α i)) (Finset.card.{u1} α s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), Eq.{1} Nat (Finset.sum.{0, u1} Nat (Finset.{u1} α) Nat.addCommMonoid (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P) (fun (i : Finset.{u1} α) => Finset.card.{u1} α i)) (Finset.card.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align finpartition.sum_card_parts Finpartition.sum_card_partsₓ'. -/
 theorem sum_card_parts : (∑ i in P.parts, i.card) = s.card :=
   by
   convert congr_arg Finset.card P.bUnion_parts
@@ -697,24 +517,12 @@ instance (s : Finset α) : OrderBot (Finpartition s) :=
       obtain ⟨t, ht, hat⟩ := P.exists_mem ha
       exact ⟨t, ht, singleton_subset_iff.2 hat⟩ }
 
-/- warning: finpartition.card_parts_le_card -> Finpartition.card_parts_le_card is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s), LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} (Finset.{u1} α) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P)) (Finset.card.{u1} α s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), LE.le.{0} Nat instLENat (Finset.card.{u1} (Finset.{u1} α) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P)) (Finset.card.{u1} α s)
-Case conversion may be inaccurate. Consider using '#align finpartition.card_parts_le_card Finpartition.card_parts_le_cardₓ'. -/
 theorem card_parts_le_card (P : Finpartition s) : P.parts.card ≤ s.card := by rw [← card_bot s];
   exact card_mono bot_le
 #align finpartition.card_parts_le_card Finpartition.card_parts_le_card
 
 section Atomise
 
-/- warning: finpartition.atomise -> Finpartition.atomise is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] (s : Finset.{u1} α), (Finset.{u1} (Finset.{u1} α)) -> (Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] (s : Finset.{u1} α), (Finset.{u1} (Finset.{u1} α)) -> (Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s)
-Case conversion may be inaccurate. Consider using '#align finpartition.atomise Finpartition.atomiseₓ'. -/
 /-- Cuts `s` along the finsets in `F`: Two elements of `s` will be in the same part if they are
 in the same finsets of `F`. -/
 def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
Diff
@@ -260,8 +260,7 @@ theorem parts_nonempty (P : Finpartition a) (ha : a ≠ ⊥) : P.parts.Nonempty
 
 instance : Unique (Finpartition (⊥ : α)) :=
   { Finpartition.inhabited α with
-    uniq := fun P => by
-      ext a
+    uniq := fun P => by ext a;
       exact iff_of_false (fun h => P.ne_bot h <| le_bot_iff.1 <| P.le h) (not_mem_empty a) }
 
 /- warning: is_atom.unique_finpartition -> IsAtom.uniqueFinpartition is a dubious translation:
@@ -632,9 +631,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s) {a : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a s) -> (Exists.{succ u1} (Finset.{u1} α) (fun (t : Finset.{u1} α) => And (Membership.mem.{u1, u1} (Finset.{u1} α) (Finset.{u1} (Finset.{u1} α)) (Finset.instMembershipFinset.{u1} (Finset.{u1} α)) t (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P)) (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) a t)))
 Case conversion may be inaccurate. Consider using '#align finpartition.exists_mem Finpartition.exists_memₓ'. -/
-theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t :=
-  by
-  simp_rw [← P.sup_parts] at ha
+theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by simp_rw [← P.sup_parts] at ha;
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
@@ -706,9 +703,7 @@ lean 3 declaration is
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), LE.le.{0} Nat instLENat (Finset.card.{u1} (Finset.{u1} α) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P)) (Finset.card.{u1} α s)
 Case conversion may be inaccurate. Consider using '#align finpartition.card_parts_le_card Finpartition.card_parts_le_cardₓ'. -/
-theorem card_parts_le_card (P : Finpartition s) : P.parts.card ≤ s.card :=
-  by
-  rw [← card_bot s]
+theorem card_parts_le_card (P : Finpartition s) : P.parts.card ≤ s.card := by rw [← card_bot s];
   exact card_mono bot_le
 #align finpartition.card_parts_le_card Finpartition.card_parts_le_card
 
Diff
@@ -66,7 +66,12 @@ open BigOperators
 
 variable {α : Type _}
 
-#print Finpartition /-
+/- warning: finpartition -> Finpartition is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], α -> Type.{u1}
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], α -> Type.{u1}
+Case conversion may be inaccurate. Consider using '#align finpartition Finpartitionₓ'. -/
 /-- A finite partition of `a : α` is a pairwise disjoint finite set of elements whose supremum is
 `a`. We forbid `⊥` as a part. -/
 @[ext]
@@ -77,7 +82,6 @@ structure Finpartition [Lattice α] [OrderBot α] (a : α) where
   not_bot_mem : ⊥ ∉ parts
   deriving DecidableEq
 #align finpartition Finpartition
--/
 
 attribute [protected] Finpartition.supIndep
 
@@ -87,7 +91,12 @@ section Lattice
 
 variable [Lattice α] [OrderBot α]
 
-#print Finpartition.ofErase /-
+/- warning: finpartition.of_erase -> Finpartition.ofErase is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (parts : Finset.{u1} α), (Finset.SupIndep.{u1, u1} α α _inst_1 _inst_2 parts (id.{succ u1} α)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) a) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (parts : Finset.{u1} α), (Finset.SupIndep.{u1, u1} α α _inst_1 _inst_2 parts (id.{succ u1} α)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) a) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
+Case conversion may be inaccurate. Consider using '#align finpartition.of_erase Finpartition.ofEraseₓ'. -/
 /-- A `finpartition` constructor which does not insist on `⊥` not being a part. -/
 @[simps]
 def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.SupIndep id)
@@ -98,9 +107,13 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
   supParts := (sup_erase_bot _).trans sup_parts
   not_bot_mem := not_mem_erase _ _
 #align finpartition.of_erase Finpartition.ofErase
--/
 
-#print Finpartition.ofSubset /-
+/- warning: finpartition.of_subset -> Finpartition.ofSubset is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {parts : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) parts (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {parts : Finset.{u1} α}, (HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) parts (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Eq.{succ u1} α (Finset.sup.{u1, u1} α α (Lattice.toSemilatticeSup.{u1} α _inst_1) _inst_2 parts (id.{succ u1} α)) b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
+Case conversion may be inaccurate. Consider using '#align finpartition.of_subset Finpartition.ofSubsetₓ'. -/
 /-- A `finpartition` constructor from a bigger existing finpartition. -/
 @[simps]
 def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts)
@@ -110,9 +123,13 @@ def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts
     supParts
     not_bot_mem := fun h => P.not_bot_mem (subset h) }
 #align finpartition.of_subset Finpartition.ofSubset
--/
 
-#print Finpartition.copy /-
+/- warning: finpartition.copy -> Finpartition.copy is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α}, (Finpartition.{u1} α _inst_1 _inst_2 a) -> (Eq.{succ u1} α a b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {b : α}, (Finpartition.{u1} α _inst_1 _inst_2 a) -> (Eq.{succ u1} α a b) -> (Finpartition.{u1} α _inst_1 _inst_2 b)
+Case conversion may be inaccurate. Consider using '#align finpartition.copy Finpartition.copyₓ'. -/
 /-- Changes the type of a finpartition to an equal one. -/
 @[simps]
 def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
@@ -122,13 +139,12 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
   supParts := h ▸ P.supParts
   not_bot_mem := P.not_bot_mem
 #align finpartition.copy Finpartition.copy
--/
 
 variable (α)
 
 /- warning: finpartition.empty -> Finpartition.empty is a dubious translation:
 lean 3 declaration is
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))
+  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))
 but is expected to have type
   forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))
 Case conversion may be inaccurate. Consider using '#align finpartition.empty Finpartition.emptyₓ'. -/
@@ -147,7 +163,7 @@ instance : Inhabited (Finpartition (⊥ : α)) :=
 
 /- warning: finpartition.default_eq_empty -> Finpartition.default_eq_empty is a dubious translation:
 lean 3 declaration is
-  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Eq.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Inhabited.default.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Finpartition.inhabited.{u1} α _inst_1 _inst_2)) (Finpartition.empty.{u1} α _inst_1 _inst_2)
+  forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Eq.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Inhabited.default.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Finpartition.inhabited.{u1} α _inst_1 _inst_2)) (Finpartition.empty.{u1} α _inst_1 _inst_2)
 but is expected to have type
   forall (α : Type.{u1}) [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))], Eq.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Inhabited.default.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) (Finpartition.instInhabitedFinpartitionBotToBotToLEToPreorderToPartialOrderToSemilatticeInf.{u1} α _inst_1 _inst_2)) (Finpartition.empty.{u1} α _inst_1 _inst_2)
 Case conversion may be inaccurate. Consider using '#align finpartition.default_eq_empty Finpartition.default_eq_emptyₓ'. -/
@@ -160,7 +176,7 @@ variable {α} {a : α}
 
 /- warning: finpartition.indiscrete -> Finpartition.indiscrete is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finpartition.{u1} α _inst_1 _inst_2 a)
 Case conversion may be inaccurate. Consider using '#align finpartition.indiscrete Finpartition.indiscreteₓ'. -/
@@ -176,32 +192,40 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
 
 variable (P : Finpartition a)
 
-#print Finpartition.le /-
+/- warning: finpartition.le -> Finpartition.le is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) b a)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) b a)
+Case conversion may be inaccurate. Consider using '#align finpartition.le Finpartition.leₓ'. -/
 protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
   (le_sup hb).trans P.supParts.le
 #align finpartition.le Finpartition.le
--/
 
 /- warning: finpartition.ne_bot -> Finpartition.ne_bot is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a) {b : α}, (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align finpartition.ne_bot Finpartition.ne_botₓ'. -/
 theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ := fun h => P.not_bot_mem <| h.subst hb
 #align finpartition.ne_bot Finpartition.ne_bot
 
-#print Finpartition.disjoint /-
+/- warning: finpartition.disjoint -> Finpartition.disjoint is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), Set.PairwiseDisjoint.{u1, u1} α α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)) _inst_2 ((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} α))) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (id.{succ u1} α)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), Set.PairwiseDisjoint.{u1, u1} α α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)) _inst_2 (Finset.toSet.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (id.{succ u1} α)
+Case conversion may be inaccurate. Consider using '#align finpartition.disjoint Finpartition.disjointₓ'. -/
 protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
   P.SupIndep.PairwiseDisjoint
 #align finpartition.disjoint Finpartition.disjoint
--/
 
 variable {P}
 
 /- warning: finpartition.parts_eq_empty_iff -> Finpartition.parts_eq_empty_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.hasEmptyc.{u1} α))) (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a P) (EmptyCollection.emptyCollection.{u1} (Finset.{u1} α) (Finset.instEmptyCollectionFinset.{u1} α))) (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_eq_empty_iff Finpartition.parts_eq_empty_iffₓ'. -/
@@ -216,7 +240,7 @@ theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ :=
 
 /- warning: finpartition.parts_nonempty_iff -> Finpartition.parts_nonempty_iff is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {P : Finpartition.{u1} α _inst_1 _inst_2 a}, Iff (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P)) (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_nonempty_iff Finpartition.parts_nonempty_iffₓ'. -/
@@ -226,7 +250,7 @@ theorem parts_nonempty_iff : P.parts.Nonempty ↔ a ≠ ⊥ := by
 
 /- warning: finpartition.parts_nonempty -> Finpartition.parts_nonempty is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} (P : Finpartition.{u1} α _inst_1 _inst_2 a), (Ne.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2))) -> (Finset.Nonempty.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a P))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_nonempty Finpartition.parts_nonemptyₓ'. -/
@@ -242,7 +266,7 @@ instance : Unique (Finpartition (⊥ : α)) :=
 
 /- warning: is_atom.unique_finpartition -> IsAtom.uniqueFinpartition is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {ha : Finpartition.{u1} α _inst_1 _inst_2 a}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
 Case conversion may be inaccurate. Consider using '#align is_atom.unique_finpartition IsAtom.uniqueFinpartitionₓ'. -/
@@ -309,7 +333,7 @@ instance [Decidable (a = ⊥)] : OrderTop (Finpartition a)
 
 /- warning: finpartition.parts_top_subset -> Finpartition.parts_top_subset is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.hasSubset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.hasSingleton.{u1} α) a)
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], HasSubset.Subset.{u1} (Finset.{u1} α) (Finset.instHasSubsetFinset.{u1} α) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instLEFinpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instOrderTopFinpartitionInstLEFinpartition.{u1} α _inst_1 _inst_2 a _inst_3)))) (Singleton.singleton.{u1, u1} α (Finset.{u1} α) (Finset.instSingletonFinset.{u1} α) a)
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_top_subset Finpartition.parts_top_subsetₓ'. -/
@@ -325,7 +349,7 @@ theorem parts_top_subset (a : α) [Decidable (a = ⊥)] : (⊤ : Finpartition a)
 
 /- warning: finpartition.parts_top_subsingleton -> Finpartition.parts_top_subsingleton is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], Set.Subsingleton.{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} α))) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))))
+  forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], Set.Subsingleton.{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} α))) (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toHasTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.hasLe.{u1} α _inst_1 _inst_2 a) (Finpartition.orderTop.{u1} α _inst_1 _inst_2 a _inst_3)))))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] (a : α) [_inst_3 : Decidable (Eq.{succ u1} α a (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1)))) _inst_2)))], Set.Subsingleton.{u1} α (Finset.toSet.{u1} α (Finpartition.parts.{u1} α _inst_1 _inst_2 a (Top.top.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (OrderTop.toTop.{u1} (Finpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instLEFinpartition.{u1} α _inst_1 _inst_2 a) (Finpartition.instOrderTopFinpartitionInstLEFinpartition.{u1} α _inst_1 _inst_2 a _inst_3)))))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_top_subsingleton Finpartition.parts_top_subsingletonₓ'. -/
@@ -369,7 +393,7 @@ instance : Inf (Finpartition a) :=
 
 /- warning: finpartition.parts_inf -> Finpartition.parts_inf is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasInf.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasInf.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instInfFinpartitionToLattice.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (Lattice.toInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_inf Finpartition.parts_infₓ'. -/
@@ -408,7 +432,7 @@ end Inf
 
 /- warning: finpartition.exists_le_of_le -> Finpartition.exists_le_of_le is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) -> (Exists.{succ u1} α (fun (c : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) c b)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) -> (Exists.{succ u1} α (fun (c : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) c b)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instLEFinpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) -> (Exists.{succ u1} α (fun (c : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) c b)))
 Case conversion may be inaccurate. Consider using '#align finpartition.exists_le_of_le Finpartition.exists_le_of_leₓ'. -/
@@ -426,7 +450,7 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
 
 /- warning: finpartition.card_mono -> Finpartition.card_mono is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasLe.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a}, (LE.le.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instLEFinpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) P Q) -> (LE.le.{0} Nat instLENat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q)) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)))
 Case conversion may be inaccurate. Consider using '#align finpartition.card_mono Finpartition.card_monoₓ'. -/
@@ -448,7 +472,12 @@ section Bind
 
 variable {P : Finpartition a} {Q : ∀ i ∈ P.parts, Finpartition i}
 
-#print Finpartition.bind /-
+/- warning: finpartition.bind -> Finpartition.bind is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), (forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), (forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a)
+Case conversion may be inaccurate. Consider using '#align finpartition.bind Finpartition.bindₓ'. -/
 /-- Given a finpartition `P` of `a` and finpartitions of each part of `P`, this yields the
 finpartition of `a` obtained by juxtaposing all the subpartitions. -/
 @[simps]
@@ -473,9 +502,13 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
--/
 
-#print Finpartition.mem_bind /-
+/- warning: finpartition.mem_bind -> Finpartition.mem_bind is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)}, Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Exists.{succ u1} α (fun (A : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (hA : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 A (Q A hA)))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} {Q : forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)}, Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Exists.{succ u1} α (fun (A : α) => Exists.{0} (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (hA : Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) A (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) b (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 A (Q A hA)))))
+Case conversion may be inaccurate. Consider using '#align finpartition.mem_bind Finpartition.mem_bindₓ'. -/
 theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
   by
   rw [bind, mem_bUnion]
@@ -485,9 +518,13 @@ theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
   · rintro ⟨A, hA, h⟩
     exact ⟨⟨A, hA⟩, mem_attach _ ⟨A, hA⟩, h⟩
 #align finpartition.mem_bind Finpartition.mem_bind
--/
 
-#print Finpartition.card_bind /-
+/- warning: finpartition.card_bind -> Finpartition.card_bind is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} (Q : forall (i : α), (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)), Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Finset.sum.{0, u1} Nat (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) Nat.addCommMonoid (Finset.attach.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (A : Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) => Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 (Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Q (Subtype.val.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Subtype.property.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A)))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a} (Q : forall (i : α), (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) i (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 i)), Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Finpartition.bind.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a P Q))) (Finset.sum.{0, u1} Nat (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) Nat.addCommMonoid (Finset.attach.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (fun (A : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P))) => Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Q (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A) (Subtype.property.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) x (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) A)))))
+Case conversion may be inaccurate. Consider using '#align finpartition.card_bind Finpartition.card_bindₓ'. -/
 theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
     (P.bind Q).parts.card = ∑ A in P.parts.attach, (Q _ A.2).parts.card :=
   by
@@ -501,13 +538,12 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
       (eq_bot_iff.2 <|
         (le_inf ((Q b hb).le hdb) <| (Q c hc).le hdc).trans <| (P.disjoint hb hc hbc).le_bot)
 #align finpartition.card_bind Finpartition.card_bind
--/
 
 end Bind
 
 /- warning: finpartition.extend -> Finpartition.extend is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
 Case conversion may be inaccurate. Consider using '#align finpartition.extend Finpartition.extendₓ'. -/
@@ -525,7 +561,7 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
 
 /- warning: finpartition.card_extend -> Finpartition.card_extend is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
 Case conversion may be inaccurate. Consider using '#align finpartition.card_extend Finpartition.card_extendₓ'. -/
@@ -555,7 +591,7 @@ def avoid (b : α) : Finpartition (a \ b) :=
 
 /- warning: finpartition.mem_avoid -> Finpartition.mem_avoid is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α} (P : Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) a b) (Finpartition.avoid.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a P b))) (Exists.{succ u1} α (fun (d : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) => And (Not (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)))))) d b)) (Eq.{succ u1} α (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) d b) c))))
+  forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α} (P : Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a), Iff (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) c (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) a b) (Finpartition.avoid.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a P b))) (Exists.{succ u1} α (fun (d : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) (fun (H : Membership.Mem.{u1, u1} α (Finset.{u1} α) (Finset.hasMem.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) => And (Not (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)))))) d b)) (Eq.{succ u1} α (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toHasSdiff.{u1} α _inst_1) d b) c))))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : GeneralizedBooleanAlgebra.{u1} α] [_inst_2 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α} (P : Finpartition.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a), Iff (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) c (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toSDiff.{u1} α _inst_1) a b) (Finpartition.avoid.{u1} α _inst_1 (fun (a : α) (b : α) => _inst_2 a b) a P b))) (Exists.{succ u1} α (fun (d : α) => And (Membership.mem.{u1, u1} α (Finset.{u1} α) (Finset.instMembershipFinset.{u1} α) d (Finpartition.parts.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)) (GeneralizedBooleanAlgebra.toOrderBot.{u1} α _inst_1) a P)) (And (Not (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (GeneralizedCoheytingAlgebra.toLattice.{u1} α (GeneralizedBooleanAlgebra.toGeneralizedCoheytingAlgebra.{u1} α _inst_1)))))) d b)) (Eq.{succ u1} α (SDiff.sdiff.{u1} α (GeneralizedBooleanAlgebra.toSDiff.{u1} α _inst_1) d b) c))))
 Case conversion may be inaccurate. Consider using '#align finpartition.mem_avoid Finpartition.mem_avoidₓ'. -/
Diff
@@ -454,11 +454,11 @@ finpartition of `a` obtained by juxtaposing all the subpartitions. -/
 @[simps]
 def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finpartition a
     where
-  parts := P.parts.attach.bunionᵢ fun i => (Q i.1 i.2).parts
+  parts := P.parts.attach.biUnion fun i => (Q i.1 i.2).parts
   SupIndep := by
     rw [sup_indep_iff_pairwise_disjoint]
     rintro a ha b hb h
-    rw [Finset.mem_coe, Finset.mem_bunionᵢ] at ha hb
+    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb
     obtain ⟨⟨A, hA⟩, -, ha⟩ := ha
     obtain ⟨⟨B, hB⟩, -, hb⟩ := hb
     obtain rfl | hAB := eq_or_ne A B
@@ -469,7 +469,7 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     rw [eq_comm, ← Finset.sup_attach]
     exact sup_congr rfl fun b hb => (Q b.1 b.2).supParts.symm
   not_bot_mem h := by
-    rw [Finset.mem_bunionᵢ] at h
+    rw [Finset.mem_biUnion] at h
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
@@ -602,15 +602,15 @@ theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t :=
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
-/- warning: finpartition.bUnion_parts -> Finpartition.bunionᵢ_parts is a dubious translation:
+/- warning: finpartition.bUnion_parts -> Finpartition.biUnion_parts is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.lattice.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.orderBot.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.bunionᵢ.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
-Case conversion may be inaccurate. Consider using '#align finpartition.bUnion_parts Finpartition.bunionᵢ_partsₓ'. -/
-theorem bunionᵢ_parts : P.parts.bunionᵢ id = s :=
-  (sup_eq_bunionᵢ _ _).symm.trans P.supParts
-#align finpartition.bUnion_parts Finpartition.bunionᵢ_parts
+  forall {α : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} α] {s : Finset.{u1} α} (P : Finpartition.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s), Eq.{succ u1} (Finset.{u1} α) (Finset.biUnion.{u1, u1} (Finset.{u1} α) α (fun (a : α) (b : α) => _inst_1 a b) (Finpartition.parts.{u1} (Finset.{u1} α) (Finset.instLatticeFinset.{u1} α (fun (a : α) (b : α) => _inst_1 a b)) (Finset.instOrderBotFinsetToLEToPreorderPartialOrder.{u1} α) s P) (id.{succ u1} (Finset.{u1} α))) s
+Case conversion may be inaccurate. Consider using '#align finpartition.bUnion_parts Finpartition.biUnion_partsₓ'. -/
+theorem biUnion_parts : P.parts.biUnion id = s :=
+  (sup_eq_biUnion _ _).symm.trans P.supParts
+#align finpartition.bUnion_parts Finpartition.biUnion_parts
 
 /- warning: finpartition.sum_card_parts -> Finpartition.sum_card_parts is a dubious translation:
 lean 3 declaration is
@@ -744,9 +744,9 @@ theorem card_atomise_le : (atomise s F).parts.card ≤ 2 ^ F.card :=
 #align finpartition.card_atomise_le Finpartition.card_atomise_le
 -/
 
-#print Finpartition.bunionᵢ_filter_atomise /-
-theorem bunionᵢ_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
-    ((atomise s F).parts.filterₓ fun u => u ⊆ t ∧ u.Nonempty).bunionᵢ id = t :=
+#print Finpartition.biUnion_filter_atomise /-
+theorem biUnion_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
+    ((atomise s F).parts.filterₓ fun u => u ⊆ t ∧ u.Nonempty).biUnion id = t :=
   by
   ext a
   refine' mem_bUnion.trans ⟨fun ⟨u, hu, ha⟩ => (mem_filter.1 hu).2.1 ha, fun ha => _⟩
@@ -755,7 +755,7 @@ theorem bunionᵢ_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
   obtain ⟨Q, hQ, rfl⟩ := (mem_atomise.1 hu).2
   rw [mem_filter] at hau hb
   rwa [← hb.2 _ ht, hau.2 _ ht]
-#align finpartition.bUnion_filter_atomise Finpartition.bunionᵢ_filter_atomise
+#align finpartition.bUnion_filter_atomise Finpartition.biUnion_filter_atomise
 -/
 
 #print Finpartition.card_filter_atomise_le_two_pow /-
Diff
@@ -240,16 +240,16 @@ instance : Unique (Finpartition (⊥ : α)) :=
       ext a
       exact iff_of_false (fun h => P.ne_bot h <| le_bot_iff.1 <| P.le h) (not_mem_empty a) }
 
-/- warning: is_atom.unique_finpartition -> Finpartition.IsAtom.uniqueFinpartition is a dubious translation:
+/- warning: is_atom.unique_finpartition -> IsAtom.uniqueFinpartition is a dubious translation:
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : Lattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))))] {a : α} {ha : Finpartition.{u1} α _inst_1 _inst_2 a}, (IsAtom.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α _inst_1))) _inst_2 a) -> (Unique.{succ u1} (Finpartition.{u1} α _inst_1 _inst_2 a))
-Case conversion may be inaccurate. Consider using '#align is_atom.unique_finpartition Finpartition.IsAtom.uniqueFinpartitionₓ'. -/
+Case conversion may be inaccurate. Consider using '#align is_atom.unique_finpartition IsAtom.uniqueFinpartitionₓ'. -/
 -- See note [reducible non instances]
 /-- There's a unique partition of an atom. -/
 @[reducible]
-def Finpartition.IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
+def IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
     where
   default := indiscrete ha.1
   uniq P :=
@@ -262,7 +262,7 @@ def Finpartition.IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartitio
     obtain ⟨c, hc⟩ := P.parts_nonempty ha.1
     simp_rw [← h c hc]
     exact hc
-#align is_atom.unique_finpartition Finpartition.IsAtom.uniqueFinpartition
+#align is_atom.unique_finpartition IsAtom.uniqueFinpartition
 
 instance [Fintype α] [DecidableEq α] (a : α) : Fintype (Finpartition a) :=
   @Fintype.ofSurjective { p : Finset α // p.SupIndep id ∧ p.sup id = a ∧ ⊥ ∉ p } (Finpartition a) _
Diff
@@ -718,7 +718,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (Q «expr ⊆ » F) -/
 #print Finpartition.mem_atomise /-
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
Diff
@@ -347,7 +347,7 @@ section Inf
 variable [DecidableEq α] {a b c : α}
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-instance : HasInf (Finpartition a) :=
+instance : Inf (Finpartition a) :=
   ⟨fun P Q =>
     ofErase ((P.parts ×ˢ Q.parts).image fun bc => bc.1 ⊓ bc.2)
       (by
@@ -369,9 +369,9 @@ instance : HasInf (Finpartition a) :=
 
 /- warning: finpartition.parts_inf -> Finpartition.parts_inf is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (HasInf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasInf.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => HasInf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.hasInf.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (HasInf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instHasInfFinpartitionToLattice.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => HasInf.inf.{u1} α (Lattice.toHasInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Q : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a), Eq.{succ u1} (Finset.{u1} α) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a (Inf.inf.{u1} (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (Finpartition.instInfFinpartitionToLattice.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a) P Q)) (Finset.erase.{u1} α (fun (a : α) (b : α) => _inst_3 a b) (Finset.image.{u1, u1} (Prod.{u1, u1} α α) α (fun (a : α) (b : α) => _inst_3 a b) (fun (bc : Prod.{u1, u1} α α) => Inf.inf.{u1} α (Lattice.toInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)) (Prod.fst.{u1, u1} α α bc) (Prod.snd.{u1, u1} α α bc)) (Finset.product.{u1, u1} α α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P) (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a Q))) (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align finpartition.parts_inf Finpartition.parts_infₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -507,9 +507,9 @@ end Bind
 
 /- warning: finpartition.extend -> Finpartition.extend is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} {b : α} {c : α}, (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) -> (Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))) -> (Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b) -> (Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c) -> (Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c)
 Case conversion may be inaccurate. Consider using '#align finpartition.extend Finpartition.extendₓ'. -/
 /-- Adds `b` to a finpartition of `a` to make a finpartition of `a ⊔ b`. -/
 @[simps]
@@ -525,9 +525,9 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
 
 /- warning: finpartition.card_extend -> Finpartition.card_extend is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toHasBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
+  forall {α : Type.{u1}} [_inst_1 : DistribLattice.{u1} α] [_inst_2 : OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1)))))] [_inst_3 : DecidableEq.{succ u1} α] {a : α} (P : Finpartition.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a) (b : α) (c : α) {hb : Ne.{succ u1} α b (Bot.bot.{u1} α (OrderBot.toBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))))) _inst_2))} {hab : Disjoint.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) _inst_2 a b} {hc : Eq.{succ u1} α (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (Lattice.toSemilatticeSup.{u1} α (DistribLattice.toLattice.{u1} α _inst_1))) a b) c}, Eq.{1} Nat (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 c (Finpartition.extend.{u1} α _inst_1 _inst_2 (fun (a : α) (b : α) => _inst_3 a b) a b c P hb hab hc))) (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) (Finset.card.{u1} α (Finpartition.parts.{u1} α (DistribLattice.toLattice.{u1} α _inst_1) _inst_2 a P)) (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))
 Case conversion may be inaccurate. Consider using '#align finpartition.card_extend Finpartition.card_extendₓ'. -/
 theorem card_extend (P : Finpartition a) (b c : α) {hb : b ≠ ⊥} {hab : Disjoint a b}
     {hc : a ⊔ b = c} : (P.extend hb hab hc).parts.card = P.parts.card + 1 :=

Changes in mathlib4

mathlib3
mathlib4
chore: avoid id.def (adaptation for nightly-2024-03-27) (#11829)

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

Diff
@@ -304,8 +304,8 @@ instance : Inf (Finpartition a) :=
     ofErase ((P.parts ×ˢ Q.parts).image fun bc ↦ bc.1 ⊓ bc.2)
       (by
         rw [supIndep_iff_disjoint_erase]
-        simp only [mem_image, and_imp, exists_prop, forall_exists_index, id.def, Prod.exists,
-          mem_product, Finset.disjoint_sup_right, mem_erase, Ne.def]
+        simp only [mem_image, and_imp, exists_prop, forall_exists_index, id, Prod.exists,
+          mem_product, Finset.disjoint_sup_right, mem_erase, Ne]
         rintro _ x₁ y₁ hx₁ hy₁ rfl _ h x₂ y₂ hx₂ hy₂ rfl
         rcases eq_or_ne x₁ x₂ with (rfl | xdiff)
         · refine' Disjoint.mono inf_le_right inf_le_right (Q.disjoint hy₁ hy₂ _)
feat: Link finpartitions and setoids (#8735)

Co-authored-by: Yakov Pechersky <ypechersky@treeline.bio>

Diff
@@ -31,6 +31,8 @@ We provide many ways to build finpartitions:
 * `Finpartition.discrete`: The discrete finpartition of `s : Finset α` made of singletons.
 * `Finpartition.bind`: Puts together the finpartitions of the parts of a finpartition into a new
   finpartition.
+* `Finpartition.ofSetoid`: With `Fintype α`, constructs the finpartition of `univ : Finset α`
+  induced by the equivalence classes of `s : Setoid α`.
 * `Finpartition.atomise`: Makes a finpartition of `s : Finset α` by breaking `s` along all finsets
   in `F : Finset (Finset α)`. Two elements of `s` belong to the same part iff they belong to the
   same elements of `F`.
@@ -48,8 +50,6 @@ not because the parts of `P` and the parts of `Q` have the same elements that `P
 
 ## TODO
 
-Link `Finpartition` and `Setoid.isPartition`.
-
 The order is the wrong way around to make `Finpartition a` a graded order. Is it bad to depart from
 the literature and turn the order around?
 -/
@@ -119,6 +119,29 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
   not_bot_mem := P.not_bot_mem
 #align finpartition.copy Finpartition.copy
 
+/-- Transfer a finpartition over an order isomorphism. -/
+def map {β : Type*} [Lattice β] [OrderBot β] {a : α} (e : α ≃o β) (P : Finpartition a) :
+    Finpartition (e a) where
+  parts := P.parts.map e
+  supIndep u hu _ hb hbu _ hx hxu := by
+    rw [← map_symm_subset] at hu
+    simp only [mem_map_equiv] at hb
+    have := P.supIndep hu hb (by simp [hbu]) (map_rel e.symm hx) ?_
+    · rw [← e.symm.map_bot] at this
+      exact e.symm.map_rel_iff.mp this
+    · convert e.symm.map_rel_iff.mpr hxu
+      rw [map_finset_sup, sup_map]
+      rfl
+  sup_parts := by simp [← P.sup_parts]
+  not_bot_mem := by
+    rw [mem_map_equiv]
+    convert P.not_bot_mem
+    exact e.symm.map_bot
+
+@[simp]
+theorem parts_map {β : Type*} [Lattice β] [OrderBot β] {a : α} {e : α ≃o β} {P : Finpartition a} :
+    (P.map e).parts = P.parts.map e := rfl
+
 variable (α)
 
 /-- The empty finpartition. -/
@@ -466,7 +489,7 @@ theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty
 lemma eq_of_mem_parts (ht : t ∈ P.parts) (hu : u ∈ P.parts) (hat : a ∈ t) (hau : a ∈ u) : t = u :=
   P.disjoint.elim ht hu <| not_disjoint_iff.2 ⟨a, hat, hau⟩
 
-theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by
+theorem exists_mem (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by
   simp_rw [← P.sup_parts] at ha
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
@@ -475,6 +498,29 @@ theorem biUnion_parts : P.parts.biUnion id = s :=
   (sup_eq_biUnion _ _).symm.trans P.sup_parts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 
+theorem existsUnique_mem (ha : a ∈ s) : ∃! t, t ∈ P.parts ∧ a ∈ t := by
+  obtain ⟨t, ht, ht'⟩ := P.exists_mem ha
+  refine' ⟨t, ⟨ht, ht'⟩, _⟩
+  rintro u ⟨hu, hu'⟩
+  exact P.eq_of_mem_parts hu ht hu' ht'
+
+/-- The part of the finpartition that `a` lies in. -/
+def part (a : α) : Finset α := if ha : a ∈ s then choose (hp := P.existsUnique_mem ha) else ∅
+
+theorem part_mem (ha : a ∈ s) : P.part a ∈ P.parts := by simp [part, ha, choose_mem]
+
+theorem mem_part (ha : a ∈ s) : a ∈ P.part a := by simp [part, ha, choose_property]
+
+theorem part_surjOn : Set.SurjOn P.part s P.parts := fun p hp ↦ by
+  obtain ⟨x, hx⟩ := P.nonempty_of_mem_parts hp
+  have hx' := mem_of_subset ((le_sup hp).trans P.sup_parts.le) hx
+  use x, hx', (P.existsUnique_mem hx').unique ⟨P.part_mem hx', P.mem_part hx'⟩ ⟨hp, hx⟩
+
+theorem exists_subset_part_bijOn : ∃ r ⊆ s, Set.BijOn P.part r P.parts := by
+  obtain ⟨r, hrs, hr⟩ := P.part_surjOn.exists_bijOn_subset
+  lift r to Finset α using s.finite_toSet.subset hrs
+  exact ⟨r, mod_cast hrs, hr⟩
+
 theorem sum_card_parts : ∑ i in P.parts, i.card = s.card := by
   convert congr_arg Finset.card P.biUnion_parts
   rw [card_biUnion P.supIndep.pairwiseDisjoint]
@@ -519,6 +565,45 @@ theorem card_parts_le_card (P : Finpartition s) : P.parts.card ≤ s.card := by
   exact card_mono bot_le
 #align finpartition.card_parts_le_card Finpartition.card_parts_le_card
 
+variable [Fintype α]
+
+/-- A setoid over a finite type induces a finpartition of the type's elements,
+where the parts are the setoid's equivalence classes. -/
+def ofSetoid (s : Setoid α) [DecidableRel s.r] : Finpartition (univ : Finset α) where
+  parts := univ.image fun a => univ.filter (s.r a)
+  supIndep := by
+    simp only [mem_univ, forall_true_left, supIndep_iff_pairwiseDisjoint, Set.PairwiseDisjoint,
+      Set.Pairwise, coe_image, coe_univ, Set.image_univ, Set.mem_range, ne_eq,
+      forall_exists_index, forall_apply_eq_imp_iff]
+    intro _ _ q
+    contrapose! q
+    rw [not_disjoint_iff] at q
+    obtain ⟨c, ⟨d1, d2⟩⟩ := q
+    rw [id_eq, mem_filter] at d1 d2
+    ext y
+    simp only [mem_univ, forall_true_left, mem_filter, true_and]
+    exact ⟨fun r1 => s.trans (s.trans d2.2 (s.symm d1.2)) r1,
+           fun r2 => s.trans (s.trans d1.2 (s.symm d2.2)) r2⟩
+  sup_parts := by
+    ext a
+    simp only [sup_image, Function.id_comp, mem_univ, mem_sup, mem_filter, true_and, iff_true]
+    use a; exact s.refl a
+  not_bot_mem := by
+    rw [bot_eq_empty, mem_image, not_exists]
+    intro a
+    simp only [filter_eq_empty_iff, not_forall, mem_univ, forall_true_left, true_and, not_not]
+    use a; exact s.refl a
+
+theorem mem_part_ofSetoid_iff_rel {s : Setoid α} [DecidableRel s.r] {b : α} :
+    b ∈ (ofSetoid s).part a ↔ s.r a b := by
+  simp_rw [part, ofSetoid, mem_univ, reduceDite]
+  generalize_proofs H
+  have := choose_spec _ _ H
+  simp only [mem_univ, mem_image, true_and] at this
+  obtain ⟨⟨_, hc⟩, this⟩ := this
+  simp only [← hc, mem_univ, mem_filter, true_and] at this ⊢
+  exact ⟨s.trans (s.symm this), s.trans this⟩
+
 section Atomise
 
 /-- Cuts `s` along the finsets in `F`: Two elements of `s` will be in the same part if they are
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11813)
Diff
@@ -398,7 +398,7 @@ theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
   rintro ⟨b, hb⟩ - ⟨c, hc⟩ - hbc
   rw [Finset.disjoint_left]
   rintro d hdb hdc
-  rw [Ne.def, Subtype.mk_eq_mk] at hbc
+  rw [Ne, Subtype.mk_eq_mk] at hbc
   exact
     (Q b hb).ne_bot hdb
       (eq_bot_iff.2 <|
@@ -441,7 +441,7 @@ def avoid (b : α) : Finpartition (a \ b) :=
 
 @[simp]
 theorem mem_avoid : c ∈ (P.avoid b).parts ↔ ∃ d ∈ P.parts, ¬d ≤ b ∧ d \ b = c := by
-  simp only [avoid, ofErase, mem_erase, Ne.def, mem_image, exists_prop, ← exists_and_left,
+  simp only [avoid, ofErase, mem_erase, Ne, mem_image, exists_prop, ← exists_and_left,
     @and_left_comm (c ≠ ⊥)]
   refine' exists_congr fun d ↦ and_congr_right' <| and_congr_left _
   rintro rfl
chore: simplify some proofs for the 2024-03-16 nightly (#11547)

Some small changes to adapt to the 2024-03-16 nightly that can land in advance.

Diff
@@ -436,7 +436,7 @@ def avoid (b : α) : Finpartition (a \ b) :=
   ofErase
     (P.parts.image (· \ b))
     (P.disjoint.image_finset_of_le fun a ↦ sdiff_le).supIndep
-    (by rw [sup_image, id_comp, Finset.sup_sdiff_right, ← id_def, P.sup_parts])
+    (by rw [sup_image, id_comp, Finset.sup_sdiff_right, ← Function.id_def, P.sup_parts])
 #align finpartition.avoid Finpartition.avoid
 
 @[simp]
chore: tidy various files (#11490)
Diff
@@ -557,12 +557,9 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
--- Porting note:
-/- ./././Mathport/Syntax/Translate/Basic.lean:632:2: warning: expanding binder collection
-   (Q «expr ⊆ » F) -/
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
-      t.Nonempty ∧ ∃ (Q : _) (_ : Q ⊆ F), (s.filter fun i ↦ ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t := by
+      t.Nonempty ∧ ∃ Q ⊆ F, (s.filter fun i ↦ ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t := by
   simp only [atomise, ofErase, bot_eq_empty, mem_erase, mem_image, nonempty_iff_ne_empty,
     mem_singleton, and_comm, mem_powerset, exists_prop]
 #align finpartition.mem_atomise Finpartition.mem_atomise
@@ -597,7 +594,7 @@ theorem card_filter_atomise_le_two_pow (ht : t ∈ F) :
     rw [card_powerset, card_erase_of_mem ht]
   rw [subset_iff]
   simp_rw [mem_image, mem_powerset, mem_filter, and_imp, Finset.Nonempty, exists_imp, mem_atomise,
-    and_imp, Finset.Nonempty, exists_imp]
+    and_imp, Finset.Nonempty, exists_imp, and_imp]
   rintro P' i hi P PQ rfl hy₂ j _hj
   refine' ⟨P.erase t, erase_subset_erase _ PQ, _⟩
   simp only [insert_erase (((mem_filter.1 hi).2 _ ht).2 <| hy₂ hi)]
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -63,7 +63,7 @@ variable {α : Type*}
 `a`. We forbid `⊥` as a part. -/
 @[ext]
 structure Finpartition [Lattice α] [OrderBot α] (a : α) where
-  -- porting note: Docstrings added
+  -- Porting note: Docstrings added
   /-- The elements of the finite partition of `a` -/
   parts : Finset α
   /-- The partition is supremum-independent -/
@@ -557,7 +557,7 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
 
 variable {F : Finset (Finset α)}
 
--- porting note:
+-- Porting note:
 /- ./././Mathport/Syntax/Translate/Basic.lean:632:2: warning: expanding binder collection
    (Q «expr ⊆ » F) -/
 theorem mem_atomise :
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -531,8 +531,8 @@ def atomise (s : Finset α) (F : Finset (Finset α)) : Finpartition s :=
             rw [mem_coe, mem_image] at hx hy
             obtain ⟨Q, hQ, rfl⟩ := hx
             obtain ⟨R, hR, rfl⟩ := hy
-            suffices h' : Q = R
-            · subst h'
+            suffices h' : Q = R by
+              subst h'
               exact of_eq_true (eq_self (
                 filter (fun i ↦ ∀ (t : Finset α), t ∈ F → (t ∈ Q ↔ i ∈ t)) s))
             rw [id, mem_filter] at hz1 hz2
@@ -592,8 +592,8 @@ theorem card_filter_atomise_le_two_pow (ht : t ∈ F) :
     ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty).card ≤ 2 ^ (F.card - 1) := by
   suffices h :
     ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty) ⊆
-      (F.erase t).powerset.image fun P ↦ s.filter fun i ↦ ∀ x ∈ F, x ∈ insert t P ↔ i ∈ x
-  · refine' (card_le_card h).trans (card_image_le.trans _)
+      (F.erase t).powerset.image fun P ↦ s.filter fun i ↦ ∀ x ∈ F, x ∈ insert t P ↔ i ∈ x by
+    refine' (card_le_card h).trans (card_image_le.trans _)
     rw [card_powerset, card_erase_of_mem ht]
   rw [subset_iff]
   simp_rw [mem_image, mem_powerset, mem_filter, and_imp, Finset.Nonempty, exists_imp, mem_atomise,
chore: Rename Finpartition.supParts (#10223)

This should be Finpartition.sup_parts according to the naming convention

Diff
@@ -69,14 +69,14 @@ structure Finpartition [Lattice α] [OrderBot α] (a : α) where
   /-- The partition is supremum-independent -/
   supIndep : parts.SupIndep id
   /-- The supremum of the partition is `a` -/
-  supParts : parts.sup id = a
+  sup_parts : parts.sup id = a
   /-- No element of the partition is bottom-/
   not_bot_mem : ⊥ ∉ parts
   deriving DecidableEq
 #align finpartition Finpartition
 #align finpartition.parts Finpartition.parts
 #align finpartition.sup_indep Finpartition.supIndep
-#align finpartition.sup_parts Finpartition.supParts
+#align finpartition.sup_parts Finpartition.sup_parts
 #align finpartition.not_bot_mem Finpartition.not_bot_mem
 
 -- Porting note: attribute [protected] doesn't work
@@ -95,7 +95,7 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
     where
   parts := parts.erase ⊥
   supIndep := sup_indep.subset (erase_subset _ _)
-  supParts := (sup_erase_bot _).trans sup_parts
+  sup_parts := (sup_erase_bot _).trans sup_parts
   not_bot_mem := not_mem_erase _ _
 #align finpartition.of_erase Finpartition.ofErase
 
@@ -105,7 +105,7 @@ def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts
     (sup_parts : parts.sup id = b) : Finpartition b :=
   { parts := parts
     supIndep := P.supIndep.subset subset
-    supParts := sup_parts
+    sup_parts := sup_parts
     not_bot_mem := fun h ↦ P.not_bot_mem (subset h) }
 #align finpartition.of_subset Finpartition.ofSubset
 
@@ -115,7 +115,7 @@ def copy {a b : α} (P : Finpartition a) (h : a = b) : Finpartition b
     where
   parts := P.parts
   supIndep := P.supIndep
-  supParts := h ▸ P.supParts
+  sup_parts := h ▸ P.sup_parts
   not_bot_mem := P.not_bot_mem
 #align finpartition.copy Finpartition.copy
 
@@ -127,7 +127,7 @@ protected def empty : Finpartition (⊥ : α)
     where
   parts := ∅
   supIndep := supIndep_empty _
-  supParts := Finset.sup_empty
+  sup_parts := Finset.sup_empty
   not_bot_mem := not_mem_empty ⊥
 #align finpartition.empty Finpartition.empty
 
@@ -147,14 +147,14 @@ def indiscrete (ha : a ≠ ⊥) : Finpartition a
     where
   parts := {a}
   supIndep := supIndep_singleton _ _
-  supParts := Finset.sup_singleton
+  sup_parts := Finset.sup_singleton
   not_bot_mem h := ha (mem_singleton.1 h).symm
 #align finpartition.indiscrete Finpartition.indiscrete
 
 variable (P : Finpartition a)
 
 protected theorem le {b : α} (hb : b ∈ P.parts) : b ≤ a :=
-  (le_sup hb).trans P.supParts.le
+  (le_sup hb).trans P.sup_parts.le
 #align finpartition.le Finpartition.le
 
 theorem ne_bot {b : α} (hb : b ∈ P.parts) : b ≠ ⊥ := by
@@ -171,7 +171,7 @@ protected theorem disjoint : (P.parts : Set α).PairwiseDisjoint id :=
 variable {P}
 
 theorem parts_eq_empty_iff : P.parts = ∅ ↔ a = ⊥ := by
-  simp_rw [← P.supParts]
+  simp_rw [← P.sup_parts]
   refine' ⟨fun h ↦ _, fun h ↦ eq_empty_iff_forall_not_mem.2 fun b hb ↦ P.not_bot_mem _⟩
   · rw [h]
     exact Finset.sup_empty
@@ -294,7 +294,7 @@ instance : Inf (Finpartition a) :=
         trans P.parts.sup id ⊓ Q.parts.sup id
         · simp_rw [Finset.sup_inf_distrib_right, Finset.sup_inf_distrib_left]
           rfl
-        · rw [P.supParts, Q.supParts, inf_idem])⟩
+        · rw [P.sup_parts, Q.sup_parts, inf_idem])⟩
 
 @[simp]
 theorem parts_inf (P Q : Finpartition a) :
@@ -329,7 +329,7 @@ theorem exists_le_of_le {a b : α} {P Q : Finpartition a} (h : P ≤ Q) (hb : b
     ∃ c ∈ P.parts, c ≤ b := by
   by_contra H
   refine' Q.ne_bot hb (disjoint_self.1 <| Disjoint.mono_right (Q.le hb) _)
-  rw [← P.supParts, Finset.disjoint_sup_right]
+  rw [← P.sup_parts, Finset.disjoint_sup_right]
   rintro c hc
   obtain ⟨d, hd, hcd⟩ := h hc
   refine' (Q.disjoint hb hd _).mono_right hcd
@@ -371,12 +371,12 @@ def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finparti
     obtain rfl | hAB := eq_or_ne A B
     · exact (Q A hA).disjoint ha hb h
     · exact (P.disjoint hA hB hAB).mono ((Q A hA).le ha) ((Q B hB).le hb)
-  supParts := by
+  sup_parts := by
     simp_rw [sup_biUnion]
     trans (sup P.parts id)
     · rw [eq_comm, ← Finset.sup_attach]
-      exact sup_congr rfl fun b _hb ↦ (Q b.1 b.2).supParts.symm
-    · exact P.supParts
+      exact sup_congr rfl fun b _hb ↦ (Q b.1 b.2).sup_parts.symm
+    · exact P.sup_parts
   not_bot_mem h := by
     rw [Finset.mem_biUnion] at h
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
@@ -415,7 +415,7 @@ def extend (P : Finpartition a) (hb : b ≠ ⊥) (hab : Disjoint a b) (hc : a 
   supIndep := by
     rw [supIndep_iff_pairwiseDisjoint, coe_insert]
     exact P.disjoint.insert fun d hd _ ↦ hab.symm.mono_right <| P.le hd
-  supParts := by rwa [sup_insert, P.supParts, id, _root_.sup_comm]
+  sup_parts := by rwa [sup_insert, P.sup_parts, id, _root_.sup_comm]
   not_bot_mem h := (mem_insert.1 h).elim hb.symm P.not_bot_mem
 #align finpartition.extend Finpartition.extend
 
@@ -436,7 +436,7 @@ def avoid (b : α) : Finpartition (a \ b) :=
   ofErase
     (P.parts.image (· \ b))
     (P.disjoint.image_finset_of_le fun a ↦ sdiff_le).supIndep
-    (by rw [sup_image, id_comp, Finset.sup_sdiff_right, ← id_def, P.supParts])
+    (by rw [sup_image, id_comp, Finset.sup_sdiff_right, ← id_def, P.sup_parts])
 #align finpartition.avoid Finpartition.avoid
 
 @[simp]
@@ -467,12 +467,12 @@ lemma eq_of_mem_parts (ht : t ∈ P.parts) (hu : u ∈ P.parts) (hat : a ∈ t)
   P.disjoint.elim ht hu <| not_disjoint_iff.2 ⟨a, hat, hau⟩
 
 theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by
-  simp_rw [← P.supParts] at ha
+  simp_rw [← P.sup_parts] at ha
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
 theorem biUnion_parts : P.parts.biUnion id = s :=
-  (sup_eq_biUnion _ _).symm.trans P.supParts
+  (sup_eq_biUnion _ _).symm.trans P.sup_parts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 
 theorem sum_card_parts : ∑ i in P.parts, i.card = s.card := by
@@ -489,7 +489,7 @@ instance (s : Finset α) : Bot (Finpartition s) :=
           (by
             rw [Finset.coe_map]
             exact Finset.pairwiseDisjoint_range_singleton.subset (Set.image_subset_range _ _))
-      supParts := by rw [sup_map, id_comp, Embedding.coeFn_mk, Finset.sup_singleton']
+      sup_parts := by rw [sup_map, id_comp, Embedding.coeFn_mk, Finset.sup_singleton']
       not_bot_mem := by simp }⟩
 
 @[simp]
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -4,8 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Bhavik Mehta
 -/
 import Mathlib.Algebra.BigOperators.Basic
-import Mathlib.Order.Atoms.Finite
 import Mathlib.Order.SupIndep
+import Mathlib.Order.Atoms
+import Mathlib.Data.Fintype.Powerset
 
 #align_import order.partition.finpartition from "leanprover-community/mathlib"@"d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce"
 
chore(Function): rename some lemmas (#9738)
  • Merge Function.left_id and Function.comp.left_id into Function.id_comp.
  • Merge Function.right_id and Function.comp.right_id into Function.comp_id.
  • Merge Function.comp_const_right and Function.comp_const into Function.comp_const, use explicit arguments.
  • Move Function.const_comp to Mathlib.Init.Function, use explicit arguments.
Diff
@@ -289,7 +289,7 @@ instance : Inf (Finpartition a) :=
           simp [t] at h
         exact Disjoint.mono inf_le_left inf_le_left (P.disjoint hx₁ hx₂ xdiff))
       (by
-        rw [sup_image, comp.left_id, sup_product_left]
+        rw [sup_image, id_comp, sup_product_left]
         trans P.parts.sup id ⊓ Q.parts.sup id
         · simp_rw [Finset.sup_inf_distrib_right, Finset.sup_inf_distrib_left]
           rfl
@@ -435,7 +435,7 @@ def avoid (b : α) : Finpartition (a \ b) :=
   ofErase
     (P.parts.image (· \ b))
     (P.disjoint.image_finset_of_le fun a ↦ sdiff_le).supIndep
-    (by rw [sup_image, comp.left_id, Finset.sup_sdiff_right, ← id_def, P.supParts])
+    (by rw [sup_image, id_comp, Finset.sup_sdiff_right, ← id_def, P.supParts])
 #align finpartition.avoid Finpartition.avoid
 
 @[simp]
@@ -488,7 +488,7 @@ instance (s : Finset α) : Bot (Finpartition s) :=
           (by
             rw [Finset.coe_map]
             exact Finset.pairwiseDisjoint_range_singleton.subset (Set.image_subset_range _ _))
-      supParts := by rw [sup_map, comp.left_id, Embedding.coeFn_mk, Finset.sup_singleton']
+      supParts := by rw [sup_map, id_comp, Embedding.coeFn_mk, Finset.sup_singleton']
       not_bot_mem := by simp }⟩
 
 @[simp]
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
@@ -573,7 +573,7 @@ theorem atomise_empty (hs : s.Nonempty) : (atomise s ∅).parts = {s} := by
 #align finpartition.atomise_empty Finpartition.atomise_empty
 
 theorem card_atomise_le : (atomise s F).parts.card ≤ 2 ^ F.card :=
-  (card_le_of_subset <| erase_subset _ _).trans <| Finset.card_image_le.trans (card_powerset _).le
+  (card_le_card <| erase_subset _ _).trans <| Finset.card_image_le.trans (card_powerset _).le
 #align finpartition.card_atomise_le Finpartition.card_atomise_le
 
 theorem biUnion_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
@@ -592,7 +592,7 @@ theorem card_filter_atomise_le_two_pow (ht : t ∈ F) :
   suffices h :
     ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty) ⊆
       (F.erase t).powerset.image fun P ↦ s.filter fun i ↦ ∀ x ∈ F, x ∈ insert t P ↔ i ∈ x
-  · refine' (card_le_of_subset h).trans (card_image_le.trans _)
+  · refine' (card_le_card h).trans (card_image_le.trans _)
     rw [card_powerset, card_erase_of_mem ht]
   rw [subset_iff]
   simp_rw [mem_image, mem_powerset, mem_filter, and_imp, Finset.Nonempty, exists_imp, mem_atomise,
feat: Simple Finpartition lemmas (#8321)
Diff
@@ -456,12 +456,15 @@ end Finpartition
 
 namespace Finpartition
 
-variable [DecidableEq α] {s t : Finset α} (P : Finpartition s)
+variable [DecidableEq α] {s t u : Finset α} (P : Finpartition s) {a : α}
 
 theorem nonempty_of_mem_parts {a : Finset α} (ha : a ∈ P.parts) : a.Nonempty :=
   nonempty_iff_ne_empty.2 <| P.ne_bot ha
 #align finpartition.nonempty_of_mem_parts Finpartition.nonempty_of_mem_parts
 
+lemma eq_of_mem_parts (ht : t ∈ P.parts) (hu : u ∈ P.parts) (hat : a ∈ t) (hau : a ∈ u) : t = u :=
+  P.disjoint.elim ht hu <| not_disjoint_iff.2 ⟨a, hat, hau⟩
+
 theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by
   simp_rw [← P.supParts] at ha
   exact mem_sup.1 ha
chore: cleanup some spaces (#7490)

Purely cosmetic PR

Diff
@@ -102,7 +102,7 @@ def ofErase [DecidableEq α] {a : α} (parts : Finset α) (sup_indep : parts.Sup
 @[simps]
 def ofSubset {a b : α} (P : Finpartition a) {parts : Finset α} (subset : parts ⊆ P.parts)
     (sup_parts : parts.sup id = b) : Finpartition b :=
-  { parts :=parts
+  { parts := parts
     supIndep := P.supIndep.subset subset
     supParts := sup_parts
     not_bot_mem := fun h ↦ P.not_bot_mem (subset h) }
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
@@ -56,7 +56,7 @@ the literature and turn the order around?
 
 open BigOperators Finset Function
 
-variable {α : Type _}
+variable {α : Type*}
 
 /-- A finite partition of `a : α` is a pairwise disjoint finite set of elements whose supremum is
 `a`. We forbid `⊥` as a part. -/
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,16 +2,13 @@
 Copyright (c) 2022 Yaël Dillies, Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Bhavik Mehta
-
-! This file was ported from Lean 3 source module order.partition.finpartition
-! leanprover-community/mathlib commit d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.BigOperators.Basic
 import Mathlib.Order.Atoms.Finite
 import Mathlib.Order.SupIndep
 
+#align_import order.partition.finpartition from "leanprover-community/mathlib"@"d6fad0e5bf2d6f48da9175d25c3dc5706b3834ce"
+
 /-!
 # Finite partitions
 
fix: ∑' precedence (#5615)
  • Also remove most superfluous parentheses around big operators (, and variants).
  • roughly the used regex: ([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤]) replaced by $1 $2 $3
Diff
@@ -474,7 +474,7 @@ theorem biUnion_parts : P.parts.biUnion id = s :=
   (sup_eq_biUnion _ _).symm.trans P.supParts
 #align finpartition.bUnion_parts Finpartition.biUnion_parts
 
-theorem sum_card_parts : (∑ i in P.parts, i.card) = s.card := by
+theorem sum_card_parts : ∑ i in P.parts, i.card = s.card := by
   convert congr_arg Finset.card P.biUnion_parts
   rw [card_biUnion P.supIndep.pairwiseDisjoint]
   rfl
chore: formatting issues (#4947)

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

Diff
@@ -561,7 +561,7 @@ variable {F : Finset (Finset α)}
    (Q «expr ⊆ » F) -/
 theorem mem_atomise :
     t ∈ (atomise s F).parts ↔
-      t.Nonempty ∧ ∃ (Q : _)(_ : Q ⊆ F), (s.filter fun i ↦ ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t := by
+      t.Nonempty ∧ ∃ (Q : _) (_ : Q ⊆ F), (s.filter fun i ↦ ∀ u ∈ F, u ∈ Q ↔ i ∈ u) = t := by
   simp only [atomise, ofErase, bot_eq_empty, mem_erase, mem_image, nonempty_iff_ne_empty,
     mem_singleton, and_comm, mem_powerset, exists_prop]
 #align finpartition.mem_atomise Finpartition.mem_atomise
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
@@ -280,7 +280,7 @@ variable [DecidableEq α] {a b c : α}
 
 instance : Inf (Finpartition a) :=
   ⟨fun P Q ↦
-    ofErase ((P.parts ×ᶠ Q.parts).image fun bc ↦ bc.1 ⊓ bc.2)
+    ofErase ((P.parts ×ˢ Q.parts).image fun bc ↦ bc.1 ⊓ bc.2)
       (by
         rw [supIndep_iff_disjoint_erase]
         simp only [mem_image, and_imp, exists_prop, forall_exists_index, id.def, Prod.exists,
@@ -300,7 +300,7 @@ instance : Inf (Finpartition a) :=
 
 @[simp]
 theorem parts_inf (P Q : Finpartition a) :
-    (P ⊓ Q).parts = ((P.parts ×ᶠ Q.parts).image fun bc : α × α ↦ bc.1 ⊓ bc.2).erase ⊥ :=
+    (P ⊓ Q).parts = ((P.parts ×ˢ Q.parts).image fun bc : α × α ↦ bc.1 ⊓ bc.2).erase ⊥ :=
   rfl
 #align finpartition.parts_inf Finpartition.parts_inf
 
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
@@ -363,30 +363,30 @@ finpartition of `a` obtained by juxtaposing all the subpartitions. -/
 @[simps]
 def bind (P : Finpartition a) (Q : ∀ i ∈ P.parts, Finpartition i) : Finpartition a
     where
-  parts := P.parts.attach.bunionᵢ fun i ↦ (Q i.1 i.2).parts
+  parts := P.parts.attach.biUnion fun i ↦ (Q i.1 i.2).parts
   supIndep := by
     rw [supIndep_iff_pairwiseDisjoint]
     rintro a ha b hb h
-    rw [Finset.mem_coe, Finset.mem_bunionᵢ] at ha hb
+    rw [Finset.mem_coe, Finset.mem_biUnion] at ha hb
     obtain ⟨⟨A, hA⟩, -, ha⟩ := ha
     obtain ⟨⟨B, hB⟩, -, hb⟩ := hb
     obtain rfl | hAB := eq_or_ne A B
     · exact (Q A hA).disjoint ha hb h
     · exact (P.disjoint hA hB hAB).mono ((Q A hA).le ha) ((Q B hB).le hb)
   supParts := by
-    simp_rw [sup_bunionᵢ]
+    simp_rw [sup_biUnion]
     trans (sup P.parts id)
     · rw [eq_comm, ← Finset.sup_attach]
       exact sup_congr rfl fun b _hb ↦ (Q b.1 b.2).supParts.symm
     · exact P.supParts
   not_bot_mem h := by
-    rw [Finset.mem_bunionᵢ] at h
+    rw [Finset.mem_biUnion] at h
     obtain ⟨⟨A, hA⟩, -, h⟩ := h
     exact (Q A hA).not_bot_mem h
 #align finpartition.bind Finpartition.bind
 
 theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts := by
-  rw [bind, mem_bunionᵢ]
+  rw [bind, mem_biUnion]
   constructor
   · rintro ⟨⟨A, hA⟩, -, h⟩
     exact ⟨A, hA, h⟩
@@ -396,7 +396,7 @@ theorem mem_bind : b ∈ (P.bind Q).parts ↔ ∃ A hA, b ∈ (Q A hA).parts :=
 
 theorem card_bind (Q : ∀ i ∈ P.parts, Finpartition i) :
     (P.bind Q).parts.card = ∑ A in P.parts.attach, (Q _ A.2).parts.card := by
-  apply card_bunionᵢ
+  apply card_biUnion
   rintro ⟨b, hb⟩ - ⟨c, hc⟩ - hbc
   rw [Finset.disjoint_left]
   rintro d hdb hdc
@@ -470,13 +470,13 @@ theorem exists_mem {a : α} (ha : a ∈ s) : ∃ t ∈ P.parts, a ∈ t := by
   exact mem_sup.1 ha
 #align finpartition.exists_mem Finpartition.exists_mem
 
-theorem bunionᵢ_parts : P.parts.bunionᵢ id = s :=
-  (sup_eq_bunionᵢ _ _).symm.trans P.supParts
-#align finpartition.bUnion_parts Finpartition.bunionᵢ_parts
+theorem biUnion_parts : P.parts.biUnion id = s :=
+  (sup_eq_biUnion _ _).symm.trans P.supParts
+#align finpartition.bUnion_parts Finpartition.biUnion_parts
 
 theorem sum_card_parts : (∑ i in P.parts, i.card) = s.card := by
-  convert congr_arg Finset.card P.bunionᵢ_parts
-  rw [card_bunionᵢ P.supIndep.pairwiseDisjoint]
+  convert congr_arg Finset.card P.biUnion_parts
+  rw [card_biUnion P.supIndep.pairwiseDisjoint]
   rfl
 #align finpartition.sum_card_parts Finpartition.sum_card_parts
 
@@ -576,16 +576,16 @@ theorem card_atomise_le : (atomise s F).parts.card ≤ 2 ^ F.card :=
   (card_le_of_subset <| erase_subset _ _).trans <| Finset.card_image_le.trans (card_powerset _).le
 #align finpartition.card_atomise_le Finpartition.card_atomise_le
 
-theorem bunionᵢ_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
-    ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty).bunionᵢ id = t := by
+theorem biUnion_filter_atomise (ht : t ∈ F) (hts : t ⊆ s) :
+    ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty).biUnion id = t := by
   ext a
-  refine' mem_bunionᵢ.trans ⟨fun ⟨u, hu, ha⟩ ↦ (mem_filter.1 hu).2.1 ha, fun ha ↦ _⟩
+  refine' mem_biUnion.trans ⟨fun ⟨u, hu, ha⟩ ↦ (mem_filter.1 hu).2.1 ha, fun ha ↦ _⟩
   obtain ⟨u, hu, hau⟩ := (atomise s F).exists_mem (hts ha)
   refine' ⟨u, mem_filter.2 ⟨hu, fun b hb ↦ _, _, hau⟩, hau⟩
   obtain ⟨Q, _hQ, rfl⟩ := (mem_atomise.1 hu).2
   rw [mem_filter] at hau hb
   rwa [← hb.2 _ ht, hau.2 _ ht]
-#align finpartition.bUnion_filter_atomise Finpartition.bunionᵢ_filter_atomise
+#align finpartition.bUnion_filter_atomise Finpartition.biUnion_filter_atomise
 
 theorem card_filter_atomise_le_two_pow (ht : t ∈ F) :
     ((atomise s F).parts.filter fun u ↦ u ⊆ t ∧ u.Nonempty).card ≤ 2 ^ (F.card - 1) := by
fix: add missing _root_ (#3630)

Mathport doesn't understand this, and apparently nor do many of the humans fixing the errors it creates.

If your #align statement complains the def doesn't exist, don't change the #align; work out why it doesn't exist instead.

Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -197,7 +197,7 @@ instance : Unique (Finpartition (⊥ : α)) :=
 -- See note [reducible non instances]
 /-- There's a unique partition of an atom. -/
 @[reducible]
-def IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
+def _root_.IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
     where
   default := indiscrete ha.1
   uniq P := by
@@ -209,7 +209,7 @@ def IsAtom.uniqueFinpartition (ha : IsAtom a) : Unique (Finpartition a)
     obtain ⟨c, hc⟩ := P.parts_nonempty ha.1
     simp_rw [← h c hc]
     exact hc
-#align is_atom.unique_finpartition Finpartition.IsAtom.uniqueFinpartition
+#align is_atom.unique_finpartition IsAtom.uniqueFinpartition
 
 instance [Fintype α] [DecidableEq α] (a : α) : Fintype (Finpartition a) :=
   @Fintype.ofSurjective { p : Finset α // p.SupIndep id ∧ p.sup id = a ∧ ⊥ ∉ p } (Finpartition a) _
refactor: rename HasSup/HasInf to Sup/Inf (#2475)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -278,7 +278,7 @@ section Inf
 
 variable [DecidableEq α] {a b c : α}
 
-instance : HasInf (Finpartition a) :=
+instance : Inf (Finpartition a) :=
   ⟨fun P Q ↦
     ofErase ((P.parts ×ᶠ Q.parts).image fun bc ↦ bc.1 ⊓ bc.2)
       (by
@@ -306,7 +306,7 @@ theorem parts_inf (P Q : Finpartition a) :
 
 instance : SemilatticeInf (Finpartition a) :=
   { (inferInstance : PartialOrder (Finpartition a)),
-    (inferInstance : HasInf (Finpartition a)) with
+    (inferInstance : Inf (Finpartition a)) with
     inf_le_left := fun P Q b hb ↦ by
       obtain ⟨c, hc, rfl⟩ := mem_image.1 (mem_of_mem_erase hb)
       rw [mem_product] at hc
feat: require @[simps!] if simps runs in expensive mode (#1885)
  • This does not change the behavior of simps, just raises a linter error if you run simps in a more expensive mode without writing !.
  • Fixed some incorrect occurrences of to_additive, simps. Will do that systematically in future PR.
  • Fix port of OmegaCompletePartialOrder.ContinuousHom.ofMono a bit

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -433,7 +433,7 @@ section GeneralizedBooleanAlgebra
 variable [GeneralizedBooleanAlgebra α] [DecidableEq α] {a b c : α} (P : Finpartition a)
 
 /-- Restricts a finpartition to avoid a given element. -/
-@[simps]
+@[simps!]
 def avoid (b : α) : Finpartition (a \ b) :=
   ofErase
     (P.parts.image (· \ b))
feat: port Order.Partition.Finpartition (#1765)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>

Dependencies 7 + 234

235 files ported (97.1%)
102013 lines ported (97.1%)
Show graph

The unported dependencies are