Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 81a31ca

Browse files
kim-emmergify[bot]
authored andcommitted
chore(data/*): flipping inequalities (#1436)
* chore(data/*): flipping inequalities * some more * Update src/algebra/order_functions.lean * fixing some names * fix * fixes * fixes * making names/comments uniform * fixes * fixes * fix * rename * fixes * fixes * fix * renames * I'm so bad at this * ... * fixes
1 parent e3234f0 commit 81a31ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+275
-271
lines changed

src/algebra/archimedean.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ let ⟨n, h⟩ := archimedean.arch x zero_lt_one in
2424
section linear_ordered_ring
2525
variables [linear_ordered_ring α] [archimedean α]
2626

27-
lemma pow_unbounded_of_gt_one (x : α) {y : α}
27+
lemma pow_unbounded_of_one_lt (x : α) {y : α}
2828
(hy1 : 1 < y) : ∃ n : ℕ, x < y ^ n :=
2929
have hy0 : 0 < y - 1 := sub_pos_of_lt hy1,
3030
let ⟨n, h⟩ := archimedean.arch x hy0 in
3131
⟨n, calc x ≤ n • (y - 1) : h
3232
... < 1 + n • (y - 1) : by rw add_comm; exact lt_add_one _
33-
... ≤ y ^ n : pow_ge_one_add_sub_mul (le_of_lt hy1) _⟩
33+
... ≤ y ^ n : one_add_sub_mul_le_pow (le_of_lt hy1) _⟩
3434

3535
lemma exists_nat_pow_near {x : α} {y : α} (hx : 1 < x) (hy : 1 < y) :
3636
∃ n : ℕ, y ^ n ≤ x ∧ x < y ^ (n + 1) :=
37-
have h : ∃ n : ℕ, x < y ^ n, from pow_unbounded_of_gt_one _ hy,
37+
have h : ∃ n : ℕ, x < y ^ n, from pow_unbounded_of_one_lt _ hy,
3838
by classical; exact let n := nat.find h in
3939
have hn : x < y ^ n, from nat.find_spec h,
4040
have hnp : 0 < n, from nat.pos_iff_ne_zero.2 (λ hn0,
@@ -71,11 +71,11 @@ lemma exists_int_pow_near [discrete_linear_ordered_field α] [archimedean α]
7171
{x : α} {y : α} (hx : 0 < x) (hy : 1 < y) :
7272
∃ n : ℤ, y ^ n ≤ x ∧ x < y ^ (n + 1) :=
7373
by classical; exact
74-
let ⟨N, hN⟩ := pow_unbounded_of_gt_one x⁻¹ hy in
74+
let ⟨N, hN⟩ := pow_unbounded_of_one_lt x⁻¹ hy in
7575
have he: ∃ m : ℤ, y ^ m ≤ x, from
7676
⟨-N, le_of_lt (by rw [(fpow_neg y (↑N)), one_div_eq_inv];
7777
exact (inv_lt hx (lt_trans (inv_pos hx) hN)).1 hN)⟩,
78-
let ⟨M, hM⟩ := pow_unbounded_of_gt_one x hy in
78+
let ⟨M, hM⟩ := pow_unbounded_of_one_lt x hy in
7979
have hb: ∃ b : ℤ, ∀ m, y ^ m ≤ x → m ≤ b, from
8080
⟨M, λ m hm, le_of_not_lt (λ hlt, not_lt_of_ge
8181
(fpow_le_of_le (le_of_lt hy) (le_of_lt hlt)) (lt_of_le_of_lt hm hM))⟩,

src/algebra/field_power.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ open int
108108

109109
variables {α : Type u} [discrete_linear_ordered_field α]
110110

111-
lemma fpow_nonneg_of_nonneg {a : α} (ha : a ≥ 0) : ∀ (z : ℤ), a ^ z0
111+
lemma fpow_nonneg_of_nonneg {a : α} (ha : 0 ≤ a) : ∀ (z : ℤ), 0a ^ z
112112
| (of_nat n) := pow_nonneg ha _
113113
| -[1+n] := div_nonneg' zero_le_one $ pow_nonneg ha _
114114

115-
lemma fpow_pos_of_pos {a : α} (ha : a > 0) : ∀ (z : ℤ), a ^ z > 0
115+
lemma fpow_pos_of_pos {a : α} (ha : 0 < a) : ∀ (z : ℤ), 0 < a ^ z
116116
| (of_nat n) := pow_pos ha _
117117
| -[1+n] := div_pos zero_lt_one $ pow_pos ha _
118118

@@ -136,7 +136,7 @@ begin
136136
repeat { apply pow_pos (lt_of_lt_of_le zero_lt_one hx) } }
137137
end
138138

139-
lemma pow_le_max_of_min_le {x : α} (hx : x ≥ 1) {a b c : ℤ} (h : min a b ≤ c) :
139+
lemma pow_le_max_of_min_le {x : α} (hx : 1 ≤ x) {a b c : ℤ} (h : min a b ≤ c) :
140140
x ^ (-c) ≤ max (x ^ (-a)) (x ^ (-b)) :=
141141
begin
142142
wlog hle : a ≤ b,
@@ -148,17 +148,17 @@ begin
148148
simpa only [max_eq_left hfle]
149149
end
150150

151-
lemma fpow_le_one_of_nonpos {p : α} (hp : p ≥ 1) {z : ℤ} (hz : z ≤ 0) : p ^ z ≤ 1 :=
151+
lemma fpow_le_one_of_nonpos {p : α} (hp : 1 ≤ p) {z : ℤ} (hz : z ≤ 0) : p ^ z ≤ 1 :=
152152
calc p ^ z ≤ p ^ 0 : fpow_le_of_le hp hz
153153
... = 1 : by simp
154154

155-
lemma fpow_ge_one_of_nonneg {p : α} (hp : p ≥ 1) {z : ℤ} (hz : z ≥ 0) : p ^ z1 :=
155+
lemma one_le_fpow_of_nonneg {p : α} (hp : 1 ≤ p) {z : ℤ} (hz : 0 ≤ z) : 1p ^ z :=
156156
calc p ^ z ≥ p ^ 0 : fpow_le_of_le hp hz
157157
... = 1 : by simp
158158

159159
end ordered_field_power
160160

161-
lemma one_lt_pow {α} [linear_ordered_semiring α] {p : α} (hp : p > 1) : ∀ {n : ℕ}, 1 ≤ n → 1 < p ^ n
161+
lemma one_lt_pow {α} [linear_ordered_semiring α] {p : α} (hp : 1 < p) : ∀ {n : ℕ}, 1 ≤ n → 1 < p ^ n
162162
| 1 h := by simp; assumption
163163
| (k+2) h :=
164164
begin
@@ -170,6 +170,6 @@ lemma one_lt_pow {α} [linear_ordered_semiring α] {p : α} (hp : p > 1) : ∀ {
170170
{ apply le_of_lt (lt_trans zero_lt_one hp) }
171171
end
172172

173-
lemma one_lt_fpow {α} [discrete_linear_ordered_field α] {p : α} (hp : p > 1) :
174-
∀ z : ℤ, z > 01 < p ^ z
173+
lemma one_lt_fpow {α} [discrete_linear_ordered_field α] {p : α} (hp : 1 < p) :
174+
∀ z : ℤ, 0 < z1 < p ^ z
175175
| (int.of_nat n) h := one_lt_pow hp (nat.succ_le_of_lt (int.lt_of_coe_nat_lt_coe_nat h))

src/algebra/floor.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ lemma ceil_pos {a : α} : 0 < ⌈a⌉ ↔ 0 < a :=
218218

219219
@[simp] theorem ceil_zero : ⌈(0 : α)⌉ = 0 := by simp [ceil]
220220

221-
lemma ceil_nonneg [decidable_rel ((<) : α → α → Prop)] {q : α} (hq : q ≥ 0) : ⌈q⌉0 :=
221+
lemma ceil_nonneg [decidable_rel ((<) : α → α → Prop)] {q : α} (hq : 0 ≤ q) : 0⌈q⌉ :=
222222
if h : q > 0 then le_of_lt $ ceil_pos.2 h
223223
else by rw [le_antisymm (le_of_not_lt h) hq, ceil_zero]; trivial
224224

src/algebra/gcd_domain.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,10 +465,10 @@ by simp [(int.coe_nat_eq_coe_nat_iff _ _).symm, coe_gcd, coe_nat_abs_eq_normaliz
465465
theorem gcd_mul_right (i j k : ℤ) : gcd (i * j) (k * j) = gcd i k * nat_abs j :=
466466
by simp [(int.coe_nat_eq_coe_nat_iff _ _).symm, coe_gcd, coe_nat_abs_eq_normalize]
467467

468-
theorem gcd_pos_of_non_zero_left {i : ℤ} (j : ℤ) (i_non_zero : i ≠ 0) : gcd i j > 0 :=
468+
theorem gcd_pos_of_non_zero_left {i : ℤ} (j : ℤ) (i_non_zero : i ≠ 0) : 0 < gcd i j :=
469469
nat.gcd_pos_of_pos_left (nat_abs j) (nat_abs_pos_of_ne_zero i_non_zero)
470470

471-
theorem gcd_pos_of_non_zero_right (i : ℤ) {j : ℤ} (j_non_zero : j ≠ 0) : gcd i j > 0 :=
471+
theorem gcd_pos_of_non_zero_right (i : ℤ) {j : ℤ} (j_non_zero : j ≠ 0) : 0 < gcd i j :=
472472
nat.gcd_pos_of_pos_right (nat_abs i) (nat_abs_pos_of_ne_zero j_non_zero)
473473

474474
theorem gcd_eq_zero_iff {i j : ℤ} : gcd i j = 0 ↔ i = 0 ∧ j = 0 :=

src/algebra/group_power.lean

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,11 @@ by induction n with n ih; [exact one_inv.symm,
167167
@[simp] theorem add_monoid.neg_smul : ∀ (a : β) (n : ℕ), n•(-a) = -(n•a) :=
168168
@inv_pow (multiplicative β) _
169169

170-
theorem pow_sub (a : α) {m n : ℕ} (h : m ≥ n) : a^(m - n) = a^m * (a^n)⁻¹ :=
170+
theorem pow_sub (a : α) {m n : ℕ} (h : n ≤ m) : a^(m - n) = a^m * (a^n)⁻¹ :=
171171
have h1 : m - n + n = m, from nat.sub_add_cancel h,
172172
have h2 : a^(m - n) * a^n = a^m, by rw [←pow_add, h1],
173173
eq_mul_inv_of_mul_eq h2
174-
theorem add_monoid.smul_sub : ∀ (a : β) {m n : ℕ}, m ≥ n → (m - n)•a = m•a - n•a :=
174+
theorem add_monoid.smul_sub : ∀ (a : β) {m n : ℕ}, n ≤ m → (m - n)•a = m•a - n•a :=
175175
@pow_sub (multiplicative β) _
176176

177177
theorem pow_inv_comm (a : α) (m n : ℕ) : (a⁻¹)^m * a^n = a^n * (a⁻¹)^m :=
@@ -524,13 +524,13 @@ theorem one_le_pow_of_one_le {a : α} (H : 1 ≤ a) : ∀ (n : ℕ), 1 ≤ a ^ n
524524
| (n+1) := by simpa only [mul_one] using mul_le_mul H (one_le_pow_of_one_le n)
525525
zero_le_one (le_trans zero_le_one H)
526526

527-
theorem pow_ge_one_add_mul {a : α} (H : a ≥ 0) :
527+
theorem one_add_mul_le_pow {a : α} (H : 0 ≤ a) :
528528
∀ (n : ℕ), 1 + n • a ≤ (1 + a) ^ n
529529
| 0 := le_of_eq $ add_zero _
530530
| (n+1) := begin
531531
rw [pow_succ', succ_smul'],
532532
refine le_trans _ (mul_le_mul_of_nonneg_right
533-
(pow_ge_one_add_mul n) (add_nonneg zero_le_one H)),
533+
(one_add_mul_le_pow n) (add_nonneg zero_le_one H)),
534534
rw [mul_add, mul_one, ← add_assoc, add_le_add_iff_left],
535535
simpa only [one_mul] using mul_le_mul_of_nonneg_right
536536
((le_add_iff_nonneg_right 1).2 (add_monoid.smul_nonneg H n)) H
@@ -595,9 +595,9 @@ end linear_ordered_semiring
595595
theorem pow_two_nonneg [linear_ordered_ring α] (a : α) : 0 ≤ a ^ 2 :=
596596
by rw pow_two; exact mul_self_nonneg _
597597

598-
theorem pow_ge_one_add_sub_mul [linear_ordered_ring α]
599-
{a : α} (H : a ≥ 1) (n : ℕ) : 1 + n • (a - 1) ≤ a ^ n :=
600-
by simpa only [add_sub_cancel'_right] using pow_ge_one_add_mul (sub_nonneg.2 H) n
598+
theorem one_add_sub_mul_le_pow [linear_ordered_ring α]
599+
{a : α} (H : 1 ≤ a) (n : ℕ) : 1 + n • (a - 1) ≤ a ^ n :=
600+
by simpa only [add_sub_cancel'_right] using one_add_mul_le_pow (sub_nonneg.2 H) n
601601

602602
namespace int
603603

src/algebra/order.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ begin
152152
apply h₂, apply le_antisymm; apply le_of_not_gt; assumption
153153
end
154154

155-
lemma ne_iff_lt_or_gt [decidable_linear_order α] {a b : α} : a ≠ b ↔ a < b ∨ a > b :=
155+
lemma ne_iff_lt_or_gt [decidable_linear_order α] {a b : α} : a ≠ b ↔ a < b ∨ b < a :=
156156
⟨lt_or_gt_of_ne, λo, o.elim ne_of_lt ne_of_gt⟩
157157

158158
lemma le_imp_le_of_lt_imp_lt {β} [preorder α] [decidable_linear_order β]

src/algebra/order_functions.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ def sub_abs_le_abs_sub := @abs_sub_abs_le_abs_sub
208208
lemma abs_abs_sub_le_abs_sub (a b : α) : abs (abs a - abs b) ≤ abs (a - b) :=
209209
abs_sub_le_iff.2 ⟨sub_abs_le_abs_sub _ _, by rw abs_sub; apply sub_abs_le_abs_sub⟩
210210

211-
lemma abs_eq (hb : b ≥ 0) : abs a = b ↔ a = b ∨ a = -b :=
211+
lemma abs_eq (hb : 0 ≤ b) : abs a = b ↔ a = b ∨ a = -b :=
212212
iff.intro
213213
begin
214214
cases le_total a 0 with a_nonpos a_nonneg,

src/algebra/ordered_group.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ ordered_comm_monoid.lt_of_add_lt_add_left a b c
4646
lemma add_le_add' (h₁ : a ≤ b) (h₂ : c ≤ d) : a + c ≤ b + d :=
4747
le_trans (add_le_add_right' h₁) (add_le_add_left' h₂)
4848

49-
lemma le_add_of_nonneg_right' (h : b ≥ 0) : a ≤ a + b :=
49+
lemma le_add_of_nonneg_right' (h : 0 ≤ b) : a ≤ a + b :=
5050
have a + b ≥ a + 0, from add_le_add_left' h,
5151
by rwa add_zero at this
5252

53-
lemma le_add_of_nonneg_left' (h : b ≥ 0) : a ≤ b + a :=
53+
lemma le_add_of_nonneg_left' (h : 0 ≤ b) : a ≤ b + a :=
5454
have 0 + a ≤ b + a, from add_le_add_right' h,
5555
by rwa zero_add at this
5656

src/algebra/ordered_ring.lean

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ import tactic.split_ifs order.basic algebra.order algebra.ordered_group algebra.
88
universe u
99
variable {α : Type u}
1010

11-
-- TODO: this is necessary additionally to mul_nonneg otherwise the simplifier can not match
12-
lemma zero_le_mul [ordered_semiring α] {a b : α} : 0 ≤ a → 0 ≤ b → 0 ≤ a * b :=
11+
-- `mul_nonneg` and `mul_pos` in core are stated in terms of `≥` and `>`, so we restate them here
12+
-- for use in syntactic tactics (e.g. `simp` and `rw`).
13+
lemma mul_nonneg' [ordered_semiring α] {a b : α} : 0 ≤ a → 0 ≤ b → 0 ≤ a * b :=
1314
mul_nonneg
1415

16+
lemma mul_pos' [ordered_semiring α] {a b : α} (ha : 0 < a) (hb : 0 < b) : 0 < a * b :=
17+
mul_pos ha hb
18+
1519
section linear_ordered_semiring
1620
variable [linear_ordered_semiring α]
1721

@@ -36,30 +40,30 @@ lemma mul_lt_mul'' {a b c d : α} (h1 : a < c) (h2 : b < d) (h3 : 0 ≤ a) (h4 :
3640
(λ b0, by rw [← b0, mul_zero]; exact
3741
mul_pos (lt_of_le_of_lt h3 h1) (lt_of_le_of_lt h4 h2))
3842

39-
lemma le_mul_iff_one_le_left {a b : α} (hb : b > 0) : b ≤ a * b ↔ 1 ≤ a :=
43+
lemma le_mul_iff_one_le_left {a b : α} (hb : 0 < b) : b ≤ a * b ↔ 1 ≤ a :=
4044
suffices 1 * b ≤ a * b ↔ 1 ≤ a, by rwa one_mul at this,
4145
mul_le_mul_right hb
4246

43-
lemma lt_mul_iff_one_lt_left {a b : α} (hb : b > 0) : b < a * b ↔ 1 < a :=
47+
lemma lt_mul_iff_one_lt_left {a b : α} (hb : 0 < b) : b < a * b ↔ 1 < a :=
4448
suffices 1 * b < a * b ↔ 1 < a, by rwa one_mul at this,
4549
mul_lt_mul_right hb
4650

47-
lemma le_mul_iff_one_le_right {a b : α} (hb : b > 0) : b ≤ b * a ↔ 1 ≤ a :=
51+
lemma le_mul_iff_one_le_right {a b : α} (hb : 0 < b) : b ≤ b * a ↔ 1 ≤ a :=
4852
suffices b * 1 ≤ b * a ↔ 1 ≤ a, by rwa mul_one at this,
4953
mul_le_mul_left hb
5054

51-
lemma lt_mul_iff_one_lt_right {a b : α} (hb : b > 0) : b < b * a ↔ 1 < a :=
55+
lemma lt_mul_iff_one_lt_right {a b : α} (hb : 0 < b) : b < b * a ↔ 1 < a :=
5256
suffices b * 1 < b * a ↔ 1 < a, by rwa mul_one at this,
5357
mul_lt_mul_left hb
5458

55-
lemma lt_mul_of_gt_one_right' {a b : α} (hb : b > 0) : a > 1 → b < b * a :=
59+
lemma lt_mul_of_one_lt_right' {a b : α} (hb : 0 < b) : 1 < a → b < b * a :=
5660
(lt_mul_iff_one_lt_right hb).2
5761

58-
lemma le_mul_of_ge_one_right' {a b : α} (hb : b ≥ 0) (h : a ≥ 1) : b ≤ b * a :=
62+
lemma le_mul_of_one_le_right' {a b : α} (hb : 0 ≤ b) (h : 1 ≤ a) : b ≤ b * a :=
5963
suffices b * 1 ≤ b * a, by rwa mul_one at this,
6064
mul_le_mul_of_nonneg_left h hb
6165

62-
lemma le_mul_of_ge_one_left' {a b : α} (hb : b ≥ 0) (h : a ≥ 1) : b ≤ a * b :=
66+
lemma le_mul_of_one_le_left' {a b : α} (hb : 0 ≤ b) (h : 1 ≤ a) : b ≤ a * b :=
6367
suffices 1 * b ≤ a * b, by rwa one_mul at this,
6468
mul_le_mul_of_nonneg_right h hb
6569

@@ -109,19 +113,19 @@ lemma mul_lt_one_of_nonneg_of_lt_one_right {a b : α}
109113
calc a * b ≤ b : mul_le_of_le_one_left hb0 ha
110114
... < 1 : hb
111115

112-
lemma mul_le_iff_le_one_left {a b : α} (hb : b > 0) : a * b ≤ b ↔ a ≤ 1 :=
116+
lemma mul_le_iff_le_one_left {a b : α} (hb : 0 < b) : a * b ≤ b ↔ a ≤ 1 :=
113117
⟨ λ h, le_of_not_lt (mt (lt_mul_iff_one_lt_left hb).2 (not_lt_of_ge h)),
114118
λ h, le_of_not_lt (mt (lt_mul_iff_one_lt_left hb).1 (not_lt_of_ge h)) ⟩
115119

116-
lemma mul_lt_iff_lt_one_left {a b : α} (hb : b > 0) : a * b < b ↔ a < 1 :=
120+
lemma mul_lt_iff_lt_one_left {a b : α} (hb : 0 < b) : a * b < b ↔ a < 1 :=
117121
⟨ λ h, lt_of_not_ge (mt (le_mul_iff_one_le_left hb).2 (not_le_of_gt h)),
118122
λ h, lt_of_not_ge (mt (le_mul_iff_one_le_left hb).1 (not_le_of_gt h)) ⟩
119123

120-
lemma mul_le_iff_le_one_right {a b : α} (hb : b > 0) : b * a ≤ b ↔ a ≤ 1 :=
124+
lemma mul_le_iff_le_one_right {a b : α} (hb : 0 < b) : b * a ≤ b ↔ a ≤ 1 :=
121125
⟨ λ h, le_of_not_lt (mt (lt_mul_iff_one_lt_right hb).2 (not_lt_of_ge h)),
122126
λ h, le_of_not_lt (mt (lt_mul_iff_one_lt_right hb).1 (not_lt_of_ge h)) ⟩
123127

124-
lemma mul_lt_iff_lt_one_right {a b : α} (hb : b > 0) : b * a < b ↔ a < 1 :=
128+
lemma mul_lt_iff_lt_one_right {a b : α} (hb : 0 < b) : b * a < b ↔ a < 1 :=
125129
⟨ λ h, lt_of_not_ge (mt (le_mul_iff_one_le_right hb).2 (not_le_of_gt h)),
126130
λ h, lt_of_not_ge (mt (le_mul_iff_one_le_right hb).1 (not_le_of_gt h)) ⟩
127131

src/analysis/convex.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ begin
474474
{ rw finset.mul_sum.symm,
475475
exact division_ring.inv_mul_cancel h_cases },
476476
{ intros i hi,
477-
exact zero_le_mul (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
477+
exact mul_nonneg (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
478478
{ intros i hi,
479479
exact hz i (finset.mem_insert_of_mem hi) } },
480480
have h_sum_in_A: a k • z k
@@ -621,7 +621,7 @@ begin
621621
≤ s.sum (λ (i : γ), ((s.sum a)⁻¹ * a i) • f (z i)),
622622
{ apply ih _ hf,
623623
{ intros i hi,
624-
exact zero_le_mul (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
624+
exact mul_nonneg (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
625625
{ intros i hi,
626626
exact hz i (finset.mem_insert_of_mem hi) },
627627
{ rw finset.mul_sum.symm,
@@ -631,7 +631,7 @@ begin
631631
{ rw finset.mul_sum.symm,
632632
exact division_ring.inv_mul_cancel h_cases },
633633
{ intros i hi,
634-
exact zero_le_mul (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
634+
exact mul_nonneg (inv_nonneg.2 h_sum_nonneg) (ha i (finset.mem_insert_of_mem hi))},
635635
{ intros i hi,
636636
exact hz i (finset.mem_insert_of_mem hi) } },
637637
have hf': f (a k • z k + s.sum a • s.sum (λ (i : γ), ((finset.sum s a)⁻¹ * a i) • z i))

0 commit comments

Comments
 (0)