Cardinality of finite types #
The cardinality of a finite type α is given by Nat.card α. This function has
the "junk value" of 0 for infinite types, but to ensure the function has valid
output, one just needs to know that it's possible to produce a Finite instance
for the type. (Note: we could have defined a Finite.card that required you to
supply a Finite instance, but (a) the function would be noncomputable anyway
so there is no need to supply the instance and (b) the function would have a more
complicated dependent type that easily leads to "motive not type correct" errors.)
Implementation notes #
Theorems about Nat.card are sometimes incidentally true for both finite and infinite
types. If removing a finiteness constraint results in no loss in legibility, we remove
it. We generally put such theorems into the SetTheory.Cardinal.Finite module.
Similar to Finite.equivFin but with control over the term used for the cardinality.
Equations
Instances For
Alias of Nat.card_le_card_of_injective.
Alias of Nat.card_le_card_of_surjective.
If f is injective, then Nat.card α ≤ Nat.card β. We must also assume
Nat.card β = 0 → Nat.card α = 0 since Nat.card is defined to be 0 for infinite types.
If f is surjective, then Nat.card β ≤ Nat.card α. We must also assume
Nat.card α = 0 → Nat.card β = 0 since Nat.card is defined to be 0 for infinite types.
NB: Nat.card is defined to be 0 for infinite types.