analysis.convex.slope
β·
Mathlib.Analysis.Convex.Slope
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
@@ -217,6 +217,128 @@ lemma strict_concave_on_iff_slope_strict_anti_adjacent :
β¨Ξ» h, β¨h.1, Ξ» x y z, h.slope_anti_adjacentβ©,
Ξ» h, strict_concave_on_of_slope_strict_anti_adjacent h.1 h.2β©
+lemma convex_on.secant_mono_aux1 (hf : convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
+begin
+ have hxy' : 0 < y - x := by linarith,
+ have hyz' : 0 < z - y := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw β le_div_iff' hxz',
+ have ha : 0 β€ (z - y) / (z - x) := by positivity,
+ have hb : 0 β€ (y - x) / (z - x) := by positivity,
+ calc f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) : _
+ ... β€ (z - y) / (z - x) * f x + (y - x) / (z - x) * f z : hf.2 hx hz ha hb _
+ ... = ((z - y) * f x + (y - x) * f z) / (z - x) : _,
+ { congr' 1,
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne'],
+ ring },
+ { field_simp [hxy'.ne', hyz'.ne', hxz'.ne'] },
+ { field_simp [hxy'.ne', hyz'.ne', hxz'.ne'] }
+end
+
+lemma convex_on.secant_mono_aux2 (hf : convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (f y - f x) / (y - x) β€ (f z - f x) / (z - x) :=
+begin
+ have hxy' : 0 < y - x := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw div_le_div_iff hxy' hxz',
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz],
+end
+
+lemma convex_on.secant_mono_aux3 (hf : convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (f z - f x) / (z - x) β€ (f z - f y) / (z - y) :=
+begin
+ have hyz' : 0 < z - y := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw div_le_div_iff hxz' hyz',
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz],
+end
+
+lemma convex_on.secant_mono (hf : convex_on π s f)
+ {a x y : π} (ha : a β s) (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
+ (f x - f a) / (x - a) β€ (f y - f a) / (y - a) :=
+begin
+ rcases eq_or_lt_of_le hxy with rfl | hxy,
+ { simp },
+ cases lt_or_gt_of_ne hxa with hxa hxa,
+ { cases lt_or_gt_of_ne hya with hya hya,
+ { convert hf.secant_mono_aux3 hx ha hxy hya using 1;
+ rw β neg_div_neg_eq;
+ field_simp, },
+ { convert hf.slope_mono_adjacent hx hy hxa hya using 1,
+ rw β neg_div_neg_eq;
+ field_simp, } },
+ { exact hf.secant_mono_aux2 ha hy hxa hxy, },
+end
+
+lemma strict_convex_on.secant_strict_mono_aux1 (hf : strict_convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (z - x) * f y < (z - y) * f x + (y - x) * f z :=
+begin
+ have hxy' : 0 < y - x := by linarith,
+ have hyz' : 0 < z - y := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw β lt_div_iff' hxz',
+ have ha : 0 < (z - y) / (z - x) := by positivity,
+ have hb : 0 < (y - x) / (z - x) := by positivity,
+ calc f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) : _
+ ... < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z : hf.2 hx hz (by linarith) ha hb _
+ ... = ((z - y) * f x + (y - x) * f z) / (z - x) : _,
+ { congr' 1,
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne'],
+ ring },
+ { field_simp [hxy'.ne', hyz'.ne', hxz'.ne'] },
+ { field_simp [hxy'.ne', hyz'.ne', hxz'.ne'] }
+end
+
+lemma strict_convex_on.secant_strict_mono_aux2 (hf : strict_convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (f y - f x) / (y - x) < (f z - f x) / (z - x) :=
+begin
+ have hxy' : 0 < y - x := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw div_lt_div_iff hxy' hxz',
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz],
+end
+
+lemma strict_convex_on.secant_strict_mono_aux3 (hf : strict_convex_on π s f)
+ {x y z : π} (hx : x β s) (hz : z β s) (hxy : x < y) (hyz : y < z) :
+ (f z - f x) / (z - x) < (f z - f y) / (z - y) :=
+begin
+ have hyz' : 0 < z - y := by linarith,
+ have hxz' : 0 < z - x := by linarith,
+ rw div_lt_div_iff hxz' hyz',
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz],
+end
+
+lemma strict_convex_on.secant_strict_mono (hf : strict_convex_on π s f)
+ {a x y : π} (ha : a β s) (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f x - f a) / (x - a) < (f y - f a) / (y - a) :=
+begin
+ cases lt_or_gt_of_ne hxa with hxa hxa,
+ { cases lt_or_gt_of_ne hya with hya hya,
+ { convert hf.secant_strict_mono_aux3 hx ha hxy hya using 1;
+ rw β neg_div_neg_eq;
+ field_simp, },
+ { convert hf.slope_strict_mono_adjacent hx hy hxa hya using 1,
+ rw β neg_div_neg_eq;
+ field_simp, } },
+ { exact hf.secant_strict_mono_aux2 ha hy hxa hxy, },
+end
+
+lemma strict_concave_on.secant_strict_mono (hf : strict_concave_on π s f)
+ {a x y : π} (ha : a β s) (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f y - f a) / (y - a) < (f x - f a) / (x - a) :=
+begin
+ have key := hf.neg.secant_strict_mono ha hx hy hxa hya hxy,
+ simp only [pi.neg_apply] at key,
+ rw β neg_lt_neg_iff,
+ convert key using 1; field_simp,
+end
+
/-- If `f` is convex on a set `s` in a linearly ordered field, and `f x < f y` for two points
`x < y` in `s`, then `f` is strictly monotone on `s β© [y, β)`. -/
lemma convex_on.strict_mono_of_lt (hf : convex_on π s f)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -31,7 +31,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
(hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f y) / (z - y) :=
by
have hxz := hxy.trans hyz
- rw [β sub_pos] at hxy hxz hyz
+ rw [β sub_pos] at hxy hxz hyz
suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
@@ -41,7 +41,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
(show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
- rw [hy] at key
+ rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_le_div_right]
@@ -72,7 +72,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
by
have hxz := hxy.trans hyz
have hxz' := hxz.ne
- rw [β sub_pos] at hxy hxz hyz
+ rw [β sub_pos] at hxy hxz hyz
suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
@@ -81,7 +81,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
(show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
- rw [hy] at key
+ rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_lt_div_right]
@@ -125,15 +125,15 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a :=
by
- rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add'] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
- rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_le_iff_le_add', β add_sub_assoc, le_sub_iff_add_le, β mul_add,
sub_add_sub_cancel, β le_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
- mul_comm (f z), ha, hb] at this
+ mul_comm (f z), ha, hb] at this
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
-/
@@ -175,15 +175,15 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a :=
by
- rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add'] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
- rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_lt_iff_lt_add', β add_sub_assoc, lt_sub_iff_add_lt, β mul_add,
sub_add_sub_cancel, β lt_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
- mul_comm (f z), ha, hb] at this
+ mul_comm (f z), ha, hb] at this
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
-/
@@ -384,7 +384,7 @@ theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x
(f y - f a) / (y - a) < (f x - f a) / (x - a) :=
by
have key := hf.neg.secant_strict_mono ha hx hy hxa hya hxy
- simp only [Pi.neg_apply] at key
+ simp only [Pi.neg_apply] at key
rw [β neg_lt_neg_iff]
convert key using 1 <;> field_simp
#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Yury Kudriashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
-/
-import Mathbin.Analysis.Convex.Function
-import Mathbin.Tactic.FieldSimp
+import Analysis.Convex.Function
+import Tactic.FieldSimp
import Mathbin.Tactic.Linarith.Default
#align_import analysis.convex.slope from "leanprover-community/mathlib"@"a8b2226cfb0a79f5986492053fc49b1a0c6aeffb"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2021 Yury Kudriashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
-
-! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit a8b2226cfb0a79f5986492053fc49b1a0c6aeffb
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Convex.Function
import Mathbin.Tactic.FieldSimp
import Mathbin.Tactic.Linarith.Default
+#align_import analysis.convex.slope from "leanprover-community/mathlib"@"a8b2226cfb0a79f5986492053fc49b1a0c6aeffb"
+
/-!
# Slopes of convex functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -27,6 +27,7 @@ The main use is to show convexity/concavity from monotonicity of the derivative.
variable {π : Type _} [LinearOrderedField π] {s : Set π} {f : π β π}
+#print ConvexOn.slope_mono_adjacent /-
/-- If `f : π β π` is convex, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -50,7 +51,9 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
Β· linarith
Β· nlinarith
#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacent
+-/
+#print ConcaveOn.slope_anti_adjacent /-
/-- If `f : π β π` is concave, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -60,7 +63,9 @@ theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (
simp_rw [β Pi.neg_apply, β neg_div, neg_sub]
exact ConvexOn.slope_mono_adjacent hf.neg hx hz hxy hyz
#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacent
+-/
+#print StrictConvexOn.slope_strict_mono_adjacent /-
/-- If `f : π β π` is strictly convex, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -86,7 +91,9 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
Β· linarith
Β· nlinarith
#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacent
+-/
+#print StrictConcaveOn.slope_anti_adjacent /-
/-- If `f : π β π` is strictly concave, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -97,7 +104,9 @@ theorem StrictConcaveOn.slope_anti_adjacent (hf : StrictConcaveOn π s f) {x y
simp_rw [β Pi.neg_apply, β neg_div, neg_sub]
exact StrictConvexOn.slope_strict_mono_adjacent hf.neg hx hz hxy hyz
#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacent
+-/
+#print convexOn_of_slope_mono_adjacent /-
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
less than the slope of the secant line of `f` on `[x, z]`, then `f` is convex. -/
theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
@@ -129,7 +138,9 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
sub_add_sub_cancel, β le_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
mul_comm (f z), ha, hb] at this
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
+-/
+#print concaveOn_of_slope_anti_adjacent /-
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
greater than the slope of the secant line of `f` on `[x, z]`, then `f` is concave. -/
theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
@@ -143,7 +154,9 @@ theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
simp_rw [β neg_div, neg_sub, Pi.neg_apply, neg_sub_neg]
exact hf hx hz hxy hyz
#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacent
+-/
+#print strictConvexOn_of_slope_strict_mono_adjacent /-
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly less than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly convex. -/
theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
@@ -175,7 +188,9 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
sub_add_sub_cancel, β lt_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
mul_comm (f z), ha, hb] at this
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
+-/
+#print strictConcaveOn_of_slope_strict_anti_adjacent /-
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly greater than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly concave.
-/
@@ -190,7 +205,9 @@ theorem strictConcaveOn_of_slope_strict_anti_adjacent (hs : Convex π s)
simp_rw [β neg_div, neg_sub, Pi.neg_apply, neg_sub_neg]
exact hf hx hz hxy hyz
#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacent
+-/
+#print convexOn_iff_slope_mono_adjacent /-
/-- A function `f : π β π` is convex iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem convexOn_iff_slope_mono_adjacent :
@@ -201,7 +218,9 @@ theorem convexOn_iff_slope_mono_adjacent :
β¨fun h => β¨h.1, fun x y z => h.slope_mono_adjacentβ©, fun h =>
convexOn_of_slope_mono_adjacent h.1 h.2β©
#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacent
+-/
+#print concaveOn_iff_slope_anti_adjacent /-
/-- A function `f : π β π` is concave iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem concaveOn_iff_slope_anti_adjacent :
@@ -212,7 +231,9 @@ theorem concaveOn_iff_slope_anti_adjacent :
β¨fun h => β¨h.1, fun x y z => h.slope_anti_adjacentβ©, fun h =>
concaveOn_of_slope_anti_adjacent h.1 h.2β©
#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacent
+-/
+#print strictConvexOn_iff_slope_strict_mono_adjacent /-
/-- A function `f : π β π` is strictly convex iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -224,7 +245,9 @@ theorem strictConvexOn_iff_slope_strict_mono_adjacent :
β¨fun h => β¨h.1, fun x y z => h.slope_strict_mono_adjacentβ©, fun h =>
strictConvexOn_of_slope_strict_mono_adjacent h.1 h.2β©
#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacent
+-/
+#print strictConcaveOn_iff_slope_strict_anti_adjacent /-
/-- A function `f : π β π` is strictly concave iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -236,7 +259,9 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
β¨fun h => β¨h.1, fun x y z => h.slope_anti_adjacentβ©, fun h =>
strictConcaveOn_of_slope_strict_anti_adjacent h.1 h.2β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
+-/
+#print ConvexOn.secant_mono_aux1 /-
theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
by
@@ -256,7 +281,9 @@ theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx :
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
+-/
+#print ConvexOn.secant_mono_aux2 /-
theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f x) / (z - x) :=
by
@@ -265,7 +292,9 @@ theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx :
rw [div_le_div_iff hxy' hxz']
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2
+-/
+#print ConvexOn.secant_mono_aux3 /-
theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) β€ (f z - f y) / (z - y) :=
by
@@ -274,7 +303,9 @@ theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx :
rw [div_le_div_iff hxz' hyz']
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
+-/
+#print ConvexOn.secant_mono /-
theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
(hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
(f x - f a) / (x - a) β€ (f y - f a) / (y - a) :=
@@ -288,7 +319,9 @@ theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β
rw [β neg_div_neg_eq] <;> field_simp
Β· exact hf.secant_mono_aux2 ha hy hxa hxy
#align convex_on.secant_mono ConvexOn.secant_mono
+-/
+#print StrictConvexOn.secant_strict_mono_aux1 /-
theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z :=
by
@@ -308,7 +341,9 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
+-/
+#print StrictConvexOn.secant_strict_mono_aux2 /-
theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) < (f z - f x) / (z - x) :=
by
@@ -317,7 +352,9 @@ theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x
rw [div_lt_div_iff hxy' hxz']
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2
+-/
+#print StrictConvexOn.secant_strict_mono_aux3 /-
theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) < (f z - f y) / (z - y) :=
by
@@ -326,7 +363,9 @@ theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x
rw [div_lt_div_iff hxz' hyz']
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
+-/
+#print StrictConvexOn.secant_strict_mono /-
theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f x - f a) / (x - a) < (f y - f a) / (y - a) :=
@@ -340,7 +379,9 @@ theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y
rw [β neg_div_neg_eq] <;> field_simp
Β· exact hf.secant_strict_mono_aux2 ha hy hxa hxy
#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
+-/
+#print StrictConcaveOn.secant_strict_mono /-
theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f y - f a) / (y - a) < (f x - f a) / (x - a) :=
@@ -350,7 +391,9 @@ theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x
rw [β neg_lt_neg_iff]
convert key using 1 <;> field_simp
#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
+-/
+#print ConvexOn.strict_mono_of_lt /-
/-- If `f` is convex on a set `s` in a linearly ordered field, and `f x < f y` for two points
`x < y` in `s`, then `f` is strictly monotone on `s β© [y, β)`. -/
theorem ConvexOn.strict_mono_of_lt (hf : ConvexOn π s f) {x y : π} (hx : x β s) (hxy : x < y)
@@ -371,4 +414,5 @@ theorem ConvexOn.strict_mono_of_lt (hf : ConvexOn π s f) {x y : π} (hx : x
Β· rw [openSegment_eq_Ioo (hu2.trans huv)]
exact β¨hu2, huvβ©
#align convex_on.strict_mono_of_lt ConvexOn.strict_mono_of_lt
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -250,7 +250,6 @@ theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx :
f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := _
_ β€ (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz ha hb _)
_ = ((z - y) * f x + (y - x) * f z) / (z - x) := _
-
Β· congr 1
field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
ring
@@ -303,7 +302,6 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := _
_ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz (by linarith) ha hb _)
_ = ((z - y) * f x + (y - x) * f z) / (z - x) := _
-
Β· congr 1
field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
ring
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -34,7 +34,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
by
have hxz := hxy.trans hyz
rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at this β’;
+ suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
@@ -45,7 +45,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
(show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_le_div_right]
Β· linarith
Β· nlinarith
@@ -71,7 +71,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
have hxz := hxy.trans hyz
have hxz' := hxz.ne
rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at this β’;
+ suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
@@ -81,7 +81,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
(show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_lt_div_right]
Β· linarith
Β· nlinarith
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -33,19 +33,19 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
(hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f y) / (z - y) :=
by
have hxz := hxy.trans hyz
- rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at thisβ’;
+ rw [β sub_pos] at hxy hxz hyz
+ suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring;linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring; linarith]
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
- (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring;linarith])
- rw [hy] at key
+ (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
+ rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_le_div_right]
Β· linarith
Β· nlinarith
@@ -70,18 +70,18 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
by
have hxz := hxy.trans hyz
have hxz' := hxz.ne
- rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at thisβ’;
+ rw [β sub_pos] at hxy hxz hyz
+ suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at this β’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring;linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring; linarith]
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
- (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring;linarith])
- rw [hy] at key
+ (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring; linarith])
+ rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_lt_div_right]
Β· linarith
Β· nlinarith
@@ -119,15 +119,15 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a :=
by
- rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add'] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
- rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_le_iff_le_add', β add_sub_assoc, le_sub_iff_add_le, β mul_add,
sub_add_sub_cancel, β le_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
- mul_comm (f z), ha, hb] at this
+ mul_comm (f z), ha, hb] at this
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
@@ -165,15 +165,15 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a :=
by
- rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add'] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
- rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ rw [eq_comm, β sub_eq_iff_eq_add] at hab
simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_lt_iff_lt_add', β add_sub_assoc, lt_sub_iff_add_lt, β mul_add,
sub_add_sub_cancel, β lt_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
- mul_comm (f z), ha, hb] at this
+ mul_comm (f z), ha, hb] at this
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
@@ -348,7 +348,7 @@ theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x
(f y - f a) / (y - a) < (f x - f a) / (x - a) :=
by
have key := hf.neg.secant_strict_mono ha hx hy hxa hya hxy
- simp only [Pi.neg_apply] at key
+ simp only [Pi.neg_apply] at key
rw [β neg_lt_neg_iff]
convert key using 1 <;> field_simp
#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -27,12 +27,6 @@ The main use is to show convexity/concavity from monotonicity of the derivative.
variable {π : Type _} [LinearOrderedField π] {s : Set π} {f : π β π}
-/- warning: convex_on.slope_mono_adjacent -> ConvexOn.slope_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
-Case conversion may be inaccurate. Consider using '#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacentβ'. -/
/-- If `f : π β π` is convex, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -57,12 +51,6 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
Β· nlinarith
#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacent
-/- warning: concave_on.slope_anti_adjacent -> ConcaveOn.slope_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
-Case conversion may be inaccurate. Consider using '#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacentβ'. -/
/-- If `f : π β π` is concave, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -73,12 +61,6 @@ theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (
exact ConvexOn.slope_mono_adjacent hf.neg hx hz hxy hyz
#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacent
-/- warning: strict_convex_on.slope_strict_mono_adjacent -> StrictConvexOn.slope_strict_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
-Case conversion may be inaccurate. Consider using '#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacentβ'. -/
/-- If `f : π β π` is strictly convex, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -105,12 +87,6 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
Β· nlinarith
#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacent
-/- warning: strict_concave_on.slope_anti_adjacent -> StrictConcaveOn.slope_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
-Case conversion may be inaccurate. Consider using '#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacentβ'. -/
/-- If `f : π β π` is strictly concave, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -122,9 +98,6 @@ theorem StrictConcaveOn.slope_anti_adjacent (hf : StrictConcaveOn π s f) {x y
exact StrictConvexOn.slope_strict_mono_adjacent hf.neg hx hz hxy hyz
#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacent
-/- warning: convex_on_of_slope_mono_adjacent -> convexOn_of_slope_mono_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
less than the slope of the secant line of `f` on `[x, z]`, then `f` is convex. -/
theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
@@ -157,9 +130,6 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
mul_comm (f z), ha, hb] at this
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
-/- warning: concave_on_of_slope_anti_adjacent -> concaveOn_of_slope_anti_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
greater than the slope of the secant line of `f` on `[x, z]`, then `f` is concave. -/
theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
@@ -174,9 +144,6 @@ theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
exact hf hx hz hxy hyz
#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacent
-/- warning: strict_convex_on_of_slope_strict_mono_adjacent -> strictConvexOn_of_slope_strict_mono_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly less than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly convex. -/
theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
@@ -209,9 +176,6 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
mul_comm (f z), ha, hb] at this
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
-/- warning: strict_concave_on_of_slope_strict_anti_adjacent -> strictConcaveOn_of_slope_strict_anti_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly greater than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly concave.
-/
@@ -227,9 +191,6 @@ theorem strictConcaveOn_of_slope_strict_anti_adjacent (hs : Convex π s)
exact hf hx hz hxy hyz
#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacent
-/- warning: convex_on_iff_slope_mono_adjacent -> convexOn_iff_slope_mono_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacentβ'. -/
/-- A function `f : π β π` is convex iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem convexOn_iff_slope_mono_adjacent :
@@ -241,9 +202,6 @@ theorem convexOn_iff_slope_mono_adjacent :
convexOn_of_slope_mono_adjacent h.1 h.2β©
#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacent
-/- warning: concave_on_iff_slope_anti_adjacent -> concaveOn_iff_slope_anti_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacentβ'. -/
/-- A function `f : π β π` is concave iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem concaveOn_iff_slope_anti_adjacent :
@@ -255,9 +213,6 @@ theorem concaveOn_iff_slope_anti_adjacent :
concaveOn_of_slope_anti_adjacent h.1 h.2β©
#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacent
-/- warning: strict_convex_on_iff_slope_strict_mono_adjacent -> strictConvexOn_iff_slope_strict_mono_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacentβ'. -/
/-- A function `f : π β π` is strictly convex iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -270,9 +225,6 @@ theorem strictConvexOn_iff_slope_strict_mono_adjacent :
strictConvexOn_of_slope_strict_mono_adjacent h.1 h.2β©
#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacent
-/- warning: strict_concave_on_iff_slope_strict_anti_adjacent -> strictConcaveOn_iff_slope_strict_anti_adjacent is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacentβ'. -/
/-- A function `f : π β π` is strictly concave iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -285,9 +237,6 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
strictConcaveOn_of_slope_strict_anti_adjacent h.1 h.2β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
-/- warning: convex_on.secant_mono_aux1 -> ConvexOn.secant_mono_aux1 is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1β'. -/
theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
by
@@ -309,12 +258,6 @@ theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx :
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
-/- warning: convex_on.secant_mono_aux2 -> ConvexOn.secant_mono_aux2 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x))))
-Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2β'. -/
theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f x) / (z - x) :=
by
@@ -324,12 +267,6 @@ theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx :
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2
-/- warning: convex_on.secant_mono_aux3 -> ConvexOn.secant_mono_aux3 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
-Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3β'. -/
theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) β€ (f z - f y) / (z - y) :=
by
@@ -339,9 +276,6 @@ theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx :
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
-/- warning: convex_on.secant_mono -> ConvexOn.secant_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono ConvexOn.secant_monoβ'. -/
theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
(hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
(f x - f a) / (x - a) β€ (f y - f a) / (y - a) :=
@@ -356,9 +290,6 @@ theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β
Β· exact hf.secant_mono_aux2 ha hy hxa hxy
#align convex_on.secant_mono ConvexOn.secant_mono
-/- warning: strict_convex_on.secant_strict_mono_aux1 -> StrictConvexOn.secant_strict_mono_aux1 is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1β'. -/
theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z :=
by
@@ -380,12 +311,6 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
-/- warning: strict_convex_on.secant_strict_mono_aux2 -> StrictConvexOn.secant_strict_mono_aux2 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x))))
-Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2β'. -/
theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) < (f z - f x) / (z - x) :=
by
@@ -395,12 +320,6 @@ theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2
-/- warning: strict_convex_on.secant_strict_mono_aux3 -> StrictConvexOn.secant_strict_mono_aux3 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
-Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3β'. -/
theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) < (f z - f y) / (z - y) :=
by
@@ -410,9 +329,6 @@ theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
-/- warning: strict_convex_on.secant_strict_mono -> StrictConvexOn.secant_strict_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_monoβ'. -/
theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f x - f a) / (x - a) < (f y - f a) / (y - a) :=
@@ -427,9 +343,6 @@ theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y
Β· exact hf.secant_strict_mono_aux2 ha hy hxa hxy
#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
-/- warning: strict_concave_on.secant_strict_mono -> StrictConcaveOn.secant_strict_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_monoβ'. -/
theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f y - f a) / (y - a) < (f x - f a) / (x - a) :=
@@ -440,12 +353,6 @@ theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x
convert key using 1 <;> field_simp
#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
-/- warning: convex_on.strict_mono_of_lt -> ConvexOn.strict_mono_of_lt is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.hasInter.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.instInterSet.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) y))))
-Case conversion may be inaccurate. Consider using '#align convex_on.strict_mono_of_lt ConvexOn.strict_mono_of_ltβ'. -/
/-- If `f` is convex on a set `s` in a linearly ordered field, and `f x < f y` for two points
`x < y` in `s`, then `f` is strictly monotone on `s β© [y, β)`. -/
theorem ConvexOn.strict_mono_of_lt (hf : ConvexOn π s f) {x y : π} (hx : x β s) (hxy : x < y)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -40,21 +40,15 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
by
have hxz := hxy.trans hyz
rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y)
- by
- ring_nf at thisβ’
+ suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by ring_nf at thisβ’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by
- field_simp
- rw [div_eq_iff] <;> [ring;linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring;linarith]
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
- (show a + b = 1 by
- field_simp
- rw [div_eq_iff] <;> [ring;linarith])
+ (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring;linarith])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
@@ -95,20 +89,14 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
have hxz := hxy.trans hyz
have hxz' := hxz.ne
rw [β sub_pos] at hxy hxz hyz
- suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y)
- by
- ring_nf at thisβ’
+ suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by ring_nf at thisβ’;
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by
- field_simp
- rw [div_eq_iff] <;> [ring;linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; rw [div_eq_iff] <;> [ring;linarith]
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
- (show a + b = 1 by
- field_simp
- rw [div_eq_iff] <;> [ring;linarith])
+ (show a + b = 1 by field_simp; rw [div_eq_iff] <;> [ring;linarith])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
@@ -159,13 +147,11 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
have ha : (z - y) / (z - x) = a :=
by
rw [eq_comm, β sub_eq_iff_eq_add'] at hab
- simp_rw [div_eq_iff hxz.ne', y, β hab]
- ring
+ simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
rw [eq_comm, β sub_eq_iff_eq_add] at hab
- simp_rw [div_eq_iff hxz.ne', y, β hab]
- ring
+ simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_le_iff_le_add', β add_sub_assoc, le_sub_iff_add_le, β mul_add,
sub_add_sub_cancel, β le_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
mul_comm (f z), ha, hb] at this
@@ -213,13 +199,11 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
have ha : (z - y) / (z - x) = a :=
by
rw [eq_comm, β sub_eq_iff_eq_add'] at hab
- simp_rw [div_eq_iff hxz.ne', y, β hab]
- ring
+ simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
have hb : (y - x) / (z - x) = b :=
by
rw [eq_comm, β sub_eq_iff_eq_add] at hab
- simp_rw [div_eq_iff hxz.ne', y, β hab]
- ring
+ simp_rw [div_eq_iff hxz.ne', y, β hab]; ring
rwa [sub_mul, sub_mul, sub_lt_iff_lt_add', β add_sub_assoc, lt_sub_iff_add_lt, β mul_add,
sub_add_sub_cancel, β lt_div_iff hxz, add_div, mul_div_assoc, mul_div_assoc, mul_comm (f x),
mul_comm (f z), ha, hb] at this
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -135,10 +135,7 @@ theorem StrictConcaveOn.slope_anti_adjacent (hf : StrictConcaveOn π s f) {x y
#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacent
/- warning: convex_on_of_slope_mono_adjacent -> convexOn_of_slope_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+<too large>
Case conversion may be inaccurate. Consider using '#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
less than the slope of the secant line of `f` on `[x, z]`, then `f` is convex. -/
@@ -175,10 +172,7 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
/- warning: concave_on_of_slope_anti_adjacent -> concaveOn_of_slope_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+<too large>
Case conversion may be inaccurate. Consider using '#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
greater than the slope of the secant line of `f` on `[x, z]`, then `f` is concave. -/
@@ -195,10 +189,7 @@ theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacent
/- warning: strict_convex_on_of_slope_strict_mono_adjacent -> strictConvexOn_of_slope_strict_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly less than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly convex. -/
@@ -235,10 +226,7 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
/- warning: strict_concave_on_of_slope_strict_anti_adjacent -> strictConcaveOn_of_slope_strict_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly greater than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly concave.
@@ -256,10 +244,7 @@ theorem strictConcaveOn_of_slope_strict_anti_adjacent (hs : Convex π s)
#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacent
/- warning: convex_on_iff_slope_mono_adjacent -> convexOn_iff_slope_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacentβ'. -/
/-- A function `f : π β π` is convex iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
@@ -273,10 +258,7 @@ theorem convexOn_iff_slope_mono_adjacent :
#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacent
/- warning: concave_on_iff_slope_anti_adjacent -> concaveOn_iff_slope_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacentβ'. -/
/-- A function `f : π β π` is concave iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
@@ -290,10 +272,7 @@ theorem concaveOn_iff_slope_anti_adjacent :
#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacent
/- warning: strict_convex_on_iff_slope_strict_mono_adjacent -> strictConvexOn_iff_slope_strict_mono_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacentβ'. -/
/-- A function `f : π β π` is strictly convex iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
@@ -308,10 +287,7 @@ theorem strictConvexOn_iff_slope_strict_mono_adjacent :
#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacent
/- warning: strict_concave_on_iff_slope_strict_anti_adjacent -> strictConcaveOn_iff_slope_strict_anti_adjacent is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacentβ'. -/
/-- A function `f : π β π` is strictly concave iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
@@ -326,10 +302,7 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
/- warning: convex_on.secant_mono_aux1 -> ConvexOn.secant_mono_aux1 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x) (f z)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x) (f z)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1β'. -/
theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
@@ -383,10 +356,7 @@ theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx :
#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
/- warning: convex_on.secant_mono -> ConvexOn.secant_mono is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a))))
+<too large>
Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono ConvexOn.secant_monoβ'. -/
theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
(hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
@@ -403,10 +373,7 @@ theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β
#align convex_on.secant_mono ConvexOn.secant_mono
/- warning: strict_convex_on.secant_strict_mono_aux1 -> StrictConvexOn.secant_strict_mono_aux1 is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x) (f z)))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x) (f z)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1β'. -/
theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z :=
@@ -460,10 +427,7 @@ theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x
#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
/- warning: strict_convex_on.secant_strict_mono -> StrictConvexOn.secant_strict_mono is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a))))
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_monoβ'. -/
theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
@@ -480,10 +444,7 @@ theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y
#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
/- warning: strict_concave_on.secant_strict_mono -> StrictConcaveOn.secant_strict_mono is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a))))
-but is expected to have type
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a))))
+<too large>
Case conversion may be inaccurate. Consider using '#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_monoβ'. -/
theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -325,6 +325,12 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
strictConcaveOn_of_slope_strict_anti_adjacent h.1 h.2β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
+/- warning: convex_on.secant_mono_aux1 -> ConvexOn.secant_mono_aux1 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x) (f z)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x) (f z)))))
+Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1β'. -/
theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
by
@@ -346,6 +352,12 @@ theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx :
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
+/- warning: convex_on.secant_mono_aux2 -> ConvexOn.secant_mono_aux2 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x))))
+Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2β'. -/
theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f x) / (z - x) :=
by
@@ -355,6 +367,12 @@ theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx :
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2
+/- warning: convex_on.secant_mono_aux3 -> ConvexOn.secant_mono_aux3 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
+Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3β'. -/
theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
(hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) β€ (f z - f y) / (z - y) :=
by
@@ -364,6 +382,12 @@ theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx :
linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
+/- warning: convex_on.secant_mono -> ConvexOn.secant_mono is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a))))
+Case conversion may be inaccurate. Consider using '#align convex_on.secant_mono ConvexOn.secant_monoβ'. -/
theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
(hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
(f x - f a) / (x - a) β€ (f y - f a) / (y - a) :=
@@ -378,6 +402,12 @@ theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β
Β· exact hf.secant_mono_aux2 ha hy hxa hxy
#align convex_on.secant_mono ConvexOn.secant_mono
+/- warning: strict_convex_on.secant_strict_mono_aux1 -> StrictConvexOn.secant_strict_mono_aux1 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x) (f z)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x) (f y)) (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))))) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y) (f x)) (HMul.hMul.{u1, u1, u1} π π π (instHMul.{u1} π (NonUnitalNonAssocRing.toMul.{u1} π (NonAssocRing.toNonUnitalNonAssocRing.{u1} π (Ring.toNonAssocRing.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x) (f z)))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1β'. -/
theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z :=
by
@@ -399,6 +429,12 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
+/- warning: strict_convex_on.secant_strict_mono_aux2 -> StrictConvexOn.secant_strict_mono_aux2 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2β'. -/
theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) < (f z - f x) / (z - x) :=
by
@@ -408,6 +444,12 @@ theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2
+/- warning: strict_convex_on.secant_strict_mono_aux3 -> StrictConvexOn.secant_strict_mono_aux3 is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3β'. -/
theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
(hz : z β s) (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) < (f z - f y) / (z - y) :=
by
@@ -417,6 +459,12 @@ theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x
linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
+/- warning: strict_convex_on.secant_strict_mono -> StrictConvexOn.secant_strict_mono is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_monoβ'. -/
theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f x - f a) / (x - a) < (f y - f a) / (y - a) :=
@@ -431,6 +479,12 @@ theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y
Β· exact hf.secant_strict_mono_aux2 ha hy hxa hxy
#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
+/- warning: strict_concave_on.secant_strict_mono -> StrictConcaveOn.secant_strict_mono is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) a s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) x a))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {a : π} {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) a s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) y s) -> (Ne.{succ u1} π x a) -> (Ne.{succ u1} π y a) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y a)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f a)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x a))))
+Case conversion may be inaccurate. Consider using '#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_monoβ'. -/
theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
(hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
(f y - f a) / (y - a) < (f x - f a) / (x - a) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -48,13 +48,13 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
set b := (y - x) / (z - x)
have hy : a β’ x + b β’ z = y := by
field_simp
- rw [div_eq_iff] <;> [ring, linarith]
+ rw [div_eq_iff] <;> [ring;linarith]
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
(show a + b = 1 by
field_simp
- rw [div_eq_iff] <;> [ring, linarith])
+ rw [div_eq_iff] <;> [ring;linarith])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
@@ -103,12 +103,12 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
set b := (y - x) / (z - x)
have hy : a β’ x + b β’ z = y := by
field_simp
- rw [div_eq_iff] <;> [ring, linarith]
+ rw [div_eq_iff] <;> [ring;linarith]
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
(show a + b = 1 by
field_simp
- rw [div_eq_iff] <;> [ring, linarith])
+ rw [div_eq_iff] <;> [ring;linarith])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit 814d76e2247d5ba8bc024843552da1278bfe9e5c
+! leanprover-community/mathlib commit a8b2226cfb0a79f5986492053fc49b1a0c6aeffb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -325,6 +325,122 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
strictConcaveOn_of_slope_strict_anti_adjacent h.1 h.2β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
+theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z :=
+ by
+ have hxy' : 0 < y - x := by linarith
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [β le_div_iff' hxz']
+ have ha : 0 β€ (z - y) / (z - x) := by positivity
+ have hb : 0 β€ (y - x) / (z - x) := by positivity
+ calc
+ f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := _
+ _ β€ (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz ha hb _)
+ _ = ((z - y) * f x + (y - x) * f z) / (z - x) := _
+
+ Β· congr 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ ring
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
+
+theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f x) / (z - x) :=
+ by
+ have hxy' : 0 < y - x := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_le_div_iff hxy' hxz']
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
+#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2
+
+theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) β€ (f z - f y) / (z - y) :=
+ by
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_le_div_iff hxz' hyz']
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
+#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
+
+theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
+ (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
+ (f x - f a) / (x - a) β€ (f y - f a) / (y - a) :=
+ by
+ rcases eq_or_lt_of_le hxy with (rfl | hxy)
+ Β· simp
+ cases' lt_or_gt_of_ne hxa with hxa hxa
+ Β· cases' lt_or_gt_of_ne hya with hya hya
+ Β· convert hf.secant_mono_aux3 hx ha hxy hya using 1 <;> rw [β neg_div_neg_eq] <;> field_simp
+ Β· convert hf.slope_mono_adjacent hx hy hxa hya using 1
+ rw [β neg_div_neg_eq] <;> field_simp
+ Β· exact hf.secant_mono_aux2 ha hy hxa hxy
+#align convex_on.secant_mono ConvexOn.secant_mono
+
+theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z :=
+ by
+ have hxy' : 0 < y - x := by linarith
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [β lt_div_iff' hxz']
+ have ha : 0 < (z - y) / (z - x) := by positivity
+ have hb : 0 < (y - x) / (z - x) := by positivity
+ calc
+ f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := _
+ _ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz (by linarith) ha hb _)
+ _ = ((z - y) * f x + (y - x) * f z) / (z - x) := _
+
+ Β· congr 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ ring
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
+
+theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) < (f z - f x) / (z - x) :=
+ by
+ have hxy' : 0 < y - x := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_lt_div_iff hxy' hxz']
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
+#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2
+
+theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) < (f z - f y) / (z - y) :=
+ by
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_lt_div_iff hxz' hyz']
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
+#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
+
+theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
+ (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f x - f a) / (x - a) < (f y - f a) / (y - a) :=
+ by
+ cases' lt_or_gt_of_ne hxa with hxa hxa
+ Β· cases' lt_or_gt_of_ne hya with hya hya
+ Β·
+ convert hf.secant_strict_mono_aux3 hx ha hxy hya using 1 <;> rw [β neg_div_neg_eq] <;>
+ field_simp
+ Β· convert hf.slope_strict_mono_adjacent hx hy hxa hya using 1
+ rw [β neg_div_neg_eq] <;> field_simp
+ Β· exact hf.secant_strict_mono_aux2 ha hy hxa hxy
+#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
+
+theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
+ (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f y - f a) / (y - a) < (f x - f a) / (x - a) :=
+ by
+ have key := hf.neg.secant_strict_mono ha hx hy hxa hya hxy
+ simp only [Pi.neg_apply] at key
+ rw [β neg_lt_neg_iff]
+ convert key using 1 <;> field_simp
+#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
+
/- warning: convex_on.strict_mono_of_lt -> ConvexOn.strict_mono_of_lt is a dubious translation:
lean 3 declaration is
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.hasInter.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y))))
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -29,7 +29,7 @@ variable {π : Type _} [LinearOrderedField π] {s : Set π} {f : π β
/- warning: convex_on.slope_mono_adjacent -> ConvexOn.slope_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
Case conversion may be inaccurate. Consider using '#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacentβ'. -/
@@ -65,7 +65,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
/- warning: concave_on.slope_anti_adjacent -> ConcaveOn.slope_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
Case conversion may be inaccurate. Consider using '#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacentβ'. -/
@@ -81,7 +81,7 @@ theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (
/- warning: strict_convex_on.slope_strict_mono_adjacent -> StrictConvexOn.slope_strict_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
Case conversion may be inaccurate. Consider using '#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacentβ'. -/
@@ -119,7 +119,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
/- warning: strict_concave_on.slope_anti_adjacent -> StrictConcaveOn.slope_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
Case conversion may be inaccurate. Consider using '#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacentβ'. -/
@@ -136,7 +136,7 @@ theorem StrictConcaveOn.slope_anti_adjacent (hf : StrictConcaveOn π s f) {x y
/- warning: convex_on_of_slope_mono_adjacent -> convexOn_of_slope_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
Case conversion may be inaccurate. Consider using '#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacentβ'. -/
@@ -176,7 +176,7 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
/- warning: concave_on_of_slope_anti_adjacent -> concaveOn_of_slope_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
Case conversion may be inaccurate. Consider using '#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacentβ'. -/
@@ -196,7 +196,7 @@ theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
/- warning: strict_convex_on_of_slope_strict_mono_adjacent -> strictConvexOn_of_slope_strict_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
Case conversion may be inaccurate. Consider using '#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacentβ'. -/
@@ -236,7 +236,7 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
/- warning: strict_concave_on_of_slope_strict_anti_adjacent -> strictConcaveOn_of_slope_strict_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
Case conversion may be inaccurate. Consider using '#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacentβ'. -/
@@ -257,7 +257,7 @@ theorem strictConcaveOn_of_slope_strict_anti_adjacent (hs : Convex π s)
/- warning: convex_on_iff_slope_mono_adjacent -> convexOn_iff_slope_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
Case conversion may be inaccurate. Consider using '#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacentβ'. -/
@@ -274,7 +274,7 @@ theorem convexOn_iff_slope_mono_adjacent :
/- warning: concave_on_iff_slope_anti_adjacent -> concaveOn_iff_slope_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
Case conversion may be inaccurate. Consider using '#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacentβ'. -/
@@ -291,7 +291,7 @@ theorem concaveOn_iff_slope_anti_adjacent :
/- warning: strict_convex_on_iff_slope_strict_mono_adjacent -> strictConvexOn_iff_slope_strict_mono_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
Case conversion may be inaccurate. Consider using '#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacentβ'. -/
@@ -309,7 +309,7 @@ theorem strictConvexOn_iff_slope_strict_mono_adjacent :
/- warning: strict_concave_on_iff_slope_strict_anti_adjacent -> strictConcaveOn_iff_slope_strict_anti_adjacent is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
Case conversion may be inaccurate. Consider using '#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacentβ'. -/
@@ -327,7 +327,7 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
/- warning: convex_on.strict_mono_of_lt -> ConvexOn.strict_mono_of_lt is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.hasInter.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y))))
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toHasLt.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.hasInter.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y))))
but is expected to have type
forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.instInterSet.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) y))))
Case conversion may be inaccurate. Consider using '#align convex_on.strict_mono_of_lt ConvexOn.strict_mono_of_ltβ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/347636a7a80595d55bedf6e6fbd996a3c39da69a
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit 78261225eb5cedc61c5c74ecb44e5b385d13b733
+! leanprover-community/mathlib commit 814d76e2247d5ba8bc024843552da1278bfe9e5c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Tactic.Linarith.Default
/-!
# Slopes of convex functions
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file relates convexity/concavity of functions in a linearly ordered field and the monotonicity
of their slopes.
mathlib commit https://github.com/leanprover-community/mathlib/commit/c9236f47f5b9df573443aa499c0d3968769628b7
@@ -24,6 +24,12 @@ The main use is to show convexity/concavity from monotonicity of the derivative.
variable {π : Type _} [LinearOrderedField π] {s : Set π} {f : π β π}
+/- warning: convex_on.slope_mono_adjacent -> ConvexOn.slope_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
+Case conversion may be inaccurate. Consider using '#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacentβ'. -/
/-- If `f : π β π` is convex, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -54,6 +60,12 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
Β· nlinarith
#align convex_on.slope_mono_adjacent ConvexOn.slope_mono_adjacent
+/- warning: concave_on.slope_anti_adjacent -> ConcaveOn.slope_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
+Case conversion may be inaccurate. Consider using '#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacentβ'. -/
/-- If `f : π β π` is concave, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -64,6 +76,12 @@ theorem ConcaveOn.slope_anti_adjacent (hf : ConcaveOn π s f) {x y z : π} (
exact ConvexOn.slope_mono_adjacent hf.neg hx hz hxy hyz
#align concave_on.slope_anti_adjacent ConcaveOn.slope_anti_adjacent
+/- warning: strict_convex_on.slope_strict_mono_adjacent -> StrictConvexOn.slope_strict_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacentβ'. -/
/-- If `f : π β π` is strictly convex, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -96,6 +114,12 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
Β· nlinarith
#align strict_convex_on.slope_strict_mono_adjacent StrictConvexOn.slope_strict_mono_adjacent
+/- warning: strict_concave_on.slope_anti_adjacent -> StrictConcaveOn.slope_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x))))
+Case conversion may be inaccurate. Consider using '#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacentβ'. -/
/-- If `f : π β π` is strictly concave, then for any three points `x < y < z` the slope of the
secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -107,6 +131,12 @@ theorem StrictConcaveOn.slope_anti_adjacent (hf : StrictConcaveOn π s f) {x y
exact StrictConvexOn.slope_strict_mono_adjacent hf.neg hx hz hxy hyz
#align strict_concave_on.slope_anti_adjacent StrictConcaveOn.slope_anti_adjacent
+/- warning: convex_on_of_slope_mono_adjacent -> convexOn_of_slope_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+Case conversion may be inaccurate. Consider using '#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
less than the slope of the secant line of `f` on `[x, z]`, then `f` is convex. -/
theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
@@ -141,6 +171,12 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
mul_comm (f z), ha, hb] at this
#align convex_on_of_slope_mono_adjacent convexOn_of_slope_mono_adjacent
+/- warning: concave_on_of_slope_anti_adjacent -> concaveOn_of_slope_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+Case conversion may be inaccurate. Consider using '#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
greater than the slope of the secant line of `f` on `[x, z]`, then `f` is concave. -/
theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
@@ -155,6 +191,12 @@ theorem concaveOn_of_slope_anti_adjacent (hs : Convex π s)
exact hf hx hz hxy hyz
#align concave_on_of_slope_anti_adjacent concaveOn_of_slope_anti_adjacent
+/- warning: strict_convex_on_of_slope_strict_mono_adjacent -> strictConvexOn_of_slope_strict_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))) -> (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+Case conversion may be inaccurate. Consider using '#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly less than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly convex. -/
theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
@@ -189,6 +231,12 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
mul_comm (f z), ha, hb] at this
#align strict_convex_on_of_slope_strict_mono_adjacent strictConvexOn_of_slope_strict_mono_adjacent
+/- warning: strict_concave_on_of_slope_strict_anti_adjacent -> strictConcaveOn_of_slope_strict_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) -> (forall {x : π} {y : π} {z : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))) -> (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f)
+Case conversion may be inaccurate. Consider using '#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacentβ'. -/
/-- If for any three points `x < y < z`, the slope of the secant line of `f : π β π` on `[x, y]` is
strictly greater than the slope of the secant line of `f` on `[x, z]`, then `f` is strictly concave.
-/
@@ -204,6 +252,12 @@ theorem strictConcaveOn_of_slope_strict_anti_adjacent (hs : Convex π s)
exact hf hx hz hxy hyz
#align strict_concave_on_of_slope_strict_anti_adjacent strictConcaveOn_of_slope_strict_anti_adjacent
+/- warning: convex_on_iff_slope_mono_adjacent -> convexOn_iff_slope_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
+Case conversion may be inaccurate. Consider using '#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacentβ'. -/
/-- A function `f : π β π` is convex iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem convexOn_iff_slope_mono_adjacent :
@@ -215,6 +269,12 @@ theorem convexOn_iff_slope_mono_adjacent :
convexOn_of_slope_mono_adjacent h.1 h.2β©
#align convex_on_iff_slope_mono_adjacent convexOn_iff_slope_mono_adjacent
+/- warning: concave_on_iff_slope_anti_adjacent -> concaveOn_iff_slope_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (ConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
+Case conversion may be inaccurate. Consider using '#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacentβ'. -/
/-- A function `f : π β π` is concave iff for any three points `x < y < z` the slope of the secant
line of `f` on `[x, y]` is greater than the slope of the secant line of `f` on `[x, z]`. -/
theorem concaveOn_iff_slope_anti_adjacent :
@@ -226,6 +286,12 @@ theorem concaveOn_iff_slope_anti_adjacent :
concaveOn_of_slope_anti_adjacent h.1 h.2β©
#align concave_on_iff_slope_anti_adjacent concaveOn_iff_slope_anti_adjacent
+/- warning: strict_convex_on_iff_slope_strict_mono_adjacent -> strictConvexOn_iff_slope_strict_mono_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)))))
+Case conversion may be inaccurate. Consider using '#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacentβ'. -/
/-- A function `f : π β π` is strictly convex iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly less than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -238,6 +304,12 @@ theorem strictConvexOn_iff_slope_strict_mono_adjacent :
strictConvexOn_of_slope_strict_mono_adjacent h.1 h.2β©
#align strict_convex_on_iff_slope_strict_mono_adjacent strictConvexOn_iff_slope_strict_mono_adjacent
+/- warning: strict_concave_on_iff_slope_strict_anti_adjacent -> strictConcaveOn_iff_slope_strict_anti_adjacent is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (DivInvMonoid.toHasDiv.{u1} π (DivisionRing.toDivInvMonoid.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (SubNegMonoid.toHasSub.{u1} π (AddGroup.toSubNegMonoid.{u1} π (AddGroupWithOne.toAddGroup.{u1} π (AddCommGroupWithOne.toAddGroupWithOne.{u1} π (Ring.toAddCommGroupWithOne.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1))))))))) y x)))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, Iff (StrictConcaveOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) (And (Convex.{u1, u1} π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s) (forall {{x : π}} {{y : π}} {{z : π}}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) z s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y z) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f z) (f y)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) z y)) (HDiv.hDiv.{u1, u1, u1} π π π (instHDiv.{u1} π (LinearOrderedField.toDiv.{u1} π _inst_1)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f y) (f x)) (HSub.hSub.{u1, u1, u1} π π π (instHSub.{u1} π (Ring.toSub.{u1} π (StrictOrderedRing.toRing.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y x)))))
+Case conversion may be inaccurate. Consider using '#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacentβ'. -/
/-- A function `f : π β π` is strictly concave iff for any three points `x < y < z` the slope of
the secant line of `f` on `[x, y]` is strictly greater than the slope of the secant line of `f` on
`[x, z]`. -/
@@ -250,6 +322,12 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
strictConcaveOn_of_slope_strict_anti_adjacent h.1 h.2β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
+/- warning: convex_on.strict_mono_of_lt -> ConvexOn.strict_mono_of_lt is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} π (OrderedAddCommGroup.toAddCommGroup.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedSemiring.{u1} π (StrictOrderedRing.toStrictOrderedSemiring.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.Mem.{u1, u1} π (Set.{u1} π) (Set.hasMem.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.hasInter.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) y))))
+but is expected to have type
+ forall {π : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π] {s : Set.{u1} π} {f : π -> π}, (ConvexOn.{u1, u1, u1} π π π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (OrderedSemiring.toOrderedAddCommMonoid.{u1} π (OrderedCommSemiring.toOrderedSemiring.{u1} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) (Algebra.toSMul.{u1, u1} π π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u1} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1))))) (Algebra.id.{u1} π (StrictOrderedCommSemiring.toCommSemiring.{u1} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π (LinearOrderedField.toLinearOrderedSemifield.{u1} π _inst_1)))))) s f) -> (forall {x : π} {y : π}, (Membership.mem.{u1, u1} π (Set.{u1} π) (Set.instMembershipSet.{u1} π) x s) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) x y) -> (LT.lt.{u1} π (Preorder.toLT.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (f x) (f y)) -> (StrictMonoOn.{u1, u1} π π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) f (Inter.inter.{u1} (Set.{u1} π) (Set.instInterSet.{u1} π) s (Set.Ici.{u1} π (PartialOrder.toPreorder.{u1} π (StrictOrderedRing.toPartialOrder.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1))))) y))))
+Case conversion may be inaccurate. Consider using '#align convex_on.strict_mono_of_lt ConvexOn.strict_mono_of_ltβ'. -/
/-- If `f` is convex on a set `s` in a linearly ordered field, and `f x < f y` for two points
`x < y` in `s`, then `f` is strictly monotone on `s β© [y, β)`. -/
theorem ConvexOn.strict_mono_of_lt (hf : ConvexOn π s f) {x y : π} (hx : x β s) (hxy : x < y)
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit 0ee3e6f52678a420c58b1072870fed5e0240c083
+! leanprover-community/mathlib commit 78261225eb5cedc61c5c74ecb44e5b385d13b733
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Analysis.Convex.Function
import Mathbin.Tactic.FieldSimp
+import Mathbin.Tactic.Linarith.Default
/-!
# Slopes of convex functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -293,7 +293,7 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
have hb : 0 < (y - x) / (z - x) := by positivity
calc
f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := ?_
- _ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz (by linarith) ha hb ?_)
+ _ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := hf.2 hx hz (by linarith) ha hb ?_
_ = ((z - y) * f x + (y - x) * f z) / (z - x) := ?_
Β· congr 1
field_simp
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -18,9 +18,12 @@ of their slopes.
The main use is to show convexity/concavity from monotonicity of the derivative.
-/
-
variable {π : Type*} [LinearOrderedField π] {s : Set π} {f : π β π}
+-- Adaptation note: after v4.7.0-rc1, there is a performance problem in `field_simp`.
+-- (Part of the code was ignoring the `maxDischargeDepth` setting: now that we have to increase it,
+-- other paths becomes slow.)
+set_option maxHeartbeats 400000 in
/-- If `f : π β π` is convex, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -32,14 +32,14 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by field_simp; ring
+ have hy : a β’ x + b β’ z = y := by field_simp [a, b]; ring
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
- (show a + b = 1 by field_simp)
+ (show a + b = 1 by field_simp [a, b])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
- field_simp [mul_comm (z - x) _] at key β’
+ field_simp [a, b, mul_comm (z - x) _] at key β’
rw [div_le_div_right]
Β· linarith
Β· nlinarith
@@ -68,10 +68,10 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by field_simp; ring
+ have hy : a β’ x + b β’ z = y := by field_simp [a, b]; ring
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
- (show a + b = 1 by field_simp)
+ (show a + b = 1 by field_simp [a, b])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
field_simp [mul_comm (z - x) _] at key β’
@@ -110,10 +110,12 @@ theorem convexOn_of_slope_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a := by
rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ dsimp [y]
simp_rw [div_eq_iff hxz.ne', β hab]
ring
have hb : (y - x) / (z - x) = b := by
rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ dsimp [y]
simp_rw [div_eq_iff hxz.ne', β hab]
ring
rwa [sub_mul, sub_mul, sub_le_iff_le_add', β add_sub_assoc, le_sub_iff_add_le, β mul_add,
@@ -155,10 +157,12 @@ theorem strictConvexOn_of_slope_strict_mono_adjacent (hs : Convex π s)
have hxz : 0 < z - x := sub_pos.2 (hxy.trans hyz)
have ha : (z - y) / (z - x) = a := by
rw [eq_comm, β sub_eq_iff_eq_add'] at hab
+ dsimp [y]
simp_rw [div_eq_iff hxz.ne', β hab]
ring
have hb : (y - x) / (z - x) = b := by
rw [eq_comm, β sub_eq_iff_eq_add] at hab
+ dsimp [y]
simp_rw [div_eq_iff hxz.ne', β hab]
ring
rwa [sub_mul, sub_mul, sub_lt_iff_lt_add', β add_sub_assoc, lt_sub_iff_add_lt, β mul_add,
The main reasons is that having h : 0 < denom
in the context should suffice for field_simp
to do its job, without the need to manually pass h.ne
or similar.
Quite a few have := β¦ β 0
could be dropped, and some field_simp
calls no longer need explicit arguments; this is promising.
This does break some proofs where field_simp
was not used as a closing tactic, and it now
shuffles terms around a bit different. These were fixed. Using field_simp
in the middle of a proof seems rather fragile anyways.
As a drive-by contribution, positivity
now knows about Ο > 0
.
fixes: #4835
Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -32,18 +32,14 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by
- field_simp
- rw [div_eq_iff] <;> [ring; linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; ring
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
- (show a + b = 1 by
- field_simp
- rw [div_eq_iff] <;> [ring; linarith])
+ (show a + b = 1 by field_simp)
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
+ field_simp [mul_comm (z - x) _] at key β’
rw [div_le_div_right]
Β· linarith
Β· nlinarith
@@ -72,17 +68,13 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
- have hy : a β’ x + b β’ z = y := by
- field_simp
- rw [div_eq_iff] <;> [ring; linarith]
+ have hy : a β’ x + b β’ z = y := by field_simp; ring
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
- (show a + b = 1 by
- field_simp
- rw [div_eq_iff] <;> [ring; linarith])
+ (show a + b = 1 by field_simp)
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
+ field_simp [mul_comm (z - x) _] at key β’
rw [div_lt_div_right]
Β· linarith
Β· nlinarith
@@ -247,12 +239,12 @@ theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx :
_ β€ (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := hf.2 hx hz ha hb ?_
_ = ((z - y) * f x + (y - x) * f z) / (z - x) := ?_
Β· congr 1
- field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ field_simp
ring
Β· -- Porting note: this `show` wasn't needed in Lean 3
show (z - y) / (z - x) + (y - x) / (z - x) = 1
- field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
- Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ field_simp
+ Β· field_simp
#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
@@ -297,12 +289,12 @@ theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x
_ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz (by linarith) ha hb ?_)
_ = ((z - y) * f x + (y - x) * f z) / (z - x) := ?_
Β· congr 1
- field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ field_simp
ring
Β· -- Porting note: this `show` wasn't needed in Lean 3
show (z - y) / (z - x) + (y - x) / (z - x) = 1
- field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
- Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ field_simp
+ Β· field_simp
#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -19,7 +19,7 @@ The main use is to show convexity/concavity from monotonicity of the derivative.
-/
-variable {π : Type _} [LinearOrderedField π] {s : Set π} {f : π β π}
+variable {π : Type*} [LinearOrderedField π] {s : Set π} {f : π β π}
/-- If `f : π β π` is convex, then for any three points `x < y < z` the slope of the secant line of
`f` on `[x, y]` is less than the slope of the secant line of `f` on `[x, z]`. -/
@@ -2,16 +2,13 @@
Copyright (c) 2021 Yury Kudriashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
-
-! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit a8b2226cfb0a79f5986492053fc49b1a0c6aeffb
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Convex.Function
import Mathlib.Tactic.FieldSimp
import Mathlib.Tactic.Linarith
+#align_import analysis.convex.slope from "leanprover-community/mathlib"@"a8b2226cfb0a79f5986492053fc49b1a0c6aeffb"
+
/-!
# Slopes of convex functions
at
and goals (#5387)
Changes are of the form
some_tactic at hβ’
-> some_tactic at h β’
some_tactic at h
-> some_tactic at h
@@ -31,7 +31,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
have hxz := hxy.trans hyz
rw [β sub_pos] at hxy hxz hyz
suffices f y / (y - x) + f y / (z - y) β€ f x / (y - x) + f z / (z - y) by
- ring_nf at thisβ’
+ ring_nf at this β’
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
@@ -46,7 +46,7 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_le_div_right]
Β· linarith
Β· nlinarith
@@ -71,7 +71,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
have hxz' := hxz.ne
rw [β sub_pos] at hxy hxz hyz
suffices f y / (y - x) + f y / (z - y) < f x / (y - x) + f z / (z - y) by
- ring_nf at thisβ’
+ ring_nf at this β’
linarith
set a := (z - y) / (z - x)
set b := (y - x) / (z - x)
@@ -85,7 +85,7 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
- field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
+ field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at key β’
rw [div_lt_div_right]
Β· linarith
Β· nlinarith
Fiddly, not done yet ... help welcome.
Cross-reference: https://github.com/leanprover-community/mathlib/pull/19026.
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudriashov, Malo JaffrΓ©
! This file was ported from Lean 3 source module analysis.convex.slope
-! leanprover-community/mathlib commit 78261225eb5cedc61c5c74ecb44e5b385d13b733
+! leanprover-community/mathlib commit a8b2226cfb0a79f5986492053fc49b1a0c6aeffb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -237,6 +237,114 @@ theorem strictConcaveOn_iff_slope_strict_anti_adjacent :
strictConcaveOn_of_slope_strict_anti_adjacent h.1 (@fun _ _ _ hx hy => h.2 hx hy)β©
#align strict_concave_on_iff_slope_strict_anti_adjacent strictConcaveOn_iff_slope_strict_anti_adjacent
+theorem ConvexOn.secant_mono_aux1 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (z - x) * f y β€ (z - y) * f x + (y - x) * f z := by
+ have hxy' : 0 < y - x := by linarith
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [β le_div_iff' hxz']
+ have ha : 0 β€ (z - y) / (z - x) := by positivity
+ have hb : 0 β€ (y - x) / (z - x) := by positivity
+ calc
+ f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := ?_
+ _ β€ (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := hf.2 hx hz ha hb ?_
+ _ = ((z - y) * f x + (y - x) * f z) / (z - x) := ?_
+ Β· congr 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ ring
+ Β· -- Porting note: this `show` wasn't needed in Lean 3
+ show (z - y) / (z - x) + (y - x) / (z - x) = 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+#align convex_on.secant_mono_aux1 ConvexOn.secant_mono_aux1
+
+theorem ConvexOn.secant_mono_aux2 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) β€ (f z - f x) / (z - x) := by
+ have hxy' : 0 < y - x := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_le_div_iff hxy' hxz']
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
+#align convex_on.secant_mono_aux2 ConvexOn.secant_mono_aux2
+
+theorem ConvexOn.secant_mono_aux3 (hf : ConvexOn π s f) {x y z : π} (hx : x β s) (hz : z β s)
+ (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) β€ (f z - f y) / (z - y) := by
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_le_div_iff hxz' hyz']
+ linarith only [hf.secant_mono_aux1 hx hz hxy hyz]
+#align convex_on.secant_mono_aux3 ConvexOn.secant_mono_aux3
+
+theorem ConvexOn.secant_mono (hf : ConvexOn π s f) {a x y : π} (ha : a β s) (hx : x β s)
+ (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x β€ y) :
+ (f x - f a) / (x - a) β€ (f y - f a) / (y - a) := by
+ rcases eq_or_lt_of_le hxy with (rfl | hxy)
+ Β· simp
+ cases' lt_or_gt_of_ne hxa with hxa hxa
+ Β· cases' lt_or_gt_of_ne hya with hya hya
+ Β· convert hf.secant_mono_aux3 hx ha hxy hya using 1 <;> rw [β neg_div_neg_eq] <;> field_simp
+ Β· convert hf.slope_mono_adjacent hx hy hxa hya using 1
+ rw [β neg_div_neg_eq]; field_simp
+ Β· exact hf.secant_mono_aux2 ha hy hxa hxy
+#align convex_on.secant_mono ConvexOn.secant_mono
+
+theorem StrictConvexOn.secant_strict_mono_aux1 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (z - x) * f y < (z - y) * f x + (y - x) * f z := by
+ have hxy' : 0 < y - x := by linarith
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [β lt_div_iff' hxz']
+ have ha : 0 < (z - y) / (z - x) := by positivity
+ have hb : 0 < (y - x) / (z - x) := by positivity
+ calc
+ f y = f ((z - y) / (z - x) * x + (y - x) / (z - x) * z) := ?_
+ _ < (z - y) / (z - x) * f x + (y - x) / (z - x) * f z := (hf.2 hx hz (by linarith) ha hb ?_)
+ _ = ((z - y) * f x + (y - x) * f z) / (z - x) := ?_
+ Β· congr 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ ring
+ Β· -- Porting note: this `show` wasn't needed in Lean 3
+ show (z - y) / (z - x) + (y - x) / (z - x) = 1
+ field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+ Β· field_simp [hxy'.ne', hyz'.ne', hxz'.ne']
+#align strict_convex_on.secant_strict_mono_aux1 StrictConvexOn.secant_strict_mono_aux1
+
+theorem StrictConvexOn.secant_strict_mono_aux2 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (f y - f x) / (y - x) < (f z - f x) / (z - x) := by
+ have hxy' : 0 < y - x := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_lt_div_iff hxy' hxz']
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
+#align strict_convex_on.secant_strict_mono_aux2 StrictConvexOn.secant_strict_mono_aux2
+
+theorem StrictConvexOn.secant_strict_mono_aux3 (hf : StrictConvexOn π s f) {x y z : π} (hx : x β s)
+ (hz : z β s) (hxy : x < y) (hyz : y < z) : (f z - f x) / (z - x) < (f z - f y) / (z - y) := by
+ have hyz' : 0 < z - y := by linarith
+ have hxz' : 0 < z - x := by linarith
+ rw [div_lt_div_iff hxz' hyz']
+ linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
+#align strict_convex_on.secant_strict_mono_aux3 StrictConvexOn.secant_strict_mono_aux3
+
+theorem StrictConvexOn.secant_strict_mono (hf : StrictConvexOn π s f) {a x y : π} (ha : a β s)
+ (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f x - f a) / (x - a) < (f y - f a) / (y - a) := by
+ cases' lt_or_gt_of_ne hxa with hxa hxa
+ Β· cases' lt_or_gt_of_ne hya with hya hya
+ Β· convert hf.secant_strict_mono_aux3 hx ha hxy hya using 1 <;> rw [β neg_div_neg_eq] <;>
+ field_simp
+ Β· convert hf.slope_strict_mono_adjacent hx hy hxa hya using 1
+ rw [β neg_div_neg_eq]; field_simp
+ Β· exact hf.secant_strict_mono_aux2 ha hy hxa hxy
+#align strict_convex_on.secant_strict_mono StrictConvexOn.secant_strict_mono
+
+theorem StrictConcaveOn.secant_strict_mono (hf : StrictConcaveOn π s f) {a x y : π} (ha : a β s)
+ (hx : x β s) (hy : y β s) (hxa : x β a) (hya : y β a) (hxy : x < y) :
+ (f y - f a) / (y - a) < (f x - f a) / (x - a) := by
+ have key := hf.neg.secant_strict_mono ha hx hy hxa hya hxy
+ simp only [Pi.neg_apply] at key
+ rw [β neg_lt_neg_iff]
+ convert key using 1 <;> field_simp <;> ring
+#align strict_concave_on.secant_strict_mono StrictConcaveOn.secant_strict_mono
+
/-- If `f` is convex on a set `s` in a linearly ordered field, and `f x < f y` for two points
`x < y` in `s`, then `f` is strictly monotone on `s β© [y, β)`. -/
theorem ConvexOn.strict_mono_of_lt (hf : ConvexOn π s f) {x y : π} (hx : x β s) (hxy : x < y)
The main breaking change is that tac <;> [t1, t2]
is now written tac <;> [t1; t2]
, to avoid clashing with tactics like cases
and use
that take comma-separated lists.
@@ -37,13 +37,13 @@ theorem ConvexOn.slope_mono_adjacent (hf : ConvexOn π s f) {x y z : π} (hx
set b := (y - x) / (z - x)
have hy : a β’ x + b β’ z = y := by
field_simp
- rw [div_eq_iff] <;> [ring, linarith]
+ rw [div_eq_iff] <;> [ring; linarith]
have key :=
hf.2 hx hz (show 0 β€ a by apply div_nonneg <;> linarith)
(show 0 β€ b by apply div_nonneg <;> linarith)
(show a + b = 1 by
field_simp
- rw [div_eq_iff] <;> [ring, linarith])
+ rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_le_mul_of_nonneg_left key hxz.le
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
@@ -77,12 +77,12 @@ theorem StrictConvexOn.slope_strict_mono_adjacent (hf : StrictConvexOn π s f)
set b := (y - x) / (z - x)
have hy : a β’ x + b β’ z = y := by
field_simp
- rw [div_eq_iff] <;> [ring, linarith]
+ rw [div_eq_iff] <;> [ring; linarith]
have key :=
hf.2 hx hz hxz' (div_pos hyz hxz) (div_pos hxy hxz)
(show a + b = 1 by
field_simp
- rw [div_eq_iff] <;> [ring, linarith])
+ rw [div_eq_iff] <;> [ring; linarith])
rw [hy] at key
replace key := mul_lt_mul_of_pos_left key hxz
field_simp [hxy.ne', hyz.ne', hxz.ne', mul_comm (z - x) _] at keyβ’
The unported dependencies are