Finite types #
This file defines a typeclass to state that a type is finite.
Main declarations #
Fintype α: Typeclass saying that a type is finite. It takes as fields aFinsetand a proof that all terms of typeαare in it.Finset.univ: The finset of all elements of a fintype.
See Data.Fintype.Basic for elementary results,
Data.Fintype.Card for the cardinality of a fintype,
the equivalence with Fin (Fintype.card α), and pigeonhole principles.
Instances #
Instances for Fintype for
{x // p x}are in this file asFintype.subtypeOption αare inData.Fintype.Optionα × βare inData.Fintype.Prodα ⊕ βare inData.Fintype.SumΣ (a : α), β aare inData.Fintype.Sigma
These files also contain appropriate Infinite instances for these types.
Infinite instances for ℕ, ℤ, Multiset α, and List α are in Data.Fintype.Lattice.
Preparatory lemmas #
@[instance_reducible]
instance List.instDecidableInjOnCoeFinsetOfDecidableEq {α : Type u_1} {β : Type u_2} {f : α → β} {s : Finset α} [DecidableEq β] :
@[instance_reducible]
instance List.instDecidableBijOnCoeFinsetOfDecidableEq {α : Type u_1} {β : Type u_2} {f : α → β} {s : Finset α} {t' : Finset β} [DecidableEq β] :
theorem Finset.mem_filter_univ {α : Type u_1} [Fintype α] {p : α → Prop} [DecidablePred p] (x : α) :
Elaborate set builder notation for Finset.
{x | p x}is elaborated asFinset.filter (fun x ↦ p x) Finset.univif the expected type isFinset ?α.{x : α | p x}is elaborated asFinset.filter (fun x : α ↦ p x) Finset.univif the expected type isFinset ?α.{x ∉ s | p x}is elaborated asFinset.filter (fun x ↦ p x) sᶜif either the expected type isFinset ?αor the expected type is notSet ?αandshas expected typeFinset ?α.{x ≠ a | p x}is elaborated asFinset.filter (fun x ↦ p x) {a}ᶜif the expected type isFinset ?α.
See also
Data.Set.Defsfor theSetbuilder notation elaborator that this elaborator partly overrides.Data.Finset.Basicfor theFinsetbuilder notation elaborator partly overriding this one for syntax of the form{x ∈ s | p x}.Data.Fintype.Basicfor theFinsetbuilder notation elaborator handling syntax of the form{x | p x},{x : α | p x},{x ∉ s | p x},{x ≠ a | p x}.Order.LocallyFinite.Basicfor theFinsetbuilder notation elaborator handling syntax of the form{x ≤ a | p x},{x ≥ a | p x},{x < a | p x},{x > a | p x}.
Instances For
Delaborator for Finset.filter. The pp.funBinderTypes option controls whether
to show the domain type when the filter is over Finset.univ.
Instances For
@[instance_reducible]
instance Fintype.decidablePiFintype {α : Type u_1} {β : α → Type u_3} [(a : α) → DecidableEq (β a)] [Fintype α] :
DecidableEq ((a : α) → β a)
@[instance_reducible]
instance Fintype.decidableForallFintype {α : Type u_1} {p : α → Prop} [DecidablePred p] [Fintype α] :
Decidable (∀ (a : α), p a)
@[instance_reducible]
instance Fintype.instDecidableLEForall {α : Type u_1} {β : α → Type u_3} [(a : α) → LE (β a)] [(a : α) → DecidableLE (β a)] [Fintype α] :
DecidableLE ((a : α) → β a)
@[instance_reducible]
instance Fintype.decidableMemRangeFintype {α : Type u_1} {β : Type u_2} [Fintype α] [DecidableEq β] (f : α → β) :
DecidablePred fun (x : β) => x ∈ Set.range f
@[instance_reducible]
instance Fintype.decidableSubsingleton {α : Type u_1} [Fintype α] [DecidableEq α] {s : Set α} [DecidablePred fun (x : α) => x ∈ s] :
@[instance_reducible]
instance Fintype.decidableEqEquivFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype α] :
DecidableEq (α ≃ β)
@[instance_reducible]
instance Fintype.decidableEqEmbeddingFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype α] :
DecidableEq (α ↪ β)
theorem Fintype.nodup_map_univ_iff_injective {α : Type u_1} {β : Type u_2} [Fintype α] {f : α → β} :
@[instance_reducible]
instance Fintype.decidableInjectiveFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype α] :
@[instance_reducible]
instance Fintype.decidableSurjectiveFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype α] [Fintype β] :
@[instance_reducible]
instance Fintype.decidableBijectiveFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype α] [Fintype β] :
@[instance_reducible]
instance Fintype.decidableRightInverseFintype {α : Type u_1} {β : Type u_2} [DecidableEq α] [Fintype α] (f : α → β) (g : β → α) :
@[instance_reducible]
instance Fintype.decidableLeftInverseFintype {α : Type u_1} {β : Type u_2} [DecidableEq β] [Fintype β] (f : α → β) (g : β → α) :
@[instance_reducible]
instance Fintype.instDecidableRelWCovByOfDecidableLE {α : Type u_1} [Fintype α] [Preorder α] [DecidableLE α] :
@[instance_reducible]
instance Fintype.instDecidableRelCovByOfDecidableLT {α : Type u_1} [Fintype α] [LT α] [DecidableLT α] :