Reference · Finite sets
rainbow.math.sets.finset.data
Computational finite sets: duplicate-free enumerations paired with proof data. The older `finset/Finset` is deliberately extensional and therefore cannot eliminate its propositional cover into executable data. This representation keeps the enumeration in Type, carries duplicate-freedom in Prop, and projects to the extensional representation without changing the kernel.
list/no-duplicates
list/no-duplicates.{u} :
(A : Type u) (x₁ : List A)
→ PropList = data/List
finset-data/Finset
finset-data/Finset.{u} :
(A : Type u)
→ Type ufinset-data/enumeration
finset-data/enumeration.{u} :
(A : Type u) (source : Finset A)
→ List AFinset = finset-data/FinsetList = data/List
finset-data/duplicate-free
finset-data/duplicate-free.{u} :
(A : Type u) (source : Finset A)
→ list/no-duplicates A (finset-data/enumeration A source)Finset = finset-data/Finset
finset-data/to-set
finset-data/to-set.{u} :
(A : Type u) (source : Finset A)
→ set/Set AFinset = finset-data/Finset
finset-data/to-extensional
finset-data/to-extensional.{u} :
(A : Type u) (source : Finset A)
→ finset/Finset AFinset = finset-data/Finset
finset-data/card
finset-data/card.{u} :
(A : Type u) (source : Finset A)
→ ℕFinset = finset-data/Finsetℕ = data/Nat
list/nat-sum
list/nat-sum : (x₁ : List ℕ) → ℕ
List = data/Listℕ = data/Nat
finset-data/sum-nat
finset-data/sum-nat : (x₁ : Finset ℕ) → ℕ
Finset = finset-data/Finsetℕ = data/Nat
finset-data/range
finset-data/range : (x₁ : ℕ) → Finset ℕ
Finset = finset-data/Finsetℕ = data/Nat
nat/member-range-below
nat/member-range-below : (upper value : ℕ) (member : list/membership ℕ (list/nat-range upper) value) → nat/strict-below value upper
ℕ = data/Nat
list/nat-range-no-duplicates
list/nat-range-no-duplicates : (upper : ℕ) → list/no-duplicates ℕ (list/nat-range upper)
ℕ = data/Nat
finset-data/enumeration-sound
finset-data/enumeration-sound.{u} :
(A : Type u) (source : Finset A) (value : A)
(member : list/membership A (finset-data/enumeration A source) value)
→ value ∈ sourceFinset = finset-data/Finset∈ = finset-data/to-set: membership in a finite set
finset-data/enumeration-complete
finset-data/enumeration-complete.{u} :
(A : Type u) (source : Finset A) (value : A)
(member : value ∈ source)
→ list/membership A (finset-data/enumeration A source) valueFinset = finset-data/Finset∈ = finset-data/to-set: membership in a finite set
finset-data/sum-nat-enumeration
finset-data/sum-nat-enumeration : (source : Finset ℕ) → finset-data/sum-nat source = list/nat-sum (finset-data/enumeration ℕ source)
= = equality/EqFinset = finset-data/Finsetℕ = data/Nat
finset-data/card-range
finset-data/card-range : (upper : ℕ) → finset-data/card ℕ (finset-data/range upper) = upper
= = equality/Eqℕ = data/Nat