Zulip Chat Archive
Stream: new members
Topic: Definition of set.finite
Marcus Rossel (May 29 2021 at 17:25):
Why is docs#set.finite defined as nonempty (fintype ...)
? Why is it important that the set is not empty?
Justus Springer (May 29 2021 at 17:34):
The nonempty
here refers to docs#nonempty, which is a predicate on types, not on sets. It means that there exists a term of type fintype ↥s
. Such a term consists of a finset
together with a proof that these exhaust all of s
(see docs#fintype).
Marcus Rossel (May 29 2021 at 17:57):
I'm not sure how the lifting from set
to types works, but since s.finite = nonempty (fintype ↥s)
I'm guessing that ↥s
lifts s
to the type level.
And I'm not sure if this is the part I don't understand, but I thought that this means that s = ∅
iff ↥s
is uninhabited.
Would this equivalence then also extend to fintype ↥s
?
That is, does it hold that for a finite set s
: s = ∅
iff ↥s
is uninhabited iff fintype ↥s
is uninhabited?
Justus Springer (May 29 2021 at 18:27):
Exactly, ↥s
is the coercion of s
to a type. Namely, ↥s
is the subtype {x // x ∈ s}
of all elements x
contained in s
(see docs#set.has_coe_to_sort).
Justus Springer (May 29 2021 at 18:29):
s=∅
iff ↥s
is uninhabited sounds good to me. I'm not sure about your second iff: fintype ↥s
is inhabited iff s
is finite, by definition. Therefore fintype ↥s
is uninhabited iff s
is infinite.
Last updated: Dec 20 2023 at 11:08 UTC