Zulip Chat Archive

Stream: new members

Topic: mul_const for StrictConcaveOn?


Adomas Baliuka (Jan 07 2024 at 18:30):

I couldn't find this in Mathlib. It should be there, right? (My proof is ugly, of course. Happy for suggestions how to improve)

import Mathlib

lemma StrictConcaveOn.mul_const {c : } (cpos : 0 < c) (f :   ) :
    StrictConcaveOn  S f  StrictConcaveOn  S (fun x  c * f x) := by
    rintro hconv, h
    refine' hconv, fun x hx y hy hxy a b ha hb hab => _
    simp
    have := h hx hy hxy ha hb hab
    simp at this
    convert (mul_lt_mul_left cpos).mpr this using 1
    ring

Loogle for StrictConcaveOn _ _ _, "mul" gives nothing relevant.

Eric Rodriguez (Jan 07 2024 at 19:45):

I'd PR this and similar things for other sides :)

Adomas Baliuka (Jan 07 2024 at 19:46):

What do you mean by "sides"?

Ruben Van de Velde (Jan 07 2024 at 20:01):

Shorter:

import Mathlib

lemma StrictConcaveOn.mul_const {c : } (cpos : 0 < c) (f :   ) (h : StrictConcaveOn  S f) :
    StrictConcaveOn  S (fun x  c * f x) := by
  refine' h.1, fun x hx y hy hxy a b ha hb hab => _
  simp_rw [ mul_smul_comm,  mul_add, mul_lt_mul_left cpos]
  exact h.2 hx hy hxy ha hb hab

Eric Wieser (Jan 07 2024 at 20:15):

Is this true more generally for smul?

Yaël Dillies (Jan 07 2024 at 20:19):

Yep. I have a better proof. PR incoming.

Adomas Baliuka (Jan 07 2024 at 20:36):

Maybe also add strictConvexOn_id and strictConcaveOn_id (for Real -> Real functions)?

Yaël Dillies (Jan 07 2024 at 20:41):

id is certainly not strictly convex!

Adomas Baliuka (Jan 07 2024 at 20:42):

Right, sorry... it's not strict of course, and the "non-strict" versions seem to be in Mathlib already...


Last updated: May 02 2025 at 03:31 UTC