Zulip Chat Archive

Stream: mathlib4

Topic: ContinuousMultilinearMap curry/uncurry


A. (Aug 02 2024 at 20:01):

Hi! It seems to me that the first two are currying but the third is uncurrying. Any thoughts?

import Mathlib.Analysis.NormedSpace.Multilinear.Curry

variable {n : } {𝕜 : Type*} [NontriviallyNormedField 𝕜]
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕜 E]
variable {G : Type*} [NormedAddCommGroup G] [NormedSpace 𝕜 G]
variable {G' : Type*} [NormedAddCommGroup G'] [NormedSpace 𝕜 G']

#check (continuousMultilinearCurryFin0 𝕜 G G' : (G [×0]L[𝕜] G') L[𝕜] G')

#check (continuousMultilinearCurryFin1 𝕜 G G' : (G [×1]L[𝕜] G') L[𝕜] (G L[𝕜] G'))

#check (continuousMultilinearCurryLeftEquiv 𝕜 (fun _ : Fin (n + 1) => E) G :
  (E L[𝕜] E [×n]L[𝕜] G) L[𝕜] (E [×(n + 1)]L[𝕜] G))

A. (Aug 02 2024 at 20:30):

These are really LinearIsometryEquivs and in each case the name of the function given for the forward direction is a variant of uncurry. So, conversely, that function would seem to be correctly named in the third case only.

A. (Aug 02 2024 at 20:32):

@Sébastien Gouëzel

Eric Wieser (Aug 04 2024 at 01:14):

docs#continuousMultilinearCurryFin0,
docs#continuousMultilinearCurryFin1,
docs#continuousMultilinearCurryLeftEquiv

Eric Wieser (Aug 04 2024 at 01:16):

I think the names of those first two are correct, and it's the names of the functions used to implement them which are wrong

Eric Wieser (Aug 04 2024 at 01:16):

@loogle Equiv, "curry"

loogle (Aug 04 2024 at 01:16):

:search: Equiv.curry, Equiv.piCurry, and 24 more

A. (Aug 05 2024 at 21:46):

That’s what I said :grinning: I’m going to assume I can take that as agreement. Thanks Eric.

A. (Aug 05 2024 at 21:57):

#15530

A. (Aug 05 2024 at 22:01):

Something has gone wrong with the CI. What on earth does this mean?

build archive

packing Mathlib/Util/SynthesizeUsing.lean as f38776054285fbfc.ltar
uncaught exception: failure in curl #[--no-progress-meter, -H, x-ms-blob-type: BlockBlob, -H, If-None-Match: *, --retry, 5, -X, PUT, --parallel, -K, /home/lean/.cache/mathlib/curl.cfg]:
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

Attempting to upload 4945 file(s)
Error: Process completed with exit code 1.

Kevin Buzzard (Aug 05 2024 at 22:20):

I would just try running CI again

Yury G. Kudryashov (Apr 29 2025 at 21:50):

BTW, we have both curry0/uncurry0 and constOfIsEmpty, similarly for continuousMultilinearCurryFin1 and ofSubsingleton. Should we deduplicate here?

Yury G. Kudryashov (Apr 29 2025 at 21:52):

Also, I'm going to introduce curryMid based on Fin.insertNth/Fin.succAbove, because I need it for alternating forms.

Yury G. Kudryashov (May 03 2025 at 00:59):

CC: @Sébastien Gouëzel

Sébastien Gouëzel (May 03 2025 at 06:39):

Yes, deduplicating is definitely a good idea, and curryMid also!

Yury G. Kudryashov (May 03 2025 at 06:40):

Which definitions do you prefer to stay?

Sébastien Gouëzel (May 03 2025 at 07:22):

I don't really care. Maybe keep all names with curry in them for coherence?

Yury G. Kudryashov (May 03 2025 at 07:45):

Formally, constOfIsEmpty and ofSubsingleton are more general.

Yury G. Kudryashov (May 03 2025 at 07:45):

/me is going offline for at leat 8 hrs.

Sébastien Gouëzel (May 03 2025 at 08:08):

Then only keep the more general ones as definitions, and add aliases with curry in the name for ease of discoverability?


Last updated: Dec 20 2025 at 21:32 UTC