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.
Alias of Fintype.filter_piFinset_of_notMem.
pi #
A dependent product of fintypes, indexed by a fintype, is a fintype.
Equations
- Pi.instFintype = { elems := Fintype.piFinset fun (x : α) => Finset.univ, complete := ⋯ }
There are finitely many embeddings between finite types.
This instance used to be computable (using DecidableEq arguments), but
it makes things a lot harder to work with here.
Equations
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.