Fintype instances for pi types #
Given for all a : α
a finset t a
of δ a
, then one can define the
finset Fintype.piFinset t
of all functions taking values in t a
for all a
. This is the
analogue of Finset.pi
where the base finset is univ
(but formally they are not the same, as
there is an additional condition i ∈ Finset.univ
in the Finset.pi
definition).
Equations
- Fintype.piFinset t = Finset.map { toFun := fun (f : (a : α) → a ∈ Finset.univ → δ a) (a : α) => f a ⋯, inj' := ⋯ } (Finset.univ.pi t)
Instances For
Alias of the reverse direction of Fintype.piFinset_nonempty
.
pi #
A dependent product of fintypes, indexed by a fintype, is a fintype.
Equations
- Pi.fintype = { elems := Fintype.piFinset fun (x : α) => Finset.univ, complete := ⋯ }
Equations
- Function.Embedding.fintype = Fintype.ofEquiv { f : α → β // Function.Injective f } (Equiv.subtypeInjectiveEquivEmbedding α β)
Equations
- One or more equations did not get rendered due to their size.
Diagonal #
Constructors for Set.Finite
#
Every constructor here should have a corresponding Fintype
instance in the previous section
(or in the Fintype
module).
The implementation of these constructors ideally should be no more than Set.toFinite
,
after possibly setting up some Fintype
and classical Decidable
instances.
Finite product of finite sets is finite. Note this is a variant of Set.Finite.pi
without the
extra i ∈ univ
binder.