Zulip Chat Archive

Stream: mathlib4

Topic: Monotonicity of finprod


Michael Stoll (Dec 19 2024 at 13:30):

import Mathlib

open NNReal

-- Mathlib has this:
example {α} {s : Finset α} (f g : α  0) (h : f  g) :
     a  s, f a   a  s, g a :=
  Finset.prod_le_prod' fun i _  h i

-- but apparently not this:
example {α} {f g : α  0} (hf : f.mulSupport.Finite) (hg : g.mulSupport.Finite) (h : f  g) :
    ∏ᶠ a, f a  ∏ᶠ a, g a := by
  -- `exact?` fails; `apply?` and `rw?` do not seem to proudce something helpful
  have : (f.mulSupport  g.mulSupport).Finite := Set.Finite.union hf hg
  have : Fintype (f.mulSupport  g.mulSupport) := this.fintype
  let s := (f.mulSupport  g.mulSupport).toFinset
  have hf₁ : f.mulSupport  s := by
    simp only [Set.coe_toFinset, Set.subset_union_left, s]
  have hg₁ : g.mulSupport  s := by
    simp only [Set.coe_toFinset, Set.subset_union_right, s]
  rw [finprod_eq_finset_prod_of_mulSupport_subset f hf₁, finprod_eq_finset_prod_of_mulSupport_subset g hg₁]
  exact Finset.prod_le_prod' fun i a => h i
  • Can this be done more elegantly?
  • Is this an API gap?

Last updated: May 02 2025 at 03:31 UTC