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

Commit f5ee84c

Browse files
feat(analysis/special_functions/pow): Added lemmas bounding rpow in ennreal (#4039)
Continuation of #3715. Added lemmas in `ennreal` corresponding to the `real` and `nnreal` lemmas added in that PR
1 parent 7354042 commit f5ee84c

File tree

1 file changed

+52
-21
lines changed

1 file changed

+52
-21
lines changed

src/analysis/special_functions/pow.lean

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,15 +1098,6 @@ begin
10981098
exact mul_rpow_of_ne_zero h.1 h.2 z
10991099
end
11001100

1101-
lemma one_le_rpow {x : ennreal} {z : ℝ} (h : 1 ≤ x) (h₁ : 0 ≤ z) : 1 ≤ x^z :=
1102-
begin
1103-
cases x,
1104-
{ rcases le_iff_eq_or_lt.1 h₁ with H|H,
1105-
{ simp [← H, le_refl] },
1106-
{ simp [top_rpow_of_pos H] } },
1107-
{ simp only [one_le_coe_iff, some_eq_coe] at h,
1108-
simp [coe_rpow_of_nonneg _ h₁, nnreal.one_le_rpow h h₁] }
1109-
end
11101101

11111102
lemma rpow_le_rpow {x y : ennreal} {z : ℝ} (h₁ : x ≤ y) (h₂ : 0 ≤ z) : x^z ≤ y^z :=
11121103
begin
@@ -1168,29 +1159,69 @@ begin
11681159
nnreal.rpow_le_rpow_of_exponent_ge (bot_lt_iff_ne_bot.mpr h) hx1 hyz] }
11691160
end
11701161

1171-
lemma rpow_le_one {x : ennreal} {z : ℝ} (hx2 : x 1) (hz : 0 z) : x^z 1 :=
1162+
lemma rpow_lt_one {x : ennreal} {z : ℝ} (hx : x < 1) (hz : 0 < z) : x^z < 1 :=
11721163
begin
1173-
lift x to ℝ≥0 using ne_of_lt (lt_of_le_of_lt hx2 coe_lt_top),
1174-
simp at hx2,
1175-
simp [coe_rpow_of_nonneg _ hz, nnreal.rpow_le_one hx2 hz]
1164+
lift x to ℝ≥0 using ne_of_lt (lt_of_lt_of_le hx le_top),
1165+
simp only [coe_lt_one_iff] at hx,
1166+
simp [coe_rpow_of_nonneg _ (le_of_lt hz), nnreal.rpow_lt_one (zero_le x) hx hz],
1167+
end
1168+
1169+
lemma rpow_le_one {x : ennreal} {z : ℝ} (hx : x ≤ 1) (hz : 0 ≤ z) : x^z ≤ 1 :=
1170+
begin
1171+
lift x to ℝ≥0 using ne_of_lt (lt_of_le_of_lt hx coe_lt_top),
1172+
simp only [coe_le_one_iff] at hx,
1173+
simp [coe_rpow_of_nonneg _ hz, nnreal.rpow_le_one hx hz],
1174+
end
1175+
1176+
lemma rpow_lt_one_of_one_lt_of_neg {x : ennreal} {z : ℝ} (hx : 1 < x) (hz : z < 0) : x^z < 1 :=
1177+
begin
1178+
cases x,
1179+
{ simp [top_rpow_of_neg hz, ennreal.zero_lt_one] },
1180+
{ simp only [some_eq_coe, one_lt_coe_iff] at hx,
1181+
simp [coe_rpow_of_ne_zero (ne_of_gt (lt_trans zero_lt_one hx)),
1182+
nnreal.rpow_lt_one_of_one_lt_of_neg hx hz] },
1183+
end
1184+
1185+
lemma rpow_le_one_of_one_le_of_neg {x : ennreal} {z : ℝ} (hx : 1 ≤ x) (hz : z < 0) : x^z ≤ 1 :=
1186+
begin
1187+
cases x,
1188+
{ simp [top_rpow_of_neg hz, ennreal.zero_lt_one] },
1189+
{ simp only [one_le_coe_iff, some_eq_coe] at hx,
1190+
simp [coe_rpow_of_ne_zero (ne_of_gt (lt_of_lt_of_le zero_lt_one hx)),
1191+
nnreal.rpow_le_one_of_one_le_of_nonpos hx (le_of_lt hz)] },
11761192
end
11771193

11781194
lemma one_lt_rpow {x : ennreal} {z : ℝ} (hx : 1 < x) (hz : 0 < z) : 1 < x^z :=
11791195
begin
11801196
cases x,
11811197
{ simp [top_rpow_of_pos hz] },
1182-
{ simp at hx,
1198+
{ simp only [some_eq_coe, one_lt_coe_iff] at hx,
11831199
simp [coe_rpow_of_nonneg _ (le_of_lt hz), nnreal.one_lt_rpow hx hz] }
11841200
end
11851201

1186-
lemma rpow_lt_one {x : ennreal} {z : ℝ} (hx1 : x < 1) (hz : 0 < z) : x^z < 1 :=
1202+
lemma one_le_rpow {x : ennreal} {z : ℝ} (hx : 1 ≤ x) (hz : 0 < z) : 1x^z :=
11871203
begin
1188-
by_cases h : x = 0,
1189-
{ simp [h, zero_rpow_of_pos hz, ennreal.zero_lt_one] },
1190-
{ lift x to ℝ≥0 using ne_of_lt (lt_of_lt_of_le hx1 le_top),
1191-
simp at h hx1,
1192-
have : 0 ≤ x := le_of_lt (bot_lt_iff_ne_bot.mpr h),
1193-
simp [coe_rpow_of_nonneg _ (le_of_lt hz), nnreal.rpow_lt_one this hx1 hz] }
1204+
cases x,
1205+
{ simp [top_rpow_of_pos hz] },
1206+
{ simp only [one_le_coe_iff, some_eq_coe] at hx,
1207+
simp [coe_rpow_of_nonneg _ (le_of_lt hz), nnreal.one_le_rpow hx (le_of_lt hz)] },
1208+
end
1209+
1210+
lemma one_lt_rpow_of_pos_of_lt_one_of_neg {x : ennreal} {z : ℝ} (hx1 : 0 < x) (hx2 : x < 1)
1211+
(hz : z < 0) : 1 < x^z :=
1212+
begin
1213+
lift x to ℝ≥0 using ne_of_lt (lt_of_lt_of_le hx2 le_top),
1214+
simp only [coe_lt_one_iff, coe_pos] at ⊢ hx1 hx2,
1215+
simp [coe_rpow_of_ne_zero (ne_of_gt hx1), nnreal.one_lt_rpow_of_pos_of_lt_one_of_neg hx1 hx2 hz],
1216+
end
1217+
1218+
lemma one_le_rpow_of_pos_of_le_one_of_neg {x : ennreal} {z : ℝ} (hx1 : 0 < x) (hx2 : x ≤ 1)
1219+
(hz : z < 0) : 1 ≤ x^z :=
1220+
begin
1221+
lift x to ℝ≥0 using ne_of_lt (lt_of_le_of_lt hx2 coe_lt_top),
1222+
simp only [coe_le_one_iff, coe_pos] at ⊢ hx1 hx2,
1223+
simp [coe_rpow_of_ne_zero (ne_of_gt hx1),
1224+
nnreal.one_le_rpow_of_pos_of_le_one_of_nonpos hx1 hx2 (le_of_lt hz)],
11941225
end
11951226

11961227
lemma to_real_rpow (x : ennreal) (z : ℝ) :

0 commit comments

Comments
 (0)