Zulip Chat Archive

Stream: general

Topic: Can't tag a lemma with `fun_prop`


Etienne Marion (Oct 03 2025 at 11:45):

Hi! Why can't the following lemma be tagged with fun_prop?

import Mathlib

@[fun_prop, measurability]
lemma measurable_uncurry {ι κ X : Type*} [MeasurableSpace X] :
    Measurable (@Function.uncurry ι κ X) := by
  refine measurable_pi_lambda _ fun p  ?_
  simp only [Function.uncurry]
  fun_prop

Etienne Marion (Oct 03 2025 at 11:47):

It's weird because I can tag this one:

import Mathlib

@[fun_prop, measurability]
lemma measurable_uncurry {ι κ X : Type*} [MeasurableSpace X] :
    Measurable (@Function.uncurry ι κ X) := by
  refine measurable_pi_lambda _ fun p  ?_
  simp only [Function.uncurry]
  fun_prop

@[fun_prop, measurability]
lemma measurable_equivCurry_symm {ι κ X : Type*} [MeasurableSpace X] :
    Measurable (Equiv.curry ι κ X).symm := measurable_uncurry

but the two functions are actually the same!

Ruben Van de Velde (Oct 03 2025 at 12:48):

The error is "function in invalid form Function.uncurry"

Tomas Skrivan (Oct 04 2025 at 13:15):

Functions Function.comp/uncurry, id, HasUncurry.uncurry and considered reducible in fun_prop. Therefore your statement is effectively the same as writing Mesurable (fun f xy => f xy.1 xy.2) and fun_prop should infer this already from other rules.

Etienne Marion (Oct 04 2025 at 13:25):

Oh you're right, thanks! I had tried fun_prop for (Equiv.curry ι κ X).symm but I didn't do it for Function.uncurry for some reason.


Last updated: Dec 20 2025 at 21:32 UTC