Zulip Chat Archive
Stream: new members
Topic: universe polymorphism in Expressions
Edward van de Meent (Jan 08 2025 at 12:28):
I was trying to write a command with the functionality suggested in #mathlib4 > All instances satisfied by a type , while keeping the metaprogramming book by the hand, when i realised that i can't find how/if the environment knows that a certain declaration has universe polymorphism... does the ConstantInfo somehow contain this information?
Marcus Rossel (Jan 08 2025 at 12:34):
I think if ConstantInfo.numLevelParams is 0, you shouldn't have any universe level parameters, so no universe polymorphism.
Edward van de Meent (Jan 08 2025 at 12:35):
aha!
Edward van de Meent (Jan 08 2025 at 12:36):
another relevant bit is docs#Lean.Level.param, i think
Marcus Rossel (Jan 08 2025 at 12:59):
Edward van de Meent said:
another relevant bit is docs#Lean.Level.param, i think
Yeah, I guess that depends on whether you're looking at declarations or Exprs. If you're looking at Exprs, you also need to consider docs#Lean.Level.mvar for polymorphism.
Edward van de Meent (Jan 08 2025 at 13:00):
i'd hope there are no level mvars in Environment.constants, tho
Edward van de Meent (Jan 08 2025 at 13:01):
or mvars at all
Edward van de Meent (Jan 08 2025 at 13:02):
since they're the ones that should have been checked by the kernel
Marcus Rossel (Jan 08 2025 at 13:07):
Based on this explanation of how elaboration of universe levels works, I believe that's correct.
Last updated: May 02 2025 at 03:31 UTC