Reference · Finite types, distributions and Markov chains
rainbow.math.finite.set
Constructive finite-set theorems over native List-cover proof data.
list/product-map
list/product-map.{u, v, w} :
(A : Type u) (B : Type v) (C : Type w) (mapping : A → B → C)
(left-enumeration : List A) (right-enumeration : List B)
→ List CList = data/List
list/membership-append-left
list/membership-append-left.{u} :
(A : Type u) (left right : List A) (value : A) (member : list/membership A left value)
→ list/membership A (list/append A left right) valueList = data/List
list/membership-append-right
list/membership-append-right.{u} :
(A : Type u) (left right : List A) (value : A)
(member : list/membership A right value)
→ list/membership A (list/append A left right) valueList = data/List
list/cover-cons
list/cover-cons.{u} :
(A : Type u) (selected : A) (source : set/Set A) (enumeration : List A)
(source-cover : ∀ (value : A), ∀ (member : source value), list/membership A enumeration value)
(value : A) (member : set/insert A selected source value)
→ list/membership A (data/cons A selected enumeration) valueList = data/List
list/cover-append
list/cover-append.{u} :
(A : Type u) (left-source right-source : set/Set A)
(left-enumeration right-enumeration : List A)
(left-cover : ∀ (value : A), ∀ (member : left-source value), list/membership A left-enumeration value)
(right-cover : ∀ (value : A), ∀ (member : right-source value), list/membership A right-enumeration value)
(value : A) (member : set/union A left-source right-source value)
→ list/membership A (append) value
where append := list/append A left-enumeration right-enumerationList = data/List
set/finite-insert-preserved
set/finite-insert-preserved.{u} :
(A : Type u) (selected : A) (source : set/Set A) (source-finite : set/finite A source)
→ set/finite A (set/insert A selected source)set/finite-union-preserved
set/finite-union-preserved.{u} :
(A : Type u) (left right : set/Set A) (left-finite : set/finite A left)
(right-finite : set/finite A right)
→ set/finite A (set/union A left right)set/finite-subset-preserved
set/finite-subset-preserved.{u} :
(A : Type u) (small large : set/Set A) (inclusion : set/subset A small large)
(large-finite : set/finite A large)
→ set/finite A smallset/finite-insert-equivalence
set/finite-insert-equivalence.{u} :
(A : Type u) (source : set/Set A) (selected : A)
→ proposition/conjunction (finite → set/finite A source) (set/finite A source → finite)
where finite := set/finite A (set/insert A selected source)set/finite-union-equivalence
set/finite-union-equivalence.{u} :
(A : Type u) (left right : set/Set A)
→ proposition/conjunction (set/finite A (set/union A left right) → conjunction) (conjunction → set/finite A (set/union A left right))
where conjunction := proposition/conjunction (set/finite A left) (set/finite A right)list/membership-map
list/membership-map.{u, v} :
(A : Type u) (B : Type v) (mapping : A → B) (enumeration : List A) (value : A)
(member : list/membership A enumeration value)
→ list/membership B (list/map A B mapping enumeration) (mapping value)List = data/List
list/membership-product-map
list/membership-product-map.{u, v, w} :
(A : Type u) (B : Type v) (C : Type w) (mapping : A → B → C)
(left-enumeration : List A) (right-enumeration : List B) (left-value : A)
(left-member : list/membership A left-enumeration left-value) (right-value : B)
(right-member : list/membership B right-enumeration right-value)
→ list/membership C (map) (mapping left-value right-value)
where map := list/product-map A B C mapping left-enumeration right-enumerationList = data/List
list/cover-image
list/cover-image.{u, v} :
(A : Type u) (B : Type v) (mapping : A → B) (source : set/Set A)
(enumeration : List A)
(source-cover : ∀ (value : A), ∀ (member : source value), list/membership A enumeration value)
(value : B) (member : set/image A B mapping source value)
→ list/membership B (list/map A B mapping enumeration) valueList = data/List
set/finite-image-preserved
set/finite-image-preserved.{u, v} :
(A : Type u) (B : Type v) (source : set/Set A) (mapping : A → B)
(source-finite : set/finite A source)
→ set/finite B (set/image A B mapping source)product/eta
product/eta.{u, v} :
(A : Type u) (B : Type v) (value : data/Product A B)
→ (fun value₁ => data/pair A B (product/first A B value₁) (product/second A B value₁) = value₁) value= = equality/Eq
list/cover-image2
list/cover-image2.{u, v, w} :
(A : Type u) (B : Type v) (C : Type w) (mapping : A → B → C) (left : set/Set A)
(right : set/Set B) (left-enumeration : List A) (right-enumeration : List B)
(left-cover : ∀ (value : A), ∀ (member : left value), list/membership A left-enumeration value)
(right-cover : ∀ (value : B), ∀ (member : right value), list/membership B right-enumeration value)
(value : C) (member : set/image2 A B C mapping left right value)
→ list/membership C (map) value
where map := list/product-map A B C mapping left-enumeration right-enumerationList = data/List
set/finite-image2-preserved
set/finite-image2-preserved.{u, v, w} :
(A : Type u) (B : Type v) (C : Type w) (left : set/Set A) (right : set/Set B)
(mapping : A → B → C) (left-finite : set/finite A left)
(right-finite : set/finite B right)
→ set/finite C (set/image2 A B C mapping left right)list/cover-product
list/cover-product.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(left-enumeration : List A) (right-enumeration : List B)
(left-cover : ∀ (value : A), ∀ (member : left value), list/membership A left-enumeration value)
(right-cover : ∀ (value : B), ∀ (member : right value), list/membership B right-enumeration value)
(value : data/Product A B) (member : set/product A B left right value)
→ list/membership (data/Product A B) (map) value
where map := list/product-map A B (data/Product A B) (fun left₁ => fun right₁ => data/pair A B left₁ right₁) left-enumeration right-enumerationList = data/List
set/finite-product-preserved
set/finite-product-preserved.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(left-finite : set/finite A left) (right-finite : set/finite B right)
→ set/finite (data/Product A B) (set/product A B left right)set/finite-of-surjection
set/finite-of-surjection.{u, v} :
(A : Type u) (B : Type v) (source : set/Set A) (target : set/Set B) (mapping : A → B)
(surjection : set/surjective-on A B mapping source target)
(source-finite : set/finite A source)
→ set/finite B targetset/infinite-mono
set/infinite-mono.{u} :
(A : Type u) (small large : set/Set A) (inclusion : set/subset A small large)
(small-infinite : set/infinite A small)
→ set/infinite A largeset/infinite-of-image
set/infinite-of-image.{u, v} :
(A : Type u) (B : Type v) (mapping : A → B) (source : set/Set A)
(image-infinite : set/infinite B (set/image A B mapping source))
→ set/infinite A sourceset/finite-seq-preserved
set/finite-seq-preserved.{u, v} :
(A : Type u) (B : Type v) (mapping-set : set/Set (A → B)) (input-set : set/Set A)
(mappings-finite : set/finite (A → B) mapping-set)
(inputs-finite : set/finite A input-set)
→ set/finite B (set/seq A B mapping-set input-set)set/finite-of-preimage-under-surjection
set/finite-of-preimage-under-surjection.{u, v} :
(A : Type u) (B : Type v) (mapping : A → B) (target : set/Set B)
(preimage-finite : set/finite A (set/preimage A B mapping target))
(surjection : ∀ (target₁ : B), proposition/existence A (fun source => mapping source = target₁))
→ set/finite B target= = equality/Eq
set/finite-of-product-left
set/finite-of-product-left.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(product-finite : set/finite (data/Product A B) (set/product A B left right))
(right-nonempty : set/nonempty B right)
→ set/finite A leftset/finite-of-product-right
set/finite-of-product-right.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(product-finite : set/finite (data/Product A B) (set/product A B left right))
(left-nonempty : set/nonempty A left)
→ set/finite B rightset/infinite-product-left
set/infinite-product-left.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(left-infinite : set/infinite A left) (right-nonempty : set/nonempty B right)
→ set/infinite (data/Product A B) (set/product A B left right)set/infinite-product-right
set/infinite-product-right.{u, v} :
(A : Type u) (B : Type v) (left : set/Set A) (right : set/Set B)
(right-infinite : set/infinite B right) (left-nonempty : set/nonempty A left)
→ set/infinite (data/Product A B) (set/product A B left right)