Skip to content

Commit 27f79ee

Browse files
committed
chore(Algebra/Order/BigOperators): follow the naming convention
We have long agreed that `MonoidWithZero` lemmas corresponding to `Monoid` lemmas should be suffixed with `₀`, while currently it is the `Monoid` lemmas that are primed.
1 parent a66f298 commit 27f79ee

35 files changed

Lines changed: 209 additions & 219 deletions

File tree

Mathlib/Algebra/BigOperators/Finprod.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -596,36 +596,36 @@ alias finsum_pos' := finsum_pos
596596
@[to_additive existing finsum_pos', deprecated (since := "2026-01-03")]
597597
alias one_lt_finprod' := one_lt_finprod
598598

599-
/-- Monotonicity of `finprod`. See `finprod_le_finprod` for a variant where
599+
/-- Monotonicity of `finprod`. See `finprod_le_finprod` for a variant where
600600
`M` is a `CommMonoidWithZero`. -/
601601
@[to_additive /-- Monotonicity of `finsum.` -/]
602-
lemma finprod_le_finprod' [PartialOrder M] [MulLeftMono M] (hf : HasFiniteMulSupport f)
602+
lemma finprod_le_finprod [PartialOrder M] [MulLeftMono M] (hf : HasFiniteMulSupport f)
603603
(hg : HasFiniteMulSupport g) (h : f ≤ g) :
604604
∏ᶠ a, f a ≤ ∏ᶠ a, g a := by
605605
have : Fintype ↑(f.mulSupport ∪ g.mulSupport) := (hf.union hg).fintype
606606
let s := (f.mulSupport ∪ g.mulSupport).toFinset
607607
rw [finprod_eq_finsetProd_of_mulSupport_subset f (show f.mulSupport ⊆ s by grind),
608608
finprod_eq_finsetProd_of_mulSupport_subset g (show g.mulSupport ⊆ s by grind)]
609-
exact Finset.prod_le_prod' fun i _ ↦ h i
609+
exact Finset.prod_le_prod fun i _ ↦ h i
610610

611-
/-- Monotonicity of `finprod`. See `finprod_le_finprod'` for a variant where
611+
/-- Monotonicity of `finprod`. See `finprod_le_finprod` for a variant where
612612
`M` is an ordered `CommMonoid`. -/
613-
lemma finprod_le_finprod {M : Type*} [CommMonoidWithZero M] [PartialOrder M] [ZeroLEOneClass M]
613+
lemma finprod_le_finprod {M : Type*} [CommMonoidWithZero M] [PartialOrder M] [ZeroLEOneClass M]
614614
[PosMulMono M] {f g : α → M} (hf : HasFiniteMulSupport f) (hf₀ : ∀ a, 0 ≤ f a)
615615
(hg : HasFiniteMulSupport g) (h : f ≤ g) :
616616
∏ᶠ a, f a ≤ ∏ᶠ a, g a := by
617617
have : Fintype ↑(f.mulSupport ∪ g.mulSupport) := (hf.union hg).fintype
618618
let s := (f.mulSupport ∪ g.mulSupport).toFinset
619619
rw [finprod_eq_finsetProd_of_mulSupport_subset f (show f.mulSupport ⊆ s by grind),
620620
finprod_eq_finsetProd_of_mulSupport_subset g (show g.mulSupport ⊆ s by grind)]
621-
exact Finset.prod_le_prod (fun i _ ↦ hf₀ i) fun i _ ↦ h i
621+
exact Finset.prod_le_prod (fun i _ ↦ hf₀ i) fun i _ ↦ h i
622622

623623
lemma finprod_zero_le_one {M α : Type*} [CommMonoidWithZero M] [PartialOrder M]
624624
[ZeroLEOneClass M] [PosMulMono M] :
625625
∏ᶠ _ : α, (0 : M) ≤ 1 := by
626626
rw [← finprod_one (α := α)]
627627
by_cases H : (fun _ : α ↦ (0 : M)).HasFiniteMulSupport
628-
· exact finprod_le_finprod H (fun _ ↦ le_rfl) (by fun_prop) fun _ ↦ zero_le_one
628+
· exact finprod_le_finprod H (fun _ ↦ le_rfl) (by fun_prop) fun _ ↦ zero_le_one
629629
· rw [finprod_of_not_hasFiniteMulSupport H]
630630
exact finprod_one.symm.le
631631

@@ -1133,7 +1133,7 @@ theorem single_le_finprod {M : Type*} [CommMonoid M] [Preorder M] [IsOrderedMono
11331133
(hf : HasFiniteMulSupport f) (h : ∀ j, 1 ≤ f j) : f i ≤ ∏ᶠ j, f j := by
11341134
classical calc
11351135
f i ≤ ∏ j ∈ insert i hf.toFinset, f j :=
1136-
Finset.single_le_prod' (fun j _ => h j) (Finset.mem_insert_self _ _)
1136+
Finset.single_le_prod (fun j _ => h j) (Finset.mem_insert_self _ _)
11371137
_ = ∏ᶠ j, f j :=
11381138
(finprod_eq_prod_of_mulSupport_toFinset_subset _ hf (Finset.subset_insert _ _)).symm
11391139

Mathlib/Algebra/Group/Submonoid/Pointwise.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,6 @@ theorem submonoid_closure (hpos : ∀ x : α, x ∈ s → 1 ≤ x) (h : s.IsPWO)
296296
IsPWO (Submonoid.closure s : Set α) := by
297297
rw [Submonoid.closure_eq_image_prod]
298298
refine (h.partiallyWellOrderedOn_sublistForall₂ (· ≤ ·)).image_of_monotone_on ?_
299-
exact fun l1 _ l2 hl2 h12 => h12.prod_le_prod' fun x hx => hpos x <| hl2 x hx
299+
exact fun l1 _ l2 hl2 h12 => h12.prod_le_prod fun x hx => hpos x <| hl2 x hx
300300

301301
end Set.IsPWO

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

Lines changed: 91 additions & 90 deletions
Large diffs are not rendered by default.

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

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace List
2424
section Monoid
2525
variable [Monoid M]
2626

27-
@[to_additive sum_le_sum]
28-
lemma Forall₂.prod_le_prod' [Preorder M] [MulRightMono M]
27+
@[to_additive]
28+
lemma Forall₂.prod_le_prod [Preorder M] [MulRightMono M]
2929
[MulLeftMono M] {l₁ l₂ : List M} (h : Forall₂ (· ≤ ·) l₁ l₂) :
3030
l₁.prod ≤ l₂.prod := by
3131
induction h with
@@ -35,38 +35,38 @@ lemma Forall₂.prod_le_prod' [Preorder M] [MulRightMono M]
3535
/-- If `l₁` is a sublist of `l₂` and all elements of `l₂` are greater than or equal to one, then
3636
`l₁.prod ≤ l₂.prod`. One can prove a stronger version assuming `∀ a ∈ l₂.diff l₁, 1 ≤ a` instead
3737
of `∀ a ∈ l₂, 1 ≤ a` but this lemma is not yet in `mathlib`. -/
38-
@[to_additive sum_le_sum /-- If `l₁` is a sublist of `l₂` and all elements of `l₂` are nonnegative,
38+
@[to_additive /-- If `l₁` is a sublist of `l₂` and all elements of `l₂` are nonnegative,
3939
then `l₁.sum ≤ l₂.sum`.
4040
One can prove a stronger version assuming `∀ a ∈ l₂.diff l₁, 0 ≤ a` instead of `∀ a ∈ l₂, 0 ≤ a`
4141
but this lemma is not yet in `mathlib`. -/]
42-
lemma Sublist.prod_le_prod' [Preorder M] [MulRightMono M]
42+
lemma Sublist.prod_le_prod [Preorder M] [MulRightMono M]
4343
[MulLeftMono M] {l₁ l₂ : List M} (h : l₁ <+ l₂)
4444
(h₁ : ∀ a ∈ l₂, (1 : M) ≤ a) : l₁.prod ≤ l₂.prod := by
4545
induction h with
4646
| slnil => rfl
47-
| cons a _ ih' =>
47+
| cons a _ ih =>
4848
simp only [prod_cons, forall_mem_cons] at h₁ ⊢
49-
exact (ih' h₁.2).trans (le_mul_of_one_le_left' h₁.1)
50-
| cons_cons a _ ih' =>
49+
exact (ih h₁.2).trans (le_mul_of_one_le_left' h₁.1)
50+
| cons_cons a _ ih =>
5151
simp only [prod_cons, forall_mem_cons] at h₁ ⊢
52-
grw [ih' h₁.2]
52+
grw [ih h₁.2]
5353

54-
@[to_additive sum_le_sum]
55-
lemma SublistForall₂.prod_le_prod' [Preorder M]
54+
@[to_additive]
55+
lemma SublistForall₂.prod_le_prod [Preorder M]
5656
[MulRightMono M] [MulLeftMono M]
5757
{l₁ l₂ : List M} (h : SublistForall₂ (· ≤ ·) l₁ l₂) (h₁ : ∀ a ∈ l₂, (1 : M) ≤ a) :
5858
l₁.prod ≤ l₂.prod :=
5959
let ⟨_, hall, hsub⟩ := sublistForall₂_iff.1 h
60-
hall.prod_le_prod'.trans <| hsub.prod_le_prod' h₁
60+
hall.prod_le_prod.trans <| hsub.prod_le_prod h₁
6161

62-
@[to_additive sum_le_sum]
63-
lemma prod_le_prod' [Preorder M] [MulRightMono M]
62+
@[to_additive]
63+
lemma prod_le_prod [Preorder M] [MulRightMono M]
6464
[MulLeftMono M] {l : List ι} {f g : ι → M} (h : ∀ i ∈ l, f i ≤ g i) :
6565
(l.map f).prod ≤ (l.map g).prod :=
66-
Forall₂.prod_le_prod' <| by simpa
66+
Forall₂.prod_le_prod <| by simpa
6767

68-
@[to_additive sum_lt_sum]
69-
lemma prod_lt_prod' [Preorder M] [MulLeftStrictMono M]
68+
@[to_additive]
69+
lemma prod_lt_prod [Preorder M] [MulLeftStrictMono M]
7070
[MulLeftMono M] [MulRightStrictMono M]
7171
[MulRightMono M] {l : List ι} (f g : ι → M)
7272
(h₁ : ∀ i ∈ l, f i ≤ g i) (h₂ : ∃ i ∈ l, f i < g i) : (l.map f).prod < (l.map g).prod := by
@@ -76,38 +76,38 @@ lemma prod_lt_prod' [Preorder M] [MulLeftStrictMono M]
7676
simp only [forall_mem_cons, map_cons, prod_cons] at h₁ ⊢
7777
simp only [mem_cons, exists_eq_or_imp] at h₂
7878
cases h₂
79-
· exact mul_lt_mul_of_lt_of_le ‹_› (prod_le_prod' h₁.2)
79+
· exact mul_lt_mul_of_lt_of_le ‹_› (prod_le_prod h₁.2)
8080
· exact mul_lt_mul_of_le_of_lt h₁.1 <| ihl h₁.2 ‹_›
8181

8282
@[to_additive]
8383
lemma prod_lt_prod_of_ne_nil [Preorder M] [MulLeftStrictMono M]
8484
[MulLeftMono M] [MulRightStrictMono M]
8585
[MulRightMono M] {l : List ι} (hl : l ≠ []) (f g : ι → M)
8686
(hlt : ∀ i ∈ l, f i < g i) : (l.map f).prod < (l.map g).prod :=
87-
(prod_lt_prod' f g fun i hi => (hlt i hi).le) <|
87+
(prod_lt_prod f g fun i hi => (hlt i hi).le) <|
8888
(exists_mem_of_ne_nil l hl).imp fun i hi => ⟨hi, hlt i hi⟩
8989

9090
@[to_additive sum_le_card_nsmul]
9191
lemma prod_le_pow_card [Preorder M] [MulRightMono M]
9292
[MulLeftMono M] (l : List M) (n : M) (h : ∀ x ∈ l, x ≤ n) :
9393
l.prod ≤ n ^ l.length := by
94-
simpa only [map_id', map_const', prod_replicate] using prod_le_prod' h
94+
simpa only [map_id', map_const', prod_replicate] using prod_le_prod h
9595

9696
@[to_additive card_nsmul_le_sum]
9797
lemma pow_card_le_prod [Preorder M] [MulRightMono M]
9898
[MulLeftMono M] (l : List M) (n : M) (h : ∀ x ∈ l, n ≤ x) :
9999
n ^ l.length ≤ l.prod :=
100100
@prod_le_pow_card Mᵒᵈ _ _ _ _ l n h
101101

102-
@[to_additive exists_lt_of_sum_lt]
103-
lemma exists_lt_of_prod_lt' [LinearOrder M] [MulRightMono M]
102+
@[to_additive]
103+
lemma exists_lt_of_prod_lt [LinearOrder M] [MulRightMono M]
104104
[MulLeftMono M] {l : List ι} (f g : ι → M)
105105
(h : (l.map f).prod < (l.map g).prod) : ∃ i ∈ l, f i < g i := by
106106
contrapose! h
107-
exact prod_le_prod' h
107+
exact prod_le_prod h
108108

109-
@[to_additive exists_le_of_sum_le]
110-
lemma exists_le_of_prod_le' [LinearOrder M] [MulLeftStrictMono M]
109+
@[to_additive]
110+
lemma exists_le_of_prod_le [LinearOrder M] [MulLeftStrictMono M]
111111
[MulLeftMono M] [MulRightStrictMono M]
112112
[MulRightMono M] {l : List ι} (hl : l ≠ []) (f g : ι → M)
113113
(h : (l.map f).prod ≤ (l.map g).prod) : ∃ x ∈ l, f x ≤ g x := by
@@ -130,7 +130,7 @@ lemma max_prod_le (l : List α) (f g : α → M) [LinearOrder M]
130130
[MulLeftMono M] [MulRightMono M] :
131131
max (l.map f).prod (l.map g).prod ≤ (l.map fun i ↦ max (f i) (g i)).prod := by
132132
rw [max_le_iff]
133-
constructor <;> apply List.prod_le_prod' <;> intros
133+
constructor <;> apply List.prod_le_prod <;> intros
134134
· apply le_max_left
135135
· apply le_max_right
136136

@@ -139,7 +139,7 @@ lemma prod_min_le [LinearOrder M] [MulLeftMono M]
139139
[MulRightMono M] (l : List α) (f g : α → M) :
140140
(l.map fun i ↦ min (f i) (g i)).prod ≤ min (l.map f).prod (l.map g).prod := by
141141
rw [le_min_iff]
142-
constructor <;> apply List.prod_le_prod' <;> intros
142+
constructor <;> apply List.prod_le_prod <;> intros
143143
· apply min_le_left
144144
· apply min_le_right
145145

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,18 +118,18 @@ section OrderedCancelCommMonoid
118118
variable [CommMonoid α] [Preorder α] [IsOrderedCancelMonoid α] [MulLeftStrictMono α]
119119
{s : Multiset ι} {f g : ι → α}
120120

121-
@[to_additive sum_lt_sum]
122-
lemma prod_lt_prod' (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
121+
@[to_additive]
122+
lemma prod_lt_prod (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
123123
(s.map f).prod < (s.map g).prod := by
124124
obtain ⟨l⟩ := s
125125
simp only [Multiset.quot_mk_to_coe'', Multiset.map_coe, Multiset.prod_coe]
126-
exact List.prod_lt_prod' f g hle hlt
126+
exact List.prod_lt_prod f g hle hlt
127127

128-
@[to_additive sum_lt_sum_of_nonempty]
129-
lemma prod_lt_prod_of_nonempty' (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
128+
@[to_additive]
129+
lemma prod_lt_prod_of_nonempty (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
130130
(s.map f).prod < (s.map g).prod := by
131131
obtain ⟨i, hi⟩ := exists_mem_of_ne_zero hs
132-
exact prod_lt_prod' (fun i hi => le_of_lt (hfg i hi)) ⟨i, hi, hfg i hi⟩
132+
exact prod_lt_prod (fun i hi => le_of_lt (hfg i hi)) ⟨i, hi, hfg i hi⟩
133133

134134
end OrderedCancelCommMonoid
135135

Mathlib/Algebra/Order/BigOperators/GroupWithZero/Finset.lean

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ lemma prod_nonneg (h0 : ∀ i ∈ s, 0 ≤ f i) : 0 ≤ ∏ i ∈ s, f i :=
3232
prod_induction f (fun i ↦ 0 ≤ i) (fun _ _ ha hb ↦ mul_nonneg ha hb) zero_le_one h0
3333

3434
/-- If all `f i`, `i ∈ s`, are nonnegative and each `f i` is less than or equal to `g i`, then the
35-
product of `f i` is less than or equal to the product of `g i`. See also `Finset.prod_le_prod'` for
35+
product of `f i` is less than or equal to the product of `g i`. See also `Finset.prod_le_prod` for
3636
the case of an ordered commutative multiplicative monoid. -/
3737
@[gcongr]
38-
lemma prod_le_prod (h0 : ∀ i ∈ s, 0 ≤ f i) (h1 : ∀ i ∈ s, f i ≤ g i) :
38+
lemma prod_le_prod (h0 : ∀ i ∈ s, 0 ≤ f i) (h1 : ∀ i ∈ s, f i ≤ g i) :
3939
∏ i ∈ s, f i ≤ ∏ i ∈ s, g i := by
4040
induction s using Finset.cons_induction with
4141
| empty => simp
@@ -46,14 +46,14 @@ lemma prod_le_prod (h0 : ∀ i ∈ s, 0 ≤ f i) (h1 : ∀ i ∈ s, f i ≤ g i)
4646
exacts [prod_nonneg h0.2, h0.1.trans h1.1, h1.1, ih h0.2 h1.2]
4747

4848
/-- If each `f i`, `i ∈ s` belongs to `[0, 1]`, then their product is less than or equal to one.
49-
See also `Finset.prod_le_one'` for the case of an ordered commutative multiplicative monoid. -/
50-
lemma prod_le_one (h0 : ∀ i ∈ s, 0 ≤ f i) (h1 : ∀ i ∈ s, f i ≤ 1) : ∏ i ∈ s, f i ≤ 1 := by
51-
convert! ← prod_le_prod h0 h1
49+
See also `Finset.prod_le_one` for the case of an ordered commutative multiplicative monoid. -/
50+
lemma prod_le_one (h0 : ∀ i ∈ s, 0 ≤ f i) (h1 : ∀ i ∈ s, f i ≤ 1) : ∏ i ∈ s, f i ≤ 1 := by
51+
convert ← prod_le_prod h0 h1
5252
exact Finset.prod_const_one
5353

54-
/-- A version of `Finset.one_le_prod'` for `PosMulMono` in place of `MulLeftMono`. -/
55-
lemma one_le_prod (hf : ∀ i ∈ s, 1 ≤ f i) : 1 ≤ ∏ i ∈ s, f i := by
56-
simpa using prod_le_prod (by simp) hf
54+
/-- A version of `Finset.one_le_prod` for `PosMulMono` in place of `MulLeftMono`. -/
55+
lemma one_le_prod (hf : ∀ i ∈ s, 1 ≤ f i) : 1 ≤ ∏ i ∈ s, f i := by
56+
simpa using prod_le_prod (by simp) hf
5757

5858
lemma le_prod_max_one {M : Type*} [CommMonoidWithZero M] [LinearOrder M] [ZeroLEOneClass M]
5959
[PosMulMono M] {i : ι} (hi : i ∈ s) (f : ι → M) :
@@ -64,21 +64,21 @@ lemma le_prod_max_one {M : Type*} [CommMonoidWithZero M] [LinearOrder M] [ZeroLE
6464
have : f i = ∏ j ∈ s, if i = j then f i else 1 := by
6565
rw [prod_eq_single_of_mem i hi fun _ _ _ ↦ by grind]
6666
simp
67-
exact this ▸ prod_le_prod (fun _ _ ↦ by grind [zero_le_one]) fun _ _ ↦ by grind
67+
exact this ▸ prod_le_prod (fun _ _ ↦ by grind [zero_le_one]) fun _ _ ↦ by grind
6868

6969
@[gcongr]
70-
theorem prod_le_prod_of_subset_of_one_le (h : s ⊆ t)
70+
theorem prod_le_prod_of_subset_of_one_le (h : s ⊆ t)
7171
(hf0 : ∀ i ∈ s, 0 ≤ f i)
7272
(hf : ∀ i ∈ t, i ∉ s → 1 ≤ f i) : ∏ i ∈ s, f i ≤ ∏ i ∈ t, f i := by
7373
have := posMulMono_iff_mulPosMono.1 ‹PosMulMono R›
7474
classical
7575
calc
7676
∏ i ∈ s, f i ≤ (∏ i ∈ t \ s, f i) * ∏ i ∈ s, f i :=
77-
le_mul_of_one_le_left (prod_nonneg hf0) <| one_le_prod <| by simpa only [mem_sdiff, and_imp]
77+
le_mul_of_one_le_left (prod_nonneg hf0) <| one_le_prod <| by simpa only [mem_sdiff, and_imp]
7878
_ = ∏ i ∈ t \ s ∪ s, f i := (prod_union sdiff_disjoint).symm
7979
_ = ∏ i ∈ t, f i := by rw [sdiff_union_of_subset h]
8080

81-
theorem prod_le_prod_of_subset_of_le_one (h : s ⊆ t) (hf0 : ∀ i ∈ t, 0 ≤ f i)
81+
theorem prod_le_prod_of_subset_of_le_one (h : s ⊆ t) (hf0 : ∀ i ∈ t, 0 ≤ f i)
8282
(hf : ∀ i ∈ t, i ∉ s → f i ≤ 1) :
8383
∏ i ∈ t, f i ≤ ∏ i ∈ s, f i := by
8484
have := posMulMono_iff_mulPosMono.1 ‹PosMulMono R›
@@ -87,16 +87,16 @@ theorem prod_le_prod_of_subset_of_le_one (h : s ⊆ t) (hf0 : ∀ i ∈ t, 0 ≤
8787
∏ i ∈ t, f i = ∏ i ∈ t \ s ∪ s, f i := by rw [sdiff_union_of_subset h]
8888
_ = (∏ i ∈ t \ s, f i) * ∏ i ∈ s, f i := prod_union sdiff_disjoint
8989
_ ≤ ∏ i ∈ s, f i :=
90-
mul_le_of_le_one_left (prod_nonneg (by grind)) (prod_le_one (by grind) (by grind))
90+
mul_le_of_le_one_left (prod_nonneg (by grind)) (prod_le_one (by grind) (by grind))
9191

92-
theorem prod_mono_set_of_one_le (hf : ∀ x, 1 ≤ f x) :
92+
theorem prod_mono_set_of_one_le (hf : ∀ x, 1 ≤ f x) :
9393
Monotone fun s ↦ ∏ x ∈ s, f x :=
94-
fun _ _ hst ↦ prod_le_prod_of_subset_of_one_le hst
94+
fun _ _ hst ↦ prod_le_prod_of_subset_of_one_le hst
9595
(fun i _ ↦ zero_le_one.trans (hf i)) (fun x _ _ ↦ hf x)
9696

97-
theorem prod_anti_set_of_le_one (hf0 : ∀ (x : ι), 0 ≤ f x) (hf : ∀ (x : ι), f x ≤ 1) :
97+
theorem prod_anti_set_of_le_one (hf0 : ∀ (x : ι), 0 ≤ f x) (hf : ∀ (x : ι), f x ≤ 1) :
9898
Antitone fun (s : Finset ι) => ∏ x ∈ s, f x :=
99-
fun _ _ hst ↦ prod_le_prod_of_subset_of_le_one hst (by grind) (by simp [hf])
99+
fun _ _ hst ↦ prod_le_prod_of_subset_of_le_one hst (by grind) (by simp [hf])
100100

101101
end PosMulMono
102102

@@ -107,23 +107,23 @@ variable [PartialOrder R] [ZeroLEOneClass R] [PosMulStrictMono R] [Nontrivial R]
107107
lemma prod_pos (h0 : ∀ i ∈ s, 0 < f i) : 0 < ∏ i ∈ s, f i :=
108108
prod_induction f (fun x ↦ 0 < x) (fun _ _ ha hb ↦ mul_pos ha hb) zero_lt_one h0
109109

110-
lemma prod_lt_prod (hf : ∀ i ∈ s, 0 < f i) (hfg : ∀ i ∈ s, f i ≤ g i)
110+
lemma prod_lt_prod (hf : ∀ i ∈ s, 0 < f i) (hfg : ∀ i ∈ s, f i ≤ g i)
111111
(hlt : ∃ i ∈ s, f i < g i) :
112112
∏ i ∈ s, f i < ∏ i ∈ s, g i := by
113113
classical
114114
obtain ⟨i, hi, hilt⟩ := hlt
115115
rw [← insert_erase hi, prod_insert (notMem_erase _ _), prod_insert (notMem_erase _ _)]
116116
have := posMulStrictMono_iff_mulPosStrictMono.1 ‹PosMulStrictMono R›
117117
refine mul_lt_mul_of_pos_of_nonneg' hilt ?_ ?_ ?_
118-
· exact prod_le_prod (fun j hj => le_of_lt (hf j (mem_of_mem_erase hj)))
118+
· exact prod_le_prod (fun j hj => (hf j (mem_of_mem_erase hj)).le)
119119
(fun _ hj ↦ hfg _ <| mem_of_mem_erase hj)
120120
· exact prod_pos fun j hj => hf j (mem_of_mem_erase hj)
121121
· exact (hf i hi).le.trans hilt.le
122122

123-
lemma prod_lt_prod_of_nonempty (hf : ∀ i ∈ s, 0 < f i) (hfg : ∀ i ∈ s, f i < g i)
123+
lemma prod_lt_prod_of_nonempty (hf : ∀ i ∈ s, 0 < f i) (hfg : ∀ i ∈ s, f i < g i)
124124
(h_ne : s.Nonempty) :
125125
∏ i ∈ s, f i < ∏ i ∈ s, g i := by
126-
apply prod_lt_prod hf fun i hi => le_of_lt (hfg i hi)
126+
apply prod_lt_prod hf fun i hi => le_of_lt (hfg i hi)
127127
obtain ⟨i, hi⟩ := h_ne
128128
exact ⟨i, hi, hfg i hi⟩
129129

Mathlib/Analysis/Analytic/Composition.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ theorem comp_summable_nnreal (q : FormalMultilinearSeries 𝕜 F G) (p : FormalM
467467
have B := calc
468468
(∏ i, ‖p (c.blocksFun i)‖₊) * rp ^ n = ∏ i, ‖p (c.blocksFun i)‖₊ * rp ^ c.blocksFun i := by
469469
simp only [Finset.prod_mul_distrib, Finset.prod_pow_eq_pow_sum, c.sum_blocksFun]
470-
_ ≤ ∏ _i : Fin c.length, Cp := Finset.prod_le_prod' fun i _ => hCp _
470+
_ ≤ ∏ _i : Fin c.length, Cp := by gcongr with i; exact hCp _
471471
_ = Cp ^ c.length := by simp
472472
_ ≤ Cp ^ n := pow_right_mono₀ hCp1 c.length_le
473473
calc

Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ theorem Asymptotics.IsLittleO.sum_range {α : Type*} [NormedAddCommGroup α] {f
150150
(fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ∑ i ∈ range n, g i := by
151151
have A : ∀ i, ‖g i‖ = g i := fun i => Real.norm_of_nonneg (hg i)
152152
have B : ∀ n, ‖∑ i ∈ range n, g i‖ = ∑ i ∈ range n, g i := fun n => by
153-
rwa [Real.norm_eq_abs, abs_sum_of_nonneg']
153+
rw [Real.norm_eq_abs, abs_sum_of_nonneg]; exact fun _ _ ↦ hg _
154154
apply isLittleO_iff.2 fun ε εpos => _
155155
intro ε εpos
156156
obtain ⟨N, hN⟩ : ∃ N : ℕ, ∀ b : ℕ, N ≤ b → ‖f b‖ ≤ ε / 2 * g b := by

Mathlib/Analysis/BoxIntegral/DivergenceTheorem.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ theorem hasIntegral_GP_pderiv (f : (Fin (n + 1) → ℝ) → E)
227227
(Hmaps _ Hl hy)) volume).trans ?_
228228
refine (mul_le_mul_of_nonneg_right ?_ (half_pos ε0).le).trans_eq (one_mul _)
229229
rw [Box.coe_eq_pi, measureReal_def, Real.volume_pi_Ioc_toReal (Box.lower_le_upper _)]
230-
refine prod_le_one (fun _ _ => sub_nonneg.2 <| Box.lower_le_upper _ _) fun j _ => ?_
230+
refine prod_le_one (fun _ _ => sub_nonneg.2 <| Box.lower_le_upper _ _) fun j _ => ?_
231231
calc
232232
J.upper (i.succAbove j) - J.lower (i.succAbove j) ≤
233233
dist (J.upper (i.succAbove j)) (J.lower (i.succAbove j)) :=

Mathlib/Analysis/Complex/Exponential.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ lemma le_inv_mul_exp (x : ℝ) {c : ℝ} (hc : 0 < c) : x ≤ c⁻¹ * exp (c *
671671

672672
theorem prod_one_add_le_exp_sum {ι : Type*} (s : Finset ι) {f : ι → ℝ}
673673
(hf : ∀ i, 0 ≤ f i) : ∏ i ∈ s, (1 + f i) ≤ exp (∑ i ∈ s, f i) :=
674-
(Finset.prod_le_prod (fun i _ ↦ add_nonneg zero_le_one (hf i))
674+
(Finset.prod_le_prod (fun i _ ↦ add_nonneg zero_le_one (hf i))
675675
fun i _ ↦ (add_comm 1 (f i)).le.trans (add_one_le_exp _)).trans
676676
(exp_sum s f).symm.le
677677

0 commit comments

Comments
 (0)