Zulip Chat Archive
Stream: Is there code for X?
Topic: Finite types
Ben (Feb 25 2022 at 11:36):
How do finite types work in lean 3? #check (100: fin 8)
is being passed as valid which is unexpected?
Mario Carneiro (Feb 25 2022 at 11:37):
fin 8
is the set of natural numbers less than 8, but 100
doesn't mean what you think there
Mario Carneiro (Feb 25 2022 at 11:37):
it actually means 100 % 8 = 4
Mario Carneiro (Feb 25 2022 at 11:38):
this is because numeral desugaring is defined generically for anything with a 0,1,+, and fin n
(for n>0
) has these operations defined via modulo arithmetic
Mario Carneiro (Feb 25 2022 at 11:40):
If you want the natural number 100, you should write #check (⟨100, _⟩ : fin 8)
where the _
is a proof obligation of 100 < 8
that of course you can't fill
Ben (Feb 25 2022 at 11:48):
Interesting, I did not know it did that to the number in that way. That makes sense now :thumbs_up:
Last updated: Dec 20 2023 at 11:08 UTC