Skip to content

Commit ba17ac8

Browse files
committed
chore(Data/Finset): don't import algebra in Finset.Lattice.Fold (#21883)
We don't need to know what a monoid is in order to define the maximum of a finset. This PR replaces the approach of #21874 (reversing the `Finset.Max` -> `Finset.Sort` import) with cleaning up `Finset.Max`'s dependencies. In particular, we reverse the import direction for `Multiset.Bind` and `Multiset.Fold` (the former imports a lot anyway), and split some results off from `Finset.Lattice.Fold` based on dependencies: `Finset.{Pi,Prod,Union}` mapping to `Finset.Lattice.{Pi,Prod,Union}`.
1 parent 69b89a9 commit ba17ac8

File tree

29 files changed

+391
-217
lines changed

29 files changed

+391
-217
lines changed

Archive/Wiedijk100Theorems/AscendingDescendingSequences.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Bhavik Mehta
55
-/
66
import Mathlib.Data.Finset.Max
7+
import Mathlib.Data.Finset.Prod
78
import Mathlib.Data.Fintype.Powerset
89

910
/-!

Mathlib.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2651,6 +2651,9 @@ import Mathlib.Data.Finset.Interval
26512651
import Mathlib.Data.Finset.Lattice.Basic
26522652
import Mathlib.Data.Finset.Lattice.Fold
26532653
import Mathlib.Data.Finset.Lattice.Lemmas
2654+
import Mathlib.Data.Finset.Lattice.Pi
2655+
import Mathlib.Data.Finset.Lattice.Prod
2656+
import Mathlib.Data.Finset.Lattice.Union
26542657
import Mathlib.Data.Finset.Max
26552658
import Mathlib.Data.Finset.MulAntidiagonal
26562659
import Mathlib.Data.Finset.NAry

Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Mathlib.Algebra.Group.Even
99
import Mathlib.Data.Finset.Piecewise
1010
import Mathlib.Data.Finset.Powerset
1111
import Mathlib.Data.Finset.Preimage
12+
import Mathlib.Data.Finset.Prod
1213
import Mathlib.Data.Fintype.Pi
1314

1415
/-!

Mathlib/Algebra/GCDMonoid/Multiset.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Aaron Anderson
55
-/
66
import Mathlib.Algebra.GCDMonoid.Basic
7+
import Mathlib.Algebra.Order.Group.Multiset
78
import Mathlib.Data.Multiset.FinsetOps
89
import Mathlib.Data.Multiset.Fold
910

Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ Copyright (c) 2019 Johannes Hölzl. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Johannes Hölzl
55
-/
6-
import Mathlib.Algebra.BigOperators.Group.Multiset.Basic
6+
import Mathlib.Algebra.BigOperators.Group.Multiset.Defs
77
import Mathlib.Algebra.Order.BigOperators.Group.List
88
import Mathlib.Algebra.Order.Group.Abs
9+
import Mathlib.Algebra.Order.Monoid.OrderDual
910
import Mathlib.Data.List.MinMax
1011
import Mathlib.Data.Multiset.Fold
11-
import Mathlib.Algebra.Order.Monoid.OrderDual
1212

1313
/-!
1414
# Big operators on a multiset in ordered groups

Mathlib/Algebra/Order/Field/Pi.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yaël Dillies
55
-/
66
import Mathlib.Algebra.Order.Monoid.Defs
7+
import Mathlib.Algebra.Order.Monoid.Unbundled.ExistsOfLE
78
import Mathlib.Data.Finset.Lattice.Fold
89
import Mathlib.Data.Fintype.Basic
910

Mathlib/Algebra/Order/Group/Finset.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Mathlib.Algebra.Order.Monoid.Canonical.Defs
88
import Mathlib.Algebra.Order.Monoid.Unbundled.MinMax
99
import Mathlib.Algebra.Order.Monoid.Unbundled.Pow
1010
import Mathlib.Algebra.Order.Monoid.Unbundled.WithTop
11-
import Mathlib.Data.Finset.Lattice.Fold
11+
import Mathlib.Data.Finset.Lattice.Prod
1212

1313
/-!
1414
# `Finset.sup` in a group

Mathlib/Algebra/Order/Group/Multiset.lean

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Mathlib.Algebra.Group.Hom.Defs
77
import Mathlib.Algebra.Group.Nat.Defs
88
import Mathlib.Algebra.Order.Monoid.Unbundled.ExistsOfLE
99
import Mathlib.Algebra.Order.Sub.Defs
10-
import Mathlib.Data.Multiset.Dedup
10+
import Mathlib.Data.Multiset.Fold
1111

1212
/-!
1313
# Multisets form an ordered monoid
@@ -182,4 +182,17 @@ lemma addHom_ext [AddZeroClass β] ⦃f g : Multiset α →+ β⦄ (h : ∀ x, f
182182
· simp only [_root_.map_zero]
183183
· simp only [← singleton_add, _root_.map_add, ih, h]
184184

185+
open Nat
186+
187+
theorem le_smul_dedup [DecidableEq α] (s : Multiset α) : ∃ n : ℕ, s ≤ n • dedup s :=
188+
⟨(s.map fun a => count a s).fold max 0,
189+
le_iff_count.2 fun a => by
190+
rw [count_nsmul]; by_cases h : a ∈ s
191+
· refine le_trans ?_ (Nat.mul_le_mul_left _ <| count_pos.2 <| mem_dedup.2 h)
192+
have : count a s ≤ fold max 0 (map (fun a => count a s) (a ::ₘ erase s a)) := by
193+
simp [le_max_left]
194+
rw [cons_erase h] at this
195+
simpa [mul_succ] using this
196+
· simp [count_eq_zero.2 h, Nat.zero_le]⟩
197+
185198
end Multiset

Mathlib/Combinatorics/SetFamily/Compression/Down.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2022 Yaël Dillies. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yaël Dillies
55
-/
6+
import Mathlib.Data.Finset.Card
67
import Mathlib.Data.Finset.Lattice.Fold
78

89
/-!

Mathlib/Combinatorics/Young/YoungDiagram.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ Copyright (c) 2022 Jake Levinson. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jake Levinson
55
-/
6-
import Mathlib.Order.UpperLower.Basic
76
import Mathlib.Data.Finset.Preimage
7+
import Mathlib.Data.Finset.Prod
8+
import Mathlib.Order.UpperLower.Basic
89

910
/-!
1011
# Young diagrams

0 commit comments

Comments
 (0)