Zulip Chat Archive
Stream: general
Topic: concave Jensen
Stanislas Polu (Sep 23 2021 at 13:47):
I'm looking at docs#convex_on.map_sum_le and am wondering if we have a concave Jensen available? Or maybe a convenient way to go from one to the other?
Johan Commelin (Sep 23 2021 at 13:47):
@Yaël Dillies is working very hard on refactoring the convexity library. I think this will fall out of his refactor.
Stanislas Polu (Sep 23 2021 at 13:48):
Ah! Fascinating (and good news!). So in practice right now I'm stuck with the convex version right?
Yaël Dillies (Sep 23 2021 at 13:48):
Eheheh, that's what I'm doing at this very moment. Little preview for the curious.
/-- Convex **Jensen's inequality**, `finset.linear_combination` version. -/
lemma convex_on.map_linear_combination_le (hf : convex_on 𝕜 s f)
(h₀ : ∀ i ∈ t, 0 ≤ w i) (h₁ : ∑ i in t, w i = 1)
(hmem : ∀ i ∈ t, p i ∈ s) : f (t.linear_combination p w) ≤ t.linear_combination (f ∘ p) w :=
begin
have hmem' : ∀ i ∈ t, (p i, (f ∘ p) i) ∈ {p : E × β | p.1 ∈ s ∧ f p.1 ≤ p.2},
from λ i hi, ⟨hmem i hi, le_rfl⟩,
convert (hf.convex_epigraph.linear_combination_mem h₀ h₁ hmem').2;
simp only [linear_combination, function.comp, prod.smul_fst, prod.fst_sum,
prod.smul_snd, prod.snd_sum],
end
/-- Concave **Jensen's inequality**, `finset.linear_combination` version. -/
lemma concave_on.le_map_linear_combination (hf : concave_on 𝕜 s f)
(h₀ : ∀ i ∈ t, 0 ≤ w i) (h₁ : ∑ i in t, w i = 1)
(hmem : ∀ i ∈ t, p i ∈ s) : t.linear_combination (f ∘ p) w ≤ f (t.linear_combination p w) :=
@convex_on.map_linear_combination_le 𝕜 E (order_dual β) _ _ _ _ _ _ _ _ _ _ _ _ hf h₀ h₁ hmem
Yaël Dillies (Sep 23 2021 at 13:49):
I swear I didn't even scroll in VScode to pick that.
Stanislas Polu (Sep 23 2021 at 13:50):
@Yaël Dillies when do you expect this to land on master?
Stanislas Polu (Sep 23 2021 at 13:53):
oh wait going from one to the other is trivial, just use (-f) and multiply by -1 right.
Yaël Dillies (Sep 23 2021 at 13:53):
You can make do like that for now.
Stanislas Polu (Sep 23 2021 at 13:54):
:+1:
Yaël Dillies (Sep 23 2021 at 13:55):
Erhm... This depends on #9268 for linear_combination
to be under that form, and there's currently discussion so as to whether we even want linear_combination
. I was expecting #9268 to be merged quickly but the events took another turn, so I will probably open this PR tomorrow and arrange myself so that it can go through before #9268. So I'd say a week?
Stanislas Polu (Sep 23 2021 at 13:57):
This is fine, I think formalizing some proofs using the current version and a manual transformation for concave functions shouldn't be too hard to port to this new format :+1:
Stanislas Polu (Sep 23 2021 at 14:37):
@Yaël Dillies how does one go about proving that a function is convex? do we have proofs for the usual suspects (xlogx, -logx, x^a or -x^a, real.exp(a*x)) avaialble?
Yaël Dillies (Sep 23 2021 at 14:42):
Your heaven lies here: analysis.convex.specific_functions
. Many functions are still missing, though.
Stanislas Polu (Sep 23 2021 at 18:43):
Thanks!
Johan Commelin (Sep 30 2021 at 12:05):
@Stanislas Polu Btw, this was added in #9356 a couple of days ago
Stanislas Polu (Sep 30 2021 at 12:06):
@Johan Commelin Yes! Already using it !! :100:
Yaël Dillies (Sep 30 2021 at 12:06):
This is what I call short cycle production!
Last updated: Dec 20 2023 at 11:08 UTC