analysis.convex.quasiconvex
β·
Mathlib.Analysis.Convex.Quasiconvex
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -189,7 +189,7 @@ theorem quasilinearOn_iff_mem_uIcc :
rw [QuasilinearOn, quasiconvexOn_iff_le_max, quasiconcaveOn_iff_min_le, and_and_and_comm,
and_self_iff]
apply and_congr_right'
- simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm']
+ simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm]
#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIcc
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2021 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-/
-import Mathbin.Analysis.Convex.Function
+import Analysis.Convex.Function
#align_import analysis.convex.quasiconvex from "leanprover-community/mathlib"@"9a48a083b390d9b84a71efbdc4e8dfa26a687104"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2021 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.quasiconvex
-! leanprover-community/mathlib commit 9a48a083b390d9b84a71efbdc4e8dfa26a687104
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Convex.Function
+#align_import analysis.convex.quasiconvex from "leanprover-community/mathlib"@"9a48a083b390d9b84a71efbdc4e8dfa26a687104"
+
/-!
# Quasiconvex and quasiconcave functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -78,36 +78,50 @@ def QuasilinearOn : Prop :=
variable {π s f}
+#print QuasiconvexOn.dual /-
theorem QuasiconvexOn.dual : QuasiconvexOn π s f β QuasiconcaveOn π s (toDual β f) :=
id
#align quasiconvex_on.dual QuasiconvexOn.dual
+-/
+#print QuasiconcaveOn.dual /-
theorem QuasiconcaveOn.dual : QuasiconcaveOn π s f β QuasiconvexOn π s (toDual β f) :=
id
#align quasiconcave_on.dual QuasiconcaveOn.dual
+-/
+#print QuasilinearOn.dual /-
theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (toDual β f) :=
And.symm
#align quasilinear_on.dual QuasilinearOn.dual
+-/
+#print Convex.quasiconvexOn_of_convex_le /-
theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Convex π {x | f x β€ r}) :
QuasiconvexOn π s f := fun r => hs.inter (h r)
#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_le
+-/
+#print Convex.quasiconcaveOn_of_convex_ge /-
theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Convex π {x | r β€ f x}) :
QuasiconcaveOn π s f :=
@Convex.quasiconvexOn_of_convex_le π E Ξ²α΅α΅ _ _ _ _ _ _ hs h
#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_ge
+-/
+#print QuasiconvexOn.convex /-
theorem QuasiconvexOn.convex [IsDirected Ξ² (Β· β€ Β·)] (hf : QuasiconvexOn π s f) : Convex π s :=
fun x hx y hy a b ha hb hab =>
let β¨z, hxz, hyzβ© := exists_ge_ge (f x) (f y)
(hf _ β¨hx, hxzβ© β¨hy, hyzβ© ha hb hab).1
#align quasiconvex_on.convex QuasiconvexOn.convex
+-/
+#print QuasiconcaveOn.convex /-
theorem QuasiconcaveOn.convex [IsDirected Ξ² (Β· β₯ Β·)] (hf : QuasiconcaveOn π s f) : Convex π s :=
hf.dual.Convex
#align quasiconcave_on.convex QuasiconcaveOn.convex
+-/
end OrderedAddCommMonoid
@@ -119,18 +133,23 @@ section SMul
variable [SMul π E] {s : Set E} {f g : E β Ξ²}
+#print QuasiconvexOn.sup /-
theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π s g) :
QuasiconvexOn π s (f β g) := by
intro r
simp_rw [Pi.sup_def, sup_le_iff, Set.sep_and]
exact (hf r).inter (hg r)
#align quasiconvex_on.sup QuasiconvexOn.sup
+-/
+#print QuasiconcaveOn.inf /-
theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn π s g) :
QuasiconcaveOn π s (f β g) :=
hf.dual.sup hg
#align quasiconcave_on.inf QuasiconcaveOn.inf
+-/
+#print quasiconvexOn_iff_le_max /-
theorem quasiconvexOn_iff_le_max :
QuasiconvexOn π s f β
Convex π s β§
@@ -145,7 +164,9 @@ theorem quasiconvexOn_iff_le_max :
fun hf r x hx y hy a b ha hb hab =>
β¨hf.1 hx.1 hy.1 ha hb hab, (hf.2 hx.1 hy.1 ha hb hab).trans <| max_le hx.2 hy.2β©β©
#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_max
+-/
+#print quasiconcaveOn_iff_min_le /-
theorem quasiconcaveOn_iff_min_le :
QuasiconcaveOn π s f β
Convex π s β§
@@ -156,7 +177,9 @@ theorem quasiconcaveOn_iff_min_le :
β β¦a b : πβ¦, 0 β€ a β 0 β€ b β a + b = 1 β min (f x) (f y) β€ f (a β’ x + b β’ y) :=
@quasiconvexOn_iff_le_max π E Ξ²α΅α΅ _ _ _ _ _ _
#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_le
+-/
+#print quasilinearOn_iff_mem_uIcc /-
theorem quasilinearOn_iff_mem_uIcc :
QuasilinearOn π s f β
Convex π s β§
@@ -171,18 +194,23 @@ theorem quasilinearOn_iff_mem_uIcc :
apply and_congr_right'
simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm']
#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIcc
+-/
+#print QuasiconvexOn.convex_lt /-
theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) : Convex π ({x β s | f x < r}) :=
by
refine' fun x hx y hy a b ha hb hab => _
have h := hf _ β¨hx.1, le_max_left _ _β© β¨hy.1, le_max_right _ _β© ha hb hab
exact β¨h.1, h.2.trans_lt <| max_lt hx.2 hy.2β©
#align quasiconvex_on.convex_lt QuasiconvexOn.convex_lt
+-/
+#print QuasiconcaveOn.convex_gt /-
theorem QuasiconcaveOn.convex_gt (hf : QuasiconcaveOn π s f) (r : Ξ²) :
Convex π ({x β s | r < f x}) :=
hf.dual.convex_lt r
#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gt
+-/
end SMul
@@ -190,13 +218,17 @@ section OrderedSMul
variable [SMul π E] [Module π Ξ²] [OrderedSMul π Ξ²] {s : Set E} {f : E β Ξ²}
+#print ConvexOn.quasiconvexOn /-
theorem ConvexOn.quasiconvexOn (hf : ConvexOn π s f) : QuasiconvexOn π s f :=
hf.convex_le
#align convex_on.quasiconvex_on ConvexOn.quasiconvexOn
+-/
+#print ConcaveOn.quasiconcaveOn /-
theorem ConcaveOn.quasiconcaveOn (hf : ConcaveOn π s f) : QuasiconcaveOn π s f :=
hf.convex_ge
#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOn
+-/
end OrderedSMul
@@ -209,53 +241,77 @@ section LinearOrderedAddCommMonoid
variable [LinearOrderedAddCommMonoid E] [OrderedAddCommMonoid Ξ²] [Module π E] [OrderedSMul π E]
{s : Set E} {f : E β Ξ²}
+#print MonotoneOn.quasiconvexOn /-
theorem MonotoneOn.quasiconvexOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align monotone_on.quasiconvex_on MonotoneOn.quasiconvexOn
+-/
+#print MonotoneOn.quasiconcaveOn /-
theorem MonotoneOn.quasiconcaveOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align monotone_on.quasiconcave_on MonotoneOn.quasiconcaveOn
+-/
+#print MonotoneOn.quasilinearOn /-
theorem MonotoneOn.quasilinearOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align monotone_on.quasilinear_on MonotoneOn.quasilinearOn
+-/
+#print AntitoneOn.quasiconvexOn /-
theorem AntitoneOn.quasiconvexOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align antitone_on.quasiconvex_on AntitoneOn.quasiconvexOn
+-/
+#print AntitoneOn.quasiconcaveOn /-
theorem AntitoneOn.quasiconcaveOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align antitone_on.quasiconcave_on AntitoneOn.quasiconcaveOn
+-/
+#print AntitoneOn.quasilinearOn /-
theorem AntitoneOn.quasilinearOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align antitone_on.quasilinear_on AntitoneOn.quasilinearOn
+-/
+#print Monotone.quasiconvexOn /-
theorem Monotone.quasiconvexOn (hf : Monotone f) : QuasiconvexOn π univ f :=
(hf.MonotoneOn _).QuasiconvexOn convex_univ
#align monotone.quasiconvex_on Monotone.quasiconvexOn
+-/
+#print Monotone.quasiconcaveOn /-
theorem Monotone.quasiconcaveOn (hf : Monotone f) : QuasiconcaveOn π univ f :=
(hf.MonotoneOn _).QuasiconcaveOn convex_univ
#align monotone.quasiconcave_on Monotone.quasiconcaveOn
+-/
+#print Monotone.quasilinearOn /-
theorem Monotone.quasilinearOn (hf : Monotone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align monotone.quasilinear_on Monotone.quasilinearOn
+-/
+#print Antitone.quasiconvexOn /-
theorem Antitone.quasiconvexOn (hf : Antitone f) : QuasiconvexOn π univ f :=
(hf.AntitoneOn _).QuasiconvexOn convex_univ
#align antitone.quasiconvex_on Antitone.quasiconvexOn
+-/
+#print Antitone.quasiconcaveOn /-
theorem Antitone.quasiconcaveOn (hf : Antitone f) : QuasiconcaveOn π univ f :=
(hf.AntitoneOn _).QuasiconcaveOn convex_univ
#align antitone.quasiconcave_on Antitone.quasiconcaveOn
+-/
+#print Antitone.quasilinearOn /-
theorem Antitone.quasilinearOn (hf : Antitone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align antitone.quasilinear_on Antitone.quasilinearOn
+-/
end LinearOrderedAddCommMonoid
@@ -265,6 +321,7 @@ section LinearOrderedField
variable [LinearOrderedField π] [LinearOrderedAddCommMonoid Ξ²] {s : Set π} {f : π β Ξ²}
+#print QuasilinearOn.monotoneOn_or_antitoneOn /-
theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
MonotoneOn f s β¨ AntitoneOn f s :=
by
@@ -272,12 +329,15 @@ theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
rintro a ha b hb c hc h
refine' β¨((hf.2 _).segment_subset _ _ h).2, ((hf.1 _).segment_subset _ _ h).2β© <;> simp [*]
#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOn
+-/
+#print quasilinearOn_iff_monotoneOn_or_antitoneOn /-
theorem quasilinearOn_iff_monotoneOn_or_antitoneOn (hs : Convex π s) :
QuasilinearOn π s f β MonotoneOn f s β¨ AntitoneOn f s :=
β¨fun h => h.monotoneOn_or_antitoneOn, fun h =>
h.elim (fun h => h.QuasilinearOn hs) fun h => h.QuasilinearOn hsβ©
#align quasilinear_on_iff_monotone_on_or_antitone_on quasilinearOn_iff_monotoneOn_or_antitoneOn
+-/
end LinearOrderedField
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -55,7 +55,7 @@ variable (π) [OrderedAddCommMonoid Ξ²] [SMul π E] (s : Set E) (f : E β
/-- A function is quasiconvex if all its sublevels are convex.
This means that, for all `r`, `{x β s | f x β€ r}` is `π`-convex. -/
def QuasiconvexOn : Prop :=
- β r, Convex π ({ x β s | f x β€ r })
+ β r, Convex π ({x β s | f x β€ r})
#align quasiconvex_on QuasiconvexOn
-/
@@ -63,7 +63,7 @@ def QuasiconvexOn : Prop :=
/-- A function is quasiconcave if all its superlevels are convex.
This means that, for all `r`, `{x β s | r β€ f x}` is `π`-convex. -/
def QuasiconcaveOn : Prop :=
- β r, Convex π ({ x β s | r β€ f x })
+ β r, Convex π ({x β s | r β€ f x})
#align quasiconcave_on QuasiconcaveOn
-/
@@ -90,11 +90,11 @@ theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (to
And.symm
#align quasilinear_on.dual QuasilinearOn.dual
-theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Convex π { x | f x β€ r }) :
+theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Convex π {x | f x β€ r}) :
QuasiconvexOn π s f := fun r => hs.inter (h r)
#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_le
-theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Convex π { x | r β€ f x }) :
+theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Convex π {x | r β€ f x}) :
QuasiconcaveOn π s f :=
@Convex.quasiconvexOn_of_convex_le π E Ξ²α΅α΅ _ _ _ _ _ _ hs h
#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_ge
@@ -172,8 +172,7 @@ theorem quasilinearOn_iff_mem_uIcc :
simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm']
#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIcc
-theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
- Convex π ({ x β s | f x < r }) :=
+theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) : Convex π ({x β s | f x < r}) :=
by
refine' fun x hx y hy a b ha hb hab => _
have h := hf _ β¨hx.1, le_max_left _ _β© β¨hy.1, le_max_right _ _β© ha hb hab
@@ -181,7 +180,7 @@ theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
#align quasiconvex_on.convex_lt QuasiconvexOn.convex_lt
theorem QuasiconcaveOn.convex_gt (hf : QuasiconcaveOn π s f) (r : Ξ²) :
- Convex π ({ x β s | r < f x }) :=
+ Convex π ({x β s | r < f x}) :=
hf.dual.convex_lt r
#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gt
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -78,75 +78,33 @@ def QuasilinearOn : Prop :=
variable {π s f}
-/- warning: quasiconvex_on.dual -> QuasiconvexOn.dual is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
-Case conversion may be inaccurate. Consider using '#align quasiconvex_on.dual QuasiconvexOn.dualβ'. -/
theorem QuasiconvexOn.dual : QuasiconvexOn π s f β QuasiconcaveOn π s (toDual β f) :=
id
#align quasiconvex_on.dual QuasiconvexOn.dual
-/- warning: quasiconcave_on.dual -> QuasiconcaveOn.dual is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
-Case conversion may be inaccurate. Consider using '#align quasiconcave_on.dual QuasiconcaveOn.dualβ'. -/
theorem QuasiconcaveOn.dual : QuasiconcaveOn π s f β QuasiconvexOn π s (toDual β f) :=
id
#align quasiconcave_on.dual QuasiconcaveOn.dual
-/- warning: quasilinear_on.dual -> QuasilinearOn.dual is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
-Case conversion may be inaccurate. Consider using '#align quasilinear_on.dual QuasilinearOn.dualβ'. -/
theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (toDual β f) :=
And.symm
#align quasilinear_on.dual QuasilinearOn.dual
-/- warning: convex.quasiconvex_on_of_convex_le -> Convex.quasiconvexOn_of_convex_le is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
-Case conversion may be inaccurate. Consider using '#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_leβ'. -/
theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Convex π { x | f x β€ r }) :
QuasiconvexOn π s f := fun r => hs.inter (h r)
#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_le
-/- warning: convex.quasiconcave_on_of_convex_ge -> Convex.quasiconcaveOn_of_convex_ge is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
-Case conversion may be inaccurate. Consider using '#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_geβ'. -/
theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Convex π { x | r β€ f x }) :
QuasiconcaveOn π s f :=
@Convex.quasiconvexOn_of_convex_le π E Ξ²α΅α΅ _ _ _ _ _ _ hs h
#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_ge
-/- warning: quasiconvex_on.convex -> QuasiconvexOn.convex is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
-but is expected to have type
- forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564 : Ξ²) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564)], (QuasiconvexOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
-Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex QuasiconvexOn.convexβ'. -/
theorem QuasiconvexOn.convex [IsDirected Ξ² (Β· β€ Β·)] (hf : QuasiconvexOn π s f) : Convex π s :=
fun x hx y hy a b ha hb hab =>
let β¨z, hxz, hyzβ© := exists_ge_ge (f x) (f y)
(hf _ β¨hx, hxzβ© β¨hy, hyzβ© ha hb hab).1
#align quasiconvex_on.convex QuasiconvexOn.convex
-/- warning: quasiconcave_on.convex -> QuasiconcaveOn.convex is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (GE.ge.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
-but is expected to have type
- forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685 : Ξ²) => GE.ge.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685)], (QuasiconcaveOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
-Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex QuasiconcaveOn.convexβ'. -/
theorem QuasiconcaveOn.convex [IsDirected Ξ² (Β· β₯ Β·)] (hf : QuasiconcaveOn π s f) : Convex π s :=
hf.dual.Convex
#align quasiconcave_on.convex QuasiconcaveOn.convex
@@ -161,12 +119,6 @@ section SMul
variable [SMul π E] {s : Set E} {f g : E β Ξ²}
-/- warning: quasiconvex_on.sup -> QuasiconvexOn.sup is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s g) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Sup.sup.{max u2 u3} (E -> Ξ²) (Pi.hasSup.{u2, u3} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeSup.toHasSup.{u3} Ξ² (Lattice.toSemilatticeSup.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4))))) f g))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s g) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Sup.sup.{max u2 u1} (E -> Ξ²) (Pi.instSupForAll.{u2, u1} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeSup.toSup.{u1} Ξ² (Lattice.toSemilatticeSup.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)))))) f g))
-Case conversion may be inaccurate. Consider using '#align quasiconvex_on.sup QuasiconvexOn.supβ'. -/
theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π s g) :
QuasiconvexOn π s (f β g) := by
intro r
@@ -174,20 +126,11 @@ theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π
exact (hf r).inter (hg r)
#align quasiconvex_on.sup QuasiconvexOn.sup
-/- warning: quasiconcave_on.inf -> QuasiconcaveOn.inf is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s g) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Inf.inf.{max u2 u3} (E -> Ξ²) (Pi.hasInf.{u2, u3} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeInf.toHasInf.{u3} Ξ² (Lattice.toSemilatticeInf.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4))))) f g))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s g) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Inf.inf.{max u2 u1} (E -> Ξ²) (Pi.instInfForAll.{u2, u1} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => Lattice.toInf.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4))))) f g))
-Case conversion may be inaccurate. Consider using '#align quasiconcave_on.inf QuasiconcaveOn.infβ'. -/
theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn π s g) :
QuasiconcaveOn π s (f β g) :=
hf.dual.sup hg
#align quasiconcave_on.inf QuasiconcaveOn.inf
-/- warning: quasiconvex_on_iff_le_max -> quasiconvexOn_iff_le_max is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_maxβ'. -/
theorem quasiconvexOn_iff_le_max :
QuasiconvexOn π s f β
Convex π s β§
@@ -203,9 +146,6 @@ theorem quasiconvexOn_iff_le_max :
β¨hf.1 hx.1 hy.1 ha hb hab, (hf.2 hx.1 hy.1 ha hb hab).trans <| max_le hx.2 hy.2β©β©
#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_max
-/- warning: quasiconcave_on_iff_min_le -> quasiconcaveOn_iff_min_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_leβ'. -/
theorem quasiconcaveOn_iff_min_le :
QuasiconcaveOn π s f β
Convex π s β§
@@ -217,9 +157,6 @@ theorem quasiconcaveOn_iff_min_le :
@quasiconvexOn_iff_le_max π E Ξ²α΅α΅ _ _ _ _ _ _
#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_le
-/- warning: quasilinear_on_iff_mem_uIcc -> quasilinearOn_iff_mem_uIcc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIccβ'. -/
theorem quasilinearOn_iff_mem_uIcc :
QuasilinearOn π s f β
Convex π s β§
@@ -235,12 +172,6 @@ theorem quasilinearOn_iff_mem_uIcc :
simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm']
#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIcc
-/- warning: quasiconvex_on.convex_lt -> QuasiconvexOn.convex_lt is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toHasLt.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f x) r) s))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f x) r))))
-Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex_lt QuasiconvexOn.convex_ltβ'. -/
theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
Convex π ({ x β s | f x < r }) :=
by
@@ -249,12 +180,6 @@ theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
exact β¨h.1, h.2.trans_lt <| max_lt hx.2 hy.2β©
#align quasiconvex_on.convex_lt QuasiconvexOn.convex_lt
-/- warning: quasiconcave_on.convex_gt -> QuasiconcaveOn.convex_gt is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toHasLt.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) r (f x)) s))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) r (f x)))))
-Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gtβ'. -/
theorem QuasiconcaveOn.convex_gt (hf : QuasiconcaveOn π s f) (r : Ξ²) :
Convex π ({ x β s | r < f x }) :=
hf.dual.convex_lt r
@@ -266,22 +191,10 @@ section OrderedSMul
variable [SMul π E] [Module π Ξ²] [OrderedSMul π Ξ²] {s : Set E} {f : E β Ξ²}
-/- warning: convex_on.quasiconvex_on -> ConvexOn.quasiconvexOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] [_inst_6 : Module.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))] [_inst_7 : OrderedSMul.{u1, u3} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 (SMulZeroClass.toHasSmul.{u1, u3} π Ξ² (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (SMulWithZero.toSmulZeroClass.{u1, u3} π Ξ² (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6)))) s f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f)
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] [_inst_6 : Module.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4)] [_inst_7 : OrderedSMul.{u3, u1} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 (SMulZeroClass.toSMul.{u3, u1} π Ξ² (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (SMulWithZero.toSMulZeroClass.{u3, u1} π Ξ² (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6)))) s f) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f)
-Case conversion may be inaccurate. Consider using '#align convex_on.quasiconvex_on ConvexOn.quasiconvexOnβ'. -/
theorem ConvexOn.quasiconvexOn (hf : ConvexOn π s f) : QuasiconvexOn π s f :=
hf.convex_le
#align convex_on.quasiconvex_on ConvexOn.quasiconvexOn
-/- warning: concave_on.quasiconcave_on -> ConcaveOn.quasiconcaveOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] [_inst_6 : Module.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))] [_inst_7 : OrderedSMul.{u1, u3} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 (SMulZeroClass.toHasSmul.{u1, u3} π Ξ² (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (SMulWithZero.toSmulZeroClass.{u1, u3} π Ξ² (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6)))) s f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f)
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] [_inst_6 : Module.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4)] [_inst_7 : OrderedSMul.{u3, u1} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 (SMulZeroClass.toSMul.{u3, u1} π Ξ² (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (SMulWithZero.toSMulZeroClass.{u3, u1} π Ξ² (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6)))) s f) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f)
-Case conversion may be inaccurate. Consider using '#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOnβ'. -/
theorem ConcaveOn.quasiconcaveOn (hf : ConcaveOn π s f) : QuasiconcaveOn π s f :=
hf.convex_ge
#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOn
@@ -297,122 +210,50 @@ section LinearOrderedAddCommMonoid
variable [LinearOrderedAddCommMonoid E] [OrderedAddCommMonoid Ξ²] [Module π E] [OrderedSMul π E]
{s : Set E} {f : E β Ξ²}
-/- warning: monotone_on.quasiconvex_on -> MonotoneOn.quasiconvexOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align monotone_on.quasiconvex_on MonotoneOn.quasiconvexOnβ'. -/
theorem MonotoneOn.quasiconvexOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align monotone_on.quasiconvex_on MonotoneOn.quasiconvexOn
-/- warning: monotone_on.quasiconcave_on -> MonotoneOn.quasiconcaveOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align monotone_on.quasiconcave_on MonotoneOn.quasiconcaveOnβ'. -/
theorem MonotoneOn.quasiconcaveOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align monotone_on.quasiconcave_on MonotoneOn.quasiconcaveOn
-/- warning: monotone_on.quasilinear_on -> MonotoneOn.quasilinearOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align monotone_on.quasilinear_on MonotoneOn.quasilinearOnβ'. -/
theorem MonotoneOn.quasilinearOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align monotone_on.quasilinear_on MonotoneOn.quasilinearOn
-/- warning: antitone_on.quasiconvex_on -> AntitoneOn.quasiconvexOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align antitone_on.quasiconvex_on AntitoneOn.quasiconvexOnβ'. -/
theorem AntitoneOn.quasiconvexOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align antitone_on.quasiconvex_on AntitoneOn.quasiconvexOn
-/- warning: antitone_on.quasiconcave_on -> AntitoneOn.quasiconcaveOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align antitone_on.quasiconcave_on AntitoneOn.quasiconcaveOnβ'. -/
theorem AntitoneOn.quasiconcaveOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align antitone_on.quasiconcave_on AntitoneOn.quasiconcaveOn
-/- warning: antitone_on.quasilinear_on -> AntitoneOn.quasilinearOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
-Case conversion may be inaccurate. Consider using '#align antitone_on.quasilinear_on AntitoneOn.quasilinearOnβ'. -/
theorem AntitoneOn.quasilinearOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align antitone_on.quasilinear_on AntitoneOn.quasilinearOn
-/- warning: monotone.quasiconvex_on -> Monotone.quasiconvexOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align monotone.quasiconvex_on Monotone.quasiconvexOnβ'. -/
theorem Monotone.quasiconvexOn (hf : Monotone f) : QuasiconvexOn π univ f :=
(hf.MonotoneOn _).QuasiconvexOn convex_univ
#align monotone.quasiconvex_on Monotone.quasiconvexOn
-/- warning: monotone.quasiconcave_on -> Monotone.quasiconcaveOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align monotone.quasiconcave_on Monotone.quasiconcaveOnβ'. -/
theorem Monotone.quasiconcaveOn (hf : Monotone f) : QuasiconcaveOn π univ f :=
(hf.MonotoneOn _).QuasiconcaveOn convex_univ
#align monotone.quasiconcave_on Monotone.quasiconcaveOn
-/- warning: monotone.quasilinear_on -> Monotone.quasilinearOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align monotone.quasilinear_on Monotone.quasilinearOnβ'. -/
theorem Monotone.quasilinearOn (hf : Monotone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align monotone.quasilinear_on Monotone.quasilinearOn
-/- warning: antitone.quasiconvex_on -> Antitone.quasiconvexOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align antitone.quasiconvex_on Antitone.quasiconvexOnβ'. -/
theorem Antitone.quasiconvexOn (hf : Antitone f) : QuasiconvexOn π univ f :=
(hf.AntitoneOn _).QuasiconvexOn convex_univ
#align antitone.quasiconvex_on Antitone.quasiconvexOn
-/- warning: antitone.quasiconcave_on -> Antitone.quasiconcaveOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align antitone.quasiconcave_on Antitone.quasiconcaveOnβ'. -/
theorem Antitone.quasiconcaveOn (hf : Antitone f) : QuasiconcaveOn π univ f :=
(hf.AntitoneOn _).QuasiconcaveOn convex_univ
#align antitone.quasiconcave_on Antitone.quasiconcaveOn
-/- warning: antitone.quasilinear_on -> Antitone.quasilinearOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
-but is expected to have type
- forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
-Case conversion may be inaccurate. Consider using '#align antitone.quasilinear_on Antitone.quasilinearOnβ'. -/
theorem Antitone.quasilinearOn (hf : Antitone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align antitone.quasilinear_on Antitone.quasilinearOn
@@ -425,12 +266,6 @@ section LinearOrderedField
variable [LinearOrderedField π] [LinearOrderedAddCommMonoid Ξ²] {s : Set π} {f : π β Ξ²}
-/- warning: quasilinear_on.monotone_on_or_antitone_on -> QuasilinearOn.monotoneOn_or_antitoneOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {Ξ² : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} Ξ²] {s : Set.{u1} π} {f : π -> Ξ²}, (QuasilinearOn.{u1, u1, u2} π π Ξ² (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)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (Or (MonotoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s) (AntitoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s))
-but is expected to have type
- forall {π : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : LinearOrderedAddCommMonoid.{u1} Ξ²] {s : Set.{u2} π} {f : π -> Ξ²}, (QuasilinearOn.{u2, u2, u1} π π Ξ² (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s f) -> (Or (MonotoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s) (AntitoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s))
-Case conversion may be inaccurate. Consider using '#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOnβ'. -/
theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
MonotoneOn f s β¨ AntitoneOn f s :=
by
@@ -439,12 +274,6 @@ theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
refine' β¨((hf.2 _).segment_subset _ _ h).2, ((hf.1 _).segment_subset _ _ h).2β© <;> simp [*]
#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOn
-/- warning: quasilinear_on_iff_monotone_on_or_antitone_on -> quasilinearOn_iff_monotoneOn_or_antitoneOn is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {Ξ² : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} Ξ²] {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) -> (Iff (QuasilinearOn.{u1, u1, u2} π π Ξ² (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)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (Or (MonotoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s) (AntitoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s)))
-but is expected to have type
- forall {π : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : LinearOrderedAddCommMonoid.{u1} Ξ²] {s : Set.{u2} π} {f : π -> Ξ²}, (Convex.{u2, u2} π π (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s) -> (Iff (QuasilinearOn.{u2, u2, u1} π π Ξ² (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s f) (Or (MonotoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s) (AntitoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s)))
-Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_monotone_on_or_antitone_on quasilinearOn_iff_monotoneOn_or_antitoneOnβ'. -/
theorem quasilinearOn_iff_monotoneOn_or_antitoneOn (hs : Convex π s) :
QuasilinearOn π s f β MonotoneOn f s β¨ AntitoneOn f s :=
β¨fun h => h.monotoneOn_or_antitoneOn, fun h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -186,10 +186,7 @@ theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn
#align quasiconcave_on.inf QuasiconcaveOn.inf
/- warning: quasiconvex_on_iff_le_max -> quasiconvexOn_iff_le_max is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (LinearOrder.max.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)))))))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Max.max.{u1} Ξ² (LinearOrder.toMax.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_maxβ'. -/
theorem quasiconvexOn_iff_le_max :
QuasiconvexOn π s f β
@@ -207,10 +204,7 @@ theorem quasiconvexOn_iff_le_max :
#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_max
/- warning: quasiconcave_on_iff_min_le -> quasiconcaveOn_iff_min_le is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (LinearOrder.min.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))))))))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Min.min.{u1} Ξ² (LinearOrder.toMin.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_leβ'. -/
theorem quasiconcaveOn_iff_min_le :
QuasiconcaveOn π s f β
@@ -224,10 +218,7 @@ theorem quasiconcaveOn_iff_min_le :
#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_le
/- warning: quasilinear_on_iff_mem_uIcc -> quasilinearOn_iff_mem_uIcc is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (Membership.Mem.{u3, u3} Ξ² (Set.{u3} Ξ²) (Set.hasMem.{u3} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (Set.uIcc.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4)) (f x) (f y)))))))
-but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (Membership.mem.{u1, u1} Ξ² (Set.{u1} Ξ²) (Set.instMembershipSet.{u1} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Set.uIcc.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4))) (f x) (f y)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIccβ'. -/
theorem quasilinearOn_iff_mem_uIcc :
QuasilinearOn π s f β
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -82,7 +82,7 @@ variable {π s f}
lean 3 declaration is
forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
Case conversion may be inaccurate. Consider using '#align quasiconvex_on.dual QuasiconvexOn.dualβ'. -/
theorem QuasiconvexOn.dual : QuasiconvexOn π s f β QuasiconcaveOn π s (toDual β f) :=
id
@@ -92,7 +92,7 @@ theorem QuasiconvexOn.dual : QuasiconvexOn π s f β QuasiconcaveOn π s (t
lean 3 declaration is
forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
Case conversion may be inaccurate. Consider using '#align quasiconcave_on.dual QuasiconcaveOn.dualβ'. -/
theorem QuasiconcaveOn.dual : QuasiconcaveOn π s f β QuasiconvexOn π s (toDual β f) :=
id
@@ -102,7 +102,7 @@ theorem QuasiconcaveOn.dual : QuasiconcaveOn π s f β QuasiconvexOn π s (
lean 3 declaration is
forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
but is expected to have type
- forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
Case conversion may be inaccurate. Consider using '#align quasilinear_on.dual QuasilinearOn.dualβ'. -/
theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (toDual β f) :=
And.symm
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -110,7 +110,7 @@ theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (to
/- warning: convex.quasiconvex_on_of_convex_le -> Convex.quasiconvexOn_of_convex_le is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
Case conversion may be inaccurate. Consider using '#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_leβ'. -/
@@ -120,7 +120,7 @@ theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Conve
/- warning: convex.quasiconcave_on_of_convex_ge -> Convex.quasiconcaveOn_of_convex_ge is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
Case conversion may be inaccurate. Consider using '#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_geβ'. -/
@@ -131,7 +131,7 @@ theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Conv
/- warning: quasiconvex_on.convex -> QuasiconvexOn.convex is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
but is expected to have type
forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564 : Ξ²) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564)], (QuasiconvexOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex QuasiconvexOn.convexβ'. -/
@@ -143,7 +143,7 @@ theorem QuasiconvexOn.convex [IsDirected Ξ² (Β· β€ Β·)] (hf : QuasiconvexOn
/- warning: quasiconcave_on.convex -> QuasiconcaveOn.convex is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (GE.ge.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (GE.ge.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
but is expected to have type
forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685 : Ξ²) => GE.ge.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685)], (QuasiconcaveOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex QuasiconcaveOn.convexβ'. -/
@@ -187,7 +187,7 @@ theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn
/- warning: quasiconvex_on_iff_le_max -> quasiconvexOn_iff_le_max is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (LinearOrder.max.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)))))))
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (LinearOrder.max.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)))))))
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Max.max.{u1} Ξ² (LinearOrder.toMax.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)))))))
Case conversion may be inaccurate. Consider using '#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_maxβ'. -/
@@ -208,7 +208,7 @@ theorem quasiconvexOn_iff_le_max :
/- warning: quasiconcave_on_iff_min_le -> quasiconcaveOn_iff_min_le is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (LinearOrder.min.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))))))))
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toHasLe.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (LinearOrder.min.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))))))))
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Min.min.{u1} Ξ² (LinearOrder.toMin.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))))))))
Case conversion may be inaccurate. Consider using '#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_leβ'. -/
@@ -225,7 +225,7 @@ theorem quasiconcaveOn_iff_min_le :
/- warning: quasilinear_on_iff_mem_uIcc -> quasilinearOn_iff_mem_uIcc is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (Membership.Mem.{u3, u3} Ξ² (Set.{u3} Ξ²) (Set.hasMem.{u3} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (Set.uIcc.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4)) (f x) (f y)))))))
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toHasLe.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (Membership.Mem.{u3, u3} Ξ² (Set.{u3} Ξ²) (Set.hasMem.{u3} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (Set.uIcc.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4)) (f x) (f y)))))))
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (Membership.mem.{u1, u1} Ξ² (Set.{u1} Ξ²) (Set.instMembershipSet.{u1} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Set.uIcc.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4))) (f x) (f y)))))))
Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIccβ'. -/
@@ -246,7 +246,7 @@ theorem quasilinearOn_iff_mem_uIcc :
/- warning: quasiconvex_on.convex_lt -> QuasiconvexOn.convex_lt is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toLT.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f x) r) s))
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toHasLt.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f x) r) s))
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f x) r))))
Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex_lt QuasiconvexOn.convex_ltβ'. -/
@@ -260,7 +260,7 @@ theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
/- warning: quasiconcave_on.convex_gt -> QuasiconcaveOn.convex_gt is a dubious translation:
lean 3 declaration is
- forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toLT.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) r (f x)) s))
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toHasLt.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) r (f x)) s))
but is expected to have type
forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) r (f x)))))
Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gtβ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7ebf83ed9c262adbf983ef64d5e8c2ae94b625f4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
! This file was ported from Lean 3 source module analysis.convex.quasiconvex
-! leanprover-community/mathlib commit 9003f28797c0664a49e4179487267c494477d853
+! leanprover-community/mathlib commit 9a48a083b390d9b84a71efbdc4e8dfa26a687104
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.Convex.Function
/-!
# Quasiconvex and quasiconcave functions
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines quasiconvexity, quasiconcavity and quasilinearity of functions, which are
generalizations of unimodality and monotonicity. Convexity implies quasiconvexity, concavity implies
quasiconcavity, and monotonicity implies quasilinearity.
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -48,54 +48,102 @@ section OrderedAddCommMonoid
variable (π) [OrderedAddCommMonoid Ξ²] [SMul π E] (s : Set E) (f : E β Ξ²)
+#print QuasiconvexOn /-
/-- A function is quasiconvex if all its sublevels are convex.
This means that, for all `r`, `{x β s | f x β€ r}` is `π`-convex. -/
def QuasiconvexOn : Prop :=
β r, Convex π ({ x β s | f x β€ r })
#align quasiconvex_on QuasiconvexOn
+-/
+#print QuasiconcaveOn /-
/-- A function is quasiconcave if all its superlevels are convex.
This means that, for all `r`, `{x β s | r β€ f x}` is `π`-convex. -/
def QuasiconcaveOn : Prop :=
β r, Convex π ({ x β s | r β€ f x })
#align quasiconcave_on QuasiconcaveOn
+-/
+#print QuasilinearOn /-
/-- A function is quasilinear if it is both quasiconvex and quasiconcave.
This means that, for all `r`,
the sets `{x β s | f x β€ r}` and `{x β s | r β€ f x}` are `π`-convex. -/
def QuasilinearOn : Prop :=
QuasiconvexOn π s f β§ QuasiconcaveOn π s f
#align quasilinear_on QuasilinearOn
+-/
variable {π s f}
+/- warning: quasiconvex_on.dual -> QuasiconvexOn.dual is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+Case conversion may be inaccurate. Consider using '#align quasiconvex_on.dual QuasiconvexOn.dualβ'. -/
theorem QuasiconvexOn.dual : QuasiconvexOn π s f β QuasiconcaveOn π s (toDual β f) :=
id
#align quasiconvex_on.dual QuasiconvexOn.dual
+/- warning: quasiconcave_on.dual -> QuasiconcaveOn.dual is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+Case conversion may be inaccurate. Consider using '#align quasiconcave_on.dual QuasiconcaveOn.dualβ'. -/
theorem QuasiconcaveOn.dual : QuasiconcaveOn π s f β QuasiconvexOn π s (toDual β f) :=
id
#align quasiconcave_on.dual QuasiconcaveOn.dual
+/- warning: quasilinear_on.dual -> QuasilinearOn.dual is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u1, u2, u3} π E (OrderDual.{u3} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u3, succ u3} E Ξ² (OrderDual.{u3} Ξ²) (coeFn.{succ u3, succ u3} (Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (fun (_x : Equiv.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) => Ξ² -> (OrderDual.{u3} Ξ²)) (Equiv.hasCoeToFun.{succ u3, succ u3} Ξ² (OrderDual.{u3} Ξ²)) (OrderDual.toDual.{u3} Ξ²)) f))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (QuasilinearOn.{u3, u2, u1} π E (OrderDual.{u1} Ξ²) _inst_1 _inst_2 (OrderDual.orderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Function.comp.{succ u2, succ u1, succ u1} E Ξ² (OrderDual.{u1} Ξ²) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) Ξ² (fun (_x : Ξ²) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Ξ²) => OrderDual.{u1} Ξ²) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} Ξ² (OrderDual.{u1} Ξ²)) (OrderDual.toDual.{u1} Ξ²)) f))
+Case conversion may be inaccurate. Consider using '#align quasilinear_on.dual QuasilinearOn.dualβ'. -/
theorem QuasilinearOn.dual : QuasilinearOn π s f β QuasilinearOn π s (toDual β f) :=
And.symm
#align quasilinear_on.dual QuasilinearOn.dual
+/- warning: convex.quasiconvex_on_of_convex_le -> Convex.quasiconvexOn_of_convex_le is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) (f x) r))) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+Case conversion may be inaccurate. Consider using '#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_leβ'. -/
theorem Convex.quasiconvexOn_of_convex_le (hs : Convex π s) (h : β r, Convex π { x | f x β€ r }) :
QuasiconvexOn π s f := fun r => hs.inter (h r)
#align convex.quasiconvex_on_of_convex_le Convex.quasiconvexOn_of_convex_le
+/- warning: convex.quasiconcave_on_of_convex_ge -> Convex.quasiconcaveOn_of_convex_ge is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² _inst_4))) r (f x)))) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f)
+Case conversion may be inaccurate. Consider using '#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_geβ'. -/
theorem Convex.quasiconcaveOn_of_convex_ge (hs : Convex π s) (h : β r, Convex π { x | r β€ f x }) :
QuasiconcaveOn π s f :=
@Convex.quasiconvexOn_of_convex_le π E Ξ²α΅α΅ _ _ _ _ _ _ hs h
#align convex.quasiconcave_on_of_convex_ge Convex.quasiconcaveOn_of_convex_ge
+/- warning: quasiconvex_on.convex -> QuasiconvexOn.convex is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
+but is expected to have type
+ forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564 : Ξ²) => LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.562 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.564)], (QuasiconvexOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
+Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex QuasiconvexOn.convexβ'. -/
theorem QuasiconvexOn.convex [IsDirected Ξ² (Β· β€ Β·)] (hf : QuasiconvexOn π s f) : Convex π s :=
fun x hx y hy a b ha hb hab =>
let β¨z, hxz, hyzβ© := exists_ge_ge (f x) (f y)
(hf _ β¨hx, hxzβ© β¨hy, hyzβ© ha hb hab).1
#align quasiconvex_on.convex QuasiconvexOn.convex
+/- warning: quasiconcave_on.convex -> QuasiconcaveOn.convex is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (GE.ge.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))))], (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s)
+but is expected to have type
+ forall {π : Type.{u2}} {E : Type.{u1}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u2} π] [_inst_2 : AddCommMonoid.{u1} E] [_inst_4 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u2, u1} π E] {s : Set.{u1} E} {f : E -> Ξ²} [_inst_6 : IsDirected.{u3} Ξ² (fun (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 : Ξ²) (x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685 : Ξ²) => GE.ge.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_4))) x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.683 x._@.Mathlib.Analysis.Convex.Quasiconvex._hyg.685)], (QuasiconcaveOn.{u2, u1, u3} π E Ξ² _inst_1 _inst_2 _inst_4 _inst_5 s f) -> (Convex.{u2, u1} π E _inst_1 _inst_2 _inst_5 s)
+Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex QuasiconcaveOn.convexβ'. -/
theorem QuasiconcaveOn.convex [IsDirected Ξ² (Β· β₯ Β·)] (hf : QuasiconcaveOn π s f) : Convex π s :=
hf.dual.Convex
#align quasiconcave_on.convex QuasiconcaveOn.convex
@@ -110,6 +158,12 @@ section SMul
variable [SMul π E] {s : Set E} {f g : E β Ξ²}
+/- warning: quasiconvex_on.sup -> QuasiconvexOn.sup is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s g) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Sup.sup.{max u2 u3} (E -> Ξ²) (Pi.hasSup.{u2, u3} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeSup.toHasSup.{u3} Ξ² (Lattice.toSemilatticeSup.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4))))) f g))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s g) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Sup.sup.{max u2 u1} (E -> Ξ²) (Pi.instSupForAll.{u2, u1} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeSup.toSup.{u1} Ξ² (Lattice.toSemilatticeSup.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)))))) f g))
+Case conversion may be inaccurate. Consider using '#align quasiconvex_on.sup QuasiconvexOn.supβ'. -/
theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π s g) :
QuasiconvexOn π s (f β g) := by
intro r
@@ -117,11 +171,23 @@ theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π
exact (hf r).inter (hg r)
#align quasiconvex_on.sup QuasiconvexOn.sup
+/- warning: quasiconcave_on.inf -> QuasiconcaveOn.inf is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s g) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s (Inf.inf.{max u2 u3} (E -> Ξ²) (Pi.hasInf.{u2, u3} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => SemilatticeInf.toHasInf.{u3} Ξ² (Lattice.toSemilatticeInf.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4))))) f g))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²} {g : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s g) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s (Inf.inf.{max u2 u1} (E -> Ξ²) (Pi.instInfForAll.{u2, u1} E (fun (αΎ° : E) => Ξ²) (fun (i : E) => Lattice.toInf.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4))))) f g))
+Case conversion may be inaccurate. Consider using '#align quasiconcave_on.inf QuasiconcaveOn.infβ'. -/
theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn π s g) :
QuasiconcaveOn π s (f β g) :=
hf.dual.sup hg
#align quasiconcave_on.inf QuasiconcaveOn.inf
+/- warning: quasiconvex_on_iff_le_max -> quasiconvexOn_iff_le_max is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (LinearOrder.max.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)))))))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Max.max.{u1} Ξ² (LinearOrder.toMax.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)))))))
+Case conversion may be inaccurate. Consider using '#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_maxβ'. -/
theorem quasiconvexOn_iff_le_max :
QuasiconvexOn π s f β
Convex π s β§
@@ -137,6 +203,12 @@ theorem quasiconvexOn_iff_le_max :
β¨hf.1 hx.1 hy.1 ha hb hab, (hf.2 hx.1 hy.1 ha hb hab).trans <| max_le hx.2 hy.2β©β©
#align quasiconvex_on_iff_le_max quasiconvexOn_iff_le_max
+/- warning: quasiconcave_on_iff_min_le -> quasiconcaveOn_iff_min_le is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (LE.le.{u3} Ξ² (Preorder.toLE.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (LinearOrder.min.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))))))))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (LE.le.{u1} Ξ² (Preorder.toLE.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Min.min.{u1} Ξ² (LinearOrder.toMin.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4)) (f x) (f y)) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))))))))
+Case conversion may be inaccurate. Consider using '#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_leβ'. -/
theorem quasiconcaveOn_iff_min_le :
QuasiconcaveOn π s f β
Convex π s β§
@@ -148,6 +220,12 @@ theorem quasiconcaveOn_iff_min_le :
@quasiconvexOn_iff_le_max π E Ξ²α΅α΅ _ _ _ _ _ _
#align quasiconcave_on_iff_min_le quasiconcaveOn_iff_min_le
+/- warning: quasilinear_on_iff_mem_uIcc -> quasilinearOn_iff_mem_uIcc is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) x s) -> (forall {{y : E}}, (Membership.Mem.{u2, u2} E (Set.{u2} E) (Set.hasMem.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) a) -> (LE.le.{u1} π (Preorder.toLE.{u1} π (PartialOrder.toPreorder.{u1} π (OrderedAddCommMonoid.toPartialOrder.{u1} π (OrderedSemiring.toOrderedAddCommMonoid.{u1} π _inst_1)))) (OfNat.ofNat.{u1} π 0 (OfNat.mk.{u1} π 0 (Zero.zero.{u1} π (MulZeroClass.toHasZero.{u1} π (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))))) b) -> (Eq.{succ u1} π (HAdd.hAdd.{u1, u1, u1} π π π (instHAdd.{u1} π (Distrib.toHasAdd.{u1} π (NonUnitalNonAssocSemiring.toDistrib.{u1} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)))))) a b) (OfNat.ofNat.{u1} π 1 (OfNat.mk.{u1} π 1 (One.one.{u1} π (AddMonoidWithOne.toOne.{u1} π (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} π (NonAssocSemiring.toAddCommMonoidWithOne.{u1} π (Semiring.toNonAssocSemiring.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))))))) -> (Membership.Mem.{u3, u3} Ξ² (Set.{u3} Ξ²) (Set.hasMem.{u3} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toHasAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (SMul.smul.{u1, u2} π E _inst_5 a x) (SMul.smul.{u1, u2} π E _inst_5 b y))) (Set.uIcc.{u3} Ξ² (LinearOrder.toLattice.{u3} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u3} Ξ² _inst_4)) (f x) (f y)))))))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, Iff (QuasilinearOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) (And (Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 s) (forall {{x : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) -> (forall {{y : E}}, (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) y s) -> (forall {{a : π}} {{b : π}}, (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) a) -> (LE.le.{u3} π (Preorder.toLE.{u3} π (PartialOrder.toPreorder.{u3} π (OrderedSemiring.toPartialOrder.{u3} π _inst_1))) (OfNat.ofNat.{u3} π 0 (Zero.toOfNat0.{u3} π (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) b) -> (Eq.{succ u3} π (HAdd.hAdd.{u3, u3, u3} π π π (instHAdd.{u3} π (Distrib.toAdd.{u3} π (NonUnitalNonAssocSemiring.toDistrib.{u3} π (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} π (Semiring.toNonAssocSemiring.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)))))) a b) (OfNat.ofNat.{u3} π 1 (One.toOfNat1.{u3} π (Semiring.toOne.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))))) -> (Membership.mem.{u1, u1} Ξ² (Set.{u1} Ξ²) (Set.instMembershipSet.{u1} Ξ²) (f (HAdd.hAdd.{u2, u2, u2} E E E (instHAdd.{u2} E (AddZeroClass.toAdd.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E _inst_2)))) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) a x) (HSMul.hSMul.{u3, u2, u2} π E E (instHSMul.{u3, u2} π E _inst_5) b y))) (Set.uIcc.{u1} Ξ² (DistribLattice.toLattice.{u1} Ξ² (instDistribLattice.{u1} Ξ² (LinearOrderedAddCommMonoid.toLinearOrder.{u1} Ξ² _inst_4))) (f x) (f y)))))))
+Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIccβ'. -/
theorem quasilinearOn_iff_mem_uIcc :
QuasilinearOn π s f β
Convex π s β§
@@ -163,6 +241,12 @@ theorem quasilinearOn_iff_mem_uIcc :
simp_rw [β forall_and, β Icc_min_max, mem_Icc, and_comm']
#align quasilinear_on_iff_mem_uIcc quasilinearOn_iff_mem_uIcc
+/- warning: quasiconvex_on.convex_lt -> QuasiconvexOn.convex_lt is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toLT.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) (f x) r) s))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (f x) r))))
+Case conversion may be inaccurate. Consider using '#align quasiconvex_on.convex_lt QuasiconvexOn.convex_ltβ'. -/
theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
Convex π ({ x β s | f x < r }) :=
by
@@ -171,6 +255,12 @@ theorem QuasiconvexOn.convex_lt (hf : QuasiconvexOn π s f) (r : Ξ²) :
exact β¨h.1, h.2.trans_lt <| max_lt hx.2 hy.2β©
#align quasiconvex_on.convex_lt QuasiconvexOn.convex_lt
+/- warning: quasiconcave_on.convex_gt -> QuasiconcaveOn.convex_gt is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u1, u2} π E _inst_1 _inst_2 _inst_5 (Sep.sep.{u2, u2} E (Set.{u2} E) (Set.hasSep.{u2} E) (fun (x : E) => LT.lt.{u3} Ξ² (Preorder.toLT.{u3} Ξ² (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)))) r (f x)) s))
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] {s : Set.{u2} E} {f : E -> Ξ²}, (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f) -> (forall (r : Ξ²), Convex.{u3, u2} π E _inst_1 _inst_2 _inst_5 (setOf.{u2} E (fun (x : E) => And (Membership.mem.{u2, u2} E (Set.{u2} E) (Set.instMembershipSet.{u2} E) x s) (LT.lt.{u1} Ξ² (Preorder.toLT.{u1} Ξ² (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) r (f x)))))
+Case conversion may be inaccurate. Consider using '#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gtβ'. -/
theorem QuasiconcaveOn.convex_gt (hf : QuasiconcaveOn π s f) (r : Ξ²) :
Convex π ({ x β s | r < f x }) :=
hf.dual.convex_lt r
@@ -182,10 +272,22 @@ section OrderedSMul
variable [SMul π E] [Module π Ξ²] [OrderedSMul π Ξ²] {s : Set E} {f : E β Ξ²}
+/- warning: convex_on.quasiconvex_on -> ConvexOn.quasiconvexOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] [_inst_6 : Module.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))] [_inst_7 : OrderedSMul.{u1, u3} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 (SMulZeroClass.toHasSmul.{u1, u3} π Ξ² (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (SMulWithZero.toSmulZeroClass.{u1, u3} π Ξ² (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6)))) s f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f)
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] [_inst_6 : Module.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4)] [_inst_7 : OrderedSMul.{u3, u1} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 (SMulZeroClass.toSMul.{u3, u1} π Ξ² (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (SMulWithZero.toSMulZeroClass.{u3, u1} π Ξ² (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6)))) s f) -> (QuasiconvexOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f)
+Case conversion may be inaccurate. Consider using '#align convex_on.quasiconvex_on ConvexOn.quasiconvexOnβ'. -/
theorem ConvexOn.quasiconvexOn (hf : ConvexOn π s f) : QuasiconvexOn π s f :=
hf.convex_le
#align convex_on.quasiconvex_on ConvexOn.quasiconvexOn
+/- warning: concave_on.quasiconcave_on -> ConcaveOn.quasiconcaveOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u3} Ξ²] [_inst_5 : SMul.{u1, u2} π E] [_inst_6 : Module.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))] [_inst_7 : OrderedSMul.{u1, u3} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 (SMulZeroClass.toHasSmul.{u1, u3} π Ξ² (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (SMulWithZero.toSmulZeroClass.{u1, u3} π Ξ² (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (MulActionWithZero.toSMulWithZero.{u1, u3} π Ξ² (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u3} Ξ² (AddMonoid.toAddZeroClass.{u3} Ξ² (AddCommMonoid.toAddMonoid.{u3} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4))))) (Module.toMulActionWithZero.{u1, u3} π Ξ² (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u3} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4)) _inst_6)))) s f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} Ξ² _inst_4) _inst_5 s f)
+but is expected to have type
+ forall {π : Type.{u3}} {E : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : OrderedSemiring.{u3} π] [_inst_2 : AddCommMonoid.{u2} E] [_inst_4 : LinearOrderedAddCommMonoid.{u1} Ξ²] [_inst_5 : SMul.{u3, u2} π E] [_inst_6 : Module.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4)] [_inst_7 : OrderedSMul.{u3, u1} π Ξ² _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (OrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4)))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6))] {s : Set.{u2} E} {f : E -> Ξ²}, (ConcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 (SMulZeroClass.toSMul.{u3, u1} π Ξ² (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (SMulWithZero.toSMulZeroClass.{u3, u1} π Ξ² (MonoidWithZero.toZero.{u3} π (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1))) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u1} π Ξ² (Semiring.toMonoidWithZero.{u3} π (OrderedSemiring.toSemiring.{u3} π _inst_1)) (AddMonoid.toZero.{u1} Ξ² (AddCommMonoid.toAddMonoid.{u1} Ξ² (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4))) (Module.toMulActionWithZero.{u3, u1} π Ξ² (OrderedSemiring.toSemiring.{u3} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u1} Ξ² _inst_4) _inst_6)))) s f) -> (QuasiconcaveOn.{u3, u2, u1} π E Ξ² _inst_1 _inst_2 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_4) _inst_5 s f)
+Case conversion may be inaccurate. Consider using '#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOnβ'. -/
theorem ConcaveOn.quasiconcaveOn (hf : ConcaveOn π s f) : QuasiconcaveOn π s f :=
hf.convex_ge
#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOn
@@ -201,50 +303,122 @@ section LinearOrderedAddCommMonoid
variable [LinearOrderedAddCommMonoid E] [OrderedAddCommMonoid Ξ²] [Module π E] [OrderedSMul π E]
{s : Set E} {f : E β Ξ²}
+/- warning: monotone_on.quasiconvex_on -> MonotoneOn.quasiconvexOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align monotone_on.quasiconvex_on MonotoneOn.quasiconvexOnβ'. -/
theorem MonotoneOn.quasiconvexOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align monotone_on.quasiconvex_on MonotoneOn.quasiconvexOn
+/- warning: monotone_on.quasiconcave_on -> MonotoneOn.quasiconcaveOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align monotone_on.quasiconcave_on MonotoneOn.quasiconcaveOnβ'. -/
theorem MonotoneOn.quasiconcaveOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align monotone_on.quasiconcave_on MonotoneOn.quasiconcaveOn
+/- warning: monotone_on.quasilinear_on -> MonotoneOn.quasilinearOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (MonotoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (MonotoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align monotone_on.quasilinear_on MonotoneOn.quasilinearOnβ'. -/
theorem MonotoneOn.quasilinearOn (hf : MonotoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align monotone_on.quasilinear_on MonotoneOn.quasilinearOn
+/- warning: antitone_on.quasiconvex_on -> AntitoneOn.quasiconvexOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align antitone_on.quasiconvex_on AntitoneOn.quasiconvexOnβ'. -/
theorem AntitoneOn.quasiconvexOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconvexOn π s f :=
hf.convex_le hs
#align antitone_on.quasiconvex_on AntitoneOn.quasiconvexOn
+/- warning: antitone_on.quasiconcave_on -> AntitoneOn.quasiconcaveOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align antitone_on.quasiconcave_on AntitoneOn.quasiconcaveOnβ'. -/
theorem AntitoneOn.quasiconcaveOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasiconcaveOn π s f :=
hf.convex_ge hs
#align antitone_on.quasiconcave_on AntitoneOn.quasiconcaveOn
+/- warning: antitone_on.quasilinear_on -> AntitoneOn.quasilinearOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {s : Set.{u2} E} {f : E -> Ξ²}, (AntitoneOn.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f s) -> (Convex.{u1, u2} π E _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) s f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {s : Set.{u3} E} {f : E -> Ξ²}, (AntitoneOn.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f s) -> (Convex.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) s f)
+Case conversion may be inaccurate. Consider using '#align antitone_on.quasilinear_on AntitoneOn.quasilinearOnβ'. -/
theorem AntitoneOn.quasilinearOn (hf : AntitoneOn f s) (hs : Convex π s) : QuasilinearOn π s f :=
β¨hf.QuasiconvexOn hs, hf.QuasiconcaveOn hsβ©
#align antitone_on.quasilinear_on AntitoneOn.quasilinearOn
+/- warning: monotone.quasiconvex_on -> Monotone.quasiconvexOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align monotone.quasiconvex_on Monotone.quasiconvexOnβ'. -/
theorem Monotone.quasiconvexOn (hf : Monotone f) : QuasiconvexOn π univ f :=
(hf.MonotoneOn _).QuasiconvexOn convex_univ
#align monotone.quasiconvex_on Monotone.quasiconvexOn
+/- warning: monotone.quasiconcave_on -> Monotone.quasiconcaveOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align monotone.quasiconcave_on Monotone.quasiconcaveOnβ'. -/
theorem Monotone.quasiconcaveOn (hf : Monotone f) : QuasiconcaveOn π univ f :=
(hf.MonotoneOn _).QuasiconcaveOn convex_univ
#align monotone.quasiconcave_on Monotone.quasiconcaveOn
+/- warning: monotone.quasilinear_on -> Monotone.quasilinearOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Monotone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Monotone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align monotone.quasilinear_on Monotone.quasilinearOnβ'. -/
theorem Monotone.quasilinearOn (hf : Monotone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align monotone.quasilinear_on Monotone.quasilinearOn
+/- warning: antitone.quasiconvex_on -> Antitone.quasiconvexOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconvexOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align antitone.quasiconvex_on Antitone.quasiconvexOnβ'. -/
theorem Antitone.quasiconvexOn (hf : Antitone f) : QuasiconvexOn π univ f :=
(hf.AntitoneOn _).QuasiconvexOn convex_univ
#align antitone.quasiconvex_on Antitone.quasiconvexOn
+/- warning: antitone.quasiconcave_on -> Antitone.quasiconcaveOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasiconcaveOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align antitone.quasiconcave_on Antitone.quasiconcaveOnβ'. -/
theorem Antitone.quasiconcaveOn (hf : Antitone f) : QuasiconcaveOn π univ f :=
(hf.AntitoneOn _).QuasiconcaveOn convex_univ
#align antitone.quasiconcave_on Antitone.quasiconcaveOn
+/- warning: antitone.quasilinear_on -> Antitone.quasilinearOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {E : Type.{u2}} {Ξ² : Type.{u3}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} E] [_inst_3 : OrderedAddCommMonoid.{u3} Ξ²] [_inst_4 : Module.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))] [_inst_5 : OrderedSMul.{u1, u2} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4))] {f : E -> Ξ²}, (Antitone.{u2, u3} E Ξ² (PartialOrder.toPreorder.{u2} E (OrderedAddCommMonoid.toPartialOrder.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))) (PartialOrder.toPreorder.{u3} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u3} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u2, u3} π E Ξ² _inst_1 (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_3 (SMulZeroClass.toHasSmul.{u1, u2} π E (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (SMulWithZero.toSmulZeroClass.{u1, u2} π E (MulZeroClass.toHasZero.{u1} π (MulZeroOneClass.toMulZeroClass.{u1} π (MonoidWithZero.toMulZeroOneClass.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))))) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddZeroClass.toHasZero.{u2} E (AddMonoid.toAddZeroClass.{u2} E (AddCommMonoid.toAddMonoid.{u2} E (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2))))) (Module.toMulActionWithZero.{u1, u2} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (OrderedAddCommMonoid.toAddCommMonoid.{u2} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} E _inst_2)) _inst_4)))) (Set.univ.{u2} E) f)
+but is expected to have type
+ forall {π : Type.{u1}} {E : Type.{u3}} {Ξ² : Type.{u2}} [_inst_1 : OrderedSemiring.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u3} E] [_inst_3 : OrderedAddCommMonoid.{u2} Ξ²] [_inst_4 : Module.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2)] [_inst_5 : OrderedSMul.{u1, u3} π E _inst_1 (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (OrderedAddCommMonoid.toAddCommMonoid.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2)))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4))] {f : E -> Ξ²}, (Antitone.{u3, u2} E Ξ² (PartialOrder.toPreorder.{u3} E (OrderedAddCommMonoid.toPartialOrder.{u3} E (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u3} E _inst_2))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² _inst_3)) f) -> (QuasilinearOn.{u1, u3, u2} π E Ξ² _inst_1 (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_3 (SMulZeroClass.toSMul.{u1, u3} π E (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (SMulWithZero.toSMulZeroClass.{u1, u3} π E (MonoidWithZero.toZero.{u1} π (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1))) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u3} π E (Semiring.toMonoidWithZero.{u1} π (OrderedSemiring.toSemiring.{u1} π _inst_1)) (AddMonoid.toZero.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2))) (Module.toMulActionWithZero.{u1, u3} π E (OrderedSemiring.toSemiring.{u1} π _inst_1) (LinearOrderedAddCommMonoid.toAddCommMonoid.{u3} E _inst_2) _inst_4)))) (Set.univ.{u3} E) f)
+Case conversion may be inaccurate. Consider using '#align antitone.quasilinear_on Antitone.quasilinearOnβ'. -/
theorem Antitone.quasilinearOn (hf : Antitone f) : QuasilinearOn π univ f :=
β¨hf.QuasiconvexOn, hf.QuasiconcaveOnβ©
#align antitone.quasilinear_on Antitone.quasilinearOn
@@ -257,6 +431,12 @@ section LinearOrderedField
variable [LinearOrderedField π] [LinearOrderedAddCommMonoid Ξ²] {s : Set π} {f : π β Ξ²}
+/- warning: quasilinear_on.monotone_on_or_antitone_on -> QuasilinearOn.monotoneOn_or_antitoneOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {Ξ² : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} Ξ²] {s : Set.{u1} π} {f : π -> Ξ²}, (QuasilinearOn.{u1, u1, u2} π π Ξ² (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)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) -> (Or (MonotoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s) (AntitoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s))
+but is expected to have type
+ forall {π : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : LinearOrderedAddCommMonoid.{u1} Ξ²] {s : Set.{u2} π} {f : π -> Ξ²}, (QuasilinearOn.{u2, u2, u1} π π Ξ² (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s f) -> (Or (MonotoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s) (AntitoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s))
+Case conversion may be inaccurate. Consider using '#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOnβ'. -/
theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
MonotoneOn f s β¨ AntitoneOn f s :=
by
@@ -265,6 +445,12 @@ theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
refine' β¨((hf.2 _).segment_subset _ _ h).2, ((hf.1 _).segment_subset _ _ h).2β© <;> simp [*]
#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOn
+/- warning: quasilinear_on_iff_monotone_on_or_antitone_on -> quasilinearOn_iff_monotoneOn_or_antitoneOn is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} {Ξ² : Type.{u2}} [_inst_1 : LinearOrderedField.{u1} π] [_inst_2 : LinearOrderedAddCommMonoid.{u2} Ξ²] {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) -> (Iff (QuasilinearOn.{u1, u1, u2} π π Ξ² (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)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2) (Mul.toSMul.{u1} π (Distrib.toHasMul.{u1} π (Ring.toDistrib.{u1} π (DivisionRing.toRing.{u1} π (Field.toDivisionRing.{u1} π (LinearOrderedField.toField.{u1} π _inst_1)))))) s f) (Or (MonotoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s) (AntitoneOn.{u1, u2} π Ξ² (PartialOrder.toPreorder.{u1} π (OrderedAddCommGroup.toPartialOrder.{u1} π (StrictOrderedRing.toOrderedAddCommGroup.{u1} π (LinearOrderedRing.toStrictOrderedRing.{u1} π (LinearOrderedCommRing.toLinearOrderedRing.{u1} π (LinearOrderedField.toLinearOrderedCommRing.{u1} π _inst_1)))))) (PartialOrder.toPreorder.{u2} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u2} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} Ξ² _inst_2))) f s)))
+but is expected to have type
+ forall {π : Type.{u2}} {Ξ² : Type.{u1}} [_inst_1 : LinearOrderedField.{u2} π] [_inst_2 : LinearOrderedAddCommMonoid.{u1} Ξ²] {s : Set.{u2} π} {f : π -> Ξ²}, (Convex.{u2, u2} π π (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s) -> (Iff (QuasilinearOn.{u2, u2, u1} π π Ξ² (OrderedCommSemiring.toOrderedSemiring.{u2} π (StrictOrderedCommSemiring.toOrderedCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} π (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2) (Algebra.toSMul.{u2, u2} π π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))) (StrictOrderedSemiring.toSemiring.{u2} π (LinearOrderedSemiring.toStrictOrderedSemiring.{u2} π (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1))))) (Algebra.id.{u2} π (StrictOrderedCommSemiring.toCommSemiring.{u2} π (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u2} π (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u2} π (LinearOrderedField.toLinearOrderedSemifield.{u2} π _inst_1)))))) s f) (Or (MonotoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s) (AntitoneOn.{u2, u1} π Ξ² (PartialOrder.toPreorder.{u2} π (StrictOrderedRing.toPartialOrder.{u2} π (LinearOrderedRing.toStrictOrderedRing.{u2} π (LinearOrderedCommRing.toLinearOrderedRing.{u2} π (LinearOrderedField.toLinearOrderedCommRing.{u2} π _inst_1))))) (PartialOrder.toPreorder.{u1} Ξ² (OrderedAddCommMonoid.toPartialOrder.{u1} Ξ² (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u1} Ξ² _inst_2))) f s)))
+Case conversion may be inaccurate. Consider using '#align quasilinear_on_iff_monotone_on_or_antitone_on quasilinearOn_iff_monotoneOn_or_antitoneOnβ'. -/
theorem quasilinearOn_iff_monotoneOn_or_antitoneOn (hs : Convex π s) :
QuasilinearOn π s f β MonotoneOn f s β¨ AntitoneOn f s :=
β¨fun h => h.monotoneOn_or_antitoneOn, fun h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -37,13 +37,13 @@ section OrderedSemiring
variable [OrderedSemiring π]
-section AddCommMonoid
+section AddCommMonoid_E
variable [AddCommMonoid E] [AddCommMonoid F]
-section OrderedAddCommMonoid
+section LE_Ξ²
-variable (π) [OrderedAddCommMonoid Ξ²] [SMul π E] (s : Set E) (f : E β Ξ²)
+variable (π) [LE Ξ²] [SMul π E] (s : Set E) (f : E β Ξ²)
/-- A function is quasiconvex if all its sublevels are convex.
This means that, for all `r`, `{x β s | f x β€ r}` is `π`-convex. -/
@@ -97,28 +97,30 @@ theorem QuasiconcaveOn.convex [IsDirected Ξ² (Β· β₯ Β·)] (hf : QuasiconcaveOn
hf.dual.convex
#align quasiconcave_on.convex QuasiconcaveOn.convex
-end OrderedAddCommMonoid
+end LE_Ξ²
-section LinearOrderedAddCommMonoid
-
-variable [LinearOrderedAddCommMonoid Ξ²]
-
-section SMul
+section Semilattice_Ξ²
variable [SMul π E] {s : Set E} {f g : E β Ξ²}
-theorem QuasiconvexOn.sup (hf : QuasiconvexOn π s f) (hg : QuasiconvexOn π s g) :
- QuasiconvexOn π s (f β g) := by
+theorem QuasiconvexOn.sup [SemilatticeSup Ξ²] (hf : QuasiconvexOn π s f)
+ (hg : QuasiconvexOn π s g) : QuasiconvexOn π s (f β g) := by
intro r
simp_rw [Pi.sup_def, sup_le_iff, Set.sep_and]
exact (hf r).inter (hg r)
#align quasiconvex_on.sup QuasiconvexOn.sup
-theorem QuasiconcaveOn.inf (hf : QuasiconcaveOn π s f) (hg : QuasiconcaveOn π s g) :
- QuasiconcaveOn π s (f β g) :=
+theorem QuasiconcaveOn.inf [SemilatticeInf Ξ²] (hf : QuasiconcaveOn π s f)
+ (hg : QuasiconcaveOn π s g) : QuasiconcaveOn π s (f β g) :=
hf.dual.sup hg
#align quasiconcave_on.inf QuasiconcaveOn.inf
+end Semilattice_Ξ²
+
+section LinearOrder_Ξ²
+
+variable [LinearOrder Ξ²] [SMul π E] {s : Set E} {f g : E β Ξ²}
+
theorem quasiconvexOn_iff_le_max : QuasiconvexOn π s f β Convex π s β§ β β¦xβ¦, x β s β β β¦yβ¦,
y β s β β β¦a b : πβ¦, 0 β€ a β 0 β€ b β a + b = 1 β f (a β’ x + b β’ y) β€ max (f x) (f y) :=
β¨fun hf =>
@@ -153,11 +155,12 @@ theorem QuasiconcaveOn.convex_gt (hf : QuasiconcaveOn π s f) (r : Ξ²) :
hf.dual.convex_lt r
#align quasiconcave_on.convex_gt QuasiconcaveOn.convex_gt
-end SMul
+end LinearOrder_Ξ²
-section OrderedSMul
+section OrderedSMul_Ξ²
-variable [SMul π E] [Module π Ξ²] [OrderedSMul π Ξ²] {s : Set E} {f : E β Ξ²}
+variable [OrderedAddCommMonoid Ξ²] [Module π E] [Module π Ξ²] [OrderedSMul π Ξ²]
+ {s : Set E} {f : E β Ξ²}
theorem ConvexOn.quasiconvexOn (hf : ConvexOn π s f) : QuasiconvexOn π s f :=
hf.convex_le
@@ -167,13 +170,11 @@ theorem ConcaveOn.quasiconcaveOn (hf : ConcaveOn π s f) : QuasiconcaveOn π
hf.convex_ge
#align concave_on.quasiconcave_on ConcaveOn.quasiconcaveOn
-end OrderedSMul
-
-end LinearOrderedAddCommMonoid
+end OrderedSMul_Ξ²
-end AddCommMonoid
+end AddCommMonoid_E
-section LinearOrderedAddCommMonoid
+section LinearOrderedAddCommMonoid_E
variable [LinearOrderedAddCommMonoid E] [OrderedAddCommMonoid Ξ²] [Module π E] [OrderedSMul π E]
{s : Set E} {f : E β Ξ²}
@@ -226,23 +227,23 @@ theorem Antitone.quasilinearOn (hf : Antitone f) : QuasilinearOn π univ f :=
β¨hf.quasiconvexOn, hf.quasiconcaveOnβ©
#align antitone.quasilinear_on Antitone.quasilinearOn
-end LinearOrderedAddCommMonoid
+end LinearOrderedAddCommMonoid_E
end OrderedSemiring
section LinearOrderedField
-variable [LinearOrderedField π] [LinearOrderedAddCommMonoid Ξ²] {s : Set π} {f : π β Ξ²}
+variable [LinearOrderedField π] {s : Set π} {f : π β Ξ²}
-theorem QuasilinearOn.monotoneOn_or_antitoneOn (hf : QuasilinearOn π s f) :
+theorem QuasilinearOn.monotoneOn_or_antitoneOn [LinearOrder Ξ²] (hf : QuasilinearOn π s f) :
MonotoneOn f s β¨ AntitoneOn f s := by
simp_rw [monotoneOn_or_antitoneOn_iff_uIcc, β segment_eq_uIcc]
rintro a ha b hb c _ h
refine' β¨((hf.2 _).segment_subset _ _ h).2, ((hf.1 _).segment_subset _ _ h).2β© <;> simp [*]
#align quasilinear_on.monotone_on_or_antitone_on QuasilinearOn.monotoneOn_or_antitoneOn
-theorem quasilinearOn_iff_monotoneOn_or_antitoneOn (hs : Convex π s) :
- QuasilinearOn π s f β MonotoneOn f s β¨ AntitoneOn f s :=
+theorem quasilinearOn_iff_monotoneOn_or_antitoneOn [LinearOrderedAddCommMonoid Ξ²]
+ (hs : Convex π s) : QuasilinearOn π s f β MonotoneOn f s β¨ AntitoneOn f s :=
β¨fun h => h.monotoneOn_or_antitoneOn, fun h =>
h.elim (fun h => h.quasilinearOn hs) fun h => h.quasilinearOn hsβ©
#align quasilinear_on_iff_monotone_on_or_antitone_on quasilinearOn_iff_monotoneOn_or_antitoneOn
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -31,7 +31,7 @@ quasiconcavity, and monotonicity implies quasilinearity.
open Function OrderDual Set
-variable {π E F Ξ² : Type _}
+variable {π E F Ξ² : Type*}
section OrderedSemiring
@@ -2,14 +2,11 @@
Copyright (c) 2021 YaΓ«l Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: YaΓ«l Dillies
-
-! This file was ported from Lean 3 source module analysis.convex.quasiconvex
-! leanprover-community/mathlib commit 9003f28797c0664a49e4179487267c494477d853
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Convex.Function
+#align_import analysis.convex.quasiconvex from "leanprover-community/mathlib"@"9003f28797c0664a49e4179487267c494477d853"
+
/-!
# Quasiconvex and quasiconcave functions
The unported dependencies are