@@ -129,37 +129,40 @@ theorem prod_le_one' [MulLeftMono N] (h : ∀ i ∈ s, f i ≤ 1) : ∏ i ∈ s,
129129 (prod_le_prod' h).trans_eq (by rw [prod_const_one])
130130
131131@ [to_additive (attr := gcongr) sum_le_sum_of_subset_of_nonneg]
132- theorem prod_le_prod_of_subset_of_one_le' [MulLeftMono N] (h : s ⊆ t)
133- (hf : ∀ i ∈ t, i ∉ s → 1 ≤ f i) : ∏ i ∈ s, f i ≤ ∏ i ∈ t, f i := by
132+ lemma prod_le_prod_of_subset_of_one_le' [MulLeftMono N] (h : s ⊆ t) (hfg : ∀ i ∈ s, f i ≤ g i )
133+ (hg : ∀ i ∈ t, i ∉ s → 1 ≤ g i) : ∏ i ∈ s, f i ≤ ∏ i ∈ t, g i := by
134134 classical calc
135- ∏ i ∈ s, f i ≤ (∏ i ∈ t \ s, f i) * ∏ i ∈ s, f i :=
136- le_mul_of_one_le_left' <| one_le_prod' <| by simpa only [mem_sdiff, and_imp]
137- _ = ∏ i ∈ t \ s ∪ s, f i := (prod_union sdiff_disjoint).symm
138- _ = ∏ i ∈ t, f i := by rw [sdiff_union_of_subset h]
135+ ∏ i ∈ s, f i
136+ _ ≤ ∏ i ∈ s, g i := by gcongr with i hi; exact hfg i hi
137+ _ ≤ (∏ i ∈ t \ s, g i) * ∏ i ∈ s, g i :=
138+ le_mul_of_one_le_left' <| one_le_prod' <| by simpa only [mem_sdiff, and_imp]
139+ _ = ∏ i ∈ t \ s ∪ s, g i := (prod_union sdiff_disjoint).symm
140+ _ = ∏ i ∈ t, g i := by rw [sdiff_union_of_subset h]
139141
140142@[to_additive]
141143theorem prod_le_prod_of_subset_of_le_one'
142144 {ι : Type u_1} {N : Type u_5} [CommMonoid N] [Preorder N]
143- {f : ι → N} {s t : Finset ι} [MulLeftMono N] (h : s ⊆ t) (hf : ∀ i ∈ t, i ∉ s → f i ≤ 1 ) :
144- ∏ i ∈ t, f i ≤ ∏ i ∈ s, f i :=
145- prod_le_prod_of_subset_of_one_le' (N := Nᵒᵈ) h hf
145+ {f g : ι → N} {s t : Finset ι} [MulLeftMono N] (h : s ⊆ t) (hfg : ∀ i ∈ s, f i ≤ g i)
146+ (hf : ∀ i ∈ t, i ∉ s → f i ≤ 1 ) :
147+ ∏ i ∈ t, f i ≤ ∏ i ∈ s, g i :=
148+ prod_le_prod_of_subset_of_one_le' (N := Nᵒᵈ) h hfg hf
146149
147150@ [to_additive sum_mono_set_of_nonneg]
148151theorem prod_mono_set_of_one_le' [MulLeftMono N] (hf : ∀ x, 1 ≤ f x) :
149152 Monotone fun s ↦ ∏ x ∈ s, f x :=
150- fun _ _ hst ↦ prod_le_prod_of_subset_of_one_le' hst fun x _ _ ↦ hf x
153+ fun _ _ hst ↦ prod_le_prod_of_subset_of_one_le' hst ( by simp) fun x _ _ ↦ hf x
151154
152155@[to_additive]
153156theorem prod_anti_set_of_le_one'
154157 {ι : Type u_1} {N : Type u_5} [CommMonoid N] [Preorder N]
155158 {f : ι → N} [MulLeftMono N] (hf : ∀ (x : ι), f x ≤ 1 ) :
156159 Antitone fun (s : Finset ι) => ∏ x ∈ s, f x :=
157- fun _ _ hst ↦ prod_le_prod_of_subset_of_le_one' hst (by simp [hf])
160+ fun _ _ hst ↦ prod_le_prod_of_subset_of_le_one' hst (by simp) ( by simp [hf])
158161
159162@ [to_additive sum_le_univ_sum_of_nonneg]
160163theorem prod_le_univ_prod_of_one_le' [MulLeftMono N] [Fintype ι] {s : Finset ι} (w : ∀ x, 1 ≤ f x) :
161164 ∏ x ∈ s, f x ≤ ∏ x, f x :=
162- prod_le_prod_of_subset_of_one_le' (subset_univ s) fun a _ _ ↦ w a
165+ prod_le_prod_of_subset_of_one_le' (subset_univ s) ( by simp) fun a _ _ ↦ w a
163166
164167@ [to_additive sum_eq_zero_iff_of_nonneg]
165168theorem prod_eq_one_iff_of_one_le' {ι : Type u_1} {N : Type u_5} [CommMonoid N] [PartialOrder N]
@@ -199,7 +202,7 @@ theorem single_le_prod' [MulLeftMono N] (hf : ∀ i ∈ s, 1 ≤ f i) {a} (h : a
199202 calc
200203 f a = ∏ i ∈ {a}, f i := (prod_singleton _ _).symm
201204 _ ≤ ∏ i ∈ s, f i :=
202- prod_le_prod_of_subset_of_one_le' (singleton_subset_iff.2 h) fun i hi _ ↦ hf i hi
205+ prod_le_prod_of_subset_of_one_le' (singleton_subset_iff.2 h) ( by simp) fun i hi _ ↦ hf i hi
203206
204207@[to_additive]
205208lemma mul_le_prod [MulLeftMono N] {i j : ι} (hf : ∀ i ∈ s, 1 ≤ f i) (hi : i ∈ s) (hj : j ∈ s)
@@ -208,7 +211,7 @@ lemma mul_le_prod [MulLeftMono N] {i j : ι} (hf : ∀ i ∈ s, 1 ≤ f i) (hi :
208211 calc
209212 f i * f j = ∏ k ∈ .cons i {j} (by simpa), f k := by rw [prod_cons, prod_singleton]
210213 _ ≤ ∏ k ∈ s, f k := by
211- refine prod_le_prod_of_subset_of_one_le' ?_ fun k hk _ ↦ hf k hk
214+ refine prod_le_prod_of_subset_of_one_le' ?_ ( by simp) fun k hk _ ↦ hf k hk
212215 simp [cons_subset, *]
213216
214217@ [to_additive sum_le_card_nsmul]
@@ -235,7 +238,7 @@ theorem prod_fiberwise_le_prod_of_one_le_prod_fiber' [MulLeftMono N] {t : Finset
235238 calc
236239 (∏ y ∈ t, ∏ x ∈ s with g x = y, f x) ≤
237240 ∏ y ∈ t ∪ s.image g, ∏ x ∈ s with g x = y, f x :=
238- prod_le_prod_of_subset_of_one_le' subset_union_left fun y _ ↦ h y
241+ prod_le_prod_of_subset_of_one_le' subset_union_left ( by simp) fun y _ ↦ h y
239242 _ = ∏ x ∈ s, f x :=
240243 prod_fiberwise_of_maps_to (fun _ hx ↦ mem_union.2 <| Or.inr <| mem_image_of_mem _ hx) _
241244
@@ -418,7 +421,7 @@ lemma single_le_prod_of_canonicallyOrdered {i : ι} (hi : i ∈ s) :
418421@ [to_additive sum_le_sum_of_subset]
419422theorem prod_le_prod_of_subset' (h : s ⊆ t) : ∏ x ∈ s, f x ≤ ∏ x ∈ t, f x :=
420423 have := CanonicallyOrderedMul.toIsOrderedMonoid (α := M)
421- prod_le_prod_of_subset_of_one_le' h fun _ _ _ ↦ one_le
424+ prod_le_prod_of_subset_of_one_le' h ( by simp) fun _ _ _ ↦ one_le
422425
423426@ [to_additive sum_mono_set]
424427theorem prod_mono_set' (f : ι → M) : Monotone fun s ↦ ∏ x ∈ s, f x := fun _ _ hs ↦
@@ -478,7 +481,7 @@ theorem prod_lt_prod_of_subset' [MulLeftStrictMono M] (h : s ⊆ t) {i : ι} (ht
478481 rw [prod_insert hs]
479482 exact lt_mul_of_one_lt_left' (∏ j ∈ s, f j) hlt
480483 _ ≤ ∏ j ∈ t, f j := by
481- apply prod_le_prod_of_subset_of_one_le'
484+ refine prod_le_prod_of_subset_of_one_le' ?_ ( by simp) ?_
482485 · simp [Finset.insert_subset_iff, h, ht]
483486 · intro x hx h'x
484487 simp only [mem_insert, not_or] at h'x
0 commit comments