From 20fac9fee7e945ef25c8362a09da754cdcb26b72 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 10:25:56 -0700 Subject: [PATCH 01/24] Renames --- .../{constant-vectors.lagda.md => constant-tuples.lagda.md} | 0 ...nctoriality-vectors.lagda.md => functoriality-tuples.lagda.md} | 0 ...gs.lagda.md => scalar-multiplication-tuples-on-rings.lagda.md} | 0 ...ion-vectors.lagda.md => scalar-multiplication-tuples.lagda.md} | 0 ...tative-rings.lagda.md => tuples-on-commutative-rings.lagda.md} | 0 ...emirings.lagda.md => tuples-on-commutative-semirings.lagda.md} | 0 ...dean-domains.lagda.md => tuples-on-euclidean-domains.lagda.md} | 0 .../{vectors-on-rings.lagda.md => tuples-on-rings.lagda.md} | 0 ...vectors-on-semirings.lagda.md => tuples-on-semirings.lagda.md} | 0 src/linear-algebra/{vectors.lagda.md => tuples.lagda.md} | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename src/linear-algebra/{constant-vectors.lagda.md => constant-tuples.lagda.md} (100%) rename src/linear-algebra/{functoriality-vectors.lagda.md => functoriality-tuples.lagda.md} (100%) rename src/linear-algebra/{scalar-multiplication-vectors-on-rings.lagda.md => scalar-multiplication-tuples-on-rings.lagda.md} (100%) rename src/linear-algebra/{scalar-multiplication-vectors.lagda.md => scalar-multiplication-tuples.lagda.md} (100%) rename src/linear-algebra/{vectors-on-commutative-rings.lagda.md => tuples-on-commutative-rings.lagda.md} (100%) rename src/linear-algebra/{vectors-on-commutative-semirings.lagda.md => tuples-on-commutative-semirings.lagda.md} (100%) rename src/linear-algebra/{vectors-on-euclidean-domains.lagda.md => tuples-on-euclidean-domains.lagda.md} (100%) rename src/linear-algebra/{vectors-on-rings.lagda.md => tuples-on-rings.lagda.md} (100%) rename src/linear-algebra/{vectors-on-semirings.lagda.md => tuples-on-semirings.lagda.md} (100%) rename src/linear-algebra/{vectors.lagda.md => tuples.lagda.md} (100%) diff --git a/src/linear-algebra/constant-vectors.lagda.md b/src/linear-algebra/constant-tuples.lagda.md similarity index 100% rename from src/linear-algebra/constant-vectors.lagda.md rename to src/linear-algebra/constant-tuples.lagda.md diff --git a/src/linear-algebra/functoriality-vectors.lagda.md b/src/linear-algebra/functoriality-tuples.lagda.md similarity index 100% rename from src/linear-algebra/functoriality-vectors.lagda.md rename to src/linear-algebra/functoriality-tuples.lagda.md diff --git a/src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md similarity index 100% rename from src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md rename to src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md diff --git a/src/linear-algebra/scalar-multiplication-vectors.lagda.md b/src/linear-algebra/scalar-multiplication-tuples.lagda.md similarity index 100% rename from src/linear-algebra/scalar-multiplication-vectors.lagda.md rename to src/linear-algebra/scalar-multiplication-tuples.lagda.md diff --git a/src/linear-algebra/vectors-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md similarity index 100% rename from src/linear-algebra/vectors-on-commutative-rings.lagda.md rename to src/linear-algebra/tuples-on-commutative-rings.lagda.md diff --git a/src/linear-algebra/vectors-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md similarity index 100% rename from src/linear-algebra/vectors-on-commutative-semirings.lagda.md rename to src/linear-algebra/tuples-on-commutative-semirings.lagda.md diff --git a/src/linear-algebra/vectors-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md similarity index 100% rename from src/linear-algebra/vectors-on-euclidean-domains.lagda.md rename to src/linear-algebra/tuples-on-euclidean-domains.lagda.md diff --git a/src/linear-algebra/vectors-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md similarity index 100% rename from src/linear-algebra/vectors-on-rings.lagda.md rename to src/linear-algebra/tuples-on-rings.lagda.md diff --git a/src/linear-algebra/vectors-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md similarity index 100% rename from src/linear-algebra/vectors-on-semirings.lagda.md rename to src/linear-algebra/tuples-on-semirings.lagda.md diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/tuples.lagda.md similarity index 100% rename from src/linear-algebra/vectors.lagda.md rename to src/linear-algebra/tuples.lagda.md From 14c49500021400ae1aa7af6a80a3202a2ba477c3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 10:39:47 -0700 Subject: [PATCH 02/24] Progress --- ...inomial-theorem-commutative-rings.lagda.md | 16 +- ...ial-theorem-commutative-semirings.lagda.md | 16 +- .../sums-commutative-rings.lagda.md | 46 +- .../sums-commutative-semirings.lagda.md | 42 +- .../binomial-theorem-integers.lagda.md | 14 +- .../binomial-theorem-natural-numbers.lagda.md | 14 +- .../iterated-cartesian-product-types.lagda.md | 8 +- ...iable-functoriality-set-quotients.lagda.md | 22 +- .../multivariable-operations.lagda.md | 92 ++-- src/foundation/vectors-set-quotients.lagda.md | 278 +++++----- src/linear-algebra.lagda.md | 20 +- src/linear-algebra/constant-matrices.lagda.md | 4 +- src/linear-algebra/constant-tuples.lagda.md | 16 +- .../diagonal-matrices-on-rings.lagda.md | 18 +- .../functoriality-matrices.lagda.md | 6 +- .../functoriality-tuples.lagda.md | 92 ++-- src/linear-algebra/matrices-on-rings.lagda.md | 20 +- src/linear-algebra/matrices.lagda.md | 33 +- .../multiplication-matrices.lagda.md | 112 ++-- .../scalar-multiplication-matrices.lagda.md | 4 +- ...ar-multiplication-tuples-on-rings.lagda.md | 117 ++-- .../scalar-multiplication-tuples.lagda.md | 16 +- .../transposition-matrices.lagda.md | 30 +- .../tuples-on-commutative-rings.lagda.md | 287 +++++----- .../tuples-on-commutative-semirings.lagda.md | 306 ++++++----- .../tuples-on-euclidean-domains.lagda.md | 389 ++++++------- src/linear-algebra/tuples-on-rings.lagda.md | 307 +++++------ .../tuples-on-semirings.lagda.md | 268 ++++----- src/linear-algebra/tuples.lagda.md | 517 +++++++++--------- src/lists/arrays.lagda.md | 116 ++-- src/lists/functoriality-lists.lagda.md | 174 +++--- src/lists/permutation-lists.lagda.md | 196 +++---- src/lists/permutation-vectors.lagda.md | 346 ++++++------ src/lists/sort-by-insertion-lists.lagda.md | 14 +- src/lists/sort-by-insertion-vectors.lagda.md | 253 ++++----- src/lists/sorted-lists.lagda.md | 22 +- src/lists/sorted-vectors.lagda.md | 238 ++++---- src/lists/sorting-algorithms-lists.lagda.md | 26 +- src/lists/sorting-algorithms-vectors.lagda.md | 71 +-- src/reflection/group-solver.lagda.md | 10 +- .../binomial-theorem-rings.lagda.md | 16 +- .../binomial-theorem-semirings.lagda.md | 18 +- src/ring-theory/sums-rings.lagda.md | 40 +- src/ring-theory/sums-semirings.lagda.md | 48 +- ...ime-decomposition-natural-numbers.lagda.md | 2 +- .../algebraic-theory-of-groups.lagda.md | 34 +- src/universal-algebra/congruences.lagda.md | 21 +- .../homomorphisms-of-algebras.lagda.md | 8 +- src/universal-algebra/kernels.lagda.md | 16 +- .../models-of-signatures.lagda.md | 6 +- .../quotient-algebras.lagda.md | 41 +- .../terms-over-signatures.lagda.md | 108 ++-- 52 files changed, 2493 insertions(+), 2441 deletions(-) diff --git a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md index 2e3e0a4f5e..703699691a 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md @@ -21,7 +21,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors-on-commutative-rings +open import linear-algebra.tuples-on-commutative-rings open import ring-theory.binomial-theorem-rings @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n : ℕ) (f : functional-vec-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → type-Commutative-Ring A binomial-sum-Commutative-Ring A = binomial-sum-Ring (ring-Commutative-Ring A) ``` @@ -65,14 +65,14 @@ module _ where binomial-sum-one-element-Commutative-Ring : - (f : functional-vec-Commutative-Ring A 1) → + (f : functional-tuple-Commutative-Ring A 1) → binomial-sum-Commutative-Ring A 0 f = - head-functional-vec-Commutative-Ring A 0 f + head-functional-tuple-Commutative-Ring A 0 f binomial-sum-one-element-Commutative-Ring = binomial-sum-one-element-Ring (ring-Commutative-Ring A) binomial-sum-two-elements-Commutative-Ring : - (f : functional-vec-Commutative-Ring A 2) → + (f : functional-tuple-Commutative-Ring A 2) → binomial-sum-Commutative-Ring A 1 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Ring = @@ -87,7 +87,7 @@ module _ where htpy-binomial-sum-Commutative-Ring : - (n : ℕ) {f g : functional-vec-Commutative-Ring A (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple-Commutative-Ring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Ring A n f = binomial-sum-Commutative-Ring A n g htpy-binomial-sum-Commutative-Ring = @@ -103,14 +103,14 @@ module _ left-distributive-mul-binomial-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : functional-vec-Commutative-Ring A (succ-ℕ n)) → + (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → mul-Commutative-Ring A x (binomial-sum-Commutative-Ring A n f) = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-binomial-sum-Commutative-Ring = left-distributive-mul-binomial-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-binomial-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → (x : type-Commutative-Ring A) → mul-Commutative-Ring A (binomial-sum-Commutative-Ring A n f) x = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) diff --git a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md index 3bbda32f19..a69c4ff98a 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md @@ -20,7 +20,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors-on-commutative-semirings +open import linear-algebra.tuples-on-commutative-semirings open import ring-theory.binomial-theorem-semirings @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n : ℕ) (f : functional-vec-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → type-Commutative-Semiring A binomial-sum-Commutative-Semiring A = binomial-sum-Semiring (semiring-Commutative-Semiring A) @@ -66,14 +66,14 @@ module _ where binomial-sum-one-element-Commutative-Semiring : - (f : functional-vec-Commutative-Semiring A 1) → + (f : functional-tuple-Commutative-Semiring A 1) → binomial-sum-Commutative-Semiring A 0 f = - head-functional-vec-Commutative-Semiring A 0 f + head-functional-tuple-Commutative-Semiring A 0 f binomial-sum-one-element-Commutative-Semiring = binomial-sum-one-element-Semiring (semiring-Commutative-Semiring A) binomial-sum-two-elements-Commutative-Semiring : - (f : functional-vec-Commutative-Semiring A 2) → + (f : functional-tuple-Commutative-Semiring A 2) → binomial-sum-Commutative-Semiring A 1 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Semiring = @@ -88,7 +88,7 @@ module _ where htpy-binomial-sum-Commutative-Semiring : - (n : ℕ) {f g : functional-vec-Commutative-Semiring A (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple-Commutative-Semiring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Semiring A n f = binomial-sum-Commutative-Semiring A n g @@ -105,7 +105,7 @@ module _ left-distributive-mul-binomial-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : functional-vec-Commutative-Semiring A (succ-ℕ n)) → + (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → mul-Commutative-Semiring A x (binomial-sum-Commutative-Semiring A n f) = binomial-sum-Commutative-Semiring A n ( λ i → mul-Commutative-Semiring A x (f i)) @@ -114,7 +114,7 @@ module _ ( semiring-Commutative-Semiring A) right-distributive-mul-binomial-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (binomial-sum-Commutative-Semiring A n f) x = binomial-sum-Commutative-Semiring A n diff --git a/src/commutative-algebra/sums-commutative-rings.lagda.md b/src/commutative-algebra/sums-commutative-rings.lagda.md index f26a86e6db..db89333dd7 100644 --- a/src/commutative-algebra/sums-commutative-rings.lagda.md +++ b/src/commutative-algebra/sums-commutative-rings.lagda.md @@ -20,8 +20,8 @@ open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors -open import linear-algebra.vectors-on-commutative-rings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-commutative-rings open import ring-theory.sums-rings @@ -41,7 +41,7 @@ ring `A` to any family of elements of `A` indexed by a standard finite type. ```agda sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) (n : ℕ) → - (functional-vec-Commutative-Ring A n) → type-Commutative-Ring A + (functional-tuple-Commutative-Ring A n) → type-Commutative-Ring A sum-Commutative-Ring A = sum-Ring (ring-Commutative-Ring A) ``` @@ -55,13 +55,13 @@ module _ where sum-one-element-Commutative-Ring : - (f : functional-vec-Commutative-Ring A 1) → - sum-Commutative-Ring A 1 f = head-functional-vec 0 f + (f : functional-tuple-Commutative-Ring A 1) → + sum-Commutative-Ring A 1 f = head-functional-tuple 0 f sum-one-element-Commutative-Ring = sum-one-element-Ring (ring-Commutative-Ring A) sum-two-elements-Commutative-Ring : - (f : functional-vec-Commutative-Ring A 2) → + (f : functional-tuple-Commutative-Ring A 2) → sum-Commutative-Ring A 2 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Ring = @@ -76,7 +76,7 @@ module _ where htpy-sum-Commutative-Ring : - (n : ℕ) {f g : functional-vec-Commutative-Ring A n} → + (n : ℕ) {f g : functional-tuple-Commutative-Ring A n} → (f ~ g) → sum-Commutative-Ring A n f = sum-Commutative-Ring A n g htpy-sum-Commutative-Ring = htpy-sum-Ring (ring-Commutative-Ring A) ``` @@ -89,15 +89,15 @@ module _ where cons-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A (succ-ℕ n)) → - {x : type-Commutative-Ring A} → head-functional-vec n f = x → + (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → + {x : type-Commutative-Ring A} → head-functional-tuple n f = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A - ( sum-Commutative-Ring A n (tail-functional-vec n f)) x + ( sum-Commutative-Ring A n (tail-functional-tuple n f)) x cons-sum-Commutative-Ring = cons-sum-Ring (ring-Commutative-Ring A) snoc-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → {x : type-Commutative-Ring A} → f (zero-Fin n) = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A @@ -115,14 +115,14 @@ module _ left-distributive-mul-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : functional-vec-Commutative-Ring A n) → + (f : functional-tuple-Commutative-Ring A n) → mul-Commutative-Ring A x (sum-Commutative-Ring A n f) = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-sum-Commutative-Ring = left-distributive-mul-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A n) + (n : ℕ) (f : functional-tuple-Commutative-Ring A n) (x : type-Commutative-Ring A) → mul-Commutative-Ring A (sum-Commutative-Ring A n f) x = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) @@ -138,12 +138,12 @@ module _ where interchange-add-sum-Commutative-Ring : - (n : ℕ) (f g : functional-vec-Commutative-Ring A n) → + (n : ℕ) (f g : functional-tuple-Commutative-Ring A n) → add-Commutative-Ring A ( sum-Commutative-Ring A n f) ( sum-Commutative-Ring A n g) = sum-Commutative-Ring A n - ( add-functional-vec-Commutative-Ring A n f g) + ( add-functional-tuple-Commutative-Ring A n f g) interchange-add-sum-Commutative-Ring = interchange-add-sum-Ring (ring-Commutative-Ring A) ``` @@ -156,10 +156,14 @@ module _ where extend-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A n) → + (n : ℕ) (f : functional-tuple-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( cons-functional-vec-Commutative-Ring A n (zero-Commutative-Ring A) f) = + ( cons-functional-tuple-Commutative-Ring + ( A) + ( n) + ( zero-Commutative-Ring A) + ( f)) = sum-Commutative-Ring A n f extend-sum-Commutative-Ring = extend-sum-Ring (ring-Commutative-Ring A) ``` @@ -172,10 +176,10 @@ module _ where shift-sum-Commutative-Ring : - (n : ℕ) (f : functional-vec-Commutative-Ring A n) → + (n : ℕ) (f : functional-tuple-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( snoc-functional-vec-Commutative-Ring A n f + ( snoc-functional-tuple-Commutative-Ring A n f ( zero-Commutative-Ring A)) = sum-Commutative-Ring A n f shift-sum-Commutative-Ring = shift-sum-Ring (ring-Commutative-Ring A) @@ -186,7 +190,7 @@ module _ ```agda split-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n m : ℕ) (f : functional-vec-Commutative-Ring A (n +ℕ m)) → + (n m : ℕ) (f : functional-tuple-Commutative-Ring A (n +ℕ m)) → sum-Commutative-Ring A (n +ℕ m) f = add-Commutative-Ring A ( sum-Commutative-Ring A n (f ∘ inl-coproduct-Fin n m)) @@ -210,7 +214,7 @@ module _ sum-zero-Commutative-Ring : (n : ℕ) → sum-Commutative-Ring A n - ( zero-functional-vec-Commutative-Ring A n) = + ( zero-functional-tuple-Commutative-Ring A n) = zero-Commutative-Ring A sum-zero-Commutative-Ring = sum-zero-Ring (ring-Commutative-Ring A) ``` diff --git a/src/commutative-algebra/sums-commutative-semirings.lagda.md b/src/commutative-algebra/sums-commutative-semirings.lagda.md index 16eaf02de8..8c8b541009 100644 --- a/src/commutative-algebra/sums-commutative-semirings.lagda.md +++ b/src/commutative-algebra/sums-commutative-semirings.lagda.md @@ -17,8 +17,8 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors -open import linear-algebra.vectors-on-commutative-semirings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-commutative-semirings open import ring-theory.sums-semirings @@ -38,7 +38,7 @@ semiring `R` to any family of elements of `R` indexed by a standard finite type. ```agda sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) (n : ℕ) → - (functional-vec-Commutative-Semiring A n) → type-Commutative-Semiring A + (functional-tuple-Commutative-Semiring A n) → type-Commutative-Semiring A sum-Commutative-Semiring A = sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -52,13 +52,13 @@ module _ where sum-one-element-Commutative-Semiring : - (f : functional-vec-Commutative-Semiring A 1) → - sum-Commutative-Semiring A 1 f = head-functional-vec 0 f + (f : functional-tuple-Commutative-Semiring A 1) → + sum-Commutative-Semiring A 1 f = head-functional-tuple 0 f sum-one-element-Commutative-Semiring = sum-one-element-Semiring (semiring-Commutative-Semiring A) sum-two-elements-Commutative-Semiring : - (f : functional-vec-Commutative-Semiring A 2) → + (f : functional-tuple-Commutative-Semiring A 2) → sum-Commutative-Semiring A 2 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Semiring = @@ -73,7 +73,7 @@ module _ where htpy-sum-Commutative-Semiring : - (n : ℕ) {f g : functional-vec-Commutative-Semiring A n} → + (n : ℕ) {f g : functional-tuple-Commutative-Semiring A n} → (f ~ g) → sum-Commutative-Semiring A n f = sum-Commutative-Semiring A n g htpy-sum-Commutative-Semiring = htpy-sum-Semiring (semiring-Commutative-Semiring A) @@ -87,16 +87,16 @@ module _ where cons-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A (succ-ℕ n)) → - {x : type-Commutative-Semiring A} → head-functional-vec n f = x → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → + {x : type-Commutative-Semiring A} → head-functional-tuple n f = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A - ( sum-Commutative-Semiring A n (tail-functional-vec n f)) x + ( sum-Commutative-Semiring A n (tail-functional-tuple n f)) x cons-sum-Commutative-Semiring = cons-sum-Semiring (semiring-Commutative-Semiring A) snoc-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → {x : type-Commutative-Semiring A} → f (zero-Fin n) = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A @@ -115,14 +115,14 @@ module _ left-distributive-mul-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : functional-vec-Commutative-Semiring A n) → + (f : functional-tuple-Commutative-Semiring A n) → mul-Commutative-Semiring A x (sum-Commutative-Semiring A n f) = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A x (f i)) left-distributive-mul-sum-Commutative-Semiring = left-distributive-mul-sum-Semiring (semiring-Commutative-Semiring A) right-distributive-mul-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A n) + (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (sum-Commutative-Semiring A n f) x = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A (f i) x) @@ -138,12 +138,12 @@ module _ where interchange-add-sum-Commutative-Semiring : - (n : ℕ) (f g : functional-vec-Commutative-Semiring A n) → + (n : ℕ) (f g : functional-tuple-Commutative-Semiring A n) → add-Commutative-Semiring A ( sum-Commutative-Semiring A n f) ( sum-Commutative-Semiring A n g) = sum-Commutative-Semiring A n - ( add-functional-vec-Commutative-Semiring A n f g) + ( add-functional-tuple-Commutative-Semiring A n f g) interchange-add-sum-Commutative-Semiring = interchange-add-sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -156,10 +156,10 @@ module _ where extend-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A n) → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( cons-functional-vec-Commutative-Semiring A n + ( cons-functional-tuple-Commutative-Semiring A n ( zero-Commutative-Semiring A) f) = sum-Commutative-Semiring A n f extend-sum-Commutative-Semiring = @@ -174,10 +174,10 @@ module _ where shift-sum-Commutative-Semiring : - (n : ℕ) (f : functional-vec-Commutative-Semiring A n) → + (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( snoc-functional-vec-Commutative-Semiring A n f + ( snoc-functional-tuple-Commutative-Semiring A n f ( zero-Commutative-Semiring A)) = sum-Commutative-Semiring A n f shift-sum-Commutative-Semiring = @@ -194,7 +194,7 @@ module _ sum-zero-Commutative-Semiring : (n : ℕ) → sum-Commutative-Semiring A n - ( zero-functional-vec-Commutative-Semiring A n) = + ( zero-functional-tuple-Commutative-Semiring A n) = zero-Commutative-Semiring A sum-zero-Commutative-Semiring = sum-zero-Semiring (semiring-Commutative-Semiring A) @@ -205,7 +205,7 @@ module _ ```agda split-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n m : ℕ) (f : functional-vec-Commutative-Semiring A (n +ℕ m)) → + (n m : ℕ) (f : functional-tuple-Commutative-Semiring A (n +ℕ m)) → sum-Commutative-Semiring A (n +ℕ m) f = add-Commutative-Semiring A ( sum-Commutative-Semiring A n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/elementary-number-theory/binomial-theorem-integers.lagda.md b/src/elementary-number-theory/binomial-theorem-integers.lagda.md index ec01e91220..c9f1b91c0d 100644 --- a/src/elementary-number-theory/binomial-theorem-integers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-integers.lagda.md @@ -20,7 +20,7 @@ open import elementary-number-theory.ring-of-integers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.vectors +open import linear-algebra.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -45,7 +45,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ### Binomial sums ```agda -binomial-sum-ℤ : (n : ℕ) (f : functional-vec ℤ (succ-ℕ n)) → ℤ +binomial-sum-ℤ : (n : ℕ) (f : functional-tuple ℤ (succ-ℕ n)) → ℤ binomial-sum-ℤ = binomial-sum-Commutative-Ring ℤ-Commutative-Ring ``` @@ -55,12 +55,12 @@ binomial-sum-ℤ = binomial-sum-Commutative-Ring ℤ-Commutative-Ring ```agda binomial-sum-one-element-ℤ : - (f : functional-vec ℤ 1) → binomial-sum-ℤ 0 f = head-functional-vec 0 f + (f : functional-tuple ℤ 1) → binomial-sum-ℤ 0 f = head-functional-tuple 0 f binomial-sum-one-element-ℤ = binomial-sum-one-element-Commutative-Ring ℤ-Commutative-Ring binomial-sum-two-elements-ℤ : - (f : functional-vec ℤ 2) → + (f : functional-tuple ℤ 2) → binomial-sum-ℤ 1 f = (f (zero-Fin 1)) +ℤ (f (one-Fin 1)) binomial-sum-two-elements-ℤ = binomial-sum-two-elements-Commutative-Ring ℤ-Commutative-Ring @@ -70,7 +70,7 @@ binomial-sum-two-elements-ℤ = ```agda htpy-binomial-sum-ℤ : - (n : ℕ) {f g : functional-vec ℤ (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple ℤ (succ-ℕ n)} → (f ~ g) → binomial-sum-ℤ n f = binomial-sum-ℤ n g htpy-binomial-sum-ℤ = htpy-binomial-sum-Commutative-Ring ℤ-Commutative-Ring @@ -80,13 +80,13 @@ htpy-binomial-sum-ℤ = ```agda left-distributive-mul-binomial-sum-ℤ : - (n : ℕ) (x : ℤ) (f : functional-vec ℤ (succ-ℕ n)) → + (n : ℕ) (x : ℤ) (f : functional-tuple ℤ (succ-ℕ n)) → x *ℤ (binomial-sum-ℤ n f) = binomial-sum-ℤ n (λ i → x *ℤ (f i)) left-distributive-mul-binomial-sum-ℤ = left-distributive-mul-binomial-sum-Commutative-Ring ℤ-Commutative-Ring right-distributive-mul-binomial-sum-ℤ : - (n : ℕ) (f : functional-vec ℤ (succ-ℕ n)) (x : ℤ) → + (n : ℕ) (f : functional-tuple ℤ (succ-ℕ n)) (x : ℤ) → (binomial-sum-ℤ n f) *ℤ x = binomial-sum-ℤ n (λ i → (f i) *ℤ x) right-distributive-mul-binomial-sum-ℤ = right-distributive-mul-binomial-sum-Commutative-Ring diff --git a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md index 08f650294f..d0d79aec2c 100644 --- a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md @@ -19,7 +19,7 @@ open import elementary-number-theory.natural-numbers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.vectors +open import linear-algebra.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -44,7 +44,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ### Binomial sums ```agda -binomial-sum-ℕ : (n : ℕ) (f : functional-vec ℕ (succ-ℕ n)) → ℕ +binomial-sum-ℕ : (n : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) → ℕ binomial-sum-ℕ = binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring ``` @@ -54,12 +54,12 @@ binomial-sum-ℕ = binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring ```agda binomial-sum-one-element-ℕ : - (f : functional-vec ℕ 1) → binomial-sum-ℕ 0 f = head-functional-vec 0 f + (f : functional-tuple ℕ 1) → binomial-sum-ℕ 0 f = head-functional-tuple 0 f binomial-sum-one-element-ℕ = binomial-sum-one-element-Commutative-Semiring ℕ-Commutative-Semiring binomial-sum-two-elements-ℕ : - (f : functional-vec ℕ 2) → + (f : functional-tuple ℕ 2) → binomial-sum-ℕ 1 f = (f (zero-Fin 1)) +ℕ (f (one-Fin 1)) binomial-sum-two-elements-ℕ = binomial-sum-two-elements-Commutative-Semiring ℕ-Commutative-Semiring @@ -69,7 +69,7 @@ binomial-sum-two-elements-ℕ = ```agda htpy-binomial-sum-ℕ : - (n : ℕ) {f g : functional-vec ℕ (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple ℕ (succ-ℕ n)} → (f ~ g) → binomial-sum-ℕ n f = binomial-sum-ℕ n g htpy-binomial-sum-ℕ = htpy-binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring @@ -79,13 +79,13 @@ htpy-binomial-sum-ℕ = ```agda left-distributive-mul-binomial-sum-ℕ : - (n : ℕ) (x : ℕ) (f : functional-vec ℕ (succ-ℕ n)) → + (n : ℕ) (x : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) → x *ℕ (binomial-sum-ℕ n f) = binomial-sum-ℕ n (λ i → x *ℕ (f i)) left-distributive-mul-binomial-sum-ℕ = left-distributive-mul-binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring right-distributive-mul-binomial-sum-ℕ : - (n : ℕ) (f : functional-vec ℕ (succ-ℕ n)) (x : ℕ) → + (n : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) (x : ℕ) → (binomial-sum-ℕ n f) *ℕ x = binomial-sum-ℕ n (λ i → (f i) *ℕ x) right-distributive-mul-binomial-sum-ℕ = right-distributive-mul-binomial-sum-Commutative-Semiring diff --git a/src/foundation/iterated-cartesian-product-types.lagda.md b/src/foundation/iterated-cartesian-product-types.lagda.md index ab1849056b..288c7dee63 100644 --- a/src/foundation/iterated-cartesian-product-types.lagda.md +++ b/src/foundation/iterated-cartesian-product-types.lagda.md @@ -114,7 +114,7 @@ equiv-iterated-product-Fin-recursive-lists : {l : Level} (l : list (UU l)) → iterated-product-Fin-recursive ( length-array (array-list l)) - ( functional-vec-array (array-list l)) ≃ + ( functional-tuple-array (array-list l)) ≃ iterated-product-lists l equiv-iterated-product-Fin-recursive-lists nil = id-equiv equiv-iterated-product-Fin-recursive-lists (cons x l) = @@ -194,17 +194,17 @@ equiv-permutation-iterated-product-lists L t = ( equiv-iterated-product-Fin-recursive-lists L ∘e ( ( equiv-permutation-iterated-product-Fin-recursive ( length-list L) - ( functional-vec-array (array-list L)) + ( functional-tuple-array (array-list L)) ( t)) ∘e ( equiv-eq ( ap ( λ p → iterated-product-Fin-recursive ( length-array p) - ( functional-vec-array p)) + ( functional-tuple-array p)) ( is-retraction-array-list ( length-list L , - ( functional-vec-array (array-list L) ∘ map-equiv t)))) ∘e + ( functional-tuple-array (array-list L) ∘ map-equiv t)))) ∘e ( inv-equiv ( equiv-iterated-product-Fin-recursive-lists (permute-list L t)))))) diff --git a/src/foundation/multivariable-functoriality-set-quotients.lagda.md b/src/foundation/multivariable-functoriality-set-quotients.lagda.md index 62cad9dc12..a2d1ea55b8 100644 --- a/src/foundation/multivariable-functoriality-set-quotients.lagda.md +++ b/src/foundation/multivariable-functoriality-set-quotients.lagda.md @@ -11,14 +11,14 @@ open import elementary-number-theory.natural-numbers open import foundation.functoriality-set-quotients open import foundation.set-quotients +open import foundation.tuples-set-quotients open import foundation.universe-levels -open import foundation.vectors-set-quotients open import foundation-core.equivalence-relations open import foundation-core.function-types open import foundation-core.homotopies -open import linear-algebra.vectors +open import linear-algebra.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -41,39 +41,39 @@ equivalence relations extends uniquely to a multivariable operation from the module _ { l1 l2 l3 l4 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) { X : UU l3} (S : equivalence-relation l4 X) where multivariable-map-set-quotient : ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → - set-quotient-vector n A R → set-quotient S + set-quotient-tuple n A R → set-quotient S multivariable-map-set-quotient = map-is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) ( S) ( quotient-Set S) ( reflecting-map-quotient-map S) - ( is-set-quotient-vector-set-quotient n A R) + ( is-set-quotient-tuple-set-quotient n A R) ( is-set-quotient-set-quotient S) compute-multivariable-map-set-quotient : ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → ( multivariable-map-set-quotient h ∘ - quotient-vector-map n A R) ~ + quotient-tuple-map n A R) ~ ( quotient-map S ∘ map-hom-equivalence-relation (all-sim-equivalence-relation n A R) S h) compute-multivariable-map-set-quotient = coherence-square-map-is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) ( S) ( quotient-Set S) ( reflecting-map-quotient-map S) - ( is-set-quotient-vector-set-quotient n A R) + ( is-set-quotient-tuple-set-quotient n A R) ( is-set-quotient-set-quotient S) ``` diff --git a/src/foundation/multivariable-operations.lagda.md b/src/foundation/multivariable-operations.lagda.md index fe71b9e834..1a967dfc61 100644 --- a/src/foundation/multivariable-operations.lagda.md +++ b/src/foundation/multivariable-operations.lagda.md @@ -23,7 +23,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import linear-algebra.vectors +open import linear-algebra.tuples ``` @@ -40,49 +40,49 @@ takes as inputs one element of each type, and returns an element in some type multivariable-input : {l : Level} (n : ℕ) - (A : functional-vec (UU l) n) → + (A : functional-tuple (UU l) n) → UU l multivariable-input zero-ℕ A = raise-unit _ multivariable-input (succ-ℕ n) A = - A (inr star) × multivariable-input n (tail-functional-vec n A) + A (inr star) × multivariable-input n (tail-functional-tuple n A) empty-multivariable-input : {l : Level} - (A : functional-vec (UU l) 0) → + (A : functional-tuple (UU l) 0) → multivariable-input 0 A empty-multivariable-input A = raise-star head-multivariable-input : {l : Level} (n : ℕ) - (A : functional-vec (UU l) (succ-ℕ n)) → + (A : functional-tuple (UU l) (succ-ℕ n)) → multivariable-input (succ-ℕ n) A → - head-functional-vec n A + head-functional-tuple n A head-multivariable-input n A (a0 , a) = a0 tail-multivariable-input : {l : Level} (n : ℕ) - (A : functional-vec (UU l) (succ-ℕ n)) → + (A : functional-tuple (UU l) (succ-ℕ n)) → multivariable-input (succ-ℕ n) A → - multivariable-input n (tail-functional-vec n A) + multivariable-input n (tail-functional-tuple n A) tail-multivariable-input n A (a0 , a) = a cons-multivariable-input : {l : Level} (n : ℕ) - (A : functional-vec (UU l) n) → + (A : functional-tuple (UU l) n) → {A0 : UU l} → A0 → multivariable-input n A → - multivariable-input (succ-ℕ n) (cons-functional-vec n A0 A) + multivariable-input (succ-ℕ n) (cons-functional-tuple n A0 A) pr1 (cons-multivariable-input n A a0 a) = a0 pr2 (cons-multivariable-input n A a0 a) = a multivariable-operation : { l : Level} ( n : ℕ) - ( A : functional-vec (UU l) n) + ( A : functional-tuple (UU l) n) ( X : UU l) → UU l multivariable-operation n A X = @@ -91,68 +91,68 @@ multivariable-operation n A X = ## Properties -### For the case of constant families, multivariable inputs and vectors coincide +### For the case of constant families, multivariable inputs and tuples coincide ```agda -vector-multivariable-input : +tuple-multivariable-input : {l : Level} (n : ℕ) (A : UU l) → multivariable-input n (λ _ → A) → - vec A n -vector-multivariable-input zero-ℕ A _ = empty-vec -vector-multivariable-input (succ-ℕ n) A (a0 , a) = - a0 ∷ (vector-multivariable-input n A a) + tuple A n +tuple-multivariable-input zero-ℕ A _ = empty-tuple +tuple-multivariable-input (succ-ℕ n) A (a0 , a) = + a0 ∷ (tuple-multivariable-input n A a) -multivariable-input-vector : +multivariable-input-tuple : {l : Level} (n : ℕ) (A : UU l) → - vec A n → + tuple A n → multivariable-input n (λ _ → A) -multivariable-input-vector zero-ℕ A _ = raise-star -multivariable-input-vector (succ-ℕ n) A (a0 ∷ a) = +multivariable-input-tuple zero-ℕ A _ = raise-star +multivariable-input-tuple (succ-ℕ n) A (a0 ∷ a) = cons-multivariable-input n (λ _ → A) a0 - ( multivariable-input-vector n A a) + ( multivariable-input-tuple n A a) -is-section-multivariable-input-vector : +is-section-multivariable-input-tuple : {l : Level} (n : ℕ) (A : UU l) → - ( vector-multivariable-input n A ∘ - multivariable-input-vector n A) ~ id -is-section-multivariable-input-vector zero-ℕ A empty-vec = refl -is-section-multivariable-input-vector (succ-ℕ n) A (a0 ∷ a) = - ap (_∷_ a0) ( is-section-multivariable-input-vector n A a) + ( tuple-multivariable-input n A ∘ + multivariable-input-tuple n A) ~ id +is-section-multivariable-input-tuple zero-ℕ A empty-tuple = refl +is-section-multivariable-input-tuple (succ-ℕ n) A (a0 ∷ a) = + ap (_∷_ a0) ( is-section-multivariable-input-tuple n A a) -is-retraction-multivariable-input-vector : +is-retraction-multivariable-input-tuple : {l : Level} (n : ℕ) (A : UU l) → - ( multivariable-input-vector n A ∘ - vector-multivariable-input n A) ~ id -is-retraction-multivariable-input-vector zero-ℕ A (map-raise star) = refl -is-retraction-multivariable-input-vector (succ-ℕ n) A (a0 , a) = - eq-pair refl ( is-retraction-multivariable-input-vector n A a) + ( multivariable-input-tuple n A ∘ + tuple-multivariable-input n A) ~ id +is-retraction-multivariable-input-tuple zero-ℕ A (map-raise star) = refl +is-retraction-multivariable-input-tuple (succ-ℕ n) A (a0 , a) = + eq-pair refl ( is-retraction-multivariable-input-tuple n A a) -is-equiv-vector-multivariable-input : +is-equiv-tuple-multivariable-input : {l : Level} (n : ℕ) (A : UU l) → - is-equiv (vector-multivariable-input n A) -is-equiv-vector-multivariable-input n A = + is-equiv (tuple-multivariable-input n A) +is-equiv-tuple-multivariable-input n A = is-equiv-is-invertible - ( multivariable-input-vector n A) - ( is-section-multivariable-input-vector n A) - ( is-retraction-multivariable-input-vector n A) + ( multivariable-input-tuple n A) + ( is-section-multivariable-input-tuple n A) + ( is-retraction-multivariable-input-tuple n A) -compute-vector-multivariable-input : +compute-tuple-multivariable-input : {l : Level} (n : ℕ) (A : UU l) → - multivariable-input n (λ _ → A) ≃ vec A n -pr1 (compute-vector-multivariable-input n A) = - vector-multivariable-input n A -pr2 (compute-vector-multivariable-input n A) = - is-equiv-vector-multivariable-input n A + multivariable-input n (λ _ → A) ≃ tuple A n +pr1 (compute-tuple-multivariable-input n A) = + tuple-multivariable-input n A +pr2 (compute-tuple-multivariable-input n A) = + is-equiv-tuple-multivariable-input n A ``` diff --git a/src/foundation/vectors-set-quotients.lagda.md b/src/foundation/vectors-set-quotients.lagda.md index 80e0ac123d..6367fb8067 100644 --- a/src/foundation/vectors-set-quotients.lagda.md +++ b/src/foundation/vectors-set-quotients.lagda.md @@ -1,9 +1,9 @@ -# Vectors of set quotients +# Tuples of set quotients ```agda {-# OPTIONS --lossy-unification #-} -module foundation.vectors-set-quotients where +module foundation.tuples-set-quotients where ```
Imports @@ -38,7 +38,7 @@ open import foundation-core.propositions open import foundation-core.retractions open import foundation-core.sections -open import linear-algebra.vectors +open import linear-algebra.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -48,18 +48,18 @@ open import univalent-combinatorics.standard-finite-types ## Idea Say we have a family of types `A1`, ..., `An` each equipped with an equivalence -relation `Ri`. Then, the set quotient of a vector with these types is the vector +relation `Ri`. Then, the set quotient of a tuple with these types is the tuple of the set quotients of each `Ai`. ## Definition -### The induced relation on the vector of types +### The induced relation on the tuple of types ```agda all-sim-equivalence-relation : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( equivalence-relation l2 (multivariable-input n A)) all-sim-equivalence-relation {l1} {l2} zero-ℕ A R = @@ -67,117 +67,117 @@ all-sim-equivalence-relation {l1} {l2} zero-ℕ A R = all-sim-equivalence-relation (succ-ℕ n) A R = product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) ``` -### The set quotient of a vector of types +### The set quotient of a tuple of types ```agda -set-quotient-vector : +set-quotient-tuple : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → UU (l1 ⊔ l2) -set-quotient-vector n A R = +set-quotient-tuple n A R = multivariable-input n (λ i → ( set-quotient (R i))) -is-set-set-quotient-vector : +is-set-set-quotient-tuple : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - is-set (set-quotient-vector n A R) -is-set-set-quotient-vector zero-ℕ A R = is-set-raise-unit -is-set-set-quotient-vector (succ-ℕ n) A R = + is-set (set-quotient-tuple n A R) +is-set-set-quotient-tuple zero-ℕ A R = is-set-raise-unit +is-set-set-quotient-tuple (succ-ℕ n) A R = is-set-product ( is-set-set-quotient (R (inr star))) - ( is-set-set-quotient-vector n - ( tail-functional-vec n A) + ( is-set-set-quotient-tuple n + ( tail-functional-tuple n A) ( λ x → R (inl x))) -set-quotient-vector-Set : +set-quotient-tuple-Set : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → Set (l1 ⊔ l2) -pr1 (set-quotient-vector-Set n A R) = - set-quotient-vector n A R -pr2 (set-quotient-vector-Set n A R) = - is-set-set-quotient-vector n A R +pr1 (set-quotient-tuple-Set n A R) = + set-quotient-tuple n A R +pr2 (set-quotient-tuple-Set n A R) = + is-set-set-quotient-tuple n A R -quotient-vector-map : +quotient-tuple-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → multivariable-input n A → - set-quotient-vector n A R -quotient-vector-map zero-ℕ A R a = raise-star -pr1 (quotient-vector-map (succ-ℕ n) A R (a0 , a)) = + set-quotient-tuple n A R +quotient-tuple-map zero-ℕ A R a = raise-star +pr1 (quotient-tuple-map (succ-ℕ n) A R (a0 , a)) = quotient-map (R (inr star)) (a0) -pr2 (quotient-vector-map (succ-ℕ n) A R a) = - quotient-vector-map n - ( tail-functional-vec n A) +pr2 (quotient-tuple-map (succ-ℕ n) A R a) = + quotient-tuple-map n + ( tail-functional-tuple n A) ( λ x → R (inl x)) ( tail-multivariable-input n A a) -reflects-quotient-vector-map : +reflects-quotient-tuple-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → reflects-equivalence-relation ( all-sim-equivalence-relation n A R) - ( quotient-vector-map n A R) -reflects-quotient-vector-map zero-ℕ A R p = refl -reflects-quotient-vector-map (succ-ℕ n) A R (p , p') = + ( quotient-tuple-map n A R) +reflects-quotient-tuple-map zero-ℕ A R p = refl +reflects-quotient-tuple-map (succ-ℕ n) A R (p , p') = eq-pair ( apply-effectiveness-quotient-map' (R (inr star)) p) - ( reflects-quotient-vector-map n - ( tail-functional-vec n A) + ( reflects-quotient-tuple-map n + ( tail-functional-tuple n A) ( λ x → R (inl x)) p') -reflecting-map-quotient-vector-map : +reflecting-map-quotient-tuple-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → reflecting-map-equivalence-relation ( all-sim-equivalence-relation n A R) - ( set-quotient-vector n A R) -pr1 (reflecting-map-quotient-vector-map n A R) = - quotient-vector-map n A R -pr2 (reflecting-map-quotient-vector-map n A R) = - reflects-quotient-vector-map n A R + ( set-quotient-tuple n A R) +pr1 (reflecting-map-quotient-tuple-map n A R) = + quotient-tuple-map n A R +pr2 (reflecting-map-quotient-tuple-map n A R) = + reflects-quotient-tuple-map n A R -equiv-set-quotient-vector : +equiv-set-quotient-tuple : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - set-quotient-vector n A R ≃ set-quotient (all-sim-equivalence-relation n A R) -pr1 (equiv-set-quotient-vector zero-ℕ A R) _ = quotient-map _ raise-star -pr1 (pr1 (pr2 (equiv-set-quotient-vector zero-ℕ A R))) _ = raise-star -pr2 (pr1 (pr2 (equiv-set-quotient-vector {l1} {l2} zero-ℕ A R))) = + set-quotient-tuple n A R ≃ set-quotient (all-sim-equivalence-relation n A R) +pr1 (equiv-set-quotient-tuple zero-ℕ A R) _ = quotient-map _ raise-star +pr1 (pr1 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) _ = raise-star +pr2 (pr1 (pr2 (equiv-set-quotient-tuple {l1} {l2} zero-ℕ A R))) = induction-set-quotient ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( λ x → pair _ (is-set-set-quotient _ _ x)) ( λ x → apply-effectiveness-quotient-map' _ raise-star) -pr1 (pr2 (pr2 (equiv-set-quotient-vector zero-ℕ A R))) _ = raise-star -pr2 (pr2 (pr2 (equiv-set-quotient-vector zero-ℕ A R))) (map-raise star) = refl -equiv-set-quotient-vector (succ-ℕ n) A R = +pr1 (pr2 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) _ = raise-star +pr2 (pr2 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) (map-raise star) = refl +equiv-set-quotient-tuple (succ-ℕ n) A R = equivalence-reasoning set-quotient (R (inr star)) × - ( set-quotient-vector n - ( tail-functional-vec n A) + ( set-quotient-tuple n + ( tail-functional-tuple n A) ( λ x → R (inl x))) ≃ set-quotient (R (inr star)) × ( set-quotient (all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) by lemma ≃ set-quotient (all-sim-equivalence-relation (succ-ℕ n) A R) @@ -185,91 +185,91 @@ equiv-set-quotient-vector (succ-ℕ n) A R = where lemma : ( set-quotient (R (inr star)) × - ( set-quotient-vector n - ( tail-functional-vec n A) + ( set-quotient-tuple n + ( tail-functional-tuple n A) (λ x → R (inl x)))) ≃ ( set-quotient (R (inr star)) × ( set-quotient ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))))) pr1 (pr1 lemma (qa0 , qa)) = qa0 - pr2 (pr1 lemma (qa0 , qa)) = map-equiv (equiv-set-quotient-vector n _ _) qa + pr2 (pr1 lemma (qa0 , qa)) = map-equiv (equiv-set-quotient-tuple n _ _) qa pr1 (pr1 (pr1 (pr2 lemma)) (qa0 , qa)) = qa0 pr2 (pr1 (pr1 (pr2 lemma)) (qa0 , qa)) = - map-inv-equiv (equiv-set-quotient-vector n _ _) qa + map-inv-equiv (equiv-set-quotient-tuple n _ _) qa pr2 (pr1 (pr2 lemma)) (qa0 , qa) = - eq-pair refl (is-section-map-inv-equiv (equiv-set-quotient-vector n _ _) qa) + eq-pair refl (is-section-map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) pr1 (pr1 (pr2 (pr2 lemma)) (qa0 , qa)) = qa0 pr2 (pr1 (pr2 (pr2 lemma)) (qa0 , qa)) = - map-inv-equiv (equiv-set-quotient-vector n _ _) qa + map-inv-equiv (equiv-set-quotient-tuple n _ _) qa pr2 (pr2 (pr2 lemma)) (qa0 , qa) = eq-pair ( refl) - ( is-retraction-map-inv-equiv (equiv-set-quotient-vector n _ _) qa) + ( is-retraction-map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) -map-equiv-equiv-set-quotient-vector-quotient-map : +map-equiv-equiv-set-quotient-tuple-quotient-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - ( map-equiv (equiv-set-quotient-vector n A R) ∘ - ( quotient-vector-map n A R)) ~ + ( map-equiv (equiv-set-quotient-tuple n A R) ∘ + ( quotient-tuple-map n A R)) ~ ( quotient-map (all-sim-equivalence-relation n A R)) -map-equiv-equiv-set-quotient-vector-quotient-map zero-ℕ A R (map-raise star) = +map-equiv-equiv-set-quotient-tuple-quotient-map zero-ℕ A R (map-raise star) = refl -map-equiv-equiv-set-quotient-vector-quotient-map (succ-ℕ n) A R (a0 , a) = +map-equiv-equiv-set-quotient-tuple-quotient-map (succ-ℕ n) A R (a0 , a) = ap ( λ qa → map-equiv ( equiv-quotient-product-product-set-quotient _ _) ( quotient-map (R (inr star)) a0 , qa)) - ( map-equiv-equiv-set-quotient-vector-quotient-map n - ( tail-functional-vec n A) + ( map-equiv-equiv-set-quotient-tuple-quotient-map n + ( tail-functional-tuple n A) ( λ x → R (inl x)) a) ∙ ( triangle-uniqueness-product-set-quotient ( R (inr star)) - ( all-sim-equivalence-relation n (λ z → tail-functional-vec n A z) + ( all-sim-equivalence-relation n (λ z → tail-functional-tuple n A z) ( λ i → R (inl i))) ( a0 , a)) -inv-precomp-vector-set-quotient : +inv-precomp-tuple-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → (X : Set l) → reflecting-map-equivalence-relation ( all-sim-equivalence-relation n A R) ( type-Set X) → - ((set-quotient-vector n A R) → type-Set X) -inv-precomp-vector-set-quotient zero-ℕ A R X f (map-raise star) = + ((set-quotient-tuple n A R) → type-Set X) +inv-precomp-tuple-set-quotient zero-ℕ A R X f (map-raise star) = pr1 f raise-star -inv-precomp-vector-set-quotient (succ-ℕ n) A R X f (qa0 , qa) = +inv-precomp-tuple-set-quotient (succ-ℕ n) A R X f (qa0 , qa) = inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) ( X) ( f) - ( qa0 , map-equiv (equiv-set-quotient-vector n _ _) qa) + ( qa0 , map-equiv (equiv-set-quotient-tuple n _ _) qa) abstract - is-section-inv-precomp-vector-set-quotient : + is-section-inv-precomp-tuple-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) ( X)) ∘ - ( inv-precomp-vector-set-quotient n A R X) ~ + ( inv-precomp-tuple-set-quotient n A R X) ~ ( id) - is-section-inv-precomp-vector-set-quotient {l} {l1} {l2} 0 A R X f = + is-section-inv-precomp-tuple-set-quotient {l} {l1} {l2} 0 A R X f = eq-pair-Σ ( eq-htpy (λ where (map-raise star) → refl)) ( eq-is-prop @@ -277,7 +277,7 @@ abstract ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( X) ( map-reflecting-map-equivalence-relation _ f))) - is-section-inv-precomp-vector-set-quotient (succ-ℕ n) A R X f = + is-section-inv-precomp-tuple-set-quotient (succ-ℕ n) A R X f = eq-pair-Σ ( eq-htpy ( λ (a0 , a) → @@ -285,17 +285,17 @@ abstract ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) X f) ( eq-pair-eq-fiber - ( map-equiv-equiv-set-quotient-vector-quotient-map n _ _ a)) ∙ + ( map-equiv-equiv-set-quotient-tuple-quotient-map n _ _ a)) ∙ ( htpy-eq ( ap ( map-reflecting-map-equivalence-relation _) ( is-section-inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) X f)) ( a0 , a))))) ( eq-is-prop @@ -304,110 +304,110 @@ abstract ( X) ( map-reflecting-map-equivalence-relation _ f))) -section-precomp-vector-set-quotient : +section-precomp-tuple-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( section ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) ( X))) -pr1 (section-precomp-vector-set-quotient n A R X) = - inv-precomp-vector-set-quotient n A R X -pr2 (section-precomp-vector-set-quotient n A R X) = - is-section-inv-precomp-vector-set-quotient n A R X +pr1 (section-precomp-tuple-set-quotient n A R X) = + inv-precomp-tuple-set-quotient n A R X +pr2 (section-precomp-tuple-set-quotient n A R X) = + is-section-inv-precomp-tuple-set-quotient n A R X abstract - is-retraction-inv-precomp-vector-set-quotient : + is-retraction-inv-precomp-tuple-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( retraction ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) ( X))) - pr1 (is-retraction-inv-precomp-vector-set-quotient n A R X) = - inv-precomp-vector-set-quotient n A R X - pr2 (is-retraction-inv-precomp-vector-set-quotient zero-ℕ A R X) f = + pr1 (is-retraction-inv-precomp-tuple-set-quotient n A R X) = + inv-precomp-tuple-set-quotient n A R X + pr2 (is-retraction-inv-precomp-tuple-set-quotient zero-ℕ A R X) f = eq-htpy (λ where (map-raise star) → refl) - pr2 (is-retraction-inv-precomp-vector-set-quotient (succ-ℕ n) A R X) f = - ap (_∘ set-quotient-vector-product-set-quotient) + pr2 (is-retraction-inv-precomp-tuple-set-quotient (succ-ℕ n) A R X) f = + ap (_∘ set-quotient-tuple-product-set-quotient) is-inv-map-inv-equiv-f ∙ lemma-f where precomp-f : reflecting-map-equivalence-relation ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) ( type-Set X) precomp-f = precomp-Set-Quotient ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) - ( set-quotient-vector-Set (succ-ℕ n) A R) - ( reflecting-map-quotient-vector-map (succ-ℕ n) A R) X f + ( set-quotient-tuple-Set (succ-ℕ n) A R) + ( reflecting-map-quotient-tuple-map (succ-ℕ n) A R) X f - set-quotient-vector-product-set-quotient : - ( set-quotient-vector (succ-ℕ n) A R) → + set-quotient-tuple-product-set-quotient : + ( set-quotient-tuple (succ-ℕ n) A R) → ( product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) - set-quotient-vector-product-set-quotient (qa0' , qa') = - (qa0' , map-equiv (equiv-set-quotient-vector n _ _) qa') + set-quotient-tuple-product-set-quotient (qa0' , qa') = + (qa0' , map-equiv (equiv-set-quotient-tuple n _ _) qa') map-inv-equiv-f : ( product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) → ( type-Set X) map-inv-equiv-f (qa0 , qa) = - f (qa0 , map-inv-equiv (equiv-set-quotient-vector n _ _) qa) + f (qa0 , map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) - lemma-f : (map-inv-equiv-f ∘ set-quotient-vector-product-set-quotient) = f + lemma-f : (map-inv-equiv-f ∘ set-quotient-tuple-product-set-quotient) = f lemma-f = eq-htpy ( λ (qa0 , qa) → ( ap f ( eq-pair-eq-fiber ( is-retraction-map-inv-equiv - ( equiv-set-quotient-vector n _ _) + ( equiv-set-quotient-tuple n _ _) ( qa))))) is-retraction-inv-precomp-f : ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) ( X) ( precomp-Set-Quotient ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) ( product-set-quotient-Set ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) ( reflecting-map-product-quotient-map (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x)))) ( X) ( map-inv-equiv-f))) = @@ -416,7 +416,7 @@ abstract is-retraction-inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) ( X) ( map-inv-equiv-f) @@ -425,7 +425,7 @@ abstract ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-vec n A) + ( tail-functional-tuple n A) ( λ x → R (inl x))) ( X) ( precomp-f)) = @@ -434,17 +434,17 @@ abstract ap ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) - ( all-sim-equivalence-relation n (tail-functional-vec n A) + ( all-sim-equivalence-relation n (tail-functional-tuple n A) ( λ x → R (inl x))) ( X)) ( eq-pair-Σ - ( ap ( _∘ quotient-vector-map _ A R) (inv lemma-f) ∙ + ( ap ( _∘ quotient-tuple-map _ A R) (inv lemma-f) ∙ ( ap ( map-inv-equiv-f ∘_) ( eq-htpy ( λ (a0 , a) → ( eq-pair-eq-fiber - ( map-equiv-equiv-set-quotient-vector-quotient-map + ( map-equiv-equiv-set-quotient-tuple-quotient-map _ _ _ a)))))) ( eq-is-prop ( is-prop-reflects-equivalence-relation @@ -454,17 +454,17 @@ abstract ( X) _))) ∙ is-retraction-inv-precomp-f -is-set-quotient-vector-set-quotient : +is-set-quotient-tuple-set-quotient : { l1 l2 : Level} ( n : ℕ) - ( A : functional-vec (UU l1) n) + ( A : functional-tuple (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-vector-Set n A R) - ( reflecting-map-quotient-vector-map n A R) -pr1 (is-set-quotient-vector-set-quotient n A R X) = - section-precomp-vector-set-quotient n A R X -pr2 (is-set-quotient-vector-set-quotient n A R X) = - is-retraction-inv-precomp-vector-set-quotient n A R X + ( set-quotient-tuple-Set n A R) + ( reflecting-map-quotient-tuple-map n A R) +pr1 (is-set-quotient-tuple-set-quotient n A R X) = + section-precomp-tuple-set-quotient n A R X +pr2 (is-set-quotient-tuple-set-quotient n A R X) = + is-retraction-inv-precomp-tuple-set-quotient n A R X ``` diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index 883be1c3fa..0edb9b3f3d 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -6,21 +6,21 @@ module linear-algebra where open import linear-algebra.constant-matrices public -open import linear-algebra.constant-vectors public +open import linear-algebra.constant-tuples public open import linear-algebra.diagonal-matrices-on-rings public open import linear-algebra.functoriality-matrices public -open import linear-algebra.functoriality-vectors public +open import linear-algebra.functoriality-tuples public open import linear-algebra.matrices public open import linear-algebra.matrices-on-rings public open import linear-algebra.multiplication-matrices public open import linear-algebra.scalar-multiplication-matrices public -open import linear-algebra.scalar-multiplication-vectors public -open import linear-algebra.scalar-multiplication-vectors-on-rings public +open import linear-algebra.scalar-multiplication-tuples public +open import linear-algebra.scalar-multiplication-tuples-on-rings public open import linear-algebra.transposition-matrices public -open import linear-algebra.vectors public -open import linear-algebra.vectors-on-commutative-rings public -open import linear-algebra.vectors-on-commutative-semirings public -open import linear-algebra.vectors-on-euclidean-domains public -open import linear-algebra.vectors-on-rings public -open import linear-algebra.vectors-on-semirings public +open import linear-algebra.tuples public +open import linear-algebra.tuples-on-commutative-rings public +open import linear-algebra.tuples-on-commutative-semirings public +open import linear-algebra.tuples-on-euclidean-domains public +open import linear-algebra.tuples-on-rings public +open import linear-algebra.tuples-on-semirings public ``` diff --git a/src/linear-algebra/constant-matrices.lagda.md b/src/linear-algebra/constant-matrices.lagda.md index 03b95489d8..1438e41949 100644 --- a/src/linear-algebra/constant-matrices.lagda.md +++ b/src/linear-algebra/constant-matrices.lagda.md @@ -11,7 +11,7 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.constant-vectors +open import linear-algebra.constant-tuples open import linear-algebra.matrices ``` @@ -25,5 +25,5 @@ Constant matrices are matrices in which all elements are the same. ```agda constant-matrix : {l : Level} {A : UU l} {m n : ℕ} → A → matrix A m n -constant-matrix a = constant-vec (constant-vec a) +constant-matrix a = constant-tuple (constant-tuple a) ``` diff --git a/src/linear-algebra/constant-tuples.lagda.md b/src/linear-algebra/constant-tuples.lagda.md index 11b8372bc9..52a20de08e 100644 --- a/src/linear-algebra/constant-tuples.lagda.md +++ b/src/linear-algebra/constant-tuples.lagda.md @@ -1,7 +1,7 @@ -# Diagonal vectors +# Diagonal tuples ```agda -module linear-algebra.constant-vectors where +module linear-algebra.constant-tuples where ```
Imports @@ -11,20 +11,20 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples ```
## Idea -Diagonal vectors are vectors on the diagonal, i.e., they are vectors of which -all coefficients are equal. +Diagonal tuples are tuples on the diagonal, i.e., they are tuples of which all +coefficients are equal. ## Definition ```agda -constant-vec : {l : Level} {A : UU l} {n : ℕ} → A → vec A n -constant-vec {n = zero-ℕ} _ = empty-vec -constant-vec {n = succ-ℕ n} x = x ∷ (constant-vec x) +constant-tuple : {l : Level} {A : UU l} {n : ℕ} → A → tuple A n +constant-tuple {n = zero-ℕ} _ = empty-tuple +constant-tuple {n = succ-ℕ n} x = x ∷ (constant-tuple x) ``` diff --git a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md index c15d89761a..a5c9a1fc58 100644 --- a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md +++ b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md @@ -11,11 +11,11 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.constant-vectors -open import linear-algebra.functoriality-vectors +open import linear-algebra.constant-tuples +open import linear-algebra.functoriality-tuples open import linear-algebra.matrices-on-rings -open import linear-algebra.vectors -open import linear-algebra.vectors-on-rings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-rings open import ring-theory.rings ``` @@ -31,11 +31,11 @@ module _ {l : Level} (R : Ring l) where - diagonal-matrix-Ring : (n : ℕ) → vec-Ring R n → matrix-Ring R n n - diagonal-matrix-Ring zero-ℕ v = empty-vec + diagonal-matrix-Ring : (n : ℕ) → tuple-Ring R n → matrix-Ring R n n + diagonal-matrix-Ring zero-ℕ v = empty-tuple diagonal-matrix-Ring (succ-ℕ n) (x ∷ v) = - ( x ∷ zero-vec-Ring R) ∷ - ( map-vec (λ v' → zero-Ring R ∷ v') (diagonal-matrix-Ring n v)) + ( x ∷ zero-tuple-Ring R) ∷ + ( map-tuple (λ v' → zero-Ring R ∷ v') (diagonal-matrix-Ring n v)) ``` ### Scalar matrices @@ -46,7 +46,7 @@ module _ where scalar-matrix-Ring : (n : ℕ) → type-Ring R → matrix-Ring R n n - scalar-matrix-Ring n x = diagonal-matrix-Ring R n (constant-vec x) + scalar-matrix-Ring n x = diagonal-matrix-Ring R n (constant-tuple x) identity-matrix-Ring : (n : ℕ) → matrix-Ring R n n identity-matrix-Ring n = scalar-matrix-Ring n (one-Ring R) diff --git a/src/linear-algebra/functoriality-matrices.lagda.md b/src/linear-algebra/functoriality-matrices.lagda.md index 1c0b419bd0..0219c5f9ea 100644 --- a/src/linear-algebra/functoriality-matrices.lagda.md +++ b/src/linear-algebra/functoriality-matrices.lagda.md @@ -11,7 +11,7 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.functoriality-vectors +open import linear-algebra.functoriality-tuples open import linear-algebra.matrices ``` @@ -29,7 +29,7 @@ module _ where map-matrix : {m n : ℕ} → matrix A m n → matrix B m n - map-matrix = map-vec (map-vec f) + map-matrix = map-tuple (map-tuple f) ``` ### Binar maps @@ -41,5 +41,5 @@ module _ binary-map-matrix : {m n : ℕ} → matrix A m n → matrix B m n → matrix C m n - binary-map-matrix = binary-map-vec (binary-map-vec f) + binary-map-matrix = binary-map-tuple (binary-map-tuple f) ``` diff --git a/src/linear-algebra/functoriality-tuples.lagda.md b/src/linear-algebra/functoriality-tuples.lagda.md index 61c74c2380..ba845c2fdf 100644 --- a/src/linear-algebra/functoriality-tuples.lagda.md +++ b/src/linear-algebra/functoriality-tuples.lagda.md @@ -1,7 +1,7 @@ -# Functoriality of the type of vectors +# Functoriality of the type of tuples ```agda -module linear-algebra.functoriality-vectors where +module linear-algebra.functoriality-tuples where ```
Imports @@ -19,7 +19,7 @@ open import foundation.postcomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.vectors +open import linear-algebra.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -28,71 +28,71 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Any map `f : A → B` determines a map `vec A n → vec B n` for every `n`. +Any map `f : A → B` determines a map `tuple A n → tuple B n` for every `n`. ## Definition -### Functoriality of the type of listed vectors +### Functoriality of the type of listed tuples ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where - map-vec : {n : ℕ} → (A → B) → vec A n → vec B n - map-vec _ empty-vec = empty-vec - map-vec f (x ∷ xs) = f x ∷ map-vec f xs + map-tuple : {n : ℕ} → (A → B) → tuple A n → tuple B n + map-tuple _ empty-tuple = empty-tuple + map-tuple f (x ∷ xs) = f x ∷ map-tuple f xs - htpy-vec : - {n : ℕ} {f g : A → B} → (f ~ g) → map-vec {n = n} f ~ map-vec {n = n} g - htpy-vec H empty-vec = refl - htpy-vec H (x ∷ v) = ap-binary _∷_ (H x) (htpy-vec H v) + htpy-tuple : + {n : ℕ} {f g : A → B} → (f ~ g) → map-tuple {n = n} f ~ map-tuple {n = n} g + htpy-tuple H empty-tuple = refl + htpy-tuple H (x ∷ v) = ap-binary _∷_ (H x) (htpy-tuple H v) ``` -### Binary functoriality of the type of listed vectors +### Binary functoriality of the type of listed tuples ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} where - binary-map-vec : - {n : ℕ} → (A → B → C) → vec A n → vec B n → vec C n - binary-map-vec f empty-vec empty-vec = empty-vec - binary-map-vec f (x ∷ v) (y ∷ w) = f x y ∷ binary-map-vec f v w + binary-map-tuple : + {n : ℕ} → (A → B → C) → tuple A n → tuple B n → tuple C n + binary-map-tuple f empty-tuple empty-tuple = empty-tuple + binary-map-tuple f (x ∷ v) (y ∷ w) = f x y ∷ binary-map-tuple f v w ``` -### Functoriality of the type of functional vectors +### Functoriality of the type of functional tuples ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where - map-functional-vec : - (n : ℕ) → (A → B) → functional-vec A n → functional-vec B n - map-functional-vec n f v = f ∘ v + map-functional-tuple : + (n : ℕ) → (A → B) → functional-tuple A n → functional-tuple B n + map-functional-tuple n f v = f ∘ v - htpy-functional-vec : + htpy-functional-tuple : (n : ℕ) {f g : A → B} → (f ~ g) → - map-functional-vec n f ~ map-functional-vec n g - htpy-functional-vec n = htpy-postcomp (Fin n) + map-functional-tuple n f ~ map-functional-tuple n g + htpy-functional-tuple n = htpy-postcomp (Fin n) ``` -### Binary functoriality of the type of functional vectors +### Binary functoriality of the type of functional tuples ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} where - binary-map-functional-vec : + binary-map-functional-tuple : (n : ℕ) → (A → B → C) → - functional-vec A n → functional-vec B n → functional-vec C n - binary-map-functional-vec n f v w i = f (v i) (w i) + functional-tuple A n → functional-tuple B n → functional-tuple C n + binary-map-functional-tuple n f v w i = f (v i) (w i) ``` -### Link between functoriality of the type of vectors and of the type of functional vectors +### Link between functoriality of the type of tuples and of the type of functional tuples ```agda module _ @@ -100,29 +100,29 @@ module _ (f : A → B) where - map-vec-map-functional-vec : - (n : ℕ) (v : vec A n) → - listed-vec-functional-vec + map-tuple-map-functional-tuple : + (n : ℕ) (v : tuple A n) → + listed-tuple-functional-tuple ( n) - ( map-functional-vec n f (functional-vec-vec n v)) = - map-vec f v - map-vec-map-functional-vec zero-ℕ empty-vec = refl - map-vec-map-functional-vec (succ-ℕ n) (x ∷ v) = - eq-Eq-vec + ( map-functional-tuple n f (functional-tuple-tuple n v)) = + map-tuple f v + map-tuple-map-functional-tuple zero-ℕ empty-tuple = refl + map-tuple-map-functional-tuple (succ-ℕ n) (x ∷ v) = + eq-Eq-tuple ( succ-ℕ n) - ( listed-vec-functional-vec + ( listed-tuple-functional-tuple ( succ-ℕ n) - ( map-functional-vec + ( map-functional-tuple ( succ-ℕ n) ( f) - ( functional-vec-vec (succ-ℕ n) (x ∷ v)))) - ( map-vec f (x ∷ v)) + ( functional-tuple-tuple (succ-ℕ n) (x ∷ v)))) + ( map-tuple f (x ∷ v)) ( refl , - Eq-eq-vec + Eq-eq-tuple ( n) - ( listed-vec-functional-vec + ( listed-tuple-functional-tuple ( n) - ( map-functional-vec n f (functional-vec-vec n v))) - ( map-vec f v) - ( map-vec-map-functional-vec n v)) + ( map-functional-tuple n f (functional-tuple-tuple n v))) + ( map-tuple f v) + ( map-tuple-map-functional-tuple n v)) ``` diff --git a/src/linear-algebra/matrices-on-rings.lagda.md b/src/linear-algebra/matrices-on-rings.lagda.md index e14bfa5210..7aff600012 100644 --- a/src/linear-algebra/matrices-on-rings.lagda.md +++ b/src/linear-algebra/matrices-on-rings.lagda.md @@ -16,8 +16,8 @@ open import foundation.universe-levels open import linear-algebra.constant-matrices open import linear-algebra.functoriality-matrices open import linear-algebra.matrices -open import linear-algebra.vectors -open import linear-algebra.vectors-on-rings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-rings open import ring-theory.rings ``` @@ -73,10 +73,10 @@ module _ Id ( add-matrix-Ring R (add-matrix-Ring R A B) C) ( add-matrix-Ring R A (add-matrix-Ring R B C)) - associative-add-matrix-Ring empty-vec empty-vec empty-vec = refl + associative-add-matrix-Ring empty-tuple empty-tuple empty-tuple = refl associative-add-matrix-Ring (v ∷ A) (w ∷ B) (z ∷ C) = ap-binary _∷_ - ( associative-add-vec-Ring R v w z) + ( associative-add-tuple-Ring R v w z) ( associative-add-matrix-Ring A B C) ``` @@ -90,10 +90,10 @@ module _ commutative-add-matrix-Ring : {m n : ℕ} (A B : matrix-Ring R m n) → Id (add-matrix-Ring R A B) (add-matrix-Ring R B A) - commutative-add-matrix-Ring empty-vec empty-vec = refl + commutative-add-matrix-Ring empty-tuple empty-tuple = refl commutative-add-matrix-Ring (v ∷ A) (w ∷ B) = ap-binary _∷_ - ( commutative-add-vec-Ring R v w) + ( commutative-add-tuple-Ring R v w) ( commutative-add-matrix-Ring A B) ``` @@ -107,10 +107,10 @@ module _ left-unit-law-add-matrix-Ring : {m n : ℕ} (A : matrix-Ring R m n) → Id (add-matrix-Ring R (zero-matrix-Ring R) A) A - left-unit-law-add-matrix-Ring empty-vec = refl + left-unit-law-add-matrix-Ring empty-tuple = refl left-unit-law-add-matrix-Ring (v ∷ A) = ap-binary _∷_ - ( left-unit-law-add-vec-Ring R v) + ( left-unit-law-add-tuple-Ring R v) ( left-unit-law-add-matrix-Ring A) ``` @@ -124,9 +124,9 @@ module _ right-unit-law-add-matrix-Ring : {m n : ℕ} (A : matrix-Ring R m n) → Id (add-matrix-Ring R A (zero-matrix-Ring R)) A - right-unit-law-add-matrix-Ring empty-vec = refl + right-unit-law-add-matrix-Ring empty-tuple = refl right-unit-law-add-matrix-Ring (v ∷ A) = ap-binary _∷_ - ( right-unit-law-add-vec-Ring R v) + ( right-unit-law-add-tuple-Ring R v) ( right-unit-law-add-matrix-Ring A) ``` diff --git a/src/linear-algebra/matrices.lagda.md b/src/linear-algebra/matrices.lagda.md index f95efc19d8..e7ad736e99 100644 --- a/src/linear-algebra/matrices.lagda.md +++ b/src/linear-algebra/matrices.lagda.md @@ -15,8 +15,8 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples ```
@@ -24,8 +24,8 @@ open import linear-algebra.vectors ## Idea An `(m × n)`-matrix of elements in `A` is an arrangement of elements of A with -`m` rows and `n` columns. In other words, a matrix is vector of length `m` of -vectors of length `n` of elements of `A`. +`m` rows and `n` columns. In other words, a matrix is tuple of length `m` of +tuples of length `n` of elements of `A`. ## Definitions @@ -33,14 +33,14 @@ vectors of length `n` of elements of `A`. ```agda matrix : {l : Level} (A : UU l) → ℕ → ℕ → UU l -matrix A m n = vec (vec A n) m +matrix A m n = tuple (tuple A n) m ``` ### The top row of a matrix ```agda top-row-matrix : - {l : Level} {m n : ℕ} {A : UU l} → matrix A (succ-ℕ m) n → vec A n + {l : Level} {m n : ℕ} {A : UU l} → matrix A (succ-ℕ m) n → tuple A n top-row-matrix (v ∷ M) = v ``` @@ -48,8 +48,8 @@ top-row-matrix (v ∷ M) = v ```agda left-column-matrix : - {l : Level} {m n : ℕ} {A : UU l} → matrix A m (succ-ℕ n) → vec A m -left-column-matrix = map-vec head-vec + {l : Level} {m n : ℕ} {A : UU l} → matrix A m (succ-ℕ n) → tuple A m +left-column-matrix = map-tuple head-tuple ``` ### The vertical tail of a matrix @@ -57,7 +57,7 @@ left-column-matrix = map-vec head-vec ```agda vertical-tail-matrix : {l : Level} {m n : ℕ} {A : UU l} → matrix A (succ-ℕ m) n → matrix A m n -vertical-tail-matrix M = tail-vec M +vertical-tail-matrix M = tail-tuple M ``` ### The horizontal tail of a matrix @@ -65,7 +65,7 @@ vertical-tail-matrix M = tail-vec M ```agda horizontal-tail-matrix : {l : Level} {m n : ℕ} {A : UU l} → matrix A m (succ-ℕ n) → matrix A m n -horizontal-tail-matrix = map-vec tail-vec +horizontal-tail-matrix = map-tuple tail-tuple ``` ### The vertically empty matrix @@ -73,12 +73,12 @@ horizontal-tail-matrix = map-vec tail-vec ```agda vertically-empty-matrix : {l : Level} {n : ℕ} {A : UU l} → matrix A 0 n -vertically-empty-matrix = empty-vec +vertically-empty-matrix = empty-tuple eq-vertically-empty-matrix : {l : Level} {n : ℕ} {A : UU l} (x : matrix A 0 n) → Id vertically-empty-matrix x -eq-vertically-empty-matrix empty-vec = refl +eq-vertically-empty-matrix empty-tuple = refl is-contr-matrix-zero-ℕ : {l : Level} {n : ℕ} {A : UU l} → is-contr (matrix A 0 n) @@ -91,14 +91,15 @@ pr2 is-contr-matrix-zero-ℕ = eq-vertically-empty-matrix ```agda horizontally-empty-matrix : {l : Level} {m : ℕ} {A : UU l} → matrix A m 0 -horizontally-empty-matrix {m = zero-ℕ} = empty-vec -horizontally-empty-matrix {m = succ-ℕ m} = empty-vec ∷ horizontally-empty-matrix +horizontally-empty-matrix {m = zero-ℕ} = empty-tuple +horizontally-empty-matrix {m = succ-ℕ m} = + empty-tuple ∷ horizontally-empty-matrix eq-horizontally-empty-matrix : {l : Level} {m : ℕ} {A : UU l} (x : matrix A m 0) → Id horizontally-empty-matrix x -eq-horizontally-empty-matrix {m = zero-ℕ} empty-vec = refl -eq-horizontally-empty-matrix {m = succ-ℕ m} (empty-vec ∷ M) = +eq-horizontally-empty-matrix {m = zero-ℕ} empty-tuple = refl +eq-horizontally-empty-matrix {m = succ-ℕ m} (empty-tuple ∷ M) = ap-binary _∷_ refl (eq-horizontally-empty-matrix M) is-contr-matrix-zero-ℕ' : diff --git a/src/linear-algebra/multiplication-matrices.lagda.md b/src/linear-algebra/multiplication-matrices.lagda.md index 4492c545b6..361034808b 100644 --- a/src/linear-algebra/multiplication-matrices.lagda.md +++ b/src/linear-algebra/multiplication-matrices.lagda.md @@ -18,20 +18,20 @@ module linear-algebra.multiplication-matrices where ```agda {- -mul-vector-matrix : {l : Level} → {K : UU l} → {m n : ℕ} → +mul-tuple-matrix : {l : Level} → {K : UU l} → {m n : ℕ} → (K → K → K) → (K → K → K) → K → - vec K m → Mat K m n → vec K n -mul-vector-matrix _ _ zero empty-vec empty-vec = diagonal-product zero -mul-vector-matrix mulK addK zero (x ∷ xs) (v ∷ vs) = - add-vec addK (mul-scalar-vector mulK x v) - (mul-vector-matrix mulK addK zero xs vs) + tuple K m → Mat K m n → tuple K n +mul-tuple-matrix _ _ zero empty-tuple empty-tuple = diagonal-product zero +mul-tuple-matrix mulK addK zero (x ∷ xs) (v ∷ vs) = + add-tuple addK (mul-scalar-tuple mulK x v) + (mul-tuple-matrix mulK addK zero xs vs) mul-Mat : {l' : Level} → {K : UU l'} → {l m n : ℕ} → (K → K → K) → (K → K → K) → K → Mat K l m → Mat K m n → Mat K l n -mul-Mat _ _ zero empty-vec _ = empty-vec +mul-Mat _ _ zero empty-tuple _ = empty-tuple mul-Mat mulK addK zero (v ∷ vs) m = - mul-vector-matrix mulK addK zero v m + mul-tuple-matrix mulK addK zero v m ∷ mul-Mat mulK addK zero vs m -} ``` @@ -48,7 +48,7 @@ mul-transpose : Id (transpose (mul-Mat mulK addK zero a b)) (mul-Mat mulK addK zero (transpose b) (transpose a)) -mul-transpose mulK-comm empty-vec b = {!!} +mul-transpose mulK-comm empty-tuple b = {!!} mul-transpose mulK-comm (a ∷ as) b = {!!} -} ``` @@ -69,59 +69,59 @@ module _ {zero : K} where - left-distributive-vector-matrix : + left-distributive-tuple-matrix : {n m : ℕ} → ({l : ℕ} → Id (diagonal-product {n = l} zero) - (add-vec addK (diagonal-product zero) (diagonal-product zero))) → + (add-tuple addK (diagonal-product zero) (diagonal-product zero))) → ((x y z : K) → (Id (mulK x (addK y z)) (addK (mulK x y) (mulK x z)))) → ((x y : K) → Id (addK x y) (addK y x)) → ((x y z : K) → Id (addK x (addK y z)) (addK (addK x y) z)) → - (a : vec K n) (b : Mat K n m) (c : Mat K n m) → - Id (mul-vector-matrix mulK addK zero a (add-Mat addK b c)) - (add-vec addK (mul-vector-matrix mulK addK zero a b) - (mul-vector-matrix mulK addK zero a c)) - left-distributive-vector-matrix id-vec _ _ _ empty-vec empty-vec empty-vec = - id-vec - left-distributive-vector-matrix - id-vec k-distr addK-comm addK-associative (a ∷ as) (r1 ∷ r1s) (r2 ∷ r2s) = + (a : tuple K n) (b : Mat K n m) (c : Mat K n m) → + Id (mul-tuple-matrix mulK addK zero a (add-Mat addK b c)) + (add-tuple addK (mul-tuple-matrix mulK addK zero a b) + (mul-tuple-matrix mulK addK zero a c)) + left-distributive-tuple-matrix id-tuple _ _ _ empty-tuple empty-tuple empty-tuple = + id-tuple + left-distributive-tuple-matrix + id-tuple k-distr addK-comm addK-associative (a ∷ as) (r1 ∷ r1s) (r2 ∷ r2s) = ap ( λ r → - add-vec addK r - (mul-vector-matrix mulK addK zero as (add-Mat addK r1s r2s))) - (left-distributive-scalar-vector {zero = zero} k-distr a r1 r2) - ∙ (ap (λ r → add-vec addK (add-vec addK (map-vec (mulK a) r1) - (mul-scalar-vector mulK a r2)) r) - (left-distributive-vector-matrix - id-vec k-distr addK-comm addK-associative as r1s r2s) + add-tuple addK r + (mul-tuple-matrix mulK addK zero as (add-Mat addK r1s r2s))) + (left-distributive-scalar-tuple {zero = zero} k-distr a r1 r2) + ∙ (ap (λ r → add-tuple addK (add-tuple addK (map-tuple (mulK a) r1) + (mul-scalar-tuple mulK a r2)) r) + (left-distributive-tuple-matrix + id-tuple k-distr addK-comm addK-associative as r1s r2s) ∙ lemma-shuffle) where lemma-shuffle : {n : ℕ} → - {x y z w : vec K n} → - Id (add-vec addK (add-vec addK x y) (add-vec addK z w)) - (add-vec addK (add-vec addK x z) (add-vec addK y w)) + {x y z w : tuple K n} → + Id (add-tuple addK (add-tuple addK x y) (add-tuple addK z w)) + (add-tuple addK (add-tuple addK x z) (add-tuple addK y w)) lemma-shuffle {x = x} {y = y} {z = z} {w = w} = - associative-add-vectors {zero = zero} addK-associative (add-vec addK x y) z w - ∙ (commutative-add-vectors - {zero = zero} addK-comm (add-vec addK (add-vec addK x y) z) w - ∙ (associative-add-vectors - {zero = zero} addK-associative w (add-vec addK x y) z - ∙ (ap (λ v → add-vec addK (add-vec addK w v) z) - (commutative-add-vectors {zero = zero} addK-comm x y) - ∙ (ap (λ v → add-vec addK v z) - (associative-add-vectors {zero = zero} addK-associative w y x) - ∙ (ap (λ v → add-vec addK (add-vec addK v x) z) - (commutative-add-vectors {zero = zero} addK-comm w y) - ∙ (inv (associative-add-vectors - {zero = zero} addK-associative (add-vec addK y w) x z) - ∙ commutative-add-vectors - {zero = zero} addK-comm (add-vec addK y w) (add-vec addK x z))))))) + associative-add-tuples {zero = zero} addK-associative (add-tuple addK x y) z w + ∙ (commutative-add-tuples + {zero = zero} addK-comm (add-tuple addK (add-tuple addK x y) z) w + ∙ (associative-add-tuples + {zero = zero} addK-associative w (add-tuple addK x y) z + ∙ (ap (λ v → add-tuple addK (add-tuple addK w v) z) + (commutative-add-tuples {zero = zero} addK-comm x y) + ∙ (ap (λ v → add-tuple addK v z) + (associative-add-tuples {zero = zero} addK-associative w y x) + ∙ (ap (λ v → add-tuple addK (add-tuple addK v x) z) + (commutative-add-tuples {zero = zero} addK-comm w y) + ∙ (inv (associative-add-tuples + {zero = zero} addK-associative (add-tuple addK y w) x z) + ∙ commutative-add-tuples + {zero = zero} addK-comm (add-tuple addK y w) (add-tuple addK x z))))))) left-distributive-matrices : {n m p : ℕ} → ({l : ℕ} → Id (diagonal-product {n = l} zero) - (add-vec addK (diagonal-product zero) (diagonal-product zero))) → + (add-tuple addK (diagonal-product zero) (diagonal-product zero))) → ((x y z : K) → (Id (mulK x (addK y z)) (addK (mulK x y) (mulK x z)))) → ((x y : K) → Id (addK x y) (addK y x)) → ((x y z : K) → Id (addK x (addK y z)) (addK (addK x y) z)) → @@ -129,15 +129,15 @@ module _ Id (mul-Mat mulK addK zero a (add-Mat addK b c)) (add-Mat addK (mul-Mat mulK addK zero a b) (mul-Mat mulK addK zero a c)) - left-distributive-matrices _ _ _ _ empty-vec _ _ = refl - left-distributive-matrices id-vec k-distr addK-comm addK-associative (a ∷ as) b c = + left-distributive-matrices _ _ _ _ empty-tuple _ _ = refl + left-distributive-matrices id-tuple k-distr addK-comm addK-associative (a ∷ as) b c = (ap (λ r → r ∷ mul-Mat mulK addK zero as (add-Mat addK b c)) - (left-distributive-vector-matrix - id-vec k-distr addK-comm addK-associative a b c)) - ∙ ap (_∷_ (add-vec addK (mul-vector-matrix mulK addK zero a b) - (mul-vector-matrix mulK addK zero a c))) + (left-distributive-tuple-matrix + id-tuple k-distr addK-comm addK-associative a b c)) + ∙ ap (_∷_ (add-tuple addK (mul-tuple-matrix mulK addK zero a b) + (mul-tuple-matrix mulK addK zero a c))) (left-distributive-matrices - id-vec k-distr addK-comm addK-associative as b c) + id-tuple k-distr addK-comm addK-associative as b c) -} {- TODO: right distributivity @@ -146,7 +146,7 @@ module _ ({l : ℕ} → Id (diagonal-product {n = l} zero) - (add-vec addK (diagonal-product zero) (diagonal-product zero))) → + (add-tuple addK (diagonal-product zero) (diagonal-product zero))) → ((x y z : K) → (Id (mulK (addK x y) z) (addK (mulK x z) (mulK y z)))) → ((x y : K) → Id (addK x y) (addK y x)) → ((x y z : K) → Id (addK x (addK y z)) (addK (addK x y) z)) → @@ -154,13 +154,13 @@ module _ Id (mul-Mat mulK addK zero (add-Mat addK b c) d) (add-Mat addK (mul-Mat mulK addK zero b d) (mul-Mat mulK addK zero c d)) - right-distributive-matrices _ _ _ _ empty-vec empty-vec _ = refl + right-distributive-matrices _ _ _ _ empty-tuple empty-tuple _ = refl right-distributive-matrices {p = .zero-ℕ} - id-vec k-distr addK-comm addK-associative (b ∷ bs) (c ∷ cs) empty-vec = + id-tuple k-distr addK-comm addK-associative (b ∷ bs) (c ∷ cs) empty-tuple = {!!} right-distributive-matrices - id-vec k-distr addK-comm addK-associative (b ∷ bs) (c ∷ cs) (d ∷ ds) = + id-tuple k-distr addK-comm addK-associative (b ∷ bs) (c ∷ cs) (d ∷ ds) = {!!} -- this might also need a proof that zero is the additive identity diff --git a/src/linear-algebra/scalar-multiplication-matrices.lagda.md b/src/linear-algebra/scalar-multiplication-matrices.lagda.md index 460f312973..e911d6a34f 100644 --- a/src/linear-algebra/scalar-multiplication-matrices.lagda.md +++ b/src/linear-algebra/scalar-multiplication-matrices.lagda.md @@ -12,7 +12,7 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels open import linear-algebra.matrices -open import linear-algebra.scalar-multiplication-vectors +open import linear-algebra.scalar-multiplication-tuples ```
@@ -21,5 +21,5 @@ open import linear-algebra.scalar-multiplication-vectors scalar-mul-matrix : {l1 l2 : Level} {B : UU l1} {A : UU l2} {m n : ℕ} → (B → A → A) → B → matrix A m n → matrix A m n -scalar-mul-matrix μ = scalar-mul-vec (scalar-mul-vec μ) +scalar-mul-matrix μ = scalar-mul-tuple (scalar-mul-tuple μ) ``` diff --git a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md index b4d616f839..157e8fb44b 100644 --- a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md @@ -1,7 +1,7 @@ -# Scalar multiplication of vectors on rings +# Scalar multiplication of tuples on rings ```agda -module linear-algebra.scalar-multiplication-vectors-on-rings where +module linear-algebra.scalar-multiplication-tuples-on-rings where ```
Imports @@ -17,8 +17,8 @@ open import foundation.universe-levels open import group-theory.endomorphism-rings-abelian-groups open import group-theory.homomorphisms-abelian-groups -open import linear-algebra.vectors -open import linear-algebra.vectors-on-rings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-rings open import ring-theory.homomorphisms-rings open import ring-theory.modules-rings @@ -29,84 +29,87 @@ open import ring-theory.rings ## Definition -### Scalar multiplication of vectors on rings +### Scalar multiplication of tuples on rings ```agda module _ {l : Level} (R : Ring l) where - scalar-mul-vec-Ring : {n : ℕ} (r : type-Ring R) → vec-Ring R n → vec-Ring R n - scalar-mul-vec-Ring r empty-vec = empty-vec - scalar-mul-vec-Ring r (x ∷ v) = mul-Ring R r x ∷ scalar-mul-vec-Ring r v - - associative-scalar-mul-vec-Ring : - {n : ℕ} (r s : type-Ring R) (v : vec-Ring R n) → - scalar-mul-vec-Ring (mul-Ring R r s) v = - scalar-mul-vec-Ring r (scalar-mul-vec-Ring s v) - associative-scalar-mul-vec-Ring r s empty-vec = refl - associative-scalar-mul-vec-Ring r s (x ∷ v) = + scalar-mul-tuple-Ring : + {n : ℕ} (r : type-Ring R) → tuple-Ring R n → tuple-Ring R n + scalar-mul-tuple-Ring r empty-tuple = empty-tuple + scalar-mul-tuple-Ring r (x ∷ v) = mul-Ring R r x ∷ scalar-mul-tuple-Ring r v + + associative-scalar-mul-tuple-Ring : + {n : ℕ} (r s : type-Ring R) (v : tuple-Ring R n) → + scalar-mul-tuple-Ring (mul-Ring R r s) v = + scalar-mul-tuple-Ring r (scalar-mul-tuple-Ring s v) + associative-scalar-mul-tuple-Ring r s empty-tuple = refl + associative-scalar-mul-tuple-Ring r s (x ∷ v) = ap-binary _∷_ ( associative-mul-Ring R r s x) - ( associative-scalar-mul-vec-Ring r s v) - - unit-law-scalar-mul-vec-Ring : - {n : ℕ} (v : vec-Ring R n) → scalar-mul-vec-Ring (one-Ring R) v = v - unit-law-scalar-mul-vec-Ring empty-vec = refl - unit-law-scalar-mul-vec-Ring (x ∷ v) = - ap-binary _∷_ (left-unit-law-mul-Ring R x) (unit-law-scalar-mul-vec-Ring v) - - left-distributive-scalar-mul-add-vec-Ring : - {n : ℕ} (r : type-Ring R) (v1 v2 : vec-Ring R n) → - scalar-mul-vec-Ring r (add-vec-Ring R v1 v2) = - add-vec-Ring R (scalar-mul-vec-Ring r v1) (scalar-mul-vec-Ring r v2) - left-distributive-scalar-mul-add-vec-Ring r empty-vec empty-vec = refl - left-distributive-scalar-mul-add-vec-Ring r (x ∷ v1) (y ∷ v2) = + ( associative-scalar-mul-tuple-Ring r s v) + + unit-law-scalar-mul-tuple-Ring : + {n : ℕ} (v : tuple-Ring R n) → scalar-mul-tuple-Ring (one-Ring R) v = v + unit-law-scalar-mul-tuple-Ring empty-tuple = refl + unit-law-scalar-mul-tuple-Ring (x ∷ v) = + ap-binary _∷_ + ( left-unit-law-mul-Ring R x) + ( unit-law-scalar-mul-tuple-Ring v) + + left-distributive-scalar-mul-add-tuple-Ring : + {n : ℕ} (r : type-Ring R) (v1 v2 : tuple-Ring R n) → + scalar-mul-tuple-Ring r (add-tuple-Ring R v1 v2) = + add-tuple-Ring R (scalar-mul-tuple-Ring r v1) (scalar-mul-tuple-Ring r v2) + left-distributive-scalar-mul-add-tuple-Ring r empty-tuple empty-tuple = refl + left-distributive-scalar-mul-add-tuple-Ring r (x ∷ v1) (y ∷ v2) = ap-binary _∷_ ( left-distributive-mul-add-Ring R r x y) - ( left-distributive-scalar-mul-add-vec-Ring r v1 v2) - - right-distributive-scalar-mul-add-vec-Ring : - {n : ℕ} (r s : type-Ring R) (v : vec-Ring R n) → - scalar-mul-vec-Ring (add-Ring R r s) v = - add-vec-Ring R (scalar-mul-vec-Ring r v) (scalar-mul-vec-Ring s v) - right-distributive-scalar-mul-add-vec-Ring r s empty-vec = refl - right-distributive-scalar-mul-add-vec-Ring r s (x ∷ v) = + ( left-distributive-scalar-mul-add-tuple-Ring r v1 v2) + + right-distributive-scalar-mul-add-tuple-Ring : + {n : ℕ} (r s : type-Ring R) (v : tuple-Ring R n) → + scalar-mul-tuple-Ring (add-Ring R r s) v = + add-tuple-Ring R (scalar-mul-tuple-Ring r v) (scalar-mul-tuple-Ring s v) + right-distributive-scalar-mul-add-tuple-Ring r s empty-tuple = refl + right-distributive-scalar-mul-add-tuple-Ring r s (x ∷ v) = ap-binary _∷_ ( right-distributive-mul-add-Ring R r s x) - ( right-distributive-scalar-mul-add-vec-Ring r s v) + ( right-distributive-scalar-mul-add-tuple-Ring r s v) ``` ## Properties -### Scalar multiplication defines an `Ab`-endomorphism of `vec-Ring`s, and this mapping is a ring homomorphism `R → End(vec R n)` +### Scalar multiplication defines an `Ab`-endomorphism of `tuple-Ring`s, and this mapping is a ring homomorphism `R → End(tuple R n)` ```agda - scalar-mul-vec-Ring-endomorphism : - (n : ℕ) (r : type-Ring R) → hom-Ab (vec-Ring-Ab R n) (vec-Ring-Ab R n) - pr1 (scalar-mul-vec-Ring-endomorphism n r) = scalar-mul-vec-Ring r - pr2 (scalar-mul-vec-Ring-endomorphism n r) {x} {y} = - left-distributive-scalar-mul-add-vec-Ring r x y + scalar-mul-tuple-Ring-endomorphism : + (n : ℕ) (r : type-Ring R) → hom-Ab (tuple-Ring-Ab R n) (tuple-Ring-Ab R n) + pr1 (scalar-mul-tuple-Ring-endomorphism n r) = scalar-mul-tuple-Ring r + pr2 (scalar-mul-tuple-Ring-endomorphism n r) {x} {y} = + left-distributive-scalar-mul-add-tuple-Ring r x y scalar-mul-hom-Ring : - (n : ℕ) → hom-Ring R (endomorphism-ring-Ab (vec-Ring-Ab R n)) - pr1 (pr1 (scalar-mul-hom-Ring n)) = scalar-mul-vec-Ring-endomorphism n + (n : ℕ) → hom-Ring R (endomorphism-ring-Ab (tuple-Ring-Ab R n)) + pr1 (pr1 (scalar-mul-hom-Ring n)) = scalar-mul-tuple-Ring-endomorphism n pr2 (pr1 (scalar-mul-hom-Ring n)) {k1} {k2} = eq-htpy-hom-Ab - ( vec-Ring-Ab R n) - ( vec-Ring-Ab R n) - ( right-distributive-scalar-mul-add-vec-Ring k1 k2) + ( tuple-Ring-Ab R n) + ( tuple-Ring-Ab R n) + ( right-distributive-scalar-mul-add-tuple-Ring k1 k2) pr1 (pr2 (scalar-mul-hom-Ring n)) {k1} {k2} = eq-htpy-hom-Ab - ( vec-Ring-Ab R n) - ( vec-Ring-Ab R n) - ( associative-scalar-mul-vec-Ring k1 k2) + ( tuple-Ring-Ab R n) + ( tuple-Ring-Ab R n) + ( associative-scalar-mul-tuple-Ring k1 k2) pr2 (pr2 (scalar-mul-hom-Ring n)) = eq-htpy-hom-Ab - ( vec-Ring-Ab R n) - ( vec-Ring-Ab R n) - ( unit-law-scalar-mul-vec-Ring) + ( tuple-Ring-Ab R n) + ( tuple-Ring-Ab R n) + ( unit-law-scalar-mul-tuple-Ring) - vec-left-module-Ring : (n : ℕ) → left-module-Ring l R - vec-left-module-Ring n = vec-Ring-Ab R n , scalar-mul-hom-Ring n + tuple-left-module-Ring : (n : ℕ) → left-module-Ring l R + tuple-left-module-Ring n = tuple-Ring-Ab R n , scalar-mul-hom-Ring n ``` diff --git a/src/linear-algebra/scalar-multiplication-tuples.lagda.md b/src/linear-algebra/scalar-multiplication-tuples.lagda.md index b6f55dd1cd..e72e663610 100644 --- a/src/linear-algebra/scalar-multiplication-tuples.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples.lagda.md @@ -1,7 +1,7 @@ -# Scalar multiplication of vectors +# Scalar multiplication of tuples ```agda -module linear-algebra.scalar-multiplication-vectors where +module linear-algebra.scalar-multiplication-tuples where ```
Imports @@ -11,8 +11,8 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples ```
@@ -20,13 +20,13 @@ open import linear-algebra.vectors ## Idea Any operation `B → A → A` for some type `B` of formal scalars induces an -operation `B → vec n A → vec n A`. +operation `B → tuple n A → tuple n A`. ## Definition ```agda -scalar-mul-vec : +scalar-mul-tuple : {l1 l2 : Level} {B : UU l1} {A : UU l2} {n : ℕ} → - (B → A → A) → B → vec A n → vec A n -scalar-mul-vec μ x = map-vec (μ x) + (B → A → A) → B → tuple A n → tuple A n +scalar-mul-tuple μ x = map-tuple (μ x) ``` diff --git a/src/linear-algebra/transposition-matrices.lagda.md b/src/linear-algebra/transposition-matrices.lagda.md index c46fe91ff2..b93ea96cac 100644 --- a/src/linear-algebra/transposition-matrices.lagda.md +++ b/src/linear-algebra/transposition-matrices.lagda.md @@ -14,9 +14,9 @@ open import foundation.action-on-identifications-functions open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-vectors +open import linear-algebra.functoriality-tuples open import linear-algebra.matrices -open import linear-algebra.vectors +open import linear-algebra.tuples ```
@@ -31,9 +31,9 @@ columns into rows. ```agda transpose-matrix : {l : Level} → {A : UU l} → {m n : ℕ} → matrix A m n → matrix A n m -transpose-matrix {n = zero-ℕ} x = empty-vec +transpose-matrix {n = zero-ℕ} x = empty-tuple transpose-matrix {n = succ-ℕ n} x = - map-vec head-vec x ∷ transpose-matrix (map-vec tail-vec x) + map-tuple head-tuple x ∷ transpose-matrix (map-tuple tail-tuple x) ``` ## Properties @@ -42,25 +42,27 @@ transpose-matrix {n = succ-ℕ n} x = is-involution-transpose-matrix : {l : Level} → {A : UU l} → {m n : ℕ} → (x : matrix A m n) → Id x (transpose-matrix (transpose-matrix x)) -is-involution-transpose-matrix {m = zero-ℕ} empty-vec = refl +is-involution-transpose-matrix {m = zero-ℕ} empty-tuple = refl is-involution-transpose-matrix {m = succ-ℕ m} (r ∷ rs) = ( ap (_∷_ r) (is-involution-transpose-matrix rs)) ∙ ( ap-binary _∷_ ( lemma-first-row r rs) (ap transpose-matrix (lemma-rest r rs))) where lemma-first-row : - {l : Level} → {A : UU l} → {m n : ℕ} → (x : vec A n) → (xs : matrix A m n) → - Id x (map-vec head-vec (transpose-matrix (x ∷ xs))) - lemma-first-row {n = zero-ℕ} empty-vec _ = refl + {l : Level} → {A : UU l} → {m n : ℕ} → (x : tuple A n) → + (xs : matrix A m n) → + Id x (map-tuple head-tuple (transpose-matrix (x ∷ xs))) + lemma-first-row {n = zero-ℕ} empty-tuple _ = refl lemma-first-row {n = succ-ℕ m} (k ∷ ks) xs = - ap (_∷_ k) (lemma-first-row ks (map-vec tail-vec xs)) + ap (_∷_ k) (lemma-first-row ks (map-tuple tail-tuple xs)) lemma-rest : - {l : Level} → {A : UU l} → {m n : ℕ} → (x : vec A n) → (xs : matrix A m n) → - Id (transpose-matrix xs) (map-vec tail-vec (transpose-matrix (x ∷ xs))) - lemma-rest {n = zero-ℕ} empty-vec xs = refl + {l : Level} → {A : UU l} → {m n : ℕ} → (x : tuple A n) → + (xs : matrix A m n) → + Id (transpose-matrix xs) (map-tuple tail-tuple (transpose-matrix (x ∷ xs))) + lemma-rest {n = zero-ℕ} empty-tuple xs = refl lemma-rest {n = succ-ℕ n} (k ∷ ks) xs = ap - ( _∷_ (map-vec head-vec xs)) - ( lemma-rest (tail-vec (k ∷ ks)) (map-vec tail-vec xs)) + ( _∷_ (map-tuple head-tuple xs)) + ( lemma-rest (tail-tuple (k ∷ ks)) (map-tuple tail-tuple xs)) ``` diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index 83724fd171..de9c586df9 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -1,7 +1,7 @@ -# Vectors on commutative rings +# Tuples on commutative rings ```agda -module linear-algebra.vectors-on-commutative-rings where +module linear-algebra.tuples-on-commutative-rings where ```
Imports @@ -18,211 +18,212 @@ open import group-theory.commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.constant-vectors -open import linear-algebra.vectors-on-rings +open import linear-algebra.constant-tuples +open import linear-algebra.tuples-on-rings ```
## Idea -Vectors on a commutative ring `R` are vectors on the underlying type of `R`. The +Tuples on a commutative ring `R` are tuples on the underlying type of `R`. The commutative ring structure on `R` induces further structure on the type of -vectors on `R`. +tuples on `R`. ## Definitions -### Listed vectors on commutative rings +### Listed tuples on commutative rings ```agda module _ {l : Level} (R : Commutative-Ring l) where - vec-Commutative-Ring : ℕ → UU l - vec-Commutative-Ring = vec-Ring (ring-Commutative-Ring R) + tuple-Commutative-Ring : ℕ → UU l + tuple-Commutative-Ring = tuple-Ring (ring-Commutative-Ring R) - head-vec-Commutative-Ring : - {n : ℕ} → vec-Commutative-Ring (succ-ℕ n) → type-Commutative-Ring R - head-vec-Commutative-Ring = head-vec-Ring (ring-Commutative-Ring R) + head-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring (succ-ℕ n) → type-Commutative-Ring R + head-tuple-Commutative-Ring = head-tuple-Ring (ring-Commutative-Ring R) - tail-vec-Commutative-Ring : - {n : ℕ} → vec-Commutative-Ring (succ-ℕ n) → vec-Commutative-Ring n - tail-vec-Commutative-Ring = tail-vec-Ring (ring-Commutative-Ring R) + tail-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring (succ-ℕ n) → tuple-Commutative-Ring n + tail-tuple-Commutative-Ring = tail-tuple-Ring (ring-Commutative-Ring R) - snoc-vec-Commutative-Ring : - {n : ℕ} → vec-Commutative-Ring n → type-Commutative-Ring R → - vec-Commutative-Ring (succ-ℕ n) - snoc-vec-Commutative-Ring = snoc-vec-Ring (ring-Commutative-Ring R) + snoc-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring n → type-Commutative-Ring R → + tuple-Commutative-Ring (succ-ℕ n) + snoc-tuple-Commutative-Ring = snoc-tuple-Ring (ring-Commutative-Ring R) ``` -### Functional vectors on commutative rings +### Functional tuples on commutative rings ```agda module _ {l : Level} (R : Commutative-Ring l) where - functional-vec-Commutative-Ring : ℕ → UU l - functional-vec-Commutative-Ring = - functional-vec-Ring (ring-Commutative-Ring R) + functional-tuple-Commutative-Ring : ℕ → UU l + functional-tuple-Commutative-Ring = + functional-tuple-Ring (ring-Commutative-Ring R) - head-functional-vec-Commutative-Ring : - (n : ℕ) → functional-vec-Commutative-Ring (succ-ℕ n) → + head-functional-tuple-Commutative-Ring : + (n : ℕ) → functional-tuple-Commutative-Ring (succ-ℕ n) → type-Commutative-Ring R - head-functional-vec-Commutative-Ring = - head-functional-vec-Ring (ring-Commutative-Ring R) + head-functional-tuple-Commutative-Ring = + head-functional-tuple-Ring (ring-Commutative-Ring R) - tail-functional-vec-Commutative-Ring : - (n : ℕ) → functional-vec-Commutative-Ring (succ-ℕ n) → - functional-vec-Commutative-Ring n - tail-functional-vec-Commutative-Ring = - tail-functional-vec-Ring (ring-Commutative-Ring R) + tail-functional-tuple-Commutative-Ring : + (n : ℕ) → functional-tuple-Commutative-Ring (succ-ℕ n) → + functional-tuple-Commutative-Ring n + tail-functional-tuple-Commutative-Ring = + tail-functional-tuple-Ring (ring-Commutative-Ring R) - cons-functional-vec-Commutative-Ring : + cons-functional-tuple-Commutative-Ring : (n : ℕ) → type-Commutative-Ring R → - functional-vec-Commutative-Ring n → - functional-vec-Commutative-Ring (succ-ℕ n) - cons-functional-vec-Commutative-Ring = - cons-functional-vec-Ring (ring-Commutative-Ring R) - - snoc-functional-vec-Commutative-Ring : - (n : ℕ) → functional-vec-Commutative-Ring n → - type-Commutative-Ring R → functional-vec-Commutative-Ring (succ-ℕ n) - snoc-functional-vec-Commutative-Ring = - snoc-functional-vec-Ring (ring-Commutative-Ring R) + functional-tuple-Commutative-Ring n → + functional-tuple-Commutative-Ring (succ-ℕ n) + cons-functional-tuple-Commutative-Ring = + cons-functional-tuple-Ring (ring-Commutative-Ring R) + + snoc-functional-tuple-Commutative-Ring : + (n : ℕ) → functional-tuple-Commutative-Ring n → + type-Commutative-Ring R → functional-tuple-Commutative-Ring (succ-ℕ n) + snoc-functional-tuple-Commutative-Ring = + snoc-functional-tuple-Ring (ring-Commutative-Ring R) ``` -### Zero vector on a commutative ring +### Zero tuple on a commutative ring -#### The zero listed vector +#### The zero listed tuple ```agda module _ {l : Level} (R : Commutative-Ring l) where - zero-vec-Commutative-Ring : {n : ℕ} → vec-Commutative-Ring R n - zero-vec-Commutative-Ring = constant-vec (zero-Commutative-Ring R) + zero-tuple-Commutative-Ring : {n : ℕ} → tuple-Commutative-Ring R n + zero-tuple-Commutative-Ring = constant-tuple (zero-Commutative-Ring R) ``` -#### The zero functional vector +#### The zero functional tuple ```agda module _ {l : Level} (R : Commutative-Ring l) where - zero-functional-vec-Commutative-Ring : - (n : ℕ) → functional-vec-Commutative-Ring R n - zero-functional-vec-Commutative-Ring n i = zero-Commutative-Ring R + zero-functional-tuple-Commutative-Ring : + (n : ℕ) → functional-tuple-Commutative-Ring R n + zero-functional-tuple-Commutative-Ring n i = zero-Commutative-Ring R ``` -### Pointwise addition of vectors on a commutative ring +### Pointwise addition of tuples on a commutative ring -#### Pointwise addition of listed vectors on a commutative ring +#### Pointwise addition of listed tuples on a commutative ring ```agda module _ {l : Level} (R : Commutative-Ring l) where - add-vec-Commutative-Ring : - {n : ℕ} → vec-Commutative-Ring R n → vec-Commutative-Ring R n → - vec-Commutative-Ring R n - add-vec-Commutative-Ring = - add-vec-Ring (ring-Commutative-Ring R) - - associative-add-vec-Commutative-Ring : - {n : ℕ} (v1 v2 v3 : vec-Commutative-Ring R n) → - add-vec-Commutative-Ring (add-vec-Commutative-Ring v1 v2) v3 = - add-vec-Commutative-Ring v1 (add-vec-Commutative-Ring v2 v3) - associative-add-vec-Commutative-Ring = - associative-add-vec-Ring (ring-Commutative-Ring R) - - vec-Commutative-Ring-Semigroup : ℕ → Semigroup l - vec-Commutative-Ring-Semigroup = - vec-Ring-Semigroup (ring-Commutative-Ring R) - - left-unit-law-add-vec-Commutative-Ring : - {n : ℕ} (v : vec-Commutative-Ring R n) → - add-vec-Commutative-Ring (zero-vec-Commutative-Ring R) v = v - left-unit-law-add-vec-Commutative-Ring = - left-unit-law-add-vec-Ring (ring-Commutative-Ring R) - - right-unit-law-add-vec-Commutative-Ring : - {n : ℕ} (v : vec-Commutative-Ring R n) → - add-vec-Commutative-Ring v (zero-vec-Commutative-Ring R) = v - right-unit-law-add-vec-Commutative-Ring = - right-unit-law-add-vec-Ring (ring-Commutative-Ring R) - - vec-Commutative-Ring-Monoid : ℕ → Monoid l - vec-Commutative-Ring-Monoid = - vec-Ring-Monoid (ring-Commutative-Ring R) - - commutative-add-vec-Commutative-Ring : - {n : ℕ} (v w : vec-Commutative-Ring R n) → - add-vec-Commutative-Ring v w = add-vec-Commutative-Ring w v - commutative-add-vec-Commutative-Ring = - commutative-add-vec-Ring (ring-Commutative-Ring R) - - vec-Commutative-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - vec-Commutative-Ring-Commutative-Monoid = - vec-Ring-Commutative-Monoid (ring-Commutative-Ring R) + add-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring R n → tuple-Commutative-Ring R n → + tuple-Commutative-Ring R n + add-tuple-Commutative-Ring = + add-tuple-Ring (ring-Commutative-Ring R) + + associative-add-tuple-Commutative-Ring : + {n : ℕ} (v1 v2 v3 : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring (add-tuple-Commutative-Ring v1 v2) v3 = + add-tuple-Commutative-Ring v1 (add-tuple-Commutative-Ring v2 v3) + associative-add-tuple-Commutative-Ring = + associative-add-tuple-Ring (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Semigroup : ℕ → Semigroup l + tuple-Commutative-Ring-Semigroup = + tuple-Ring-Semigroup (ring-Commutative-Ring R) + + left-unit-law-add-tuple-Commutative-Ring : + {n : ℕ} (v : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring (zero-tuple-Commutative-Ring R) v = v + left-unit-law-add-tuple-Commutative-Ring = + left-unit-law-add-tuple-Ring (ring-Commutative-Ring R) + + right-unit-law-add-tuple-Commutative-Ring : + {n : ℕ} (v : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring v (zero-tuple-Commutative-Ring R) = v + right-unit-law-add-tuple-Commutative-Ring = + right-unit-law-add-tuple-Ring (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Monoid : ℕ → Monoid l + tuple-Commutative-Ring-Monoid = + tuple-Ring-Monoid (ring-Commutative-Ring R) + + commutative-add-tuple-Commutative-Ring : + {n : ℕ} (v w : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring v w = add-tuple-Commutative-Ring w v + commutative-add-tuple-Commutative-Ring = + commutative-add-tuple-Ring (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Commutative-Ring-Commutative-Monoid = + tuple-Ring-Commutative-Monoid (ring-Commutative-Ring R) ``` -#### Pointwise addition of functional vectors on a commutative ring +#### Pointwise addition of functional tuples on a commutative ring ```agda module _ {l : Level} (R : Commutative-Ring l) where - add-functional-vec-Commutative-Ring : - (n : ℕ) (v w : functional-vec-Commutative-Ring R n) → - functional-vec-Commutative-Ring R n - add-functional-vec-Commutative-Ring = - add-functional-vec-Ring (ring-Commutative-Ring R) - - associative-add-functional-vec-Commutative-Ring : - (n : ℕ) (v1 v2 v3 : functional-vec-Commutative-Ring R n) → - ( add-functional-vec-Commutative-Ring n - ( add-functional-vec-Commutative-Ring n v1 v2) v3) = - ( add-functional-vec-Commutative-Ring n v1 - ( add-functional-vec-Commutative-Ring n v2 v3)) - associative-add-functional-vec-Commutative-Ring = - associative-add-functional-vec-Ring (ring-Commutative-Ring R) - - functional-vec-Commutative-Ring-Semigroup : ℕ → Semigroup l - functional-vec-Commutative-Ring-Semigroup = - functional-vec-Ring-Semigroup (ring-Commutative-Ring R) - - left-unit-law-add-functional-vec-Commutative-Ring : - (n : ℕ) (v : functional-vec-Commutative-Ring R n) → - add-functional-vec-Commutative-Ring n - ( zero-functional-vec-Commutative-Ring R n) v = v - left-unit-law-add-functional-vec-Commutative-Ring = - left-unit-law-add-functional-vec-Ring (ring-Commutative-Ring R) - - right-unit-law-add-functional-vec-Commutative-Ring : - (n : ℕ) (v : functional-vec-Commutative-Ring R n) → - add-functional-vec-Commutative-Ring n v - ( zero-functional-vec-Commutative-Ring R n) = v - right-unit-law-add-functional-vec-Commutative-Ring = - right-unit-law-add-functional-vec-Ring (ring-Commutative-Ring R) - - functional-vec-Commutative-Ring-Monoid : ℕ → Monoid l - functional-vec-Commutative-Ring-Monoid = - functional-vec-Ring-Monoid (ring-Commutative-Ring R) - - commutative-add-functional-vec-Commutative-Ring : - (n : ℕ) (v w : functional-vec-Commutative-Ring R n) → - add-functional-vec-Commutative-Ring n v w = - add-functional-vec-Commutative-Ring n w v - commutative-add-functional-vec-Commutative-Ring = - commutative-add-functional-vec-Ring (ring-Commutative-Ring R) - - functional-vec-Commutative-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - functional-vec-Commutative-Ring-Commutative-Monoid = - functional-vec-Ring-Commutative-Monoid (ring-Commutative-Ring R) + add-functional-tuple-Commutative-Ring : + (n : ℕ) (v w : functional-tuple-Commutative-Ring R n) → + functional-tuple-Commutative-Ring R n + add-functional-tuple-Commutative-Ring = + add-functional-tuple-Ring (ring-Commutative-Ring R) + + associative-add-functional-tuple-Commutative-Ring : + (n : ℕ) (v1 v2 v3 : functional-tuple-Commutative-Ring R n) → + ( add-functional-tuple-Commutative-Ring n + ( add-functional-tuple-Commutative-Ring n v1 v2) v3) = + ( add-functional-tuple-Commutative-Ring n v1 + ( add-functional-tuple-Commutative-Ring n v2 v3)) + associative-add-functional-tuple-Commutative-Ring = + associative-add-functional-tuple-Ring (ring-Commutative-Ring R) + + functional-tuple-Commutative-Ring-Semigroup : ℕ → Semigroup l + functional-tuple-Commutative-Ring-Semigroup = + functional-tuple-Ring-Semigroup (ring-Commutative-Ring R) + + left-unit-law-add-functional-tuple-Commutative-Ring : + (n : ℕ) (v : functional-tuple-Commutative-Ring R n) → + add-functional-tuple-Commutative-Ring n + ( zero-functional-tuple-Commutative-Ring R n) v = v + left-unit-law-add-functional-tuple-Commutative-Ring = + left-unit-law-add-functional-tuple-Ring (ring-Commutative-Ring R) + + right-unit-law-add-functional-tuple-Commutative-Ring : + (n : ℕ) (v : functional-tuple-Commutative-Ring R n) → + add-functional-tuple-Commutative-Ring n v + ( zero-functional-tuple-Commutative-Ring R n) = v + right-unit-law-add-functional-tuple-Commutative-Ring = + right-unit-law-add-functional-tuple-Ring (ring-Commutative-Ring R) + + functional-tuple-Commutative-Ring-Monoid : ℕ → Monoid l + functional-tuple-Commutative-Ring-Monoid = + functional-tuple-Ring-Monoid (ring-Commutative-Ring R) + + commutative-add-functional-tuple-Commutative-Ring : + (n : ℕ) (v w : functional-tuple-Commutative-Ring R n) → + add-functional-tuple-Commutative-Ring n v w = + add-functional-tuple-Commutative-Ring n w v + commutative-add-functional-tuple-Commutative-Ring = + commutative-add-functional-tuple-Ring (ring-Commutative-Ring R) + + functional-tuple-Commutative-Ring-Commutative-Monoid : + ℕ → Commutative-Monoid l + functional-tuple-Commutative-Ring-Commutative-Monoid = + functional-tuple-Ring-Commutative-Monoid (ring-Commutative-Ring R) ``` diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index 37cfe9c5b2..177a25d4d6 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -1,7 +1,7 @@ -# Vectors on commutative semirings +# Tuples on commutative semirings ```agda -module linear-algebra.vectors-on-commutative-semirings where +module linear-algebra.tuples-on-commutative-semirings where ```
Imports @@ -18,216 +18,222 @@ open import group-theory.commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.constant-vectors -open import linear-algebra.vectors-on-semirings +open import linear-algebra.constant-tuples +open import linear-algebra.tuples-on-semirings ```
## Idea -Vectors on a commutative semiring `R` are vectors on the underlying type of `R`. +Tuples on a commutative semiring `R` are tuples on the underlying type of `R`. The commutative semiring structure on `R` induces further structure on the type -of vectors on `R`. +of tuples on `R`. ## Definitions -### Listed vectors on commutative semirings +### Listed tuples on commutative semirings ```agda module _ {l : Level} (R : Commutative-Semiring l) where - vec-Commutative-Semiring : ℕ → UU l - vec-Commutative-Semiring = - vec-Semiring (semiring-Commutative-Semiring R) - - head-vec-Commutative-Semiring : - {n : ℕ} → vec-Commutative-Semiring (succ-ℕ n) → type-Commutative-Semiring R - head-vec-Commutative-Semiring = - head-vec-Semiring (semiring-Commutative-Semiring R) - - tail-vec-Commutative-Semiring : - {n : ℕ} → vec-Commutative-Semiring (succ-ℕ n) → vec-Commutative-Semiring n - tail-vec-Commutative-Semiring = - tail-vec-Semiring (semiring-Commutative-Semiring R) - - snoc-vec-Commutative-Semiring : - {n : ℕ} → vec-Commutative-Semiring n → type-Commutative-Semiring R → - vec-Commutative-Semiring (succ-ℕ n) - snoc-vec-Commutative-Semiring = - snoc-vec-Semiring (semiring-Commutative-Semiring R) + tuple-Commutative-Semiring : ℕ → UU l + tuple-Commutative-Semiring = + tuple-Semiring (semiring-Commutative-Semiring R) + + head-tuple-Commutative-Semiring : + {n : ℕ} → tuple-Commutative-Semiring (succ-ℕ n) → + type-Commutative-Semiring R + head-tuple-Commutative-Semiring = + head-tuple-Semiring (semiring-Commutative-Semiring R) + + tail-tuple-Commutative-Semiring : + {n : ℕ} → tuple-Commutative-Semiring (succ-ℕ n) → + tuple-Commutative-Semiring n + tail-tuple-Commutative-Semiring = + tail-tuple-Semiring (semiring-Commutative-Semiring R) + + snoc-tuple-Commutative-Semiring : + {n : ℕ} → tuple-Commutative-Semiring n → type-Commutative-Semiring R → + tuple-Commutative-Semiring (succ-ℕ n) + snoc-tuple-Commutative-Semiring = + snoc-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Functional vectors on commutative semirings +### Functional tuples on commutative semirings ```agda module _ {l : Level} (R : Commutative-Semiring l) where - functional-vec-Commutative-Semiring : ℕ → UU l - functional-vec-Commutative-Semiring = - functional-vec-Semiring (semiring-Commutative-Semiring R) + functional-tuple-Commutative-Semiring : ℕ → UU l + functional-tuple-Commutative-Semiring = + functional-tuple-Semiring (semiring-Commutative-Semiring R) - head-functional-vec-Commutative-Semiring : - (n : ℕ) → functional-vec-Commutative-Semiring (succ-ℕ n) → + head-functional-tuple-Commutative-Semiring : + (n : ℕ) → functional-tuple-Commutative-Semiring (succ-ℕ n) → type-Commutative-Semiring R - head-functional-vec-Commutative-Semiring = - head-functional-vec-Semiring (semiring-Commutative-Semiring R) + head-functional-tuple-Commutative-Semiring = + head-functional-tuple-Semiring (semiring-Commutative-Semiring R) - tail-functional-vec-Commutative-Semiring : - (n : ℕ) → functional-vec-Commutative-Semiring (succ-ℕ n) → - functional-vec-Commutative-Semiring n - tail-functional-vec-Commutative-Semiring = - tail-functional-vec-Semiring (semiring-Commutative-Semiring R) + tail-functional-tuple-Commutative-Semiring : + (n : ℕ) → functional-tuple-Commutative-Semiring (succ-ℕ n) → + functional-tuple-Commutative-Semiring n + tail-functional-tuple-Commutative-Semiring = + tail-functional-tuple-Semiring (semiring-Commutative-Semiring R) - cons-functional-vec-Commutative-Semiring : + cons-functional-tuple-Commutative-Semiring : (n : ℕ) → type-Commutative-Semiring R → - functional-vec-Commutative-Semiring n → - functional-vec-Commutative-Semiring (succ-ℕ n) - cons-functional-vec-Commutative-Semiring = - cons-functional-vec-Semiring (semiring-Commutative-Semiring R) - - snoc-functional-vec-Commutative-Semiring : - (n : ℕ) → functional-vec-Commutative-Semiring n → - type-Commutative-Semiring R → functional-vec-Commutative-Semiring (succ-ℕ n) - snoc-functional-vec-Commutative-Semiring = - snoc-functional-vec-Semiring (semiring-Commutative-Semiring R) + functional-tuple-Commutative-Semiring n → + functional-tuple-Commutative-Semiring (succ-ℕ n) + cons-functional-tuple-Commutative-Semiring = + cons-functional-tuple-Semiring (semiring-Commutative-Semiring R) + + snoc-functional-tuple-Commutative-Semiring : + (n : ℕ) → functional-tuple-Commutative-Semiring n → + type-Commutative-Semiring R → + functional-tuple-Commutative-Semiring (succ-ℕ n) + snoc-functional-tuple-Commutative-Semiring = + snoc-functional-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Zero vector on a commutative semiring +### Zero tuple on a commutative semiring -#### The zero listed vector +#### The zero listed tuple ```agda module _ {l : Level} (R : Commutative-Semiring l) where - zero-vec-Commutative-Semiring : {n : ℕ} → vec-Commutative-Semiring R n - zero-vec-Commutative-Semiring = constant-vec (zero-Commutative-Semiring R) + zero-tuple-Commutative-Semiring : {n : ℕ} → tuple-Commutative-Semiring R n + zero-tuple-Commutative-Semiring = constant-tuple (zero-Commutative-Semiring R) ``` -#### The zero functional vector +#### The zero functional tuple ```agda module _ {l : Level} (R : Commutative-Semiring l) where - zero-functional-vec-Commutative-Semiring : - (n : ℕ) → functional-vec-Commutative-Semiring R n - zero-functional-vec-Commutative-Semiring n i = zero-Commutative-Semiring R + zero-functional-tuple-Commutative-Semiring : + (n : ℕ) → functional-tuple-Commutative-Semiring R n + zero-functional-tuple-Commutative-Semiring n i = zero-Commutative-Semiring R ``` -### Pointwise addition of vectors on a commutative semiring +### Pointwise addition of tuples on a commutative semiring -#### Pointwise addition of listed vectors on a commutative semiring +#### Pointwise addition of listed tuples on a commutative semiring ```agda module _ {l : Level} (R : Commutative-Semiring l) where - add-vec-Commutative-Semiring : - {n : ℕ} → vec-Commutative-Semiring R n → vec-Commutative-Semiring R n → - vec-Commutative-Semiring R n - add-vec-Commutative-Semiring = - add-vec-Semiring (semiring-Commutative-Semiring R) - - associative-add-vec-Commutative-Semiring : - {n : ℕ} (v1 v2 v3 : vec-Commutative-Semiring R n) → - add-vec-Commutative-Semiring (add-vec-Commutative-Semiring v1 v2) v3 = - add-vec-Commutative-Semiring v1 (add-vec-Commutative-Semiring v2 v3) - associative-add-vec-Commutative-Semiring = - associative-add-vec-Semiring (semiring-Commutative-Semiring R) - - vec-Commutative-Semiring-Semigroup : ℕ → Semigroup l - vec-Commutative-Semiring-Semigroup = - vec-Semiring-Semigroup (semiring-Commutative-Semiring R) - - left-unit-law-add-vec-Commutative-Semiring : - {n : ℕ} (v : vec-Commutative-Semiring R n) → - add-vec-Commutative-Semiring (zero-vec-Commutative-Semiring R) v = v - left-unit-law-add-vec-Commutative-Semiring = - left-unit-law-add-vec-Semiring (semiring-Commutative-Semiring R) - - right-unit-law-add-vec-Commutative-Semiring : - {n : ℕ} (v : vec-Commutative-Semiring R n) → - add-vec-Commutative-Semiring v (zero-vec-Commutative-Semiring R) = v - right-unit-law-add-vec-Commutative-Semiring = - right-unit-law-add-vec-Semiring (semiring-Commutative-Semiring R) - - vec-Commutative-Semiring-Monoid : ℕ → Monoid l - vec-Commutative-Semiring-Monoid = - vec-Semiring-Monoid (semiring-Commutative-Semiring R) - - commutative-add-vec-Commutative-Semiring : - {n : ℕ} (v w : vec-Commutative-Semiring R n) → - add-vec-Commutative-Semiring v w = add-vec-Commutative-Semiring w v - commutative-add-vec-Commutative-Semiring = - commutative-add-vec-Semiring (semiring-Commutative-Semiring R) - - vec-Commutative-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - vec-Commutative-Semiring-Commutative-Monoid = - vec-Semiring-Commutative-Monoid (semiring-Commutative-Semiring R) + add-tuple-Commutative-Semiring : + {n : ℕ} → tuple-Commutative-Semiring R n → tuple-Commutative-Semiring R n → + tuple-Commutative-Semiring R n + add-tuple-Commutative-Semiring = + add-tuple-Semiring (semiring-Commutative-Semiring R) + + associative-add-tuple-Commutative-Semiring : + {n : ℕ} (v1 v2 v3 : tuple-Commutative-Semiring R n) → + add-tuple-Commutative-Semiring (add-tuple-Commutative-Semiring v1 v2) v3 = + add-tuple-Commutative-Semiring v1 (add-tuple-Commutative-Semiring v2 v3) + associative-add-tuple-Commutative-Semiring = + associative-add-tuple-Semiring (semiring-Commutative-Semiring R) + + tuple-Commutative-Semiring-Semigroup : ℕ → Semigroup l + tuple-Commutative-Semiring-Semigroup = + tuple-Semiring-Semigroup (semiring-Commutative-Semiring R) + + left-unit-law-add-tuple-Commutative-Semiring : + {n : ℕ} (v : tuple-Commutative-Semiring R n) → + add-tuple-Commutative-Semiring (zero-tuple-Commutative-Semiring R) v = v + left-unit-law-add-tuple-Commutative-Semiring = + left-unit-law-add-tuple-Semiring (semiring-Commutative-Semiring R) + + right-unit-law-add-tuple-Commutative-Semiring : + {n : ℕ} (v : tuple-Commutative-Semiring R n) → + add-tuple-Commutative-Semiring v (zero-tuple-Commutative-Semiring R) = v + right-unit-law-add-tuple-Commutative-Semiring = + right-unit-law-add-tuple-Semiring (semiring-Commutative-Semiring R) + + tuple-Commutative-Semiring-Monoid : ℕ → Monoid l + tuple-Commutative-Semiring-Monoid = + tuple-Semiring-Monoid (semiring-Commutative-Semiring R) + + commutative-add-tuple-Commutative-Semiring : + {n : ℕ} (v w : tuple-Commutative-Semiring R n) → + add-tuple-Commutative-Semiring v w = add-tuple-Commutative-Semiring w v + commutative-add-tuple-Commutative-Semiring = + commutative-add-tuple-Semiring (semiring-Commutative-Semiring R) + + tuple-Commutative-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Commutative-Semiring-Commutative-Monoid = + tuple-Semiring-Commutative-Monoid (semiring-Commutative-Semiring R) ``` -#### Pointwise addition of functional vectors on a commutative semiring +#### Pointwise addition of functional tuples on a commutative semiring ```agda module _ {l : Level} (R : Commutative-Semiring l) where - add-functional-vec-Commutative-Semiring : - (n : ℕ) (v w : functional-vec-Commutative-Semiring R n) → - functional-vec-Commutative-Semiring R n - add-functional-vec-Commutative-Semiring = - add-functional-vec-Semiring (semiring-Commutative-Semiring R) - - associative-add-functional-vec-Commutative-Semiring : - (n : ℕ) (v1 v2 v3 : functional-vec-Commutative-Semiring R n) → - ( add-functional-vec-Commutative-Semiring n - ( add-functional-vec-Commutative-Semiring n v1 v2) v3) = - ( add-functional-vec-Commutative-Semiring n v1 - ( add-functional-vec-Commutative-Semiring n v2 v3)) - associative-add-functional-vec-Commutative-Semiring = - associative-add-functional-vec-Semiring (semiring-Commutative-Semiring R) - - functional-vec-Commutative-Semiring-Semigroup : ℕ → Semigroup l - functional-vec-Commutative-Semiring-Semigroup = - functional-vec-Semiring-Semigroup (semiring-Commutative-Semiring R) - - left-unit-law-add-functional-vec-Commutative-Semiring : - (n : ℕ) (v : functional-vec-Commutative-Semiring R n) → - add-functional-vec-Commutative-Semiring n - ( zero-functional-vec-Commutative-Semiring R n) v = v - left-unit-law-add-functional-vec-Commutative-Semiring = - left-unit-law-add-functional-vec-Semiring (semiring-Commutative-Semiring R) - - right-unit-law-add-functional-vec-Commutative-Semiring : - (n : ℕ) (v : functional-vec-Commutative-Semiring R n) → - add-functional-vec-Commutative-Semiring n v - ( zero-functional-vec-Commutative-Semiring R n) = v - right-unit-law-add-functional-vec-Commutative-Semiring = - right-unit-law-add-functional-vec-Semiring (semiring-Commutative-Semiring R) - - functional-vec-Commutative-Semiring-Monoid : ℕ → Monoid l - functional-vec-Commutative-Semiring-Monoid = - functional-vec-Semiring-Monoid (semiring-Commutative-Semiring R) - - commutative-add-functional-vec-Commutative-Semiring : - (n : ℕ) (v w : functional-vec-Commutative-Semiring R n) → - add-functional-vec-Commutative-Semiring n v w = - add-functional-vec-Commutative-Semiring n w v - commutative-add-functional-vec-Commutative-Semiring = - commutative-add-functional-vec-Semiring (semiring-Commutative-Semiring R) - - functional-vec-Commutative-Semiring-Commutative-Monoid : + add-functional-tuple-Commutative-Semiring : + (n : ℕ) (v w : functional-tuple-Commutative-Semiring R n) → + functional-tuple-Commutative-Semiring R n + add-functional-tuple-Commutative-Semiring = + add-functional-tuple-Semiring (semiring-Commutative-Semiring R) + + associative-add-functional-tuple-Commutative-Semiring : + (n : ℕ) (v1 v2 v3 : functional-tuple-Commutative-Semiring R n) → + ( add-functional-tuple-Commutative-Semiring n + ( add-functional-tuple-Commutative-Semiring n v1 v2) v3) = + ( add-functional-tuple-Commutative-Semiring n v1 + ( add-functional-tuple-Commutative-Semiring n v2 v3)) + associative-add-functional-tuple-Commutative-Semiring = + associative-add-functional-tuple-Semiring (semiring-Commutative-Semiring R) + + functional-tuple-Commutative-Semiring-Semigroup : ℕ → Semigroup l + functional-tuple-Commutative-Semiring-Semigroup = + functional-tuple-Semiring-Semigroup (semiring-Commutative-Semiring R) + + left-unit-law-add-functional-tuple-Commutative-Semiring : + (n : ℕ) (v : functional-tuple-Commutative-Semiring R n) → + add-functional-tuple-Commutative-Semiring n + ( zero-functional-tuple-Commutative-Semiring R n) v = v + left-unit-law-add-functional-tuple-Commutative-Semiring = + left-unit-law-add-functional-tuple-Semiring + ( semiring-Commutative-Semiring R) + + right-unit-law-add-functional-tuple-Commutative-Semiring : + (n : ℕ) (v : functional-tuple-Commutative-Semiring R n) → + add-functional-tuple-Commutative-Semiring n v + ( zero-functional-tuple-Commutative-Semiring R n) = v + right-unit-law-add-functional-tuple-Commutative-Semiring = + right-unit-law-add-functional-tuple-Semiring + ( semiring-Commutative-Semiring R) + + functional-tuple-Commutative-Semiring-Monoid : ℕ → Monoid l + functional-tuple-Commutative-Semiring-Monoid = + functional-tuple-Semiring-Monoid (semiring-Commutative-Semiring R) + + commutative-add-functional-tuple-Commutative-Semiring : + (n : ℕ) (v w : functional-tuple-Commutative-Semiring R n) → + add-functional-tuple-Commutative-Semiring n v w = + add-functional-tuple-Commutative-Semiring n w v + commutative-add-functional-tuple-Commutative-Semiring = + commutative-add-functional-tuple-Semiring (semiring-Commutative-Semiring R) + + functional-tuple-Commutative-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - functional-vec-Commutative-Semiring-Commutative-Monoid = - functional-vec-Semiring-Commutative-Monoid (semiring-Commutative-Semiring R) + functional-tuple-Commutative-Semiring-Commutative-Monoid = + functional-tuple-Semiring-Commutative-Monoid + ( semiring-Commutative-Semiring R) ``` diff --git a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md index 63019ac835..5c8fcf629d 100644 --- a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md @@ -1,7 +1,7 @@ -# Vectors on euclidean domains +# Tuples on euclidean domains ```agda -module linear-algebra.vectors-on-euclidean-domains where +module linear-algebra.tuples-on-euclidean-domains where ```
Imports @@ -24,311 +24,314 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.constant-vectors -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.constant-tuples +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples ```
## Idea -Given an euclidean domain `R`, the type `vec n R` of `R`-vectors is an +Given an euclidean domain `R`, the type `tuple n R` of `R`-tuples is an `R`-module. ## Definitions -### Listed vectors on euclidean domains +### Listed tuples on euclidean domains ```agda module _ {l : Level} (R : Euclidean-Domain l) where - vec-Euclidean-Domain : ℕ → UU l - vec-Euclidean-Domain = vec (type-Euclidean-Domain R) + tuple-Euclidean-Domain : ℕ → UU l + tuple-Euclidean-Domain = tuple (type-Euclidean-Domain R) - head-vec-Euclidean-Domain : - {n : ℕ} → vec-Euclidean-Domain (succ-ℕ n) → type-Euclidean-Domain R - head-vec-Euclidean-Domain v = head-vec v + head-tuple-Euclidean-Domain : + {n : ℕ} → tuple-Euclidean-Domain (succ-ℕ n) → type-Euclidean-Domain R + head-tuple-Euclidean-Domain v = head-tuple v - tail-vec-Euclidean-Domain : - {n : ℕ} → vec-Euclidean-Domain (succ-ℕ n) → vec-Euclidean-Domain n - tail-vec-Euclidean-Domain v = tail-vec v + tail-tuple-Euclidean-Domain : + {n : ℕ} → tuple-Euclidean-Domain (succ-ℕ n) → tuple-Euclidean-Domain n + tail-tuple-Euclidean-Domain v = tail-tuple v - snoc-vec-Euclidean-Domain : - {n : ℕ} → vec-Euclidean-Domain n → - type-Euclidean-Domain R → vec-Euclidean-Domain (succ-ℕ n) - snoc-vec-Euclidean-Domain v r = snoc-vec v r + snoc-tuple-Euclidean-Domain : + {n : ℕ} → tuple-Euclidean-Domain n → + type-Euclidean-Domain R → tuple-Euclidean-Domain (succ-ℕ n) + snoc-tuple-Euclidean-Domain v r = snoc-tuple v r ``` -### Functional vectors on euclidean domains +### Functional tuples on euclidean domains ```agda module _ {l : Level} (R : Euclidean-Domain l) where - functional-vec-Euclidean-Domain : ℕ → UU l - functional-vec-Euclidean-Domain = functional-vec (type-Euclidean-Domain R) + functional-tuple-Euclidean-Domain : ℕ → UU l + functional-tuple-Euclidean-Domain = functional-tuple (type-Euclidean-Domain R) - head-functional-vec-Euclidean-Domain : + head-functional-tuple-Euclidean-Domain : (n : ℕ) → - functional-vec-Euclidean-Domain (succ-ℕ n) → + functional-tuple-Euclidean-Domain (succ-ℕ n) → type-Euclidean-Domain R - head-functional-vec-Euclidean-Domain n v = head-functional-vec n v + head-functional-tuple-Euclidean-Domain n v = head-functional-tuple n v - tail-functional-vec-Euclidean-Domain : + tail-functional-tuple-Euclidean-Domain : (n : ℕ) → - functional-vec-Euclidean-Domain (succ-ℕ n) → - functional-vec-Euclidean-Domain n - tail-functional-vec-Euclidean-Domain = tail-functional-vec + functional-tuple-Euclidean-Domain (succ-ℕ n) → + functional-tuple-Euclidean-Domain n + tail-functional-tuple-Euclidean-Domain = tail-functional-tuple - cons-functional-vec-Euclidean-Domain : + cons-functional-tuple-Euclidean-Domain : (n : ℕ) → type-Euclidean-Domain R → - functional-vec-Euclidean-Domain n → - functional-vec-Euclidean-Domain (succ-ℕ n) - cons-functional-vec-Euclidean-Domain = cons-functional-vec - - snoc-functional-vec-Euclidean-Domain : - (n : ℕ) → functional-vec-Euclidean-Domain n → type-Euclidean-Domain R → - functional-vec-Euclidean-Domain (succ-ℕ n) - snoc-functional-vec-Euclidean-Domain = snoc-functional-vec + functional-tuple-Euclidean-Domain n → + functional-tuple-Euclidean-Domain (succ-ℕ n) + cons-functional-tuple-Euclidean-Domain = cons-functional-tuple + + snoc-functional-tuple-Euclidean-Domain : + (n : ℕ) → functional-tuple-Euclidean-Domain n → type-Euclidean-Domain R → + functional-tuple-Euclidean-Domain (succ-ℕ n) + snoc-functional-tuple-Euclidean-Domain = snoc-functional-tuple ``` -### Zero vector on a euclidean domain +### Zero tuple on a euclidean domain -#### The zero listed vector +#### The zero listed tuple ```agda module _ {l : Level} (R : Euclidean-Domain l) where - zero-vec-Euclidean-Domain : {n : ℕ} → vec-Euclidean-Domain R n - zero-vec-Euclidean-Domain = constant-vec (zero-Euclidean-Domain R) + zero-tuple-Euclidean-Domain : {n : ℕ} → tuple-Euclidean-Domain R n + zero-tuple-Euclidean-Domain = constant-tuple (zero-Euclidean-Domain R) ``` -#### The zero functional vector +#### The zero functional tuple ```agda module _ {l : Level} (R : Euclidean-Domain l) where - zero-functional-vec-Euclidean-Domain : - (n : ℕ) → functional-vec-Euclidean-Domain R n - zero-functional-vec-Euclidean-Domain n i = zero-Euclidean-Domain R + zero-functional-tuple-Euclidean-Domain : + (n : ℕ) → functional-tuple-Euclidean-Domain R n + zero-functional-tuple-Euclidean-Domain n i = zero-Euclidean-Domain R ``` -### Pointwise addition of vectors on a euclidean domain +### Pointwise addition of tuples on a euclidean domain -#### Pointwise addition of listed vectors on a euclidean domain +#### Pointwise addition of listed tuples on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - add-vec-Euclidean-Domain : + add-tuple-Euclidean-Domain : {n : ℕ} → - vec-Euclidean-Domain R n → - vec-Euclidean-Domain R n → - vec-Euclidean-Domain R n - add-vec-Euclidean-Domain = binary-map-vec (add-Euclidean-Domain R) + tuple-Euclidean-Domain R n → + tuple-Euclidean-Domain R n → + tuple-Euclidean-Domain R n + add-tuple-Euclidean-Domain = binary-map-tuple (add-Euclidean-Domain R) - associative-add-vec-Euclidean-Domain : - {n : ℕ} (v1 v2 v3 : vec-Euclidean-Domain R n) → + associative-add-tuple-Euclidean-Domain : + {n : ℕ} (v1 v2 v3 : tuple-Euclidean-Domain R n) → Id - ( add-vec-Euclidean-Domain (add-vec-Euclidean-Domain v1 v2) v3) - ( add-vec-Euclidean-Domain v1 (add-vec-Euclidean-Domain v2 v3)) - associative-add-vec-Euclidean-Domain empty-vec empty-vec empty-vec = refl - associative-add-vec-Euclidean-Domain (x ∷ v1) (y ∷ v2) (z ∷ v3) = + ( add-tuple-Euclidean-Domain (add-tuple-Euclidean-Domain v1 v2) v3) + ( add-tuple-Euclidean-Domain v1 (add-tuple-Euclidean-Domain v2 v3)) + associative-add-tuple-Euclidean-Domain empty-tuple empty-tuple empty-tuple = + refl + associative-add-tuple-Euclidean-Domain (x ∷ v1) (y ∷ v2) (z ∷ v3) = ap-binary _∷_ ( associative-add-Euclidean-Domain R x y z) - ( associative-add-vec-Euclidean-Domain v1 v2 v3) - - vec-Euclidean-Domain-Semigroup : ℕ → Semigroup l - pr1 (vec-Euclidean-Domain-Semigroup n) = vec-Set (set-Euclidean-Domain R) n - pr1 (pr2 (vec-Euclidean-Domain-Semigroup n)) = add-vec-Euclidean-Domain - pr2 (pr2 (vec-Euclidean-Domain-Semigroup n)) = - associative-add-vec-Euclidean-Domain - - left-unit-law-add-vec-Euclidean-Domain : - {n : ℕ} (v : vec-Euclidean-Domain R n) → - Id (add-vec-Euclidean-Domain (zero-vec-Euclidean-Domain R) v) v - left-unit-law-add-vec-Euclidean-Domain empty-vec = refl - left-unit-law-add-vec-Euclidean-Domain (x ∷ v) = + ( associative-add-tuple-Euclidean-Domain v1 v2 v3) + + tuple-Euclidean-Domain-Semigroup : ℕ → Semigroup l + pr1 (tuple-Euclidean-Domain-Semigroup n) = + tuple-Set (set-Euclidean-Domain R) n + pr1 (pr2 (tuple-Euclidean-Domain-Semigroup n)) = add-tuple-Euclidean-Domain + pr2 (pr2 (tuple-Euclidean-Domain-Semigroup n)) = + associative-add-tuple-Euclidean-Domain + + left-unit-law-add-tuple-Euclidean-Domain : + {n : ℕ} (v : tuple-Euclidean-Domain R n) → + Id (add-tuple-Euclidean-Domain (zero-tuple-Euclidean-Domain R) v) v + left-unit-law-add-tuple-Euclidean-Domain empty-tuple = refl + left-unit-law-add-tuple-Euclidean-Domain (x ∷ v) = ap-binary _∷_ ( left-unit-law-add-Euclidean-Domain R x) - ( left-unit-law-add-vec-Euclidean-Domain v) + ( left-unit-law-add-tuple-Euclidean-Domain v) - right-unit-law-add-vec-Euclidean-Domain : - {n : ℕ} (v : vec-Euclidean-Domain R n) → - Id (add-vec-Euclidean-Domain v (zero-vec-Euclidean-Domain R)) v - right-unit-law-add-vec-Euclidean-Domain empty-vec = refl - right-unit-law-add-vec-Euclidean-Domain (x ∷ v) = + right-unit-law-add-tuple-Euclidean-Domain : + {n : ℕ} (v : tuple-Euclidean-Domain R n) → + Id (add-tuple-Euclidean-Domain v (zero-tuple-Euclidean-Domain R)) v + right-unit-law-add-tuple-Euclidean-Domain empty-tuple = refl + right-unit-law-add-tuple-Euclidean-Domain (x ∷ v) = ap-binary _∷_ ( right-unit-law-add-Euclidean-Domain R x) - ( right-unit-law-add-vec-Euclidean-Domain v) - - vec-Euclidean-Domain-Monoid : ℕ → Monoid l - pr1 (vec-Euclidean-Domain-Monoid n) = vec-Euclidean-Domain-Semigroup n - pr1 (pr2 (vec-Euclidean-Domain-Monoid n)) = zero-vec-Euclidean-Domain R - pr1 (pr2 (pr2 (vec-Euclidean-Domain-Monoid n))) = - left-unit-law-add-vec-Euclidean-Domain - pr2 (pr2 (pr2 (vec-Euclidean-Domain-Monoid n))) = - right-unit-law-add-vec-Euclidean-Domain - - commutative-add-vec-Euclidean-Domain : - {n : ℕ} (v w : vec-Euclidean-Domain R n) → - Id (add-vec-Euclidean-Domain v w) (add-vec-Euclidean-Domain w v) - commutative-add-vec-Euclidean-Domain empty-vec empty-vec = refl - commutative-add-vec-Euclidean-Domain (x ∷ v) (y ∷ w) = + ( right-unit-law-add-tuple-Euclidean-Domain v) + + tuple-Euclidean-Domain-Monoid : ℕ → Monoid l + pr1 (tuple-Euclidean-Domain-Monoid n) = tuple-Euclidean-Domain-Semigroup n + pr1 (pr2 (tuple-Euclidean-Domain-Monoid n)) = zero-tuple-Euclidean-Domain R + pr1 (pr2 (pr2 (tuple-Euclidean-Domain-Monoid n))) = + left-unit-law-add-tuple-Euclidean-Domain + pr2 (pr2 (pr2 (tuple-Euclidean-Domain-Monoid n))) = + right-unit-law-add-tuple-Euclidean-Domain + + commutative-add-tuple-Euclidean-Domain : + {n : ℕ} (v w : tuple-Euclidean-Domain R n) → + Id (add-tuple-Euclidean-Domain v w) (add-tuple-Euclidean-Domain w v) + commutative-add-tuple-Euclidean-Domain empty-tuple empty-tuple = refl + commutative-add-tuple-Euclidean-Domain (x ∷ v) (y ∷ w) = ap-binary _∷_ ( commutative-add-Euclidean-Domain R x y) - ( commutative-add-vec-Euclidean-Domain v w) + ( commutative-add-tuple-Euclidean-Domain v w) - vec-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (vec-Euclidean-Domain-Commutative-Monoid n) = - vec-Euclidean-Domain-Monoid n - pr2 (vec-Euclidean-Domain-Commutative-Monoid n) = - commutative-add-vec-Euclidean-Domain + tuple-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (tuple-Euclidean-Domain-Commutative-Monoid n) = + tuple-Euclidean-Domain-Monoid n + pr2 (tuple-Euclidean-Domain-Commutative-Monoid n) = + commutative-add-tuple-Euclidean-Domain ``` -#### Pointwise addition of functional vectors on a euclidean domain +#### Pointwise addition of functional tuples on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - add-functional-vec-Euclidean-Domain : - (n : ℕ) (v w : functional-vec-Euclidean-Domain R n) → - functional-vec-Euclidean-Domain R n - add-functional-vec-Euclidean-Domain n = - binary-map-functional-vec n (add-Euclidean-Domain R) + add-functional-tuple-Euclidean-Domain : + (n : ℕ) (v w : functional-tuple-Euclidean-Domain R n) → + functional-tuple-Euclidean-Domain R n + add-functional-tuple-Euclidean-Domain n = + binary-map-functional-tuple n (add-Euclidean-Domain R) - associative-add-functional-vec-Euclidean-Domain : - (n : ℕ) (v1 v2 v3 : functional-vec-Euclidean-Domain R n) → - ( add-functional-vec-Euclidean-Domain + associative-add-functional-tuple-Euclidean-Domain : + (n : ℕ) (v1 v2 v3 : functional-tuple-Euclidean-Domain R n) → + ( add-functional-tuple-Euclidean-Domain ( n) - ( add-functional-vec-Euclidean-Domain n v1 v2) + ( add-functional-tuple-Euclidean-Domain n v1 v2) ( v3)) = - ( add-functional-vec-Euclidean-Domain + ( add-functional-tuple-Euclidean-Domain ( n) ( v1) - ( add-functional-vec-Euclidean-Domain n v2 v3)) - associative-add-functional-vec-Euclidean-Domain n v1 v2 v3 = + ( add-functional-tuple-Euclidean-Domain n v2 v3)) + associative-add-functional-tuple-Euclidean-Domain n v1 v2 v3 = eq-htpy (λ i → associative-add-Euclidean-Domain R (v1 i) (v2 i) (v3 i)) - functional-vec-Euclidean-Domain-Semigroup : ℕ → Semigroup l - pr1 (functional-vec-Euclidean-Domain-Semigroup n) = - functional-vec-Set (set-Euclidean-Domain R) n - pr1 (pr2 (functional-vec-Euclidean-Domain-Semigroup n)) = - add-functional-vec-Euclidean-Domain n - pr2 (pr2 (functional-vec-Euclidean-Domain-Semigroup n)) = - associative-add-functional-vec-Euclidean-Domain n - - left-unit-law-add-functional-vec-Euclidean-Domain : - (n : ℕ) (v : functional-vec-Euclidean-Domain R n) → - ( add-functional-vec-Euclidean-Domain + functional-tuple-Euclidean-Domain-Semigroup : ℕ → Semigroup l + pr1 (functional-tuple-Euclidean-Domain-Semigroup n) = + functional-tuple-Set (set-Euclidean-Domain R) n + pr1 (pr2 (functional-tuple-Euclidean-Domain-Semigroup n)) = + add-functional-tuple-Euclidean-Domain n + pr2 (pr2 (functional-tuple-Euclidean-Domain-Semigroup n)) = + associative-add-functional-tuple-Euclidean-Domain n + + left-unit-law-add-functional-tuple-Euclidean-Domain : + (n : ℕ) (v : functional-tuple-Euclidean-Domain R n) → + ( add-functional-tuple-Euclidean-Domain ( n) - ( zero-functional-vec-Euclidean-Domain R n) + ( zero-functional-tuple-Euclidean-Domain R n) ( v)) = ( v) - left-unit-law-add-functional-vec-Euclidean-Domain n v = + left-unit-law-add-functional-tuple-Euclidean-Domain n v = eq-htpy (λ i → left-unit-law-add-Euclidean-Domain R (v i)) - right-unit-law-add-functional-vec-Euclidean-Domain : - (n : ℕ) (v : functional-vec-Euclidean-Domain R n) → - ( add-functional-vec-Euclidean-Domain + right-unit-law-add-functional-tuple-Euclidean-Domain : + (n : ℕ) (v : functional-tuple-Euclidean-Domain R n) → + ( add-functional-tuple-Euclidean-Domain ( n) ( v) - ( zero-functional-vec-Euclidean-Domain R n)) = + ( zero-functional-tuple-Euclidean-Domain R n)) = ( v) - right-unit-law-add-functional-vec-Euclidean-Domain n v = + right-unit-law-add-functional-tuple-Euclidean-Domain n v = eq-htpy (λ i → right-unit-law-add-Euclidean-Domain R (v i)) - functional-vec-Euclidean-Domain-Monoid : ℕ → Monoid l - pr1 (functional-vec-Euclidean-Domain-Monoid n) = - functional-vec-Euclidean-Domain-Semigroup n - pr1 (pr2 (functional-vec-Euclidean-Domain-Monoid n)) = - zero-functional-vec-Euclidean-Domain R n - pr1 (pr2 (pr2 (functional-vec-Euclidean-Domain-Monoid n))) = - left-unit-law-add-functional-vec-Euclidean-Domain n - pr2 (pr2 (pr2 (functional-vec-Euclidean-Domain-Monoid n))) = - right-unit-law-add-functional-vec-Euclidean-Domain n - - commutative-add-functional-vec-Euclidean-Domain : - (n : ℕ) (v w : functional-vec-Euclidean-Domain R n) → - add-functional-vec-Euclidean-Domain n v w = - add-functional-vec-Euclidean-Domain n w v - commutative-add-functional-vec-Euclidean-Domain n v w = + functional-tuple-Euclidean-Domain-Monoid : ℕ → Monoid l + pr1 (functional-tuple-Euclidean-Domain-Monoid n) = + functional-tuple-Euclidean-Domain-Semigroup n + pr1 (pr2 (functional-tuple-Euclidean-Domain-Monoid n)) = + zero-functional-tuple-Euclidean-Domain R n + pr1 (pr2 (pr2 (functional-tuple-Euclidean-Domain-Monoid n))) = + left-unit-law-add-functional-tuple-Euclidean-Domain n + pr2 (pr2 (pr2 (functional-tuple-Euclidean-Domain-Monoid n))) = + right-unit-law-add-functional-tuple-Euclidean-Domain n + + commutative-add-functional-tuple-Euclidean-Domain : + (n : ℕ) (v w : functional-tuple-Euclidean-Domain R n) → + add-functional-tuple-Euclidean-Domain n v w = + add-functional-tuple-Euclidean-Domain n w v + commutative-add-functional-tuple-Euclidean-Domain n v w = eq-htpy (λ i → commutative-add-Euclidean-Domain R (v i) (w i)) - functional-vec-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (functional-vec-Euclidean-Domain-Commutative-Monoid n) = - functional-vec-Euclidean-Domain-Monoid n - pr2 (functional-vec-Euclidean-Domain-Commutative-Monoid n) = - commutative-add-functional-vec-Euclidean-Domain n + functional-tuple-Euclidean-Domain-Commutative-Monoid : + ℕ → Commutative-Monoid l + pr1 (functional-tuple-Euclidean-Domain-Commutative-Monoid n) = + functional-tuple-Euclidean-Domain-Monoid n + pr2 (functional-tuple-Euclidean-Domain-Commutative-Monoid n) = + commutative-add-functional-tuple-Euclidean-Domain n ``` -### The negative of a vector on a euclidean domain +### The negative of a tuple on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - neg-vec-Euclidean-Domain : - {n : ℕ} → vec-Euclidean-Domain R n → vec-Euclidean-Domain R n - neg-vec-Euclidean-Domain = map-vec (neg-Euclidean-Domain R) + neg-tuple-Euclidean-Domain : + {n : ℕ} → tuple-Euclidean-Domain R n → tuple-Euclidean-Domain R n + neg-tuple-Euclidean-Domain = map-tuple (neg-Euclidean-Domain R) - left-inverse-law-add-vec-Euclidean-Domain : - {n : ℕ} (v : vec-Euclidean-Domain R n) → + left-inverse-law-add-tuple-Euclidean-Domain : + {n : ℕ} (v : tuple-Euclidean-Domain R n) → Id - ( add-vec-Euclidean-Domain R (neg-vec-Euclidean-Domain v) v) - ( zero-vec-Euclidean-Domain R) - left-inverse-law-add-vec-Euclidean-Domain empty-vec = refl - left-inverse-law-add-vec-Euclidean-Domain (x ∷ v) = + ( add-tuple-Euclidean-Domain R (neg-tuple-Euclidean-Domain v) v) + ( zero-tuple-Euclidean-Domain R) + left-inverse-law-add-tuple-Euclidean-Domain empty-tuple = refl + left-inverse-law-add-tuple-Euclidean-Domain (x ∷ v) = ap-binary _∷_ ( left-inverse-law-add-Euclidean-Domain R x) - ( left-inverse-law-add-vec-Euclidean-Domain v) + ( left-inverse-law-add-tuple-Euclidean-Domain v) - right-inverse-law-add-vec-Euclidean-Domain : - {n : ℕ} (v : vec-Euclidean-Domain R n) → + right-inverse-law-add-tuple-Euclidean-Domain : + {n : ℕ} (v : tuple-Euclidean-Domain R n) → Id - ( add-vec-Euclidean-Domain R v (neg-vec-Euclidean-Domain v)) - ( zero-vec-Euclidean-Domain R) - right-inverse-law-add-vec-Euclidean-Domain empty-vec = refl - right-inverse-law-add-vec-Euclidean-Domain (x ∷ v) = + ( add-tuple-Euclidean-Domain R v (neg-tuple-Euclidean-Domain v)) + ( zero-tuple-Euclidean-Domain R) + right-inverse-law-add-tuple-Euclidean-Domain empty-tuple = refl + right-inverse-law-add-tuple-Euclidean-Domain (x ∷ v) = ap-binary _∷_ ( right-inverse-law-add-Euclidean-Domain R x) - ( right-inverse-law-add-vec-Euclidean-Domain v) - - is-unital-vec-Euclidean-Domain : - (n : ℕ) → is-unital (add-vec-Euclidean-Domain R {n}) - pr1 (is-unital-vec-Euclidean-Domain n) = zero-vec-Euclidean-Domain R - pr1 (pr2 (is-unital-vec-Euclidean-Domain n)) = - left-unit-law-add-vec-Euclidean-Domain R - pr2 (pr2 (is-unital-vec-Euclidean-Domain n)) = - right-unit-law-add-vec-Euclidean-Domain R - - is-group-vec-Euclidean-Domain : - (n : ℕ) → is-group-Semigroup (vec-Euclidean-Domain-Semigroup R n) - pr1 (is-group-vec-Euclidean-Domain n) = is-unital-vec-Euclidean-Domain n - pr1 (pr2 (is-group-vec-Euclidean-Domain n)) = neg-vec-Euclidean-Domain - pr1 (pr2 (pr2 (is-group-vec-Euclidean-Domain n))) = - left-inverse-law-add-vec-Euclidean-Domain - pr2 (pr2 (pr2 (is-group-vec-Euclidean-Domain n))) = - right-inverse-law-add-vec-Euclidean-Domain - - vec-Euclidean-Domain-Group : ℕ → Group l - pr1 (vec-Euclidean-Domain-Group n) = vec-Euclidean-Domain-Semigroup R n - pr2 (vec-Euclidean-Domain-Group n) = is-group-vec-Euclidean-Domain n - - vec-Euclidean-Domain-Ab : ℕ → Ab l - pr1 (vec-Euclidean-Domain-Ab n) = vec-Euclidean-Domain-Group n - pr2 (vec-Euclidean-Domain-Ab n) = commutative-add-vec-Euclidean-Domain R + ( right-inverse-law-add-tuple-Euclidean-Domain v) + + is-unital-tuple-Euclidean-Domain : + (n : ℕ) → is-unital (add-tuple-Euclidean-Domain R {n}) + pr1 (is-unital-tuple-Euclidean-Domain n) = zero-tuple-Euclidean-Domain R + pr1 (pr2 (is-unital-tuple-Euclidean-Domain n)) = + left-unit-law-add-tuple-Euclidean-Domain R + pr2 (pr2 (is-unital-tuple-Euclidean-Domain n)) = + right-unit-law-add-tuple-Euclidean-Domain R + + is-group-tuple-Euclidean-Domain : + (n : ℕ) → is-group-Semigroup (tuple-Euclidean-Domain-Semigroup R n) + pr1 (is-group-tuple-Euclidean-Domain n) = is-unital-tuple-Euclidean-Domain n + pr1 (pr2 (is-group-tuple-Euclidean-Domain n)) = neg-tuple-Euclidean-Domain + pr1 (pr2 (pr2 (is-group-tuple-Euclidean-Domain n))) = + left-inverse-law-add-tuple-Euclidean-Domain + pr2 (pr2 (pr2 (is-group-tuple-Euclidean-Domain n))) = + right-inverse-law-add-tuple-Euclidean-Domain + + tuple-Euclidean-Domain-Group : ℕ → Group l + pr1 (tuple-Euclidean-Domain-Group n) = tuple-Euclidean-Domain-Semigroup R n + pr2 (tuple-Euclidean-Domain-Group n) = is-group-tuple-Euclidean-Domain n + + tuple-Euclidean-Domain-Ab : ℕ → Ab l + pr1 (tuple-Euclidean-Domain-Ab n) = tuple-Euclidean-Domain-Group n + pr2 (tuple-Euclidean-Domain-Ab n) = commutative-add-tuple-Euclidean-Domain R ``` diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index fbeb4ee829..4d0ead0d32 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -1,7 +1,7 @@ -# Vectors on rings +# Tuples on rings ```agda -module linear-algebra.vectors-on-rings where +module linear-algebra.tuples-on-rings where ```
Imports @@ -22,9 +22,9 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.constant-vectors -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.constant-tuples +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import ring-theory.rings ``` @@ -33,249 +33,250 @@ open import ring-theory.rings ## Idea -Given a ring `R`, the type `vec n R` of `R`-vectors is an `R`-module. +Given a ring `R`, the type `tuple n R` of `R`-tuples is an `R`-module. ## Definitions -### Listed vectors on rings +### Listed tuples on rings ```agda module _ {l : Level} (R : Ring l) where - vec-Ring : ℕ → UU l - vec-Ring = vec (type-Ring R) + tuple-Ring : ℕ → UU l + tuple-Ring = tuple (type-Ring R) - head-vec-Ring : {n : ℕ} → vec-Ring (succ-ℕ n) → type-Ring R - head-vec-Ring v = head-vec v + head-tuple-Ring : {n : ℕ} → tuple-Ring (succ-ℕ n) → type-Ring R + head-tuple-Ring v = head-tuple v - tail-vec-Ring : {n : ℕ} → vec-Ring (succ-ℕ n) → vec-Ring n - tail-vec-Ring v = tail-vec v + tail-tuple-Ring : {n : ℕ} → tuple-Ring (succ-ℕ n) → tuple-Ring n + tail-tuple-Ring v = tail-tuple v - snoc-vec-Ring : {n : ℕ} → vec-Ring n → type-Ring R → vec-Ring (succ-ℕ n) - snoc-vec-Ring v r = snoc-vec v r + snoc-tuple-Ring : {n : ℕ} → tuple-Ring n → type-Ring R → tuple-Ring (succ-ℕ n) + snoc-tuple-Ring v r = snoc-tuple v r ``` -### Functional vectors on rings +### Functional tuples on rings ```agda module _ {l : Level} (R : Ring l) where - functional-vec-Ring : ℕ → UU l - functional-vec-Ring = functional-vec (type-Ring R) + functional-tuple-Ring : ℕ → UU l + functional-tuple-Ring = functional-tuple (type-Ring R) - head-functional-vec-Ring : - (n : ℕ) → functional-vec-Ring (succ-ℕ n) → type-Ring R - head-functional-vec-Ring n v = head-functional-vec n v + head-functional-tuple-Ring : + (n : ℕ) → functional-tuple-Ring (succ-ℕ n) → type-Ring R + head-functional-tuple-Ring n v = head-functional-tuple n v - tail-functional-vec-Ring : - (n : ℕ) → functional-vec-Ring (succ-ℕ n) → functional-vec-Ring n - tail-functional-vec-Ring = tail-functional-vec + tail-functional-tuple-Ring : + (n : ℕ) → functional-tuple-Ring (succ-ℕ n) → functional-tuple-Ring n + tail-functional-tuple-Ring = tail-functional-tuple - cons-functional-vec-Ring : + cons-functional-tuple-Ring : (n : ℕ) → type-Ring R → - functional-vec-Ring n → functional-vec-Ring (succ-ℕ n) - cons-functional-vec-Ring = cons-functional-vec + functional-tuple-Ring n → functional-tuple-Ring (succ-ℕ n) + cons-functional-tuple-Ring = cons-functional-tuple - snoc-functional-vec-Ring : - (n : ℕ) → functional-vec-Ring n → type-Ring R → - functional-vec-Ring (succ-ℕ n) - snoc-functional-vec-Ring = snoc-functional-vec + snoc-functional-tuple-Ring : + (n : ℕ) → functional-tuple-Ring n → type-Ring R → + functional-tuple-Ring (succ-ℕ n) + snoc-functional-tuple-Ring = snoc-functional-tuple ``` -### Zero vector on a ring +### Zero tuple on a ring -#### The zero listed vector +#### The zero listed tuple ```agda module _ {l : Level} (R : Ring l) where - zero-vec-Ring : {n : ℕ} → vec-Ring R n - zero-vec-Ring = constant-vec (zero-Ring R) + zero-tuple-Ring : {n : ℕ} → tuple-Ring R n + zero-tuple-Ring = constant-tuple (zero-Ring R) ``` -#### The zero functional vector +#### The zero functional tuple ```agda module _ {l : Level} (R : Ring l) where - zero-functional-vec-Ring : (n : ℕ) → functional-vec-Ring R n - zero-functional-vec-Ring n i = zero-Ring R + zero-functional-tuple-Ring : (n : ℕ) → functional-tuple-Ring R n + zero-functional-tuple-Ring n i = zero-Ring R ``` -### Pointwise addition of vectors on a ring +### Pointwise addition of tuples on a ring -#### Pointwise addition of listed vectors on a ring +#### Pointwise addition of listed tuples on a ring ```agda module _ {l : Level} (R : Ring l) where - add-vec-Ring : {n : ℕ} → vec-Ring R n → vec-Ring R n → vec-Ring R n - add-vec-Ring = binary-map-vec (add-Ring R) + add-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n → tuple-Ring R n + add-tuple-Ring = binary-map-tuple (add-Ring R) - associative-add-vec-Ring : - {n : ℕ} (v1 v2 v3 : vec-Ring R n) → + associative-add-tuple-Ring : + {n : ℕ} (v1 v2 v3 : tuple-Ring R n) → Id - ( add-vec-Ring (add-vec-Ring v1 v2) v3) - ( add-vec-Ring v1 (add-vec-Ring v2 v3)) - associative-add-vec-Ring empty-vec empty-vec empty-vec = refl - associative-add-vec-Ring (x ∷ v1) (y ∷ v2) (z ∷ v3) = + ( add-tuple-Ring (add-tuple-Ring v1 v2) v3) + ( add-tuple-Ring v1 (add-tuple-Ring v2 v3)) + associative-add-tuple-Ring empty-tuple empty-tuple empty-tuple = refl + associative-add-tuple-Ring (x ∷ v1) (y ∷ v2) (z ∷ v3) = ap-binary _∷_ ( associative-add-Ring R x y z) - ( associative-add-vec-Ring v1 v2 v3) + ( associative-add-tuple-Ring v1 v2 v3) - vec-Ring-Semigroup : ℕ → Semigroup l - pr1 (vec-Ring-Semigroup n) = vec-Set (set-Ring R) n - pr1 (pr2 (vec-Ring-Semigroup n)) = add-vec-Ring - pr2 (pr2 (vec-Ring-Semigroup n)) = associative-add-vec-Ring + tuple-Ring-Semigroup : ℕ → Semigroup l + pr1 (tuple-Ring-Semigroup n) = tuple-Set (set-Ring R) n + pr1 (pr2 (tuple-Ring-Semigroup n)) = add-tuple-Ring + pr2 (pr2 (tuple-Ring-Semigroup n)) = associative-add-tuple-Ring - left-unit-law-add-vec-Ring : - {n : ℕ} (v : vec-Ring R n) → Id (add-vec-Ring (zero-vec-Ring R) v) v - left-unit-law-add-vec-Ring empty-vec = refl - left-unit-law-add-vec-Ring (x ∷ v) = + left-unit-law-add-tuple-Ring : + {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring (zero-tuple-Ring R) v) v + left-unit-law-add-tuple-Ring empty-tuple = refl + left-unit-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ ( left-unit-law-add-Ring R x) - ( left-unit-law-add-vec-Ring v) + ( left-unit-law-add-tuple-Ring v) - right-unit-law-add-vec-Ring : - {n : ℕ} (v : vec-Ring R n) → Id (add-vec-Ring v (zero-vec-Ring R)) v - right-unit-law-add-vec-Ring empty-vec = refl - right-unit-law-add-vec-Ring (x ∷ v) = + right-unit-law-add-tuple-Ring : + {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring v (zero-tuple-Ring R)) v + right-unit-law-add-tuple-Ring empty-tuple = refl + right-unit-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ ( right-unit-law-add-Ring R x) - ( right-unit-law-add-vec-Ring v) - - vec-Ring-Monoid : ℕ → Monoid l - pr1 (vec-Ring-Monoid n) = vec-Ring-Semigroup n - pr1 (pr2 (vec-Ring-Monoid n)) = zero-vec-Ring R - pr1 (pr2 (pr2 (vec-Ring-Monoid n))) = left-unit-law-add-vec-Ring - pr2 (pr2 (pr2 (vec-Ring-Monoid n))) = right-unit-law-add-vec-Ring - - commutative-add-vec-Ring : - {n : ℕ} (v w : vec-Ring R n) → Id (add-vec-Ring v w) (add-vec-Ring w v) - commutative-add-vec-Ring empty-vec empty-vec = refl - commutative-add-vec-Ring (x ∷ v) (y ∷ w) = + ( right-unit-law-add-tuple-Ring v) + + tuple-Ring-Monoid : ℕ → Monoid l + pr1 (tuple-Ring-Monoid n) = tuple-Ring-Semigroup n + pr1 (pr2 (tuple-Ring-Monoid n)) = zero-tuple-Ring R + pr1 (pr2 (pr2 (tuple-Ring-Monoid n))) = left-unit-law-add-tuple-Ring + pr2 (pr2 (pr2 (tuple-Ring-Monoid n))) = right-unit-law-add-tuple-Ring + + commutative-add-tuple-Ring : + {n : ℕ} (v w : tuple-Ring R n) → + Id (add-tuple-Ring v w) (add-tuple-Ring w v) + commutative-add-tuple-Ring empty-tuple empty-tuple = refl + commutative-add-tuple-Ring (x ∷ v) (y ∷ w) = ap-binary _∷_ ( commutative-add-Ring R x y) - ( commutative-add-vec-Ring v w) + ( commutative-add-tuple-Ring v w) - vec-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (vec-Ring-Commutative-Monoid n) = vec-Ring-Monoid n - pr2 (vec-Ring-Commutative-Monoid n) = commutative-add-vec-Ring + tuple-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (tuple-Ring-Commutative-Monoid n) = tuple-Ring-Monoid n + pr2 (tuple-Ring-Commutative-Monoid n) = commutative-add-tuple-Ring ``` -#### Pointwise addition of functional vectors on a ring +#### Pointwise addition of functional tuples on a ring ```agda module _ {l : Level} (R : Ring l) where - add-functional-vec-Ring : - (n : ℕ) (v w : functional-vec-Ring R n) → functional-vec-Ring R n - add-functional-vec-Ring n = binary-map-functional-vec n (add-Ring R) + add-functional-tuple-Ring : + (n : ℕ) (v w : functional-tuple-Ring R n) → functional-tuple-Ring R n + add-functional-tuple-Ring n = binary-map-functional-tuple n (add-Ring R) - associative-add-functional-vec-Ring : - (n : ℕ) (v1 v2 v3 : functional-vec-Ring R n) → - ( add-functional-vec-Ring n (add-functional-vec-Ring n v1 v2) v3) = - ( add-functional-vec-Ring n v1 (add-functional-vec-Ring n v2 v3)) - associative-add-functional-vec-Ring n v1 v2 v3 = + associative-add-functional-tuple-Ring : + (n : ℕ) (v1 v2 v3 : functional-tuple-Ring R n) → + ( add-functional-tuple-Ring n (add-functional-tuple-Ring n v1 v2) v3) = + ( add-functional-tuple-Ring n v1 (add-functional-tuple-Ring n v2 v3)) + associative-add-functional-tuple-Ring n v1 v2 v3 = eq-htpy (λ i → associative-add-Ring R (v1 i) (v2 i) (v3 i)) - functional-vec-Ring-Semigroup : ℕ → Semigroup l - pr1 (functional-vec-Ring-Semigroup n) = functional-vec-Set (set-Ring R) n - pr1 (pr2 (functional-vec-Ring-Semigroup n)) = add-functional-vec-Ring n - pr2 (pr2 (functional-vec-Ring-Semigroup n)) = - associative-add-functional-vec-Ring n + functional-tuple-Ring-Semigroup : ℕ → Semigroup l + pr1 (functional-tuple-Ring-Semigroup n) = functional-tuple-Set (set-Ring R) n + pr1 (pr2 (functional-tuple-Ring-Semigroup n)) = add-functional-tuple-Ring n + pr2 (pr2 (functional-tuple-Ring-Semigroup n)) = + associative-add-functional-tuple-Ring n - left-unit-law-add-functional-vec-Ring : - (n : ℕ) (v : functional-vec-Ring R n) → - add-functional-vec-Ring n (zero-functional-vec-Ring R n) v = v - left-unit-law-add-functional-vec-Ring n v = + left-unit-law-add-functional-tuple-Ring : + (n : ℕ) (v : functional-tuple-Ring R n) → + add-functional-tuple-Ring n (zero-functional-tuple-Ring R n) v = v + left-unit-law-add-functional-tuple-Ring n v = eq-htpy (λ i → left-unit-law-add-Ring R (v i)) - right-unit-law-add-functional-vec-Ring : - (n : ℕ) (v : functional-vec-Ring R n) → - add-functional-vec-Ring n v (zero-functional-vec-Ring R n) = v - right-unit-law-add-functional-vec-Ring n v = + right-unit-law-add-functional-tuple-Ring : + (n : ℕ) (v : functional-tuple-Ring R n) → + add-functional-tuple-Ring n v (zero-functional-tuple-Ring R n) = v + right-unit-law-add-functional-tuple-Ring n v = eq-htpy (λ i → right-unit-law-add-Ring R (v i)) - functional-vec-Ring-Monoid : ℕ → Monoid l - pr1 (functional-vec-Ring-Monoid n) = - functional-vec-Ring-Semigroup n - pr1 (pr2 (functional-vec-Ring-Monoid n)) = - zero-functional-vec-Ring R n - pr1 (pr2 (pr2 (functional-vec-Ring-Monoid n))) = - left-unit-law-add-functional-vec-Ring n - pr2 (pr2 (pr2 (functional-vec-Ring-Monoid n))) = - right-unit-law-add-functional-vec-Ring n - - commutative-add-functional-vec-Ring : - (n : ℕ) (v w : functional-vec-Ring R n) → - add-functional-vec-Ring n v w = add-functional-vec-Ring n w v - commutative-add-functional-vec-Ring n v w = + functional-tuple-Ring-Monoid : ℕ → Monoid l + pr1 (functional-tuple-Ring-Monoid n) = + functional-tuple-Ring-Semigroup n + pr1 (pr2 (functional-tuple-Ring-Monoid n)) = + zero-functional-tuple-Ring R n + pr1 (pr2 (pr2 (functional-tuple-Ring-Monoid n))) = + left-unit-law-add-functional-tuple-Ring n + pr2 (pr2 (pr2 (functional-tuple-Ring-Monoid n))) = + right-unit-law-add-functional-tuple-Ring n + + commutative-add-functional-tuple-Ring : + (n : ℕ) (v w : functional-tuple-Ring R n) → + add-functional-tuple-Ring n v w = add-functional-tuple-Ring n w v + commutative-add-functional-tuple-Ring n v w = eq-htpy (λ i → commutative-add-Ring R (v i) (w i)) - functional-vec-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (functional-vec-Ring-Commutative-Monoid n) = - functional-vec-Ring-Monoid n - pr2 (functional-vec-Ring-Commutative-Monoid n) = - commutative-add-functional-vec-Ring n + functional-tuple-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (functional-tuple-Ring-Commutative-Monoid n) = + functional-tuple-Ring-Monoid n + pr2 (functional-tuple-Ring-Commutative-Monoid n) = + commutative-add-functional-tuple-Ring n ``` -### The negative of a vector on a ring +### The negative of a tuple on a ring ```agda module _ {l : Level} (R : Ring l) where - neg-vec-Ring : {n : ℕ} → vec-Ring R n → vec-Ring R n - neg-vec-Ring = map-vec (neg-Ring R) + neg-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n + neg-tuple-Ring = map-tuple (neg-Ring R) - left-inverse-law-add-vec-Ring : - {n : ℕ} (v : vec-Ring R n) → - Id (add-vec-Ring R (neg-vec-Ring v) v) (zero-vec-Ring R) - left-inverse-law-add-vec-Ring empty-vec = refl - left-inverse-law-add-vec-Ring (x ∷ v) = + left-inverse-law-add-tuple-Ring : + {n : ℕ} (v : tuple-Ring R n) → + Id (add-tuple-Ring R (neg-tuple-Ring v) v) (zero-tuple-Ring R) + left-inverse-law-add-tuple-Ring empty-tuple = refl + left-inverse-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ ( left-inverse-law-add-Ring R x) - ( left-inverse-law-add-vec-Ring v) + ( left-inverse-law-add-tuple-Ring v) - right-inverse-law-add-vec-Ring : - {n : ℕ} (v : vec-Ring R n) → - Id (add-vec-Ring R v (neg-vec-Ring v)) (zero-vec-Ring R) - right-inverse-law-add-vec-Ring empty-vec = refl - right-inverse-law-add-vec-Ring (x ∷ v) = + right-inverse-law-add-tuple-Ring : + {n : ℕ} (v : tuple-Ring R n) → + Id (add-tuple-Ring R v (neg-tuple-Ring v)) (zero-tuple-Ring R) + right-inverse-law-add-tuple-Ring empty-tuple = refl + right-inverse-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ ( right-inverse-law-add-Ring R x) - ( right-inverse-law-add-vec-Ring v) - - is-unital-vec-Ring : (n : ℕ) → is-unital (add-vec-Ring R {n}) - pr1 (is-unital-vec-Ring n) = zero-vec-Ring R - pr1 (pr2 (is-unital-vec-Ring n)) = left-unit-law-add-vec-Ring R - pr2 (pr2 (is-unital-vec-Ring n)) = right-unit-law-add-vec-Ring R - - is-group-vec-Ring : (n : ℕ) → is-group-Semigroup (vec-Ring-Semigroup R n) - pr1 (is-group-vec-Ring n) = is-unital-vec-Ring n - pr1 (pr2 (is-group-vec-Ring n)) = neg-vec-Ring - pr1 (pr2 (pr2 (is-group-vec-Ring n))) = left-inverse-law-add-vec-Ring - pr2 (pr2 (pr2 (is-group-vec-Ring n))) = right-inverse-law-add-vec-Ring - - vec-Ring-Group : ℕ → Group l - pr1 (vec-Ring-Group n) = vec-Ring-Semigroup R n - pr2 (vec-Ring-Group n) = is-group-vec-Ring n - - vec-Ring-Ab : ℕ → Ab l - pr1 (vec-Ring-Ab n) = vec-Ring-Group n - pr2 (vec-Ring-Ab n) = commutative-add-vec-Ring R + ( right-inverse-law-add-tuple-Ring v) + + is-unital-tuple-Ring : (n : ℕ) → is-unital (add-tuple-Ring R {n}) + pr1 (is-unital-tuple-Ring n) = zero-tuple-Ring R + pr1 (pr2 (is-unital-tuple-Ring n)) = left-unit-law-add-tuple-Ring R + pr2 (pr2 (is-unital-tuple-Ring n)) = right-unit-law-add-tuple-Ring R + + is-group-tuple-Ring : (n : ℕ) → is-group-Semigroup (tuple-Ring-Semigroup R n) + pr1 (is-group-tuple-Ring n) = is-unital-tuple-Ring n + pr1 (pr2 (is-group-tuple-Ring n)) = neg-tuple-Ring + pr1 (pr2 (pr2 (is-group-tuple-Ring n))) = left-inverse-law-add-tuple-Ring + pr2 (pr2 (pr2 (is-group-tuple-Ring n))) = right-inverse-law-add-tuple-Ring + + tuple-Ring-Group : ℕ → Group l + pr1 (tuple-Ring-Group n) = tuple-Ring-Semigroup R n + pr2 (tuple-Ring-Group n) = is-group-tuple-Ring n + + tuple-Ring-Ab : ℕ → Ab l + pr1 (tuple-Ring-Ab n) = tuple-Ring-Group n + pr2 (tuple-Ring-Ab n) = commutative-add-tuple-Ring R ``` diff --git a/src/linear-algebra/tuples-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md index c66387088a..a384c17285 100644 --- a/src/linear-algebra/tuples-on-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-semirings.lagda.md @@ -1,7 +1,7 @@ -# Vectors on semirings +# Tuples on semirings ```agda -module linear-algebra.vectors-on-semirings where +module linear-algebra.tuples-on-semirings where ```
Imports @@ -19,9 +19,9 @@ open import group-theory.commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.constant-vectors -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.constant-tuples +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import ring-theory.semirings ``` @@ -30,207 +30,215 @@ open import ring-theory.semirings ## Idea -Given a ring `R`, the type `vec n R` of `R`-vectors is an `R`-module +Given a ring `R`, the type `tuple n R` of `R`-tuples is an `R`-module ## Definitions -### Listed vectors on semirings +### Listed tuples on semirings ```agda module _ {l : Level} (R : Semiring l) where - vec-Semiring : ℕ → UU l - vec-Semiring = vec (type-Semiring R) + tuple-Semiring : ℕ → UU l + tuple-Semiring = tuple (type-Semiring R) - head-vec-Semiring : {n : ℕ} → vec-Semiring (succ-ℕ n) → type-Semiring R - head-vec-Semiring v = head-vec v + head-tuple-Semiring : {n : ℕ} → tuple-Semiring (succ-ℕ n) → type-Semiring R + head-tuple-Semiring v = head-tuple v - tail-vec-Semiring : {n : ℕ} → vec-Semiring (succ-ℕ n) → vec-Semiring n - tail-vec-Semiring v = tail-vec v + tail-tuple-Semiring : {n : ℕ} → tuple-Semiring (succ-ℕ n) → tuple-Semiring n + tail-tuple-Semiring v = tail-tuple v - snoc-vec-Semiring : - {n : ℕ} → vec-Semiring n → type-Semiring R → vec-Semiring (succ-ℕ n) - snoc-vec-Semiring v r = snoc-vec v r + snoc-tuple-Semiring : + {n : ℕ} → tuple-Semiring n → type-Semiring R → tuple-Semiring (succ-ℕ n) + snoc-tuple-Semiring v r = snoc-tuple v r ``` -### Functional vectors on rings +### Functional tuples on rings ```agda module _ {l : Level} (R : Semiring l) where - functional-vec-Semiring : ℕ → UU l - functional-vec-Semiring = functional-vec (type-Semiring R) + functional-tuple-Semiring : ℕ → UU l + functional-tuple-Semiring = functional-tuple (type-Semiring R) - head-functional-vec-Semiring : - (n : ℕ) → functional-vec-Semiring (succ-ℕ n) → type-Semiring R - head-functional-vec-Semiring n v = head-functional-vec n v + head-functional-tuple-Semiring : + (n : ℕ) → functional-tuple-Semiring (succ-ℕ n) → type-Semiring R + head-functional-tuple-Semiring n v = head-functional-tuple n v - tail-functional-vec-Semiring : - (n : ℕ) → functional-vec-Semiring (succ-ℕ n) → functional-vec-Semiring n - tail-functional-vec-Semiring = tail-functional-vec + tail-functional-tuple-Semiring : + (n : ℕ) → functional-tuple-Semiring (succ-ℕ n) → functional-tuple-Semiring n + tail-functional-tuple-Semiring = tail-functional-tuple - cons-functional-vec-Semiring : + cons-functional-tuple-Semiring : (n : ℕ) → type-Semiring R → - functional-vec-Semiring n → functional-vec-Semiring (succ-ℕ n) - cons-functional-vec-Semiring = cons-functional-vec + functional-tuple-Semiring n → functional-tuple-Semiring (succ-ℕ n) + cons-functional-tuple-Semiring = cons-functional-tuple - snoc-functional-vec-Semiring : - (n : ℕ) → functional-vec-Semiring n → type-Semiring R → - functional-vec-Semiring (succ-ℕ n) - snoc-functional-vec-Semiring = snoc-functional-vec + snoc-functional-tuple-Semiring : + (n : ℕ) → functional-tuple-Semiring n → type-Semiring R → + functional-tuple-Semiring (succ-ℕ n) + snoc-functional-tuple-Semiring = snoc-functional-tuple ``` -### Zero vector on a ring +### Zero tuple on a ring -#### The zero listed vector +#### The zero listed tuple ```agda module _ {l : Level} (R : Semiring l) where - zero-vec-Semiring : {n : ℕ} → vec-Semiring R n - zero-vec-Semiring = constant-vec (zero-Semiring R) + zero-tuple-Semiring : {n : ℕ} → tuple-Semiring R n + zero-tuple-Semiring = constant-tuple (zero-Semiring R) ``` -#### The zero functional vector +#### The zero functional tuple ```agda module _ {l : Level} (R : Semiring l) where - zero-functional-vec-Semiring : (n : ℕ) → functional-vec-Semiring R n - zero-functional-vec-Semiring n i = zero-Semiring R + zero-functional-tuple-Semiring : (n : ℕ) → functional-tuple-Semiring R n + zero-functional-tuple-Semiring n i = zero-Semiring R ``` -### Pointwise addition of vectors on a ring +### Pointwise addition of tuples on a ring -#### Pointwise addition of listed vectors on a ring +#### Pointwise addition of listed tuples on a ring ```agda module _ {l : Level} (R : Semiring l) where - add-vec-Semiring : - {n : ℕ} → vec-Semiring R n → vec-Semiring R n → vec-Semiring R n - add-vec-Semiring = binary-map-vec (add-Semiring R) + add-tuple-Semiring : + {n : ℕ} → tuple-Semiring R n → tuple-Semiring R n → tuple-Semiring R n + add-tuple-Semiring = binary-map-tuple (add-Semiring R) - associative-add-vec-Semiring : - {n : ℕ} (v1 v2 v3 : vec-Semiring R n) → - add-vec-Semiring (add-vec-Semiring v1 v2) v3 = - add-vec-Semiring v1 (add-vec-Semiring v2 v3) - associative-add-vec-Semiring empty-vec empty-vec empty-vec = refl - associative-add-vec-Semiring (x ∷ v1) (y ∷ v2) (z ∷ v3) = + associative-add-tuple-Semiring : + {n : ℕ} (v1 v2 v3 : tuple-Semiring R n) → + add-tuple-Semiring (add-tuple-Semiring v1 v2) v3 = + add-tuple-Semiring v1 (add-tuple-Semiring v2 v3) + associative-add-tuple-Semiring empty-tuple empty-tuple empty-tuple = refl + associative-add-tuple-Semiring (x ∷ v1) (y ∷ v2) (z ∷ v3) = ap-binary _∷_ ( associative-add-Semiring R x y z) - ( associative-add-vec-Semiring v1 v2 v3) - - vec-Semiring-Semigroup : ℕ → Semigroup l - pr1 (vec-Semiring-Semigroup n) = vec-Set (set-Semiring R) n - pr1 (pr2 (vec-Semiring-Semigroup n)) = add-vec-Semiring - pr2 (pr2 (vec-Semiring-Semigroup n)) = associative-add-vec-Semiring - - left-unit-law-add-vec-Semiring : - {n : ℕ} (v : vec-Semiring R n) → - add-vec-Semiring (zero-vec-Semiring R) v = v - left-unit-law-add-vec-Semiring empty-vec = refl - left-unit-law-add-vec-Semiring (x ∷ v) = + ( associative-add-tuple-Semiring v1 v2 v3) + + tuple-Semiring-Semigroup : ℕ → Semigroup l + pr1 (tuple-Semiring-Semigroup n) = tuple-Set (set-Semiring R) n + pr1 (pr2 (tuple-Semiring-Semigroup n)) = add-tuple-Semiring + pr2 (pr2 (tuple-Semiring-Semigroup n)) = associative-add-tuple-Semiring + + left-unit-law-add-tuple-Semiring : + {n : ℕ} (v : tuple-Semiring R n) → + add-tuple-Semiring (zero-tuple-Semiring R) v = v + left-unit-law-add-tuple-Semiring empty-tuple = refl + left-unit-law-add-tuple-Semiring (x ∷ v) = ap-binary _∷_ ( left-unit-law-add-Semiring R x) - ( left-unit-law-add-vec-Semiring v) + ( left-unit-law-add-tuple-Semiring v) - right-unit-law-add-vec-Semiring : - {n : ℕ} (v : vec-Semiring R n) → - add-vec-Semiring v (zero-vec-Semiring R) = v - right-unit-law-add-vec-Semiring empty-vec = refl - right-unit-law-add-vec-Semiring (x ∷ v) = + right-unit-law-add-tuple-Semiring : + {n : ℕ} (v : tuple-Semiring R n) → + add-tuple-Semiring v (zero-tuple-Semiring R) = v + right-unit-law-add-tuple-Semiring empty-tuple = refl + right-unit-law-add-tuple-Semiring (x ∷ v) = ap-binary _∷_ ( right-unit-law-add-Semiring R x) - ( right-unit-law-add-vec-Semiring v) - - vec-Semiring-Monoid : ℕ → Monoid l - pr1 (vec-Semiring-Monoid n) = vec-Semiring-Semigroup n - pr1 (pr2 (vec-Semiring-Monoid n)) = zero-vec-Semiring R - pr1 (pr2 (pr2 (vec-Semiring-Monoid n))) = left-unit-law-add-vec-Semiring - pr2 (pr2 (pr2 (vec-Semiring-Monoid n))) = right-unit-law-add-vec-Semiring - - commutative-add-vec-Semiring : - {n : ℕ} (v w : vec-Semiring R n) → - add-vec-Semiring v w = add-vec-Semiring w v - commutative-add-vec-Semiring empty-vec empty-vec = refl - commutative-add-vec-Semiring (x ∷ v) (y ∷ w) = + ( right-unit-law-add-tuple-Semiring v) + + tuple-Semiring-Monoid : ℕ → Monoid l + pr1 (tuple-Semiring-Monoid n) = tuple-Semiring-Semigroup n + pr1 (pr2 (tuple-Semiring-Monoid n)) = zero-tuple-Semiring R + pr1 (pr2 (pr2 (tuple-Semiring-Monoid n))) = left-unit-law-add-tuple-Semiring + pr2 (pr2 (pr2 (tuple-Semiring-Monoid n))) = right-unit-law-add-tuple-Semiring + + commutative-add-tuple-Semiring : + {n : ℕ} (v w : tuple-Semiring R n) → + add-tuple-Semiring v w = add-tuple-Semiring w v + commutative-add-tuple-Semiring empty-tuple empty-tuple = refl + commutative-add-tuple-Semiring (x ∷ v) (y ∷ w) = ap-binary _∷_ ( commutative-add-Semiring R x y) - ( commutative-add-vec-Semiring v w) + ( commutative-add-tuple-Semiring v w) - vec-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (vec-Semiring-Commutative-Monoid n) = vec-Semiring-Monoid n - pr2 (vec-Semiring-Commutative-Monoid n) = commutative-add-vec-Semiring + tuple-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (tuple-Semiring-Commutative-Monoid n) = tuple-Semiring-Monoid n + pr2 (tuple-Semiring-Commutative-Monoid n) = commutative-add-tuple-Semiring ``` -#### Pointwise addition of functional vectors on a ring +#### Pointwise addition of functional tuples on a ring ```agda module _ {l : Level} (R : Semiring l) where - add-functional-vec-Semiring : - (n : ℕ) (v w : functional-vec-Semiring R n) → functional-vec-Semiring R n - add-functional-vec-Semiring n = binary-map-functional-vec n (add-Semiring R) - - associative-add-functional-vec-Semiring : - (n : ℕ) (v1 v2 v3 : functional-vec-Semiring R n) → - ( add-functional-vec-Semiring n (add-functional-vec-Semiring n v1 v2) v3) = - ( add-functional-vec-Semiring n v1 (add-functional-vec-Semiring n v2 v3)) - associative-add-functional-vec-Semiring n v1 v2 v3 = + add-functional-tuple-Semiring : + (n : ℕ) (v w : functional-tuple-Semiring R n) → + functional-tuple-Semiring R n + add-functional-tuple-Semiring n = + binary-map-functional-tuple n (add-Semiring R) + + associative-add-functional-tuple-Semiring : + (n : ℕ) (v1 v2 v3 : functional-tuple-Semiring R n) → + ( add-functional-tuple-Semiring + ( n) + ( add-functional-tuple-Semiring n v1 v2) + ( v3)) = + ( add-functional-tuple-Semiring + ( n) + ( v1) + ( add-functional-tuple-Semiring n v2 v3)) + associative-add-functional-tuple-Semiring n v1 v2 v3 = eq-htpy (λ i → associative-add-Semiring R (v1 i) (v2 i) (v3 i)) - functional-vec-Semiring-Semigroup : ℕ → Semigroup l - pr1 (functional-vec-Semiring-Semigroup n) = - functional-vec-Set (set-Semiring R) n - pr1 (pr2 (functional-vec-Semiring-Semigroup n)) = - add-functional-vec-Semiring n - pr2 (pr2 (functional-vec-Semiring-Semigroup n)) = - associative-add-functional-vec-Semiring n - - left-unit-law-add-functional-vec-Semiring : - (n : ℕ) (v : functional-vec-Semiring R n) → - add-functional-vec-Semiring n (zero-functional-vec-Semiring R n) v = v - left-unit-law-add-functional-vec-Semiring n v = + functional-tuple-Semiring-Semigroup : ℕ → Semigroup l + pr1 (functional-tuple-Semiring-Semigroup n) = + functional-tuple-Set (set-Semiring R) n + pr1 (pr2 (functional-tuple-Semiring-Semigroup n)) = + add-functional-tuple-Semiring n + pr2 (pr2 (functional-tuple-Semiring-Semigroup n)) = + associative-add-functional-tuple-Semiring n + + left-unit-law-add-functional-tuple-Semiring : + (n : ℕ) (v : functional-tuple-Semiring R n) → + add-functional-tuple-Semiring n (zero-functional-tuple-Semiring R n) v = v + left-unit-law-add-functional-tuple-Semiring n v = eq-htpy (λ i → left-unit-law-add-Semiring R (v i)) - right-unit-law-add-functional-vec-Semiring : - (n : ℕ) (v : functional-vec-Semiring R n) → - add-functional-vec-Semiring n v (zero-functional-vec-Semiring R n) = v - right-unit-law-add-functional-vec-Semiring n v = + right-unit-law-add-functional-tuple-Semiring : + (n : ℕ) (v : functional-tuple-Semiring R n) → + add-functional-tuple-Semiring n v (zero-functional-tuple-Semiring R n) = v + right-unit-law-add-functional-tuple-Semiring n v = eq-htpy (λ i → right-unit-law-add-Semiring R (v i)) - functional-vec-Semiring-Monoid : ℕ → Monoid l - pr1 (functional-vec-Semiring-Monoid n) = - functional-vec-Semiring-Semigroup n - pr1 (pr2 (functional-vec-Semiring-Monoid n)) = - zero-functional-vec-Semiring R n - pr1 (pr2 (pr2 (functional-vec-Semiring-Monoid n))) = - left-unit-law-add-functional-vec-Semiring n - pr2 (pr2 (pr2 (functional-vec-Semiring-Monoid n))) = - right-unit-law-add-functional-vec-Semiring n - - commutative-add-functional-vec-Semiring : - (n : ℕ) (v w : functional-vec-Semiring R n) → - add-functional-vec-Semiring n v w = add-functional-vec-Semiring n w v - commutative-add-functional-vec-Semiring n v w = + functional-tuple-Semiring-Monoid : ℕ → Monoid l + pr1 (functional-tuple-Semiring-Monoid n) = + functional-tuple-Semiring-Semigroup n + pr1 (pr2 (functional-tuple-Semiring-Monoid n)) = + zero-functional-tuple-Semiring R n + pr1 (pr2 (pr2 (functional-tuple-Semiring-Monoid n))) = + left-unit-law-add-functional-tuple-Semiring n + pr2 (pr2 (pr2 (functional-tuple-Semiring-Monoid n))) = + right-unit-law-add-functional-tuple-Semiring n + + commutative-add-functional-tuple-Semiring : + (n : ℕ) (v w : functional-tuple-Semiring R n) → + add-functional-tuple-Semiring n v w = add-functional-tuple-Semiring n w v + commutative-add-functional-tuple-Semiring n v w = eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) - functional-vec-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (functional-vec-Semiring-Commutative-Monoid n) = - functional-vec-Semiring-Monoid n - pr2 (functional-vec-Semiring-Commutative-Monoid n) = - commutative-add-functional-vec-Semiring n + functional-tuple-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (functional-tuple-Semiring-Commutative-Monoid n) = + functional-tuple-Semiring-Monoid n + pr2 (functional-tuple-Semiring-Commutative-Monoid n) = + commutative-add-functional-tuple-Semiring n ``` diff --git a/src/linear-algebra/tuples.lagda.md b/src/linear-algebra/tuples.lagda.md index a870ba74c9..86b1e65bf9 100644 --- a/src/linear-algebra/tuples.lagda.md +++ b/src/linear-algebra/tuples.lagda.md @@ -1,7 +1,7 @@ -# Vectors +# Tuples ```agda -module linear-algebra.vectors where +module linear-algebra.tuples where ```
Imports @@ -37,402 +37,409 @@ open import univalent-combinatorics.standard-finite-types ## Idea -There are two equivalent definitions of vectors of length `n`. First, a **listed -vector** of length `n` is a list of `n` elements of type `A`. Secondly, a -**functional vector** of length `n` is a map `Fin n → A`. We define both types -of vectors and show that they are equivalent. +There are two equivalent definitions of tuples of length `n`. First, a **listed +tuple** of length `n` is a list of `n` elements of type `A`. Secondly, a +**functional tuple** of length `n` is a map `Fin n → A`. We define both types of +tuples and show that they are equivalent. ## Definitions -### The type of listed vectors +### The type of listed tuples ```agda infixr 10 _∷_ -data vec {l : Level} (A : UU l) : ℕ → UU l where - empty-vec : vec A zero-ℕ - _∷_ : {n : ℕ} → A → vec A n → vec A (succ-ℕ n) +data tuple {l : Level} (A : UU l) : ℕ → UU l where + empty-tuple : tuple A zero-ℕ + _∷_ : {n : ℕ} → A → tuple A n → tuple A (succ-ℕ n) module _ {l : Level} {A : UU l} where - head-vec : {n : ℕ} → vec A (succ-ℕ n) → A - head-vec (x ∷ v) = x + head-tuple : {n : ℕ} → tuple A (succ-ℕ n) → A + head-tuple (x ∷ v) = x - tail-vec : {n : ℕ} → vec A (succ-ℕ n) → vec A n - tail-vec (x ∷ v) = v + tail-tuple : {n : ℕ} → tuple A (succ-ℕ n) → tuple A n + tail-tuple (x ∷ v) = v - snoc-vec : {n : ℕ} → vec A n → A → vec A (succ-ℕ n) - snoc-vec empty-vec a = a ∷ empty-vec - snoc-vec (x ∷ v) a = x ∷ (snoc-vec v a) + snoc-tuple : {n : ℕ} → tuple A n → A → tuple A (succ-ℕ n) + snoc-tuple empty-tuple a = a ∷ empty-tuple + snoc-tuple (x ∷ v) a = x ∷ (snoc-tuple v a) - revert-vec : {n : ℕ} → vec A n → vec A n - revert-vec empty-vec = empty-vec - revert-vec (x ∷ v) = snoc-vec (revert-vec v) x + revert-tuple : {n : ℕ} → tuple A n → tuple A n + revert-tuple empty-tuple = empty-tuple + revert-tuple (x ∷ v) = snoc-tuple (revert-tuple v) x - all-vec : {l2 : Level} {n : ℕ} → (P : A → UU l2) → vec A n → UU l2 - all-vec P empty-vec = raise-unit _ - all-vec P (x ∷ v) = P x × all-vec P v + all-tuple : {l2 : Level} {n : ℕ} → (P : A → UU l2) → tuple A n → UU l2 + all-tuple P empty-tuple = raise-unit _ + all-tuple P (x ∷ v) = P x × all-tuple P v - component-vec : - (n : ℕ) → vec A n → Fin n → A - component-vec (succ-ℕ n) (a ∷ v) (inl k) = component-vec n v k - component-vec (succ-ℕ n) (a ∷ v) (inr k) = a + component-tuple : + (n : ℕ) → tuple A n → Fin n → A + component-tuple (succ-ℕ n) (a ∷ v) (inl k) = component-tuple n v k + component-tuple (succ-ℕ n) (a ∷ v) (inr k) = a - infix 6 _∈-vec_ - data _∈-vec_ : {n : ℕ} → A → vec A n → UU l where - is-head : {n : ℕ} (a : A) (l : vec A n) → a ∈-vec (a ∷ l) - is-in-tail : {n : ℕ} (a x : A) (l : vec A n) → a ∈-vec l → a ∈-vec (x ∷ l) + infix 6 _∈-tuple_ + data _∈-tuple_ : {n : ℕ} → A → tuple A n → UU l where + is-head : {n : ℕ} (a : A) (l : tuple A n) → a ∈-tuple (a ∷ l) + is-in-tail : + {n : ℕ} (a x : A) (l : tuple A n) → a ∈-tuple l → a ∈-tuple (x ∷ l) - index-in-vec : (n : ℕ) → (a : A) → (v : vec A n) → a ∈-vec v → Fin n - index-in-vec (succ-ℕ n) a (.a ∷ v) (is-head .a .v) = + index-in-tuple : (n : ℕ) → (a : A) → (v : tuple A n) → a ∈-tuple v → Fin n + index-in-tuple (succ-ℕ n) a (.a ∷ v) (is-head .a .v) = inr star - index-in-vec (succ-ℕ n) a (x ∷ v) (is-in-tail .a .x .v I) = - inl (index-in-vec n a v I) - - eq-component-vec-index-in-vec : - (n : ℕ) (a : A) (v : vec A n) (I : a ∈-vec v) → - a = component-vec n v (index-in-vec n a v I) - eq-component-vec-index-in-vec (succ-ℕ n) a (.a ∷ v) (is-head .a .v) = refl - eq-component-vec-index-in-vec (succ-ℕ n) a (x ∷ v) (is-in-tail .a .x .v I) = - eq-component-vec-index-in-vec n a v I + index-in-tuple (succ-ℕ n) a (x ∷ v) (is-in-tail .a .x .v I) = + inl (index-in-tuple n a v I) + + eq-component-tuple-index-in-tuple : + (n : ℕ) (a : A) (v : tuple A n) (I : a ∈-tuple v) → + a = component-tuple n v (index-in-tuple n a v I) + eq-component-tuple-index-in-tuple (succ-ℕ n) a (.a ∷ v) (is-head .a .v) = refl + eq-component-tuple-index-in-tuple + (succ-ℕ n) a (x ∷ v) (is-in-tail .a .x .v I) = + eq-component-tuple-index-in-tuple n a v I ``` -### The functional type of vectors +### The functional type of tuples ```agda -functional-vec : {l : Level} → UU l → ℕ → UU l -functional-vec A n = Fin n → A +functional-tuple : {l : Level} → UU l → ℕ → UU l +functional-tuple A n = Fin n → A module _ {l : Level} {A : UU l} where - empty-functional-vec : functional-vec A 0 - empty-functional-vec () + empty-functional-tuple : functional-tuple A 0 + empty-functional-tuple () - head-functional-vec : (n : ℕ) → functional-vec A (succ-ℕ n) → A - head-functional-vec n v = v (inr star) + head-functional-tuple : (n : ℕ) → functional-tuple A (succ-ℕ n) → A + head-functional-tuple n v = v (inr star) - tail-functional-vec : - (n : ℕ) → functional-vec A (succ-ℕ n) → functional-vec A n - tail-functional-vec n v = v ∘ (inl-Fin n) + tail-functional-tuple : + (n : ℕ) → functional-tuple A (succ-ℕ n) → functional-tuple A n + tail-functional-tuple n v = v ∘ (inl-Fin n) - cons-functional-vec : - (n : ℕ) → A → functional-vec A n → functional-vec A (succ-ℕ n) - cons-functional-vec n a v (inl x) = v x - cons-functional-vec n a v (inr x) = a + cons-functional-tuple : + (n : ℕ) → A → functional-tuple A n → functional-tuple A (succ-ℕ n) + cons-functional-tuple n a v (inl x) = v x + cons-functional-tuple n a v (inr x) = a - snoc-functional-vec : - (n : ℕ) → functional-vec A n → A → functional-vec A (succ-ℕ n) - snoc-functional-vec zero-ℕ v a i = a - snoc-functional-vec (succ-ℕ n) v a (inl x) = - snoc-functional-vec n (tail-functional-vec n v) a x - snoc-functional-vec (succ-ℕ n) v a (inr x) = head-functional-vec n v + snoc-functional-tuple : + (n : ℕ) → functional-tuple A n → A → functional-tuple A (succ-ℕ n) + snoc-functional-tuple zero-ℕ v a i = a + snoc-functional-tuple (succ-ℕ n) v a (inl x) = + snoc-functional-tuple n (tail-functional-tuple n v) a x + snoc-functional-tuple (succ-ℕ n) v a (inr x) = head-functional-tuple n v - revert-functional-vec : - (n : ℕ) → functional-vec A n → functional-vec A n - revert-functional-vec n v i = v (opposite-Fin n i) + revert-functional-tuple : + (n : ℕ) → functional-tuple A n → functional-tuple A n + revert-functional-tuple n v i = v (opposite-Fin n i) - in-functional-vec : (n : ℕ) → A → functional-vec A n → UU l - in-functional-vec n a v = Σ (Fin n) (λ k → a = v k) + in-functional-tuple : (n : ℕ) → A → functional-tuple A n → UU l + in-functional-tuple n a v = Σ (Fin n) (λ k → a = v k) - index-in-functional-vec : - (n : ℕ) (x : A) (v : functional-vec A n) → - in-functional-vec n x v → Fin n - index-in-functional-vec n x v I = pr1 I + index-in-functional-tuple : + (n : ℕ) (x : A) (v : functional-tuple A n) → + in-functional-tuple n x v → Fin n + index-in-functional-tuple n x v I = pr1 I - eq-component-functional-vec-index-in-functional-vec : - (n : ℕ) (x : A) (v : functional-vec A n) (I : in-functional-vec n x v) → - x = v (index-in-functional-vec n x v I) - eq-component-functional-vec-index-in-functional-vec n x v I = pr2 I + eq-component-functional-tuple-index-in-functional-tuple : + (n : ℕ) (x : A) (v : functional-tuple A n) (I : in-functional-tuple n x v) → + x = v (index-in-functional-tuple n x v I) + eq-component-functional-tuple-index-in-functional-tuple n x v I = pr2 I ``` ## Properties -### Characterizing equality of listed vectors +### Characterizing equality of listed tuples ```agda module _ {l : Level} {A : UU l} where - Eq-vec : (n : ℕ) → vec A n → vec A n → UU l - Eq-vec zero-ℕ empty-vec empty-vec = raise-unit l - Eq-vec (succ-ℕ n) (x ∷ xs) (y ∷ ys) = (Id x y) × (Eq-vec n xs ys) - - refl-Eq-vec : (n : ℕ) → (u : vec A n) → Eq-vec n u u - refl-Eq-vec zero-ℕ empty-vec = map-raise star - pr1 (refl-Eq-vec (succ-ℕ n) (x ∷ xs)) = refl - pr2 (refl-Eq-vec (succ-ℕ n) (x ∷ xs)) = refl-Eq-vec n xs - - Eq-eq-vec : (n : ℕ) → (u v : vec A n) → Id u v → Eq-vec n u v - Eq-eq-vec n u .u refl = refl-Eq-vec n u - - eq-Eq-vec : (n : ℕ) → (u v : vec A n) → Eq-vec n u v → Id u v - eq-Eq-vec zero-ℕ empty-vec empty-vec eq-vec = refl - eq-Eq-vec (succ-ℕ n) (x ∷ xs) (.x ∷ ys) (refl , eqs) = - ap (x ∷_) (eq-Eq-vec n xs ys eqs) - - is-retraction-eq-Eq-vec : - (n : ℕ) → (u v : vec A n) → - (p : u = v) → eq-Eq-vec n u v (Eq-eq-vec n u v p) = p - is-retraction-eq-Eq-vec zero-ℕ empty-vec empty-vec refl = refl - is-retraction-eq-Eq-vec (succ-ℕ n) (x ∷ xs) .(x ∷ xs) refl = - left-whisker-comp² (x ∷_) (is-retraction-eq-Eq-vec n xs xs) refl - - square-Eq-eq-vec : - (n : ℕ) (x : A) (u v : vec A n) (p : Id u v) → - (Eq-eq-vec _ (x ∷ u) (x ∷ v) (ap (x ∷_) p)) = (refl , (Eq-eq-vec n u v p)) - square-Eq-eq-vec zero-ℕ x empty-vec empty-vec refl = refl - square-Eq-eq-vec (succ-ℕ n) a (x ∷ xs) (.x ∷ .xs) refl = refl - - is-section-eq-Eq-vec : - (n : ℕ) (u v : vec A n) → - (p : Eq-vec n u v) → Eq-eq-vec n u v (eq-Eq-vec n u v p) = p - is-section-eq-Eq-vec zero-ℕ empty-vec empty-vec (map-raise star) = refl - is-section-eq-Eq-vec (succ-ℕ n) (x ∷ xs) (.x ∷ ys) (refl , ps) = - ( square-Eq-eq-vec n x xs ys (eq-Eq-vec n xs ys ps)) ∙ - ( eq-pair-eq-fiber (is-section-eq-Eq-vec n xs ys ps)) - - is-equiv-Eq-eq-vec : - (n : ℕ) → (u v : vec A n) → is-equiv (Eq-eq-vec n u v) - is-equiv-Eq-eq-vec n u v = + Eq-tuple : (n : ℕ) → tuple A n → tuple A n → UU l + Eq-tuple zero-ℕ empty-tuple empty-tuple = raise-unit l + Eq-tuple (succ-ℕ n) (x ∷ xs) (y ∷ ys) = (Id x y) × (Eq-tuple n xs ys) + + refl-Eq-tuple : (n : ℕ) → (u : tuple A n) → Eq-tuple n u u + refl-Eq-tuple zero-ℕ empty-tuple = map-raise star + pr1 (refl-Eq-tuple (succ-ℕ n) (x ∷ xs)) = refl + pr2 (refl-Eq-tuple (succ-ℕ n) (x ∷ xs)) = refl-Eq-tuple n xs + + Eq-eq-tuple : (n : ℕ) → (u v : tuple A n) → Id u v → Eq-tuple n u v + Eq-eq-tuple n u .u refl = refl-Eq-tuple n u + + eq-Eq-tuple : (n : ℕ) → (u v : tuple A n) → Eq-tuple n u v → Id u v + eq-Eq-tuple zero-ℕ empty-tuple empty-tuple eq-tuple = refl + eq-Eq-tuple (succ-ℕ n) (x ∷ xs) (.x ∷ ys) (refl , eqs) = + ap (x ∷_) (eq-Eq-tuple n xs ys eqs) + + is-retraction-eq-Eq-tuple : + (n : ℕ) → (u v : tuple A n) → + (p : u = v) → eq-Eq-tuple n u v (Eq-eq-tuple n u v p) = p + is-retraction-eq-Eq-tuple zero-ℕ empty-tuple empty-tuple refl = refl + is-retraction-eq-Eq-tuple (succ-ℕ n) (x ∷ xs) .(x ∷ xs) refl = + left-whisker-comp² (x ∷_) (is-retraction-eq-Eq-tuple n xs xs) refl + + square-Eq-eq-tuple : + (n : ℕ) (x : A) (u v : tuple A n) (p : Id u v) → + (Eq-eq-tuple _ (x ∷ u) (x ∷ v) (ap (x ∷_) p)) = + (refl , (Eq-eq-tuple n u v p)) + square-Eq-eq-tuple zero-ℕ x empty-tuple empty-tuple refl = refl + square-Eq-eq-tuple (succ-ℕ n) a (x ∷ xs) (.x ∷ .xs) refl = refl + + is-section-eq-Eq-tuple : + (n : ℕ) (u v : tuple A n) → + (p : Eq-tuple n u v) → Eq-eq-tuple n u v (eq-Eq-tuple n u v p) = p + is-section-eq-Eq-tuple zero-ℕ empty-tuple empty-tuple (map-raise star) = refl + is-section-eq-Eq-tuple (succ-ℕ n) (x ∷ xs) (.x ∷ ys) (refl , ps) = + ( square-Eq-eq-tuple n x xs ys (eq-Eq-tuple n xs ys ps)) ∙ + ( eq-pair-eq-fiber (is-section-eq-Eq-tuple n xs ys ps)) + + is-equiv-Eq-eq-tuple : + (n : ℕ) → (u v : tuple A n) → is-equiv (Eq-eq-tuple n u v) + is-equiv-Eq-eq-tuple n u v = is-equiv-is-invertible - ( eq-Eq-vec n u v) - ( is-section-eq-Eq-vec n u v) - ( is-retraction-eq-Eq-vec n u v) + ( eq-Eq-tuple n u v) + ( is-section-eq-Eq-tuple n u v) + ( is-retraction-eq-Eq-tuple n u v) - extensionality-vec : (n : ℕ) → (u v : vec A n) → Id u v ≃ Eq-vec n u v - extensionality-vec n u v = (Eq-eq-vec n u v , is-equiv-Eq-eq-vec n u v) + extensionality-tuple : (n : ℕ) → (u v : tuple A n) → Id u v ≃ Eq-tuple n u v + extensionality-tuple n u v = (Eq-eq-tuple n u v , is-equiv-Eq-eq-tuple n u v) ``` -### The types of listed vectors and functional vectors are equivalent +### The types of listed tuples and functional tuples are equivalent ```agda module _ {l : Level} {A : UU l} where - listed-vec-functional-vec : (n : ℕ) → functional-vec A n → vec A n - listed-vec-functional-vec zero-ℕ v = empty-vec - listed-vec-functional-vec (succ-ℕ n) v = - head-functional-vec n v ∷ - listed-vec-functional-vec n (tail-functional-vec n v) + listed-tuple-functional-tuple : (n : ℕ) → functional-tuple A n → tuple A n + listed-tuple-functional-tuple zero-ℕ v = empty-tuple + listed-tuple-functional-tuple (succ-ℕ n) v = + head-functional-tuple n v ∷ + listed-tuple-functional-tuple n (tail-functional-tuple n v) - functional-vec-vec : (n : ℕ) → vec A n → functional-vec A n - functional-vec-vec zero-ℕ v = empty-functional-vec - functional-vec-vec (succ-ℕ n) (a ∷ v) = - cons-functional-vec n a (functional-vec-vec n v) + functional-tuple-tuple : (n : ℕ) → tuple A n → functional-tuple A n + functional-tuple-tuple zero-ℕ v = empty-functional-tuple + functional-tuple-tuple (succ-ℕ n) (a ∷ v) = + cons-functional-tuple n a (functional-tuple-tuple n v) - is-section-functional-vec-vec : - (n : ℕ) → (listed-vec-functional-vec n ∘ functional-vec-vec n) ~ id - is-section-functional-vec-vec .zero-ℕ empty-vec = refl - is-section-functional-vec-vec .(succ-ℕ _) (a ∷ v) = - ap (λ u → a ∷ u) (is-section-functional-vec-vec _ v) + is-section-functional-tuple-tuple : + (n : ℕ) → (listed-tuple-functional-tuple n ∘ functional-tuple-tuple n) ~ id + is-section-functional-tuple-tuple .zero-ℕ empty-tuple = refl + is-section-functional-tuple-tuple .(succ-ℕ _) (a ∷ v) = + ap (λ u → a ∷ u) (is-section-functional-tuple-tuple _ v) abstract - is-retraction-functional-vec-vec : - (n : ℕ) → (functional-vec-vec n ∘ listed-vec-functional-vec n) ~ id - is-retraction-functional-vec-vec zero-ℕ v = eq-htpy (λ ()) - is-retraction-functional-vec-vec (succ-ℕ n) v = + is-retraction-functional-tuple-tuple : + (n : ℕ) → + (functional-tuple-tuple n ∘ listed-tuple-functional-tuple n) ~ id + is-retraction-functional-tuple-tuple zero-ℕ v = eq-htpy (λ ()) + is-retraction-functional-tuple-tuple (succ-ℕ n) v = eq-htpy ( λ where ( inl x) → htpy-eq - ( is-retraction-functional-vec-vec n (tail-functional-vec n v)) + ( is-retraction-functional-tuple-tuple + ( n) + ( tail-functional-tuple n v)) ( x) ( inr star) → refl) - is-equiv-listed-vec-functional-vec : - (n : ℕ) → is-equiv (listed-vec-functional-vec n) - is-equiv-listed-vec-functional-vec n = + is-equiv-listed-tuple-functional-tuple : + (n : ℕ) → is-equiv (listed-tuple-functional-tuple n) + is-equiv-listed-tuple-functional-tuple n = is-equiv-is-invertible - ( functional-vec-vec n) - ( is-section-functional-vec-vec n) - ( is-retraction-functional-vec-vec n) + ( functional-tuple-tuple n) + ( is-section-functional-tuple-tuple n) + ( is-retraction-functional-tuple-tuple n) - is-equiv-functional-vec-vec : - (n : ℕ) → is-equiv (functional-vec-vec n) - is-equiv-functional-vec-vec n = + is-equiv-functional-tuple-tuple : + (n : ℕ) → is-equiv (functional-tuple-tuple n) + is-equiv-functional-tuple-tuple n = is-equiv-is-invertible - ( listed-vec-functional-vec n) - ( is-retraction-functional-vec-vec n) - ( is-section-functional-vec-vec n) + ( listed-tuple-functional-tuple n) + ( is-retraction-functional-tuple-tuple n) + ( is-section-functional-tuple-tuple n) - compute-vec : (n : ℕ) → functional-vec A n ≃ vec A n - pr1 (compute-vec n) = listed-vec-functional-vec n - pr2 (compute-vec n) = is-equiv-listed-vec-functional-vec n + compute-tuple : (n : ℕ) → functional-tuple A n ≃ tuple A n + pr1 (compute-tuple n) = listed-tuple-functional-tuple n + pr2 (compute-tuple n) = is-equiv-listed-tuple-functional-tuple n ``` ### Characterizing the elementhood predicate ```agda - is-in-functional-vec-is-in-vec : - (n : ℕ) (v : vec A n) (x : A) → - (x ∈-vec v) → (in-functional-vec n x (functional-vec-vec n v)) - is-in-functional-vec-is-in-vec (succ-ℕ n) (y ∷ l) x (is-head .x l) = + is-in-functional-tuple-is-in-tuple : + (n : ℕ) (v : tuple A n) (x : A) → + (x ∈-tuple v) → (in-functional-tuple n x (functional-tuple-tuple n v)) + is-in-functional-tuple-is-in-tuple (succ-ℕ n) (y ∷ l) x (is-head .x l) = (inr star) , refl - is-in-functional-vec-is-in-vec (succ-ℕ n) (y ∷ l) x (is-in-tail .x x₁ l I) = - inl (pr1 (is-in-functional-vec-is-in-vec n l x I)) , - pr2 (is-in-functional-vec-is-in-vec n l x I) - - is-in-vec-is-in-functional-vec : - (n : ℕ) (v : vec A n) (x : A) → - (in-functional-vec n x (functional-vec-vec n v)) → (x ∈-vec v) - is-in-vec-is-in-functional-vec (succ-ℕ n) (y ∷ v) x (inl k , p) = - is-in-tail x y v (is-in-vec-is-in-functional-vec n v x (k , p)) - is-in-vec-is-in-functional-vec (succ-ℕ n) (y ∷ v) _ (inr k , refl) = - is-head (functional-vec-vec (succ-ℕ n) (y ∷ v) (inr k)) v + is-in-functional-tuple-is-in-tuple + (succ-ℕ n) (y ∷ l) x (is-in-tail .x x₁ l I) = + inl (pr1 (is-in-functional-tuple-is-in-tuple n l x I)) , + pr2 (is-in-functional-tuple-is-in-tuple n l x I) + + is-in-tuple-is-in-functional-tuple : + (n : ℕ) (v : tuple A n) (x : A) → + (in-functional-tuple n x (functional-tuple-tuple n v)) → (x ∈-tuple v) + is-in-tuple-is-in-functional-tuple (succ-ℕ n) (y ∷ v) x (inl k , p) = + is-in-tail x y v (is-in-tuple-is-in-functional-tuple n v x (k , p)) + is-in-tuple-is-in-functional-tuple (succ-ℕ n) (y ∷ v) _ (inr k , refl) = + is-head (functional-tuple-tuple (succ-ℕ n) (y ∷ v) (inr k)) v ``` -### The type of vectors of elements in a truncated type is truncated +### The type of tuples of elements in a truncated type is truncated -#### The type of listed vectors of elements in a truncated type is truncated +#### The type of listed tuples of elements in a truncated type is truncated ```agda module _ {l : Level} {A : UU l} where - is-trunc-Eq-vec : + is-trunc-Eq-tuple : (k : 𝕋) (n : ℕ) → is-trunc (succ-𝕋 k) A → - (u v : vec A n) → is-trunc (k) (Eq-vec n u v) - is-trunc-Eq-vec k zero-ℕ A-trunc empty-vec empty-vec = + (u v : tuple A n) → is-trunc (k) (Eq-tuple n u v) + is-trunc-Eq-tuple k zero-ℕ A-trunc empty-tuple empty-tuple = is-trunc-is-contr k is-contr-raise-unit - is-trunc-Eq-vec k (succ-ℕ n) A-trunc (x ∷ xs) (y ∷ ys) = - is-trunc-product k (A-trunc x y) (is-trunc-Eq-vec k n A-trunc xs ys) - - center-is-contr-vec : - {n : ℕ} → is-contr A → vec A n - center-is-contr-vec {zero-ℕ} H = empty-vec - center-is-contr-vec {succ-ℕ n} H = center H ∷ center-is-contr-vec {n} H - - contraction-is-contr-vec' : - {n : ℕ} (H : is-contr A) → (v : vec A n) → - Eq-vec n (center-is-contr-vec H) v - contraction-is-contr-vec' {zero-ℕ} H empty-vec = - refl-Eq-vec {l} {A} 0 empty-vec - pr1 (contraction-is-contr-vec' {succ-ℕ n} H (x ∷ v)) = + is-trunc-Eq-tuple k (succ-ℕ n) A-trunc (x ∷ xs) (y ∷ ys) = + is-trunc-product k (A-trunc x y) (is-trunc-Eq-tuple k n A-trunc xs ys) + + center-is-contr-tuple : + {n : ℕ} → is-contr A → tuple A n + center-is-contr-tuple {zero-ℕ} H = empty-tuple + center-is-contr-tuple {succ-ℕ n} H = center H ∷ center-is-contr-tuple {n} H + + contraction-is-contr-tuple' : + {n : ℕ} (H : is-contr A) → (v : tuple A n) → + Eq-tuple n (center-is-contr-tuple H) v + contraction-is-contr-tuple' {zero-ℕ} H empty-tuple = + refl-Eq-tuple {l} {A} 0 empty-tuple + pr1 (contraction-is-contr-tuple' {succ-ℕ n} H (x ∷ v)) = eq-is-contr H - pr2 (contraction-is-contr-vec' {succ-ℕ n} H (x ∷ v)) = - contraction-is-contr-vec' {n} H v - - contraction-is-contr-vec : - {n : ℕ} (H : is-contr A) → (v : vec A n) → (center-is-contr-vec H) = v - contraction-is-contr-vec {n} H v = - eq-Eq-vec n (center-is-contr-vec H) v (contraction-is-contr-vec' H v) - - is-contr-vec : - {n : ℕ} → is-contr A → is-contr (vec A n) - pr1 (is-contr-vec H) = center-is-contr-vec H - pr2 (is-contr-vec H) = contraction-is-contr-vec H - - is-trunc-vec : - (k : 𝕋) → (n : ℕ) → is-trunc k A → is-trunc k (vec A n) - is-trunc-vec neg-two-𝕋 n H = is-contr-vec H - is-trunc-vec (succ-𝕋 k) n H x y = + pr2 (contraction-is-contr-tuple' {succ-ℕ n} H (x ∷ v)) = + contraction-is-contr-tuple' {n} H v + + contraction-is-contr-tuple : + {n : ℕ} (H : is-contr A) → (v : tuple A n) → (center-is-contr-tuple H) = v + contraction-is-contr-tuple {n} H v = + eq-Eq-tuple n (center-is-contr-tuple H) v (contraction-is-contr-tuple' H v) + + is-contr-tuple : + {n : ℕ} → is-contr A → is-contr (tuple A n) + pr1 (is-contr-tuple H) = center-is-contr-tuple H + pr2 (is-contr-tuple H) = contraction-is-contr-tuple H + + is-trunc-tuple : + (k : 𝕋) → (n : ℕ) → is-trunc k A → is-trunc k (tuple A n) + is-trunc-tuple neg-two-𝕋 n H = is-contr-tuple H + is-trunc-tuple (succ-𝕋 k) n H x y = is-trunc-equiv k - ( Eq-vec n x y) - ( extensionality-vec n x y) - ( is-trunc-Eq-vec k n H x y) + ( Eq-tuple n x y) + ( extensionality-tuple n x y) + ( is-trunc-Eq-tuple k n H x y) ``` -#### The type of functional vectors of elements in a truncated type is truncated +#### The type of functional tuples of elements in a truncated type is truncated ```agda module _ {l : Level} {A : UU l} where - is-trunc-functional-vec : - (k : 𝕋) (n : ℕ) → is-trunc k A → is-trunc k (functional-vec A n) - is-trunc-functional-vec k n H = is-trunc-function-type k H + is-trunc-functional-tuple : + (k : 𝕋) (n : ℕ) → is-trunc k A → is-trunc k (functional-tuple A n) + is-trunc-functional-tuple k n H = is-trunc-function-type k H ``` -### The type of vectors of elements in a set is a set +### The type of tuples of elements in a set is a set -#### The type of listed vectors of elements in a set is a set +#### The type of listed tuples of elements in a set is a set ```agda module _ {l : Level} {A : UU l} where - is-set-vec : (n : ℕ) → is-set A -> is-set (vec A n) - is-set-vec = is-trunc-vec zero-𝕋 + is-set-tuple : (n : ℕ) → is-set A -> is-set (tuple A n) + is-set-tuple = is-trunc-tuple zero-𝕋 -vec-Set : {l : Level} → Set l → ℕ → Set l -pr1 (vec-Set A n) = vec (type-Set A) n -pr2 (vec-Set A n) = is-set-vec n (is-set-type-Set A) +tuple-Set : {l : Level} → Set l → ℕ → Set l +pr1 (tuple-Set A n) = tuple (type-Set A) n +pr2 (tuple-Set A n) = is-set-tuple n (is-set-type-Set A) ``` -#### The type of functional vectors of elements in a set is a set +#### The type of functional tuples of elements in a set is a set ```agda module _ {l : Level} {A : UU l} where - is-set-functional-vec : (n : ℕ) → is-set A → is-set (functional-vec A n) - is-set-functional-vec = is-trunc-functional-vec zero-𝕋 + is-set-functional-tuple : (n : ℕ) → is-set A → is-set (functional-tuple A n) + is-set-functional-tuple = is-trunc-functional-tuple zero-𝕋 -functional-vec-Set : {l : Level} → Set l → ℕ → Set l -pr1 (functional-vec-Set A n) = functional-vec (type-Set A) n -pr2 (functional-vec-Set A n) = is-set-functional-vec n (is-set-type-Set A) +functional-tuple-Set : {l : Level} → Set l → ℕ → Set l +pr1 (functional-tuple-Set A n) = functional-tuple (type-Set A) n +pr2 (functional-tuple-Set A n) = is-set-functional-tuple n (is-set-type-Set A) ``` -### Adding the tail to the head gives the same vector +### Adding the tail to the head gives the same tuple -#### Adding the tail to the head gives the same listed vector +#### Adding the tail to the head gives the same listed tuple ```agda module _ {l : Level} {A : UU l} where - cons-head-tail-vec : + cons-head-tail-tuple : (n : ℕ) → - (v : vec A (succ-ℕ n)) → - ((head-vec v) ∷ (tail-vec v)) = v - cons-head-tail-vec n (x ∷ v) = refl + (v : tuple A (succ-ℕ n)) → + ((head-tuple v) ∷ (tail-tuple v)) = v + cons-head-tail-tuple n (x ∷ v) = refl ``` -#### Adding the tail to the head gives the same functional vector +#### Adding the tail to the head gives the same functional tuple ```agda module _ {l : Level} {A : UU l} where - htpy-cons-head-tail-functional-vec : + htpy-cons-head-tail-functional-tuple : ( n : ℕ) → - ( v : functional-vec A (succ-ℕ n)) → - ( cons-functional-vec n - ( head-functional-vec n v) - ( tail-functional-vec n v)) ~ + ( v : functional-tuple A (succ-ℕ n)) → + ( cons-functional-tuple n + ( head-functional-tuple n v) + ( tail-functional-tuple n v)) ~ ( v) - htpy-cons-head-tail-functional-vec n v (inl x) = refl - htpy-cons-head-tail-functional-vec n v (inr star) = refl + htpy-cons-head-tail-functional-tuple n v (inl x) = refl + htpy-cons-head-tail-functional-tuple n v (inr star) = refl - cons-head-tail-functional-vec : + cons-head-tail-functional-tuple : ( n : ℕ) → - ( v : functional-vec A (succ-ℕ n)) → - ( cons-functional-vec n - ( head-functional-vec n v) - ( tail-functional-vec n v)) = + ( v : functional-tuple A (succ-ℕ n)) → + ( cons-functional-tuple n + ( head-functional-tuple n v) + ( tail-functional-tuple n v)) = ( v) - cons-head-tail-functional-vec n v = - eq-htpy (htpy-cons-head-tail-functional-vec n v) + cons-head-tail-functional-tuple n v = + eq-htpy (htpy-cons-head-tail-functional-tuple n v) ``` -### Computing the transport of a vector over its size +### Computing the transport of a tuple over its size ```agda -compute-tr-vec : +compute-tr-tuple : {l : Level} {A : UU l} - {n m : ℕ} (p : succ-ℕ n = succ-ℕ m) (v : vec A n) (x : A) → - tr (vec A) p (x ∷ v) = - (x ∷ tr (vec A) (is-injective-succ-ℕ p) v) -compute-tr-vec refl v x = refl + {n m : ℕ} (p : succ-ℕ n = succ-ℕ m) (v : tuple A n) (x : A) → + tr (tuple A) p (x ∷ v) = + (x ∷ tr (tuple A) (is-injective-succ-ℕ p) v) +compute-tr-tuple refl v x = refl ``` diff --git a/src/lists/arrays.lagda.md b/src/lists/arrays.lagda.md index 054ea39af4..7884bb545c 100644 --- a/src/lists/arrays.lagda.md +++ b/src/lists/arrays.lagda.md @@ -22,7 +22,7 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples open import lists.lists @@ -39,7 +39,7 @@ We show that arrays and lists are equivalent. ```agda array : {l : Level} → UU l → UU l -array A = Σ ℕ (λ n → functional-vec A n) +array A = Σ ℕ (λ n → functional-tuple A n) module _ {l : Level} {A : UU l} @@ -48,8 +48,8 @@ module _ length-array : array A → ℕ length-array = pr1 - functional-vec-array : (t : array A) → Fin (length-array t) → A - functional-vec-array = pr2 + functional-tuple-array : (t : array A) → Fin (length-array t) → A + functional-tuple-array = pr2 empty-array : array A pr1 (empty-array) = zero-ℕ @@ -78,20 +78,20 @@ module _ cons-array : A → array A → array A cons-array a t = ( succ-ℕ (length-array t) , - rec-coproduct (functional-vec-array t) (λ _ → a)) + rec-coproduct (functional-tuple-array t) (λ _ → a)) revert-array : array A → array A revert-array (n , t) = (n , λ k → t (opposite-Fin n k)) ``` -### The definition of `fold-vec` +### The definition of `fold-tuple` ```agda -fold-vec : +fold-tuple : {l1 l2 : Level} {A : UU l1} {B : UU l2} (b : B) (μ : A → (B → B)) → - {n : ℕ} → vec A n → B -fold-vec b μ {0} _ = b -fold-vec b μ (a ∷ l) = μ a (fold-vec b μ l) + {n : ℕ} → tuple A n → B +fold-tuple b μ {0} _ = b +fold-tuple b μ (a ∷ l) = μ a (fold-tuple b μ l) ``` ## Properties @@ -103,35 +103,35 @@ module _ {l : Level} {A : UU l} where - list-vec : (n : ℕ) → (vec A n) → list A - list-vec zero-ℕ _ = nil - list-vec (succ-ℕ n) (x ∷ l) = cons x (list-vec n l) + list-tuple : (n : ℕ) → (tuple A n) → list A + list-tuple zero-ℕ _ = nil + list-tuple (succ-ℕ n) (x ∷ l) = cons x (list-tuple n l) - vec-list : (l : list A) → vec A (length-list l) - vec-list nil = empty-vec - vec-list (cons x l) = x ∷ vec-list l + tuple-list : (l : list A) → tuple A (length-list l) + tuple-list nil = empty-tuple + tuple-list (cons x l) = x ∷ tuple-list l - is-section-vec-list : (λ l → list-vec (length-list l) (vec-list l)) ~ id - is-section-vec-list nil = refl - is-section-vec-list (cons x l) = ap (cons x) (is-section-vec-list l) + is-section-tuple-list : (λ l → list-tuple (length-list l) (tuple-list l)) ~ id + is-section-tuple-list nil = refl + is-section-tuple-list (cons x l) = ap (cons x) (is-section-tuple-list l) - is-retraction-vec-list : - ( λ (x : Σ ℕ (λ n → vec A n)) → - ( length-list (list-vec (pr1 x) (pr2 x)) , - vec-list (list-vec (pr1 x) (pr2 x)))) ~ + is-retraction-tuple-list : + ( λ (x : Σ ℕ (λ n → tuple A n)) → + ( length-list (list-tuple (pr1 x) (pr2 x)) , + tuple-list (list-tuple (pr1 x) (pr2 x)))) ~ id - is-retraction-vec-list (zero-ℕ , empty-vec) = refl - is-retraction-vec-list (succ-ℕ n , (x ∷ v)) = + is-retraction-tuple-list (zero-ℕ , empty-tuple) = refl + is-retraction-tuple-list (succ-ℕ n , (x ∷ v)) = ap ( λ v → succ-ℕ (pr1 v) , (x ∷ (pr2 v))) - ( is-retraction-vec-list (n , v)) + ( is-retraction-tuple-list (n , v)) list-array : array A → list A - list-array (n , t) = list-vec n (listed-vec-functional-vec n t) + list-array (n , t) = list-tuple n (listed-tuple-functional-tuple n t) array-list : list A → array A array-list l = - ( length-list l , functional-vec-vec (length-list l) (vec-list l)) + ( length-list l , functional-tuple-tuple (length-list l) (tuple-list l)) is-section-array-list : (list-array ∘ array-list) ~ id is-section-array-list nil = refl @@ -140,9 +140,9 @@ module _ is-retraction-array-list : (array-list ∘ list-array) ~ id is-retraction-array-list (n , t) = ap - ( λ (n , v) → (n , functional-vec-vec n v)) - ( is-retraction-vec-list (n , listed-vec-functional-vec n t)) ∙ - eq-pair-eq-fiber (is-retraction-functional-vec-vec n t) + ( λ (n , v) → (n , functional-tuple-tuple n v)) + ( is-retraction-tuple-list (n , listed-tuple-functional-tuple n t)) ∙ + eq-pair-eq-fiber (is-retraction-functional-tuple-tuple n t) equiv-list-array : array A ≃ list A pr1 equiv-list-array = list-array @@ -164,42 +164,44 @@ module _ ### Computational rules of the equivalence between arrays and lists ```agda - compute-length-list-list-vec : - (n : ℕ) (v : vec A n) → - length-list (list-vec n v) = n - compute-length-list-list-vec zero-ℕ v = refl - compute-length-list-list-vec (succ-ℕ n) (x ∷ v) = - ap succ-ℕ (compute-length-list-list-vec n v) + compute-length-list-list-tuple : + (n : ℕ) (v : tuple A n) → + length-list (list-tuple n v) = n + compute-length-list-list-tuple zero-ℕ v = refl + compute-length-list-list-tuple (succ-ℕ n) (x ∷ v) = + ap succ-ℕ (compute-length-list-list-tuple n v) compute-length-list-list-array : (t : array A) → length-list (list-array t) = length-array t compute-length-list-list-array t = - compute-length-list-list-vec + compute-length-list-list-tuple ( length-array t) - ( listed-vec-functional-vec (length-array t) (functional-vec-array t)) + ( listed-tuple-functional-tuple + ( length-array t) + ( functional-tuple-array t)) ``` -### An element `x` is in a vector `v` iff it is in `list-vec n v` +### An element `x` is in a tuple `v` iff it is in `list-tuple n v` ```agda - is-in-list-is-in-vec-list : + is-in-list-is-in-tuple-list : (l : list A) (x : A) → - x ∈-vec (vec-list l) → x ∈-list l - is-in-list-is-in-vec-list (cons y l) .y (is-head .y .(vec-list l)) = + x ∈-tuple (tuple-list l) → x ∈-list l + is-in-list-is-in-tuple-list (cons y l) .y (is-head .y .(tuple-list l)) = is-head y l - is-in-list-is-in-vec-list (cons y l) x (is-in-tail .x .y .(vec-list l) I) = - is-in-tail x y l (is-in-list-is-in-vec-list l x I) + is-in-list-is-in-tuple-list (cons y l) x (is-in-tail .x .y .(tuple-list l) I) = + is-in-tail x y l (is-in-list-is-in-tuple-list l x I) - is-in-vec-list-is-in-list : + is-in-tuple-list-is-in-list : (l : list A) (x : A) → - x ∈-list l → x ∈-vec (vec-list l) - is-in-vec-list-is-in-list (cons x l) x (is-head .x l) = - is-head x (vec-list l) - is-in-vec-list-is-in-list (cons y l) x (is-in-tail .x .y l I) = - is-in-tail x y (vec-list l) (is-in-vec-list-is-in-list l x I) + x ∈-list l → x ∈-tuple (tuple-list l) + is-in-tuple-list-is-in-list (cons x l) x (is-head .x l) = + is-head x (tuple-list l) + is-in-tuple-list-is-in-list (cons y l) x (is-in-tail .x .y l I) = + is-in-tail x y (tuple-list l) (is-in-tuple-list-is-in-list l x I) ``` -### Link between `fold-list` and `fold-vec` +### Link between `fold-list` and `fold-tuple` ```agda module _ @@ -207,10 +209,10 @@ module _ (b : B) (μ : A → (B → B)) where - htpy-fold-list-fold-vec : + htpy-fold-list-fold-tuple : (l : list A) → - fold-vec b μ (vec-list l) = fold-list b μ l - htpy-fold-list-fold-vec nil = refl - htpy-fold-list-fold-vec (cons x l) = - ap (μ x) (htpy-fold-list-fold-vec l) + fold-tuple b μ (tuple-list l) = fold-list b μ l + htpy-fold-list-fold-tuple nil = refl + htpy-fold-list-fold-tuple (cons x l) = + ap (μ x) (htpy-fold-list-fold-tuple l) ``` diff --git a/src/lists/functoriality-lists.lagda.md b/src/lists/functoriality-lists.lagda.md index 5fca45b262..28bb406fec 100644 --- a/src/lists/functoriality-lists.lagda.md +++ b/src/lists/functoriality-lists.lagda.md @@ -20,8 +20,8 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import lists.arrays open import lists.concatenation-lists @@ -57,7 +57,7 @@ length-map-list f (cons x l) = ap succ-ℕ (length-map-list f l) ``` -### Link between `map-list` and `map-vec` +### Link between `map-list` and `map-tuple` ```agda module _ @@ -65,148 +65,148 @@ module _ (f : A → B) where - map-list-map-vec-list : + map-list-map-tuple-list : (l : list A) → - list-vec (length-list l) (map-vec f (vec-list l)) = + list-tuple (length-list l) (map-tuple f (tuple-list l)) = map-list f l - map-list-map-vec-list nil = refl - map-list-map-vec-list (cons x l) = + map-list-map-tuple-list nil = refl + map-list-map-tuple-list (cons x l) = eq-Eq-list - ( list-vec (length-list (cons x l)) (map-vec f (vec-list (cons x l)))) + ( list-tuple (length-list (cons x l)) (map-tuple f (tuple-list (cons x l)))) ( map-list f (cons x l)) ( refl , Eq-eq-list - ( list-vec (length-list l) (map-vec f (vec-list l))) + ( list-tuple (length-list l) (map-tuple f (tuple-list l))) ( map-list f l) - ( map-list-map-vec-list l)) + ( map-list-map-tuple-list l)) - map-vec-map-list-vec : - (n : ℕ) (v : vec A n) → + map-tuple-map-list-tuple : + (n : ℕ) (v : tuple A n) → tr - ( vec B) - ( length-map-list f (list-vec n v) ∙ - compute-length-list-list-vec n v) - ( vec-list (map-list f (list-vec n v))) = - map-vec f v - map-vec-map-list-vec 0 empty-vec = refl - map-vec-map-list-vec (succ-ℕ n) (x ∷ v) = - compute-tr-vec - ( ap succ-ℕ (length-map-list f (list-vec n v)) ∙ - compute-length-list-list-vec (succ-ℕ n) (x ∷ v)) - ( vec-list (fold-list nil (λ a → cons (f a)) (list-vec n v))) + ( tuple B) + ( length-map-list f (list-tuple n v) ∙ + compute-length-list-list-tuple n v) + ( tuple-list (map-list f (list-tuple n v))) = + map-tuple f v + map-tuple-map-list-tuple 0 empty-tuple = refl + map-tuple-map-list-tuple (succ-ℕ n) (x ∷ v) = + compute-tr-tuple + ( ap succ-ℕ (length-map-list f (list-tuple n v)) ∙ + compute-length-list-list-tuple (succ-ℕ n) (x ∷ v)) + ( tuple-list (fold-list nil (λ a → cons (f a)) (list-tuple n v))) ( f x) ∙ - eq-Eq-vec + eq-Eq-tuple ( succ-ℕ n) ( f x ∷ tr - ( vec B) + ( tuple B) ( is-injective-succ-ℕ - ( ap succ-ℕ (length-map-list f (list-vec n v)) ∙ - compute-length-list-list-vec (succ-ℕ n) (x ∷ v))) - ( vec-list (map-list f (list-vec n v)))) - ( map-vec f (x ∷ v)) + ( ap succ-ℕ (length-map-list f (list-tuple n v)) ∙ + compute-length-list-list-tuple (succ-ℕ n) (x ∷ v))) + ( tuple-list (map-list f (list-tuple n v)))) + ( map-tuple f (x ∷ v)) ( refl , - ( Eq-eq-vec + ( Eq-eq-tuple ( n) ( tr - ( vec B) + ( tuple B) ( is-injective-succ-ℕ - ( ap succ-ℕ (length-map-list f (list-vec n v)) ∙ - compute-length-list-list-vec (succ-ℕ n) (x ∷ v))) - ( vec-list (map-list f (list-vec n v)))) - ( map-vec f v) + ( ap succ-ℕ (length-map-list f (list-tuple n v)) ∙ + compute-length-list-list-tuple (succ-ℕ n) (x ∷ v))) + ( tuple-list (map-list f (list-tuple n v)))) + ( map-tuple f v) ( tr ( λ p → tr - ( vec B) + ( tuple B) ( p) - ( vec-list (map-list f (list-vec n v))) = - map-vec f v) + ( tuple-list (map-list f (list-tuple n v))) = + map-tuple f v) ( eq-is-prop ( is-set-ℕ - ( length-list (map-list f (list-vec n v))) + ( length-list (map-list f (list-tuple n v))) ( n))) - ( map-vec-map-list-vec n v)))) + ( map-tuple-map-list-tuple n v)))) - map-vec-map-list-vec' : - (n : ℕ) (v : vec A n) → - vec-list (map-list f (list-vec n v)) = + map-tuple-map-list-tuple' : + (n : ℕ) (v : tuple A n) → + tuple-list (map-list f (list-tuple n v)) = tr - ( vec B) + ( tuple B) ( inv - ( length-map-list f (list-vec n v) ∙ - compute-length-list-list-vec n v)) - ( map-vec f v) - map-vec-map-list-vec' n v = + ( length-map-list f (list-tuple n v) ∙ + compute-length-list-list-tuple n v)) + ( map-tuple f v) + map-tuple-map-list-tuple' n v = eq-transpose-tr' - ( length-map-list f (list-vec n v) ∙ compute-length-list-list-vec n v) - ( map-vec-map-list-vec n v) + ( length-map-list f (list-tuple n v) ∙ compute-length-list-list-tuple n v) + ( map-tuple-map-list-tuple n v) - vec-list-map-list-map-vec-list : + tuple-list-map-list-map-tuple-list : (l : list A) → tr - ( vec B) + ( tuple B) ( length-map-list f l) - ( vec-list (map-list f l)) = - map-vec f (vec-list l) - vec-list-map-list-map-vec-list nil = refl - vec-list-map-list-map-vec-list (cons x l) = - compute-tr-vec + ( tuple-list (map-list f l)) = + map-tuple f (tuple-list l) + tuple-list-map-list-map-tuple-list nil = refl + tuple-list-map-list-map-tuple-list (cons x l) = + compute-tr-tuple ( ap succ-ℕ (length-map-list f l)) - ( vec-list (map-list f l)) + ( tuple-list (map-list f l)) ( f x) ∙ - eq-Eq-vec + eq-Eq-tuple ( succ-ℕ (length-list l)) ( f x ∷ tr - ( vec B) + ( tuple B) ( is-injective-succ-ℕ (ap succ-ℕ (length-map-list f l))) - ( vec-list (map-list f l))) - ( map-vec f (vec-list (cons x l))) + ( tuple-list (map-list f l))) + ( map-tuple f (tuple-list (cons x l))) ( refl , - Eq-eq-vec + Eq-eq-tuple ( length-list l) ( tr - ( vec B) + ( tuple B) ( is-injective-succ-ℕ (ap succ-ℕ (length-map-list f l))) - ( vec-list (map-list f l))) - ( map-vec f (vec-list l)) + ( tuple-list (map-list f l))) + ( map-tuple f (tuple-list l)) ( tr ( λ p → ( tr - ( vec B) + ( tuple B) ( p) - ( vec-list (map-list f l))) = - ( map-vec f (vec-list l))) + ( tuple-list (map-list f l))) = + ( map-tuple f (tuple-list l))) ( eq-is-prop ( is-set-ℕ (length-list (map-list f l)) (length-list l))) - ( vec-list-map-list-map-vec-list l))) + ( tuple-list-map-list-map-tuple-list l))) - vec-list-map-list-map-vec-list' : + tuple-list-map-list-map-tuple-list' : (l : list A) → - vec-list (map-list f l) = + tuple-list (map-list f l) = tr - ( vec B) + ( tuple B) ( inv (length-map-list f l)) - ( map-vec f (vec-list l)) - vec-list-map-list-map-vec-list' l = + ( map-tuple f (tuple-list l)) + tuple-list-map-list-map-tuple-list' l = eq-transpose-tr' ( length-map-list f l) - ( vec-list-map-list-map-vec-list l) + ( tuple-list-map-list-map-tuple-list l) - list-vec-map-vec-map-list-vec : - (n : ℕ) (v : vec A n) → - list-vec - ( length-list (map-list f (list-vec n v))) - ( vec-list (map-list f (list-vec n v))) = - list-vec n (map-vec f v) - list-vec-map-vec-map-list-vec n v = + list-tuple-map-tuple-map-list-tuple : + (n : ℕ) (v : tuple A n) → + list-tuple + ( length-list (map-list f (list-tuple n v))) + ( tuple-list (map-list f (list-tuple n v))) = + list-tuple n (map-tuple f v) + list-tuple-map-tuple-map-list-tuple n v = ap - ( λ p → list-vec (pr1 p) (pr2 p)) + ( λ p → list-tuple (pr1 p) (pr2 p)) ( eq-pair-Σ - ( length-map-list f (list-vec n v) ∙ - compute-length-list-list-vec n v) - ( map-vec-map-list-vec n v)) + ( length-map-list f (list-tuple n v) ∙ + compute-length-list-list-tuple n v) + ( map-tuple-map-list-tuple n v)) ``` ### `map-list` preserves concatenation diff --git a/src/lists/permutation-lists.lagda.md b/src/lists/permutation-lists.lagda.md index 26ca630086..ae248aa1b0 100644 --- a/src/lists/permutation-lists.lagda.md +++ b/src/lists/permutation-lists.lagda.md @@ -20,13 +20,13 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import lists.arrays open import lists.functoriality-lists open import lists.lists -open import lists.permutation-vectors +open import lists.permutation-tuples ```
@@ -47,9 +47,9 @@ module _ permute-list : (l : list A) → Permutation (length-list l) → list A permute-list l s = - list-vec + list-tuple ( length-list l) - ( permute-vec (length-list l) (vec-list l) s) + ( permute-tuple (length-list l) (tuple-list l) s) ``` ### The predicate that a function from `list` to `list` is permuting lists @@ -82,41 +82,44 @@ module _ (l : list A) (t : Permutation (length-list l)) → length-list (permute-list l t) = (length-list l) length-permute-list l t = - compute-length-list-list-vec + compute-length-list-list-tuple ( length-list l) - ( permute-vec (length-list l) (vec-list l) t) + ( permute-tuple (length-list l) (tuple-list l) t) ``` -### Link between `permute-list` and `permute-vec` +### Link between `permute-list` and `permute-tuple` ```agda - eq-vec-list-permute-list : + eq-tuple-list-permute-list : (l : list A) (f : Permutation (length-list l)) → - permute-vec (length-list l) (vec-list l) f = + permute-tuple (length-list l) (tuple-list l) f = tr - ( vec A) + ( tuple A) ( _) - ( vec-list ( permute-list l f)) - eq-vec-list-permute-list l f = + ( tuple-list ( permute-list l f)) + eq-tuple-list-permute-list l f = inv ( pr2 ( pair-eq-Σ - ( is-retraction-vec-list - ( (length-list l , permute-vec (length-list l) (vec-list l) f))))) + ( is-retraction-tuple-list + ( length-list l , + permute-tuple (length-list l) (tuple-list l) f)))) ``` -### If a function `f` from `vec` to `vec` is a permutation of vectors then `list-vec ∘ f ∘ vec-list` is a permutation of lists +### If a function `f` from `tuple` to `tuple` is a permutation of tuples then `list-tuple ∘ f ∘ tuple-list` is a permutation of lists ```agda - is-permutation-list-is-permutation-vec : - (f : (n : ℕ) → vec A n → vec A n) → - ((n : ℕ) → is-permutation-vec n (f n)) → + is-permutation-list-is-permutation-tuple : + (f : (n : ℕ) → tuple A n → tuple A n) → + ((n : ℕ) → is-permutation-tuple n (f n)) → is-permutation-list - ( λ l → list-vec (length-list l) (f (length-list l) (vec-list l))) - pr1 (is-permutation-list-is-permutation-vec f T l) = - pr1 (T (length-list l) (vec-list l)) - pr2 (is-permutation-list-is-permutation-vec f T l) = - ap (λ p → list-vec (length-list l) p) (pr2 (T (length-list l) (vec-list l))) + ( λ l → list-tuple (length-list l) (f (length-list l) (tuple-list l))) + pr1 (is-permutation-list-is-permutation-tuple f T l) = + pr1 (T (length-list l) (tuple-list l)) + pr2 (is-permutation-list-is-permutation-tuple f T l) = + ap + ( λ p → list-tuple (length-list l) p) + ( pr2 (T (length-list l) (tuple-list l))) ``` ### If `x` is in `permute-list l t` then `x` is in `l` @@ -126,23 +129,23 @@ module _ (l : list A) (t : Permutation (length-list l)) (x : A) → x ∈-list (permute-list l t) → x ∈-list l is-in-list-is-in-permute-list l t x I = - is-in-list-is-in-vec-list + is-in-list-is-in-tuple-list ( l) ( x) - ( is-in-vec-is-in-permute-vec + ( is-in-tuple-is-in-permute-tuple ( length-list l) - ( vec-list l) + ( tuple-list l) ( t) ( x) ( tr - ( λ p → x ∈-vec (pr2 p)) - ( is-retraction-vec-list + ( λ p → x ∈-tuple (pr2 p)) + ( is-retraction-tuple-list ( length-list l , - permute-vec (length-list l) (vec-list l) t)) - ( is-in-vec-list-is-in-list - ( list-vec + permute-tuple (length-list l) (tuple-list l) t)) + ( is-in-tuple-list-is-in-list + ( list-tuple ( length-list l) - ( permute-vec (length-list l) (vec-list l) t)) + ( permute-tuple (length-list l) (tuple-list l) t)) ( x) ( I)))) @@ -150,20 +153,20 @@ module _ (l : list A) (t : Permutation (length-list l)) (x : A) → x ∈-list l → x ∈-list (permute-list l t) is-in-permute-list-is-in-list l t x I = - is-in-list-is-in-vec-list + is-in-list-is-in-tuple-list ( permute-list l t) ( x) ( tr - ( λ p → x ∈-vec (pr2 p)) + ( λ p → x ∈-tuple (pr2 p)) ( inv - ( is-retraction-vec-list - ( length-list l , permute-vec (length-list l) (vec-list l) t))) - ( is-in-permute-vec-is-in-vec + ( is-retraction-tuple-list + ( length-list l , permute-tuple (length-list l) (tuple-list l) t))) + ( is-in-permute-tuple-is-in-tuple ( length-list l) - ( vec-list l) + ( tuple-list l) ( t) ( x) - ( is-in-vec-list-is-in-list l x I))) + ( is-in-tuple-list-is-in-list l x I))) ``` ### If `μ : A → (B → B)` satisfies a commutativity property, then `fold-list b μ` is invariant under permutation for every `b : B` @@ -173,96 +176,96 @@ module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (b : B) (μ : A → (B → B)) - (C : commutative-fold-vec μ) + (C : commutative-fold-tuple μ) where - invariant-fold-vec-tr : - {n m : ℕ} (v : vec A n) (eq : n = m) → - fold-vec b μ (tr (vec A) eq v) = fold-vec b μ v - invariant-fold-vec-tr v refl = refl + invariant-fold-tuple-tr : + {n m : ℕ} (v : tuple A n) (eq : n = m) → + fold-tuple b μ (tr (tuple A) eq v) = fold-tuple b μ v + invariant-fold-tuple-tr v refl = refl invariant-permutation-fold-list : (l : list A) → (f : Permutation (length-list l)) → fold-list b μ l = fold-list b μ (permute-list l f) invariant-permutation-fold-list l f = - ( inv (htpy-fold-list-fold-vec b μ l) ∙ - ( invariant-permutation-fold-vec b μ C (vec-list l) f ∙ - ( ap (fold-vec b μ) (eq-vec-list-permute-list l f) ∙ - ( ( invariant-fold-vec-tr + ( inv (htpy-fold-list-fold-tuple b μ l) ∙ + ( invariant-permutation-fold-tuple b μ C (tuple-list l) f ∙ + ( ap (fold-tuple b μ) (eq-tuple-list-permute-list l f) ∙ + ( ( invariant-fold-tuple-tr { m = length-list l} - ( vec-list (permute-list l f)) + ( tuple-list (permute-list l f)) ( _)) ∙ - ( htpy-fold-list-fold-vec b μ (permute-list l f)))))) + ( htpy-fold-list-fold-tuple b μ (permute-list l f)))))) ``` ### `map-list` of the permutation of a list ```agda -compute-tr-permute-vec : +compute-tr-permute-tuple : {l : Level} {A : UU l} {n m : ℕ} - (e : n = m) (v : vec A n) (t : Permutation m) → + (e : n = m) (v : tuple A n) (t : Permutation m) → tr - ( vec A) + ( tuple A) ( e) - ( permute-vec + ( permute-tuple ( n) ( v) ( tr Permutation (inv e) t)) = - permute-vec + permute-tuple ( m) - ( tr (vec A) e v) + ( tr (tuple A) e v) ( t) -compute-tr-permute-vec refl v t = refl +compute-tr-permute-tuple refl v t = refl -compute-tr-map-vec : +compute-tr-map-tuple : {l1 l2 : Level} {A : UU l1} {B : UU l2} - (f : A → B) {n m : ℕ} (p : n = m) (v : vec A n) → - tr (vec B) p (map-vec f v) = map-vec f (tr (vec A) p v) -compute-tr-map-vec f refl v = refl + (f : A → B) {n m : ℕ} (p : n = m) (v : tuple A n) → + tr (tuple B) p (map-tuple f v) = map-tuple f (tr (tuple A) p v) +compute-tr-map-tuple f refl v = refl -helper-compute-list-vec-map-vec-permute-vec-vec-list : +helper-compute-list-tuple-map-tuple-permute-tuple-tuple-list : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) (p : list A) (t : Permutation (length-list p)) → tr - ( vec B) + ( tuple B) ( inv (length-permute-list p t)) - ( map-vec f (permute-vec (length-list p) (vec-list p) t)) = - map-vec f (vec-list (permute-list p t)) -helper-compute-list-vec-map-vec-permute-vec-vec-list f p t = - ( ( compute-tr-map-vec + ( map-tuple f (permute-tuple (length-list p) (tuple-list p) t)) = + map-tuple f (tuple-list (permute-list p t)) +helper-compute-list-tuple-map-tuple-permute-tuple-tuple-list f p t = + ( ( compute-tr-map-tuple ( f) ( inv (length-permute-list p t)) - ( permute-vec (length-list p) (vec-list p) t)) ∙ + ( permute-tuple (length-list p) (tuple-list p) t)) ∙ ( ( ap ( λ P → - map-vec + map-tuple ( f) - ( tr (vec _) P (permute-vec (length-list p) (vec-list p) t))) + ( tr (tuple _) P (permute-tuple (length-list p) (tuple-list p) t))) ( eq-is-prop (is-set-ℕ _ _))) ∙ ( ap - ( map-vec f) + ( map-tuple f) ( pr2 ( pair-eq-Σ ( inv - ( is-retraction-vec-list + ( is-retraction-tuple-list ( length-list p , - permute-vec (length-list p) (vec-list p) t)))))))) + permute-tuple (length-list p) (tuple-list p) t)))))))) -compute-list-vec-map-vec-permute-vec-vec-list : +compute-list-tuple-map-tuple-permute-tuple-tuple-list : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) (p : list A) (t : Permutation (length-list p)) → - list-vec + list-tuple ( length-list p) - ( map-vec f (permute-vec (length-list p) (vec-list p) t)) = - list-vec + ( map-tuple f (permute-tuple (length-list p) (tuple-list p) t)) = + list-tuple ( length-list (permute-list p t)) - ( map-vec f (vec-list (permute-list p t))) -compute-list-vec-map-vec-permute-vec-vec-list f p t = + ( map-tuple f (tuple-list (permute-list p t))) +compute-list-tuple-map-tuple-permute-tuple-tuple-list f p t = ap - ( λ p → list-vec (pr1 p) (pr2 p)) + ( λ p → list-tuple (pr1 p) (pr2 p)) ( eq-pair-Σ ( inv (length-permute-list p t)) - ( ( helper-compute-list-vec-map-vec-permute-vec-vec-list f p t))) + ( ( helper-compute-list-tuple-map-tuple-permute-tuple-tuple-list f p t))) eq-map-list-permute-list : {l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -271,32 +274,35 @@ eq-map-list-permute-list : map-list f (permute-list p t) eq-map-list-permute-list {B = B} f p t = ( ( ap - ( λ (n , p) → list-vec n p) + ( λ (n , p) → list-tuple n p) ( eq-pair-Σ ( length-map-list f p) ( ( ap ( λ x → tr - ( vec B) + ( tuple B) ( length-map-list f p) - ( permute-vec + ( permute-tuple ( length-list (map-list f p)) ( x) ( tr Permutation (inv (length-map-list f p)) t))) - ( vec-list-map-list-map-vec-list' f p)) ∙ - ( ( compute-tr-permute-vec + ( tuple-list-map-list-map-tuple-list' f p)) ∙ + ( ( compute-tr-permute-tuple ( length-map-list f p) - ( tr (vec B) (inv (length-map-list f p)) (map-vec f (vec-list p))) + ( tr + ( tuple B) + ( inv (length-map-list f p)) + ( map-tuple f (tuple-list p))) ( t)) ∙ ( ap - ( λ v → permute-vec (length-list p) v t) + ( λ v → permute-tuple (length-list p) v t) ( is-section-inv-tr - ( vec B) + ( tuple B) ( length-map-list f p) - ( map-vec f (vec-list p)))))))) ∙ + ( map-tuple f (tuple-list p)))))))) ∙ ( ( ap - ( list-vec (length-list p)) - ( eq-map-vec-permute-vec f (vec-list p) t)) ∙ - ( compute-list-vec-map-vec-permute-vec-vec-list f p t ∙ - ( map-list-map-vec-list f (permute-list p t))))) + ( list-tuple (length-list p)) + ( eq-map-tuple-permute-tuple f (tuple-list p) t)) ∙ + ( compute-list-tuple-map-tuple-permute-tuple-tuple-list f p t ∙ + ( map-list-map-tuple-list f (permute-list p t))))) ``` diff --git a/src/lists/permutation-vectors.lagda.md b/src/lists/permutation-vectors.lagda.md index 4099f1bfe0..a0a9c9dc15 100644 --- a/src/lists/permutation-vectors.lagda.md +++ b/src/lists/permutation-vectors.lagda.md @@ -1,7 +1,7 @@ -# Permutations of vectors +# Permutations of tuples ```agda -module lists.permutation-vectors where +module lists.permutation-tuples where ```
Imports @@ -25,8 +25,8 @@ open import foundation.negated-equality open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import lists.arrays open import lists.lists @@ -38,10 +38,10 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Given an functional vector `t` of length `n` and a automorphism `σ` of `Fin n`, -the permutation of `t` according to `σ` is the functional vector where the index -are permuted by `σ`. Then, we can define what is a permutation of a vector of -length `n` via the equivalence between functional vectors and vectors. +Given an functional tuple `t` of length `n` and a automorphism `σ` of `Fin n`, +the permutation of `t` according to `σ` is the functional tuple where the index +are permuted by `σ`. Then, we can define what is a permutation of a tuple of +length `n` via the equivalence between functional tuples and tuples. ## Definitions @@ -50,30 +50,30 @@ module _ {l : Level} {A : UU l} where - permute-vec : (n : ℕ) → vec A n → Permutation n → vec A n - permute-vec n v s = - listed-vec-functional-vec n (functional-vec-vec n v ∘ (map-equiv s)) + permute-tuple : (n : ℕ) → tuple A n → Permutation n → tuple A n + permute-tuple n v s = + listed-tuple-functional-tuple n (functional-tuple-tuple n v ∘ (map-equiv s)) ``` -### The predicate that a function from `vec` to `vec` is just permuting vectors +### The predicate that a function from `tuple` to `tuple` is just permuting tuples ```agda - is-permutation-vec : (n : ℕ) → (vec A n → vec A n) → UU l - is-permutation-vec n f = - (v : vec A n) → + is-permutation-tuple : (n : ℕ) → (tuple A n → tuple A n) → UU l + is-permutation-tuple n f = + (v : tuple A n) → Σ ( Permutation n) - ( λ t → f v = permute-vec n v t) - - permutation-is-permutation-vec : - (n : ℕ) (f : vec A n → vec A n) → is-permutation-vec n f → - (v : vec A n) → Permutation n - permutation-is-permutation-vec n f P v = pr1 (P v) - - eq-permute-vec-permutation-is-permutation-vec : - (n : ℕ) (f : vec A n → vec A n) → (P : is-permutation-vec n f) → - (v : vec A n) → - (f v = permute-vec n v (permutation-is-permutation-vec n f P v)) - eq-permute-vec-permutation-is-permutation-vec n f P v = pr2 (P v) + ( λ t → f v = permute-tuple n v t) + + permutation-is-permutation-tuple : + (n : ℕ) (f : tuple A n → tuple A n) → is-permutation-tuple n f → + (v : tuple A n) → Permutation n + permutation-is-permutation-tuple n f P v = pr1 (P v) + + eq-permute-tuple-permutation-is-permutation-tuple : + (n : ℕ) (f : tuple A n → tuple A n) → (P : is-permutation-tuple n f) → + (v : tuple A n) → + (f v = permute-tuple n v (permutation-is-permutation-tuple n f P v)) + eq-permute-tuple-permutation-is-permutation-tuple n f P v = pr2 (P v) ``` ## Properties @@ -81,228 +81,228 @@ module _ ### Computational rules ```agda - compute-permute-vec-id-equiv : + compute-permute-tuple-id-equiv : (n : ℕ) - (v : vec A n) → - permute-vec n v id-equiv = v - compute-permute-vec-id-equiv n v = - ap (λ f → map-equiv f v) (right-inverse-law-equiv (compute-vec n)) + (v : tuple A n) → + permute-tuple n v id-equiv = v + compute-permute-tuple-id-equiv n v = + ap (λ f → map-equiv f v) (right-inverse-law-equiv (compute-tuple n)) - compute-composition-permute-vec : + compute-composition-permute-tuple : (n : ℕ) - (v : vec A n) → + (v : tuple A n) → (a b : Permutation n) → - permute-vec n v (a ∘e b) = permute-vec n (permute-vec n v a) b - compute-composition-permute-vec n v a b = + permute-tuple n v (a ∘e b) = permute-tuple n (permute-tuple n v a) b + compute-composition-permute-tuple n v a b = ap - ( λ f → listed-vec-functional-vec n (f ∘ (map-equiv b))) + ( λ f → listed-tuple-functional-tuple n (f ∘ (map-equiv b))) ( inv - ( is-retraction-functional-vec-vec n - ( functional-vec-vec n v ∘ map-equiv a))) + ( is-retraction-functional-tuple-tuple n + ( functional-tuple-tuple n v ∘ map-equiv a))) - compute-swap-two-last-elements-transposition-Fin-permute-vec : + compute-swap-two-last-elements-transposition-Fin-permute-tuple : (n : ℕ) - (v : vec A n) → + (v : tuple A n) → (x y : A) → - permute-vec + permute-tuple (succ-ℕ (succ-ℕ n)) (x ∷ y ∷ v) (swap-two-last-elements-transposition-Fin n) = (y ∷ x ∷ v) - compute-swap-two-last-elements-transposition-Fin-permute-vec n v x y = - eq-Eq-vec + compute-swap-two-last-elements-transposition-Fin-permute-tuple n v x y = + eq-Eq-tuple ( succ-ℕ (succ-ℕ n)) - ( permute-vec + ( permute-tuple ( succ-ℕ (succ-ℕ n)) ( x ∷ y ∷ v) ( swap-two-last-elements-transposition-Fin n)) ( y ∷ x ∷ v) ( refl , refl , - Eq-eq-vec + Eq-eq-tuple ( n) - ( permute-vec n v id-equiv) + ( permute-tuple n v id-equiv) ( v) - ( compute-permute-vec-id-equiv n v)) + ( compute-permute-tuple-id-equiv n v)) - compute-equiv-coproduct-permutation-id-equiv-permute-vec : + compute-equiv-coproduct-permutation-id-equiv-permute-tuple : (n : ℕ) - (v : vec A n) + (v : tuple A n) (x : A) (t : Permutation n) → - permute-vec (succ-ℕ n) (x ∷ v) (equiv-coproduct t id-equiv) = - (x ∷ permute-vec n v t) - compute-equiv-coproduct-permutation-id-equiv-permute-vec n v x t = - eq-Eq-vec + permute-tuple (succ-ℕ n) (x ∷ v) (equiv-coproduct t id-equiv) = + (x ∷ permute-tuple n v t) + compute-equiv-coproduct-permutation-id-equiv-permute-tuple n v x t = + eq-Eq-tuple ( succ-ℕ n) - ( permute-vec (succ-ℕ n) (x ∷ v) (equiv-coproduct t id-equiv)) - ( x ∷ permute-vec n v t) + ( permute-tuple (succ-ℕ n) (x ∷ v) (equiv-coproduct t id-equiv)) + ( x ∷ permute-tuple n v t) ( refl , - ( Eq-eq-vec + ( Eq-eq-tuple ( n) ( _) - ( permute-vec n v t) + ( permute-tuple n v t) ( refl))) - ap-permute-vec : + ap-permute-tuple : {n : ℕ} (a : Permutation n) - {v w : vec A n} → + {v w : tuple A n} → v = w → - permute-vec n v a = permute-vec n w a - ap-permute-vec a refl = refl + permute-tuple n v a = permute-tuple n w a + ap-permute-tuple a refl = refl ``` -### `x` is in a vector `v` iff it is in `permute v t` +### `x` is in a tuple `v` iff it is in `permute v t` ```agda - is-in-functional-vec-is-in-permute-functional-vec : + is-in-functional-tuple-is-in-permute-functional-tuple : (n : ℕ) (v : Fin n → A) (t : Permutation n) (x : A) → - in-functional-vec n x (v ∘ map-equiv t) → in-functional-vec n x v - is-in-functional-vec-is-in-permute-functional-vec n v t x (k , refl) = + in-functional-tuple n x (v ∘ map-equiv t) → in-functional-tuple n x v + is-in-functional-tuple-is-in-permute-functional-tuple n v t x (k , refl) = map-equiv t k , refl - is-in-vec-is-in-permute-vec : - (n : ℕ) (v : vec A n) (t : Permutation n) (x : A) → - x ∈-vec (permute-vec n v t) → x ∈-vec v - is-in-vec-is-in-permute-vec n v t x I = - is-in-vec-is-in-functional-vec + is-in-tuple-is-in-permute-tuple : + (n : ℕ) (v : tuple A n) (t : Permutation n) (x : A) → + x ∈-tuple (permute-tuple n v t) → x ∈-tuple v + is-in-tuple-is-in-permute-tuple n v t x I = + is-in-tuple-is-in-functional-tuple ( n) ( v) ( x) - ( is-in-functional-vec-is-in-permute-functional-vec + ( is-in-functional-tuple-is-in-permute-functional-tuple ( n) - ( functional-vec-vec n v) + ( functional-tuple-tuple n v) ( t) ( x) ( tr - ( λ p → in-functional-vec n x p) - ( is-retraction-functional-vec-vec n - ( functional-vec-vec n v ∘ map-equiv t)) - ( is-in-functional-vec-is-in-vec n (permute-vec n v t) x I))) + ( λ p → in-functional-tuple n x p) + ( is-retraction-functional-tuple-tuple n + ( functional-tuple-tuple n v ∘ map-equiv t)) + ( is-in-functional-tuple-is-in-tuple n (permute-tuple n v t) x I))) - is-in-permute-functional-vec-is-in-functional-vec : + is-in-permute-functional-tuple-is-in-functional-tuple : (n : ℕ) (v : Fin n → A) (t : Permutation n) (x : A) → - in-functional-vec n x v → in-functional-vec n x (v ∘ map-equiv t) - is-in-permute-functional-vec-is-in-functional-vec n v t x (k , refl) = + in-functional-tuple n x v → in-functional-tuple n x (v ∘ map-equiv t) + is-in-permute-functional-tuple-is-in-functional-tuple n v t x (k , refl) = map-inv-equiv t k , ap v (inv (is-section-map-inv-equiv t k)) - is-in-permute-vec-is-in-vec : - (n : ℕ) (v : vec A n) (t : Permutation n) (x : A) → - x ∈-vec v → x ∈-vec (permute-vec n v t) - is-in-permute-vec-is-in-vec n v t x I = - is-in-vec-is-in-functional-vec + is-in-permute-tuple-is-in-tuple : + (n : ℕ) (v : tuple A n) (t : Permutation n) (x : A) → + x ∈-tuple v → x ∈-tuple (permute-tuple n v t) + is-in-permute-tuple-is-in-tuple n v t x I = + is-in-tuple-is-in-functional-tuple ( n) - ( permute-vec n v t) + ( permute-tuple n v t) ( x) ( tr - ( λ p → in-functional-vec n x p) + ( λ p → in-functional-tuple n x p) ( inv - ( is-retraction-functional-vec-vec n - ( functional-vec-vec n v ∘ map-equiv t))) - ( is-in-permute-functional-vec-is-in-functional-vec + ( is-retraction-functional-tuple-tuple n + ( functional-tuple-tuple n v ∘ map-equiv t))) + ( is-in-permute-functional-tuple-is-in-functional-tuple ( n) - ( functional-vec-vec n v) + ( functional-tuple-tuple n v) ( t) ( x) - ( is-in-functional-vec-is-in-vec n v x I))) + ( is-in-functional-tuple-is-in-tuple n v x I))) ``` -### If `μ : A → (B → B)` satisfies a commutativity property, then `fold-vec b μ` is invariant under permutation for every `b : B` +### If `μ : A → (B → B)` satisfies a commutativity property, then `fold-tuple b μ` is invariant under permutation for every `b : B` ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (μ : A → (B → B)) where - commutative-fold-vec : UU (l1 ⊔ l2) - commutative-fold-vec = (a1 a2 : A) (b : B) → μ a1 (μ a2 b) = μ a2 (μ a1 b) + commutative-fold-tuple : UU (l1 ⊔ l2) + commutative-fold-tuple = (a1 a2 : A) (b : B) → μ a1 (μ a2 b) = μ a2 (μ a1 b) module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (b : B) (μ : A → (B → B)) - (C : commutative-fold-vec μ) + (C : commutative-fold-tuple μ) where - invariant-swap-two-last-elements-transposition-fold-vec : - {n : ℕ} → (v : vec A (succ-ℕ (succ-ℕ n))) → - fold-vec b μ v = - fold-vec + invariant-swap-two-last-elements-transposition-fold-tuple : + {n : ℕ} → (v : tuple A (succ-ℕ (succ-ℕ n))) → + fold-tuple b μ v = + fold-tuple ( b) ( μ) - ( permute-vec (succ-ℕ (succ-ℕ n)) + ( permute-tuple (succ-ℕ (succ-ℕ n)) ( v) ( swap-two-last-elements-transposition-Fin n)) - invariant-swap-two-last-elements-transposition-fold-vec {n} (y ∷ z ∷ v) = - C y z (fold-vec b μ v) ∙ + invariant-swap-two-last-elements-transposition-fold-tuple {n} (y ∷ z ∷ v) = + C y z (fold-tuple b μ v) ∙ inv ( ap - ( fold-vec b μ) - ( compute-swap-two-last-elements-transposition-Fin-permute-vec + ( fold-tuple b μ) + ( compute-swap-two-last-elements-transposition-Fin-permute-tuple ( n) ( v) ( y) ( z))) - invariant-adjacent-transposition-fold-vec : - {n : ℕ} → (v : vec A (succ-ℕ n)) → (k : Fin n) → - fold-vec b μ v = - fold-vec b μ (permute-vec (succ-ℕ n) v (adjacent-transposition-Fin n k)) - invariant-adjacent-transposition-fold-vec {succ-ℕ n} (x ∷ v) (inl k) = + invariant-adjacent-transposition-fold-tuple : + {n : ℕ} → (v : tuple A (succ-ℕ n)) → (k : Fin n) → + fold-tuple b μ v = + fold-tuple b μ (permute-tuple (succ-ℕ n) v (adjacent-transposition-Fin n k)) + invariant-adjacent-transposition-fold-tuple {succ-ℕ n} (x ∷ v) (inl k) = ap ( μ x) - ( invariant-adjacent-transposition-fold-vec v k) ∙ + ( invariant-adjacent-transposition-fold-tuple v k) ∙ inv ( ap - ( fold-vec b μ) - ( compute-equiv-coproduct-permutation-id-equiv-permute-vec + ( fold-tuple b μ) + ( compute-equiv-coproduct-permutation-id-equiv-permute-tuple ( succ-ℕ n) ( v) ( x) ( adjacent-transposition-Fin n k))) - invariant-adjacent-transposition-fold-vec {succ-ℕ n} (x ∷ v) (inr _) = - invariant-swap-two-last-elements-transposition-fold-vec (x ∷ v) + invariant-adjacent-transposition-fold-tuple {succ-ℕ n} (x ∷ v) (inr _) = + invariant-swap-two-last-elements-transposition-fold-tuple (x ∷ v) - invariant-list-adjacent-transpositions-fold-vec : - {n : ℕ} (v : vec A (succ-ℕ n)) (l : list (Fin n)) → - fold-vec b μ v = - fold-vec + invariant-list-adjacent-transpositions-fold-tuple : + {n : ℕ} (v : tuple A (succ-ℕ n)) (l : list (Fin n)) → + fold-tuple b μ v = + fold-tuple ( b) ( μ) - ( permute-vec + ( permute-tuple ( succ-ℕ n) ( v) ( permutation-list-adjacent-transpositions n l)) - invariant-list-adjacent-transpositions-fold-vec {n} v nil = - ap (fold-vec b μ) (inv (compute-permute-vec-id-equiv (succ-ℕ n) v)) - invariant-list-adjacent-transpositions-fold-vec {n} v (cons x l) = - ( invariant-adjacent-transposition-fold-vec v x ∙ - ( ( invariant-list-adjacent-transpositions-fold-vec - ( permute-vec (succ-ℕ n) v (adjacent-transposition-Fin n x)) + invariant-list-adjacent-transpositions-fold-tuple {n} v nil = + ap (fold-tuple b μ) (inv (compute-permute-tuple-id-equiv (succ-ℕ n) v)) + invariant-list-adjacent-transpositions-fold-tuple {n} v (cons x l) = + ( invariant-adjacent-transposition-fold-tuple v x ∙ + ( ( invariant-list-adjacent-transpositions-fold-tuple + ( permute-tuple (succ-ℕ n) v (adjacent-transposition-Fin n x)) ( l)) ∙ ( ap - ( fold-vec b μ) + ( fold-tuple b μ) ( inv - ( compute-composition-permute-vec + ( compute-composition-permute-tuple ( succ-ℕ n) ( v) ( adjacent-transposition-Fin n x) ( permutation-list-adjacent-transpositions n l)))))) - invariant-transposition-fold-vec : - {n : ℕ} (v : vec A (succ-ℕ n)) (i j : Fin (succ-ℕ n)) (neq : i ≠ j) → - fold-vec b μ v = - fold-vec + invariant-transposition-fold-tuple : + {n : ℕ} (v : tuple A (succ-ℕ n)) (i j : Fin (succ-ℕ n)) (neq : i ≠ j) → + fold-tuple b μ v = + fold-tuple ( b) ( μ) - ( permute-vec (succ-ℕ n) v (transposition-Fin (succ-ℕ n) i j neq)) - invariant-transposition-fold-vec {n} v i j neq = - ( ( invariant-list-adjacent-transpositions-fold-vec + ( permute-tuple (succ-ℕ n) v (transposition-Fin (succ-ℕ n) i j neq)) + invariant-transposition-fold-tuple {n} v i j neq = + ( ( invariant-list-adjacent-transpositions-fold-tuple ( v) ( list-adjacent-transpositions-transposition-Fin n i j)) ∙ ( ap - ( λ t → fold-vec b μ (permute-vec (succ-ℕ n) v t)) + ( λ t → fold-tuple b μ (permute-tuple (succ-ℕ n) v t)) ( eq-htpy-equiv { e = permutation-list-adjacent-transpositions @@ -315,46 +315,46 @@ module _ ( j) ( neq))))) - invariant-list-transpositions-fold-vec : + invariant-list-transpositions-fold-tuple : {n : ℕ} - (v : vec A n) + (v : tuple A n) (l : list (Σ (Fin n × Fin n) (λ (i , j) → i ≠ j))) → - fold-vec b μ v = - fold-vec + fold-tuple b μ v = + fold-tuple ( b) ( μ) - ( permute-vec + ( permute-tuple ( n) ( v) ( permutation-list-standard-transpositions-Fin n l)) - invariant-list-transpositions-fold-vec {n} v nil = + invariant-list-transpositions-fold-tuple {n} v nil = ap - ( fold-vec b μ) - ( inv ( compute-permute-vec-id-equiv n v)) - invariant-list-transpositions-fold-vec {0} v (cons _ _) = refl - invariant-list-transpositions-fold-vec {succ-ℕ n} v (cons ((i , j) , neq) l) = - ( invariant-transposition-fold-vec v i j neq ∙ - ( ( invariant-list-transpositions-fold-vec - ( permute-vec (succ-ℕ n) v (transposition-Fin (succ-ℕ n) i j neq)) + ( fold-tuple b μ) + ( inv ( compute-permute-tuple-id-equiv n v)) + invariant-list-transpositions-fold-tuple {0} v (cons _ _) = refl + invariant-list-transpositions-fold-tuple {succ-ℕ n} v (cons ((i , j) , neq) l) = + ( invariant-transposition-fold-tuple v i j neq ∙ + ( ( invariant-list-transpositions-fold-tuple + ( permute-tuple (succ-ℕ n) v (transposition-Fin (succ-ℕ n) i j neq)) ( l)) ∙ ( ap - ( fold-vec b μ) + ( fold-tuple b μ) ( inv - ( compute-composition-permute-vec + ( compute-composition-permute-tuple ( succ-ℕ n) ( v) ( transposition-Fin (succ-ℕ n) i j neq) ( permutation-list-standard-transpositions-Fin (succ-ℕ n) l)))))) - invariant-permutation-fold-vec : - {n : ℕ} → (v : vec A n) → (f : Permutation n) → - fold-vec b μ v = fold-vec b μ (permute-vec n v f) - invariant-permutation-fold-vec {n} v f = - ( ( invariant-list-transpositions-fold-vec + invariant-permutation-fold-tuple : + {n : ℕ} → (v : tuple A n) → (f : Permutation n) → + fold-tuple b μ v = fold-tuple b μ (permute-tuple n v f) + invariant-permutation-fold-tuple {n} v f = + ( ( invariant-list-transpositions-fold-tuple ( v) ( list-standard-transpositions-permutation-Fin n f)) ∙ ( ap - ( λ f → fold-vec b μ (permute-vec n v f)) + ( λ f → fold-tuple b μ (permute-tuple n v f)) ( eq-htpy-equiv {e = permutation-list-standard-transpositions-Fin @@ -364,34 +364,34 @@ module _ ( retraction-permutation-list-standard-transpositions-Fin n f)))) ``` -### `map-vec` of the permutation of a vector +### `map-tuple` of the permutation of a tuple ```agda -eq-map-vec-permute-vec : +eq-map-tuple-permute-tuple : {l1 l2 : Level} {A : UU l1} {B : UU l2} - (f : A → B) {n : ℕ} (v : vec A n) (t : Permutation n) → - permute-vec n (map-vec f v) t = - map-vec f (permute-vec n v t) -eq-map-vec-permute-vec f {n} v t = + (f : A → B) {n : ℕ} (v : tuple A n) (t : Permutation n) → + permute-tuple n (map-tuple f v) t = + map-tuple f (permute-tuple n v t) +eq-map-tuple-permute-tuple f {n} v t = ( ( ap ( λ w → - ( listed-vec-functional-vec + ( listed-tuple-functional-tuple ( n) - ( functional-vec-vec n w ∘ (map-equiv t))))) - ( inv (map-vec-map-functional-vec f n v)) ∙ + ( functional-tuple-tuple n w ∘ (map-equiv t))))) + ( inv (map-tuple-map-functional-tuple f n v)) ∙ ( ( ap ( λ p → - listed-vec-functional-vec + listed-tuple-functional-tuple ( n) ( p ∘ map-equiv t)) - ( is-retraction-functional-vec-vec + ( is-retraction-functional-tuple-tuple ( n) - ( map-functional-vec n f (functional-vec-vec n v)))) ∙ + ( map-functional-tuple n f (functional-tuple-tuple n v)))) ∙ ( ( ap - ( listed-vec-functional-vec n ∘ map-functional-vec n f) + ( listed-tuple-functional-tuple n ∘ map-functional-tuple n f) ( inv - ( is-retraction-functional-vec-vec + ( is-retraction-functional-tuple-tuple ( n) - ( λ z → functional-vec-vec n v (map-equiv t z))))) ∙ - ( map-vec-map-functional-vec f n (permute-vec n v t))))) + ( λ z → functional-tuple-tuple n v (map-equiv t z))))) ∙ + ( map-tuple-map-functional-tuple f n (permute-tuple n v t))))) ``` diff --git a/src/lists/sort-by-insertion-lists.lagda.md b/src/lists/sort-by-insertion-lists.lagda.md index c14433df58..e558d04c02 100644 --- a/src/lists/sort-by-insertion-lists.lagda.md +++ b/src/lists/sort-by-insertion-lists.lagda.md @@ -16,7 +16,7 @@ open import foundation.universe-levels open import lists.arrays open import lists.lists open import lists.permutation-lists -open import lists.sort-by-insertion-vectors +open import lists.sort-by-insertion-tuples open import lists.sorted-lists open import lists.sorting-algorithms-lists @@ -27,8 +27,8 @@ open import order-theory.decidable-total-orders ## Idea -We use the definition of sort by insertion for vectors -([`lists.sort-by-insertion-vectors`](lists.sort-by-insertion-vectors.md)) and we +We use the definition of sort by insertion for tuples +([`lists.sort-by-insertion-tuples`](lists.sort-by-insertion-tuples.md)) and we adapt it for lists. ## Definition @@ -41,7 +41,7 @@ module _ insertion-sort-list : list (type-Decidable-Total-Order X) → list (type-Decidable-Total-Order X) insertion-sort-list l = - list-vec (length-list l) (insertion-sort-vec X (vec-list l)) + list-tuple (length-list l) (insertion-sort-tuple X (tuple-list l)) ``` ## Properties @@ -52,10 +52,10 @@ module _ is-sort-insertion-sort-list : is-sort-list X insertion-sort-list is-sort-insertion-sort-list = - is-sort-list-is-sort-vec + is-sort-list-is-sort-tuple ( X) - ( insertion-sort-vec X) - ( is-sort-insertion-sort-vec X) + ( insertion-sort-tuple X) + ( is-sort-insertion-sort-tuple X) is-permutation-insertion-sort-list : is-permutation-list insertion-sort-list is-permutation-insertion-sort-list = pr1 (is-sort-insertion-sort-list) diff --git a/src/lists/sort-by-insertion-vectors.lagda.md b/src/lists/sort-by-insertion-vectors.lagda.md index 56d1870c3a..b13a17e9d1 100644 --- a/src/lists/sort-by-insertion-vectors.lagda.md +++ b/src/lists/sort-by-insertion-vectors.lagda.md @@ -1,7 +1,7 @@ -# Sort by insertion for vectors +# Sort by insertion for tuples ```agda -module lists.sort-by-insertion-vectors where +module lists.sort-by-insertion-tuples where ```
Imports @@ -22,11 +22,11 @@ open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples -open import lists.permutation-vectors -open import lists.sorted-vectors -open import lists.sorting-algorithms-vectors +open import lists.permutation-tuples +open import lists.sorted-tuples +open import lists.sorting-algorithms-tuples open import order-theory.decidable-total-orders ``` @@ -35,12 +35,12 @@ open import order-theory.decidable-total-orders ## Idea -Sort by insertion is a recursive sort on vectors. If a vector is empty or with +Sort by insertion is a recursive sort on tuples. If a tuple is empty or with only one element then it is sorted. Otherwise, we recursively sort the tail of -the vector. Then we compare the head of the vector to the head of the sorted -tail. If the head is less or equal than the head of the tail the vector is -sorted. Otherwise we permute the two elements and we recursively sort the tail -of the vector. +the tuple. Then we compare the head of the tuple to the head of the sorted tail. +If the head is less or equal than the head of the tail the tuple is sorted. +Otherwise we permute the two elements and we recursively sort the tail of the +tuple. ## Definition @@ -49,33 +49,33 @@ module _ {l1 l2 : Level} (X : Decidable-Total-Order l1 l2) where - helper-insertion-sort-vec : + helper-insertion-sort-tuple : {n : ℕ} (x y : type-Decidable-Total-Order X) - (l : vec (type-Decidable-Total-Order X) n) → + (l : tuple (type-Decidable-Total-Order X) n) → leq-or-strict-greater-Decidable-Poset X x y → - vec (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ (n))) - helper-insertion-sort-vec x y l (inl p) = x ∷ y ∷ l - helper-insertion-sort-vec {0} x y empty-vec (inr p) = y ∷ x ∷ empty-vec - helper-insertion-sort-vec {succ-ℕ n} x y (z ∷ l) (inr p) = + tuple (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ (n))) + helper-insertion-sort-tuple x y l (inl p) = x ∷ y ∷ l + helper-insertion-sort-tuple {0} x y empty-tuple (inr p) = y ∷ x ∷ empty-tuple + helper-insertion-sort-tuple {succ-ℕ n} x y (z ∷ l) (inr p) = y ∷ - ( helper-insertion-sort-vec + ( helper-insertion-sort-tuple ( x) ( z) ( l) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) - insertion-sort-vec : + insertion-sort-tuple : {n : ℕ} → - vec (type-Decidable-Total-Order X) n → - vec (type-Decidable-Total-Order X) n - insertion-sort-vec {zero-ℕ} empty-vec = empty-vec - insertion-sort-vec {1} l = l - insertion-sort-vec {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ l) = - helper-insertion-sort-vec + tuple (type-Decidable-Total-Order X) n → + tuple (type-Decidable-Total-Order X) n + insertion-sort-tuple {zero-ℕ} empty-tuple = empty-tuple + insertion-sort-tuple {1} l = l + insertion-sort-tuple {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ l) = + helper-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ l))) - ( tail-vec (insertion-sort-vec (y ∷ l))) + ( head-tuple (insertion-sort-tuple (y ∷ l))) + ( tail-tuple (insertion-sort-tuple (y ∷ l))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _) ``` @@ -84,96 +84,96 @@ module _ ### Sort by insertion is a permutation ```agda - helper-permutation-insertion-sort-vec : + helper-permutation-insertion-sort-tuple : {n : ℕ} (x y : type-Decidable-Total-Order X) - (l : vec (type-Decidable-Total-Order X) n) → + (l : tuple (type-Decidable-Total-Order X) n) → leq-or-strict-greater-Decidable-Poset X x y → Permutation (succ-ℕ (succ-ℕ (n))) - helper-permutation-insertion-sort-vec x y l (inl _) = id-equiv - helper-permutation-insertion-sort-vec {0} x y empty-vec (inr _) = + helper-permutation-insertion-sort-tuple x y l (inl _) = id-equiv + helper-permutation-insertion-sort-tuple {0} x y empty-tuple (inr _) = swap-two-last-elements-transposition-Fin 0 - helper-permutation-insertion-sort-vec {succ-ℕ n} x y (z ∷ l) (inr _) = + helper-permutation-insertion-sort-tuple {succ-ℕ n} x y (z ∷ l) (inr _) = ( ( swap-two-last-elements-transposition-Fin (succ-ℕ n)) ∘e ( ( equiv-coproduct - ( helper-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple ( x) ( z) ( l) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) ( id-equiv)))) - permutation-insertion-sort-vec : + permutation-insertion-sort-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) n) → + (v : tuple (type-Decidable-Total-Order X) n) → Permutation n - permutation-insertion-sort-vec {zero-ℕ} empty-vec = id-equiv - permutation-insertion-sort-vec {1} l = id-equiv - permutation-insertion-sort-vec {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ l) = + permutation-insertion-sort-tuple {zero-ℕ} empty-tuple = id-equiv + permutation-insertion-sort-tuple {1} l = id-equiv + permutation-insertion-sort-tuple {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ l) = equiv-coproduct - ( permutation-insertion-sort-vec (y ∷ l)) + ( permutation-insertion-sort-tuple (y ∷ l)) ( id-equiv) ∘e - helper-permutation-insertion-sort-vec + helper-permutation-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ l))) - ( tail-vec (insertion-sort-vec (y ∷ l))) + ( head-tuple (insertion-sort-tuple (y ∷ l))) + ( tail-tuple (insertion-sort-tuple (y ∷ l))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _) - helper-eq-permute-vec-permutation-insertion-sort-vec : + helper-eq-permute-tuple-permutation-insertion-sort-tuple : {n : ℕ} (x y : type-Decidable-Total-Order X) - (v : vec (type-Decidable-Total-Order X) n) + (v : tuple (type-Decidable-Total-Order X) n) (p : leq-or-strict-greater-Decidable-Poset X x y) → - helper-insertion-sort-vec x y v p = - permute-vec + helper-insertion-sort-tuple x y v p = + permute-tuple ( succ-ℕ (succ-ℕ n)) ( x ∷ y ∷ v) - ( helper-permutation-insertion-sort-vec x y v p) - helper-eq-permute-vec-permutation-insertion-sort-vec x y v (inl _) = - inv (compute-permute-vec-id-equiv (succ-ℕ (succ-ℕ _)) (x ∷ y ∷ v)) - helper-eq-permute-vec-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple x y v p) + helper-eq-permute-tuple-permutation-insertion-sort-tuple x y v (inl _) = + inv (compute-permute-tuple-id-equiv (succ-ℕ (succ-ℕ _)) (x ∷ y ∷ v)) + helper-eq-permute-tuple-permutation-insertion-sort-tuple {0} ( x) ( y) - ( empty-vec) + ( empty-tuple) ( inr _) = refl - helper-eq-permute-vec-permutation-insertion-sort-vec + helper-eq-permute-tuple-permutation-insertion-sort-tuple {succ-ℕ n} ( x) ( y) ( z ∷ v) ( inr p) = - eq-Eq-vec + eq-Eq-tuple ( succ-ℕ (succ-ℕ (succ-ℕ n))) - ( helper-insertion-sort-vec x y (z ∷ v) (inr p)) - ( permute-vec + ( helper-insertion-sort-tuple x y (z ∷ v) (inr p)) + ( permute-tuple ( succ-ℕ (succ-ℕ (succ-ℕ n))) ( x ∷ y ∷ z ∷ v) - ( helper-permutation-insertion-sort-vec x y (z ∷ v) (inr p))) + ( helper-permutation-insertion-sort-tuple x y (z ∷ v) (inr p))) ( refl , - Eq-eq-vec + Eq-eq-tuple ( succ-ℕ (succ-ℕ n)) - ( helper-insertion-sort-vec + ( helper-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) - ( tail-vec - ( permute-vec + ( tail-tuple + ( permute-tuple ( succ-ℕ (succ-ℕ (succ-ℕ n))) ( x ∷ y ∷ z ∷ v) - ( helper-permutation-insertion-sort-vec x y (z ∷ v) (inr p)))) - ( ( helper-eq-permute-vec-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple x y (z ∷ v) (inr p)))) + ( ( helper-eq-permute-tuple-permutation-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) ∙ ( ap - ( tail-vec) - ( ap-permute-vec + ( tail-tuple) + ( ap-permute-tuple ( equiv-coproduct - ( helper-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple ( x) ( z) ( v) @@ -183,18 +183,18 @@ module _ ( z))) ( id-equiv)) ( inv - ( compute-swap-two-last-elements-transposition-Fin-permute-vec + ( compute-swap-two-last-elements-transposition-Fin-permute-tuple (succ-ℕ n) ( z ∷ v) ( x) ( y))) ∙ ( inv - ( compute-composition-permute-vec + ( compute-composition-permute-tuple (succ-ℕ (succ-ℕ (succ-ℕ n))) ( x ∷ y ∷ z ∷ v) ( swap-two-last-elements-transposition-Fin (succ-ℕ n)) ( equiv-coproduct - ( helper-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple ( x) ( z) ( v) @@ -204,126 +204,127 @@ module _ ( z))) ( id-equiv)))))))) - eq-permute-vec-permutation-insertion-sort-vec : + eq-permute-tuple-permutation-insertion-sort-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) n) → - insertion-sort-vec v = permute-vec n v (permutation-insertion-sort-vec v) - eq-permute-vec-permutation-insertion-sort-vec {0} empty-vec = refl - eq-permute-vec-permutation-insertion-sort-vec {1} (x ∷ empty-vec) = refl - eq-permute-vec-permutation-insertion-sort-vec + (v : tuple (type-Decidable-Total-Order X) n) → + insertion-sort-tuple v = permute-tuple n v (permutation-insertion-sort-tuple v) + eq-permute-tuple-permutation-insertion-sort-tuple {0} empty-tuple = refl + eq-permute-tuple-permutation-insertion-sort-tuple {1} (x ∷ empty-tuple) = refl + eq-permute-tuple-permutation-insertion-sort-tuple {succ-ℕ (succ-ℕ n)} ( x ∷ y ∷ v) = - ( ( helper-eq-permute-vec-permutation-insertion-sort-vec + ( ( helper-eq-permute-tuple-permutation-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ v))) - ( tail-vec (insertion-sort-vec (y ∷ v))) + ( head-tuple (insertion-sort-tuple (y ∷ v))) + ( tail-tuple (insertion-sort-tuple (y ∷ v))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _)) ∙ - ( ( ap-permute-vec - ( helper-permutation-insertion-sort-vec + ( ( ap-permute-tuple + ( helper-permutation-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ v))) - ( tail-vec (insertion-sort-vec (y ∷ v))) + ( head-tuple (insertion-sort-tuple (y ∷ v))) + ( tail-tuple (insertion-sort-tuple (y ∷ v))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _)) ( ap ( λ l → x ∷ l) - ( cons-head-tail-vec n (insertion-sort-vec (y ∷ v)) ∙ - eq-permute-vec-permutation-insertion-sort-vec (y ∷ v)))) ∙ + ( cons-head-tail-tuple n (insertion-sort-tuple (y ∷ v)) ∙ + eq-permute-tuple-permutation-insertion-sort-tuple (y ∷ v)))) ∙ ( ( inv - ( compute-composition-permute-vec + ( compute-composition-permute-tuple (succ-ℕ (succ-ℕ n)) ( x ∷ y ∷ v) ( equiv-coproduct - ( permutation-insertion-sort-vec (y ∷ v)) + ( permutation-insertion-sort-tuple (y ∷ v)) ( id-equiv)) - ( helper-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ v))) - ( tail-vec (insertion-sort-vec (y ∷ v))) + ( head-tuple (insertion-sort-tuple (y ∷ v))) + ( tail-tuple (insertion-sort-tuple (y ∷ v))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _))))))) ``` -### Sort by insertion is sorting vectors +### Sort by insertion is sorting tuples ```agda - helper-is-sorting-insertion-sort-vec : + helper-is-sorting-insertion-sort-tuple : {n : ℕ} (x y : type-Decidable-Total-Order X) - (v : vec (type-Decidable-Total-Order X) n) → + (v : tuple (type-Decidable-Total-Order X) n) → (p : leq-or-strict-greater-Decidable-Poset X x y) → - is-sorted-vec X (y ∷ v) → - is-sorted-vec X (helper-insertion-sort-vec x y v p) - helper-is-sorting-insertion-sort-vec {0} x y empty-vec (inl p) _ = + is-sorted-tuple X (y ∷ v) → + is-sorted-tuple X (helper-insertion-sort-tuple x y v p) + helper-is-sorting-insertion-sort-tuple {0} x y empty-tuple (inl p) _ = p , raise-star - helper-is-sorting-insertion-sort-vec {0} x y empty-vec (inr p) _ = + helper-is-sorting-insertion-sort-tuple {0} x y empty-tuple (inr p) _ = pr2 p , raise-star - helper-is-sorting-insertion-sort-vec {succ-ℕ n} x y l (inl p) s = + helper-is-sorting-insertion-sort-tuple {succ-ℕ n} x y l (inl p) s = p , s - helper-is-sorting-insertion-sort-vec {succ-ℕ n} x y (z ∷ v) (inr p) s = - is-sorted-vec-is-sorted-least-element-vec + helper-is-sorting-insertion-sort-tuple {succ-ℕ n} x y (z ∷ v) (inr p) s = + is-sorted-tuple-is-sorted-least-element-tuple ( X) - ( helper-insertion-sort-vec x y (z ∷ v) (inr p)) + ( helper-insertion-sort-tuple x y (z ∷ v) (inr p)) ( tr - ( is-least-element-vec X y) + ( is-least-element-tuple X y) ( inv - ( helper-eq-permute-vec-permutation-insertion-sort-vec + ( helper-eq-permute-tuple-permutation-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z))) - ( is-least-element-permute-vec + ( is-least-element-permute-tuple ( X) ( y) ( x ∷ z ∷ v) - ( helper-permutation-insertion-sort-vec + ( helper-permutation-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) ( pr2 p , pr1 - ( is-sorted-least-element-vec-is-sorted-vec + ( is-sorted-least-element-tuple-is-sorted-tuple ( X) ( y ∷ z ∷ v) ( s)))) , - ( is-sorted-least-element-vec-is-sorted-vec + ( is-sorted-least-element-tuple-is-sorted-tuple ( X) - ( helper-insertion-sort-vec + ( helper-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z)) - ( helper-is-sorting-insertion-sort-vec + ( helper-is-sorting-insertion-sort-tuple ( x) ( z) ( v) ( is-leq-or-strict-greater-Decidable-Total-Order X x z) - ( is-sorted-tail-is-sorted-vec X (y ∷ z ∷ v) s)))) + ( is-sorted-tail-is-sorted-tuple X (y ∷ z ∷ v) s)))) - is-sorting-insertion-sort-vec : + is-sorting-insertion-sort-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) n) → - is-sorted-vec X (insertion-sort-vec v) - is-sorting-insertion-sort-vec {0} v = raise-star - is-sorting-insertion-sort-vec {1} v = raise-star - is-sorting-insertion-sort-vec {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ v) = - helper-is-sorting-insertion-sort-vec + (v : tuple (type-Decidable-Total-Order X) n) → + is-sorted-tuple X (insertion-sort-tuple v) + is-sorting-insertion-sort-tuple {0} v = raise-star + is-sorting-insertion-sort-tuple {1} v = raise-star + is-sorting-insertion-sort-tuple {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ v) = + helper-is-sorting-insertion-sort-tuple ( x) - ( head-vec (insertion-sort-vec (y ∷ v))) - ( tail-vec (insertion-sort-vec (y ∷ v))) + ( head-tuple (insertion-sort-tuple (y ∷ v))) + ( tail-tuple (insertion-sort-tuple (y ∷ v))) ( is-leq-or-strict-greater-Decidable-Total-Order X _ _) ( tr - ( λ l → is-sorted-vec X l) - ( inv (cons-head-tail-vec n (insertion-sort-vec (y ∷ v)))) - ( is-sorting-insertion-sort-vec (y ∷ v))) + ( λ l → is-sorted-tuple X l) + ( inv (cons-head-tail-tuple n (insertion-sort-tuple (y ∷ v)))) + ( is-sorting-insertion-sort-tuple (y ∷ v))) ``` ### Sort by insertion is a sort ```agda - is-sort-insertion-sort-vec : - is-sort-vec X (insertion-sort-vec) - pr1 (pr1 (is-sort-insertion-sort-vec n) v) = permutation-insertion-sort-vec v - pr2 (pr1 (is-sort-insertion-sort-vec n) v) = - eq-permute-vec-permutation-insertion-sort-vec v - pr2 (is-sort-insertion-sort-vec n) = is-sorting-insertion-sort-vec + is-sort-insertion-sort-tuple : + is-sort-tuple X (insertion-sort-tuple) + pr1 (pr1 (is-sort-insertion-sort-tuple n) v) = + permutation-insertion-sort-tuple v + pr2 (pr1 (is-sort-insertion-sort-tuple n) v) = + eq-permute-tuple-permutation-insertion-sort-tuple v + pr2 (is-sort-insertion-sort-tuple n) = is-sorting-insertion-sort-tuple ``` diff --git a/src/lists/sorted-lists.lagda.md b/src/lists/sorted-lists.lagda.md index dbd5f1f37e..a0cc8f989f 100644 --- a/src/lists/sorted-lists.lagda.md +++ b/src/lists/sorted-lists.lagda.md @@ -14,11 +14,11 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples open import lists.arrays open import lists.lists -open import lists.sorted-vectors +open import lists.sorted-tuples open import order-theory.decidable-total-orders ``` @@ -146,15 +146,15 @@ module _ is-sorted-list-is-sorted-least-element-list (cons y l) q) ``` -### If a vector `v` of length `n` is sorted, then the list `list-vec n v` is also sorted +### If a tuple `v` of length `n` is sorted, then the list `list-tuple n v` is also sorted ```agda - is-sorted-list-is-sorted-vec : - (n : ℕ) (v : vec (type-Decidable-Total-Order X) n) → - is-sorted-vec X v → - is-sorted-list (list-vec n v) - is-sorted-list-is-sorted-vec 0 v S = raise-star - is-sorted-list-is-sorted-vec 1 (x ∷ v) S = raise-star - is-sorted-list-is-sorted-vec (succ-ℕ (succ-ℕ n)) (x ∷ y ∷ v) S = - pr1 S , is-sorted-list-is-sorted-vec (succ-ℕ n) (y ∷ v) (pr2 S) + is-sorted-list-is-sorted-tuple : + (n : ℕ) (v : tuple (type-Decidable-Total-Order X) n) → + is-sorted-tuple X v → + is-sorted-list (list-tuple n v) + is-sorted-list-is-sorted-tuple 0 v S = raise-star + is-sorted-list-is-sorted-tuple 1 (x ∷ v) S = raise-star + is-sorted-list-is-sorted-tuple (succ-ℕ (succ-ℕ n)) (x ∷ y ∷ v) S = + pr1 S , is-sorted-list-is-sorted-tuple (succ-ℕ n) (y ∷ v) (pr2 S) ``` diff --git a/src/lists/sorted-vectors.lagda.md b/src/lists/sorted-vectors.lagda.md index dbb2353d4f..8ddfcbc174 100644 --- a/src/lists/sorted-vectors.lagda.md +++ b/src/lists/sorted-vectors.lagda.md @@ -1,7 +1,7 @@ -# Sorted vectors +# Sorted tuples ```agda -module lists.sorted-vectors where +module lists.sorted-tuples where ```
Imports @@ -19,9 +19,9 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples -open import lists.permutation-vectors +open import lists.permutation-tuples open import order-theory.decidable-total-orders @@ -32,210 +32,210 @@ open import univalent-combinatorics.standard-finite-types ## Idea -We define a sorted vector to be a vector such that for every pair of consecutive +We define a sorted tuple to be a tuple such that for every pair of consecutive elements `x` and `y`, the inequality `x ≤ y` holds. ## Definitions -### The proposition that a vector is sorted +### The proposition that a tuple is sorted ```agda module _ {l1 l2 : Level} (X : Decidable-Total-Order l1 l2) where - is-sorted-vec-Prop : - {n : ℕ} → vec (type-Decidable-Total-Order X) n → Prop l2 - is-sorted-vec-Prop {0} v = raise-unit-Prop l2 - is-sorted-vec-Prop {1} v = raise-unit-Prop l2 - is-sorted-vec-Prop {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ v) = + is-sorted-tuple-Prop : + {n : ℕ} → tuple (type-Decidable-Total-Order X) n → Prop l2 + is-sorted-tuple-Prop {0} v = raise-unit-Prop l2 + is-sorted-tuple-Prop {1} v = raise-unit-Prop l2 + is-sorted-tuple-Prop {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ v) = product-Prop ( leq-Decidable-Total-Order-Prop X x y) - ( is-sorted-vec-Prop (y ∷ v)) + ( is-sorted-tuple-Prop (y ∷ v)) - is-sorted-vec : - {n : ℕ} → vec (type-Decidable-Total-Order X) n → UU l2 - is-sorted-vec l = type-Prop (is-sorted-vec-Prop l) + is-sorted-tuple : + {n : ℕ} → tuple (type-Decidable-Total-Order X) n → UU l2 + is-sorted-tuple l = type-Prop (is-sorted-tuple-Prop l) ``` -### The proposition that an element is less than or equal to every element in a vector +### The proposition that an element is less than or equal to every element in a tuple ```agda - is-least-element-vec-Prop : + is-least-element-tuple-Prop : {n : ℕ} → type-Decidable-Total-Order X → - vec (type-Decidable-Total-Order X) n → Prop l2 - is-least-element-vec-Prop {0} x v = raise-unit-Prop l2 - is-least-element-vec-Prop {succ-ℕ n} x (y ∷ v) = + tuple (type-Decidable-Total-Order X) n → Prop l2 + is-least-element-tuple-Prop {0} x v = raise-unit-Prop l2 + is-least-element-tuple-Prop {succ-ℕ n} x (y ∷ v) = product-Prop ( leq-Decidable-Total-Order-Prop X x y) - ( is-least-element-vec-Prop x v) + ( is-least-element-tuple-Prop x v) - is-least-element-vec : + is-least-element-tuple : {n : ℕ} → type-Decidable-Total-Order X → - vec (type-Decidable-Total-Order X) n → UU l2 - is-least-element-vec x v = type-Prop (is-least-element-vec-Prop x v) + tuple (type-Decidable-Total-Order X) n → UU l2 + is-least-element-tuple x v = type-Prop (is-least-element-tuple-Prop x v) ``` ## Properties -### If a vector is sorted, then its tail is also sorted +### If a tuple is sorted, then its tail is also sorted ```agda - is-sorted-tail-is-sorted-vec : + is-sorted-tail-is-sorted-tuple : {n : ℕ} → - (v : vec (type-Decidable-Total-Order X) (succ-ℕ n)) → - is-sorted-vec v → is-sorted-vec (tail-vec v) - is-sorted-tail-is-sorted-vec {zero-ℕ} (x ∷ empty-vec) s = raise-star - is-sorted-tail-is-sorted-vec {succ-ℕ n} (x ∷ y ∷ v) s = pr2 s - - is-leq-head-head-tail-is-sorted-vec : - {n : ℕ} → (v : vec (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ n))) → - is-sorted-vec v → - leq-Decidable-Total-Order X (head-vec v) (head-vec (tail-vec v)) - is-leq-head-head-tail-is-sorted-vec (x ∷ y ∷ v) s = pr1 s + (v : tuple (type-Decidable-Total-Order X) (succ-ℕ n)) → + is-sorted-tuple v → is-sorted-tuple (tail-tuple v) + is-sorted-tail-is-sorted-tuple {zero-ℕ} (x ∷ empty-tuple) s = raise-star + is-sorted-tail-is-sorted-tuple {succ-ℕ n} (x ∷ y ∷ v) s = pr2 s + + is-leq-head-head-tail-is-sorted-tuple : + {n : ℕ} → (v : tuple (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ n))) → + is-sorted-tuple v → + leq-Decidable-Total-Order X (head-tuple v) (head-tuple (tail-tuple v)) + is-leq-head-head-tail-is-sorted-tuple (x ∷ y ∷ v) s = pr1 s ``` -### If a vector `v' = y ∷ v` is sorted then for all elements `x` less than or equal to `y`, `x` is less than or equal to every element in the vector +### If a tuple `v' = y ∷ v` is sorted then for all elements `x` less than or equal to `y`, `x` is less than or equal to every element in the tuple ```agda - is-least-element-vec-is-leq-head-sorted-vec : + is-least-element-tuple-is-leq-head-sorted-tuple : {n : ℕ} (x : type-Decidable-Total-Order X) - (v : vec (type-Decidable-Total-Order X) (succ-ℕ n)) → - is-sorted-vec v → leq-Decidable-Total-Order X x (head-vec v) → - is-least-element-vec x v - is-least-element-vec-is-leq-head-sorted-vec {zero-ℕ} x (y ∷ v) s p = + (v : tuple (type-Decidable-Total-Order X) (succ-ℕ n)) → + is-sorted-tuple v → leq-Decidable-Total-Order X x (head-tuple v) → + is-least-element-tuple x v + is-least-element-tuple-is-leq-head-sorted-tuple {zero-ℕ} x (y ∷ v) s p = p , raise-star - is-least-element-vec-is-leq-head-sorted-vec {succ-ℕ n} x (y ∷ v) s p = + is-least-element-tuple-is-leq-head-sorted-tuple {succ-ℕ n} x (y ∷ v) s p = p , - ( is-least-element-vec-is-leq-head-sorted-vec + ( is-least-element-tuple-is-leq-head-sorted-tuple ( x) ( v) - ( is-sorted-tail-is-sorted-vec (y ∷ v) s) + ( is-sorted-tail-is-sorted-tuple (y ∷ v) s) ( transitive-leq-Decidable-Total-Order ( X) ( x) ( y) - ( head-vec v) - ( is-leq-head-head-tail-is-sorted-vec (y ∷ v) s) + ( head-tuple v) + ( is-leq-head-head-tail-is-sorted-tuple (y ∷ v) s) ( p))) ``` ### An equivalent definition of being sorted ```agda - is-sorted-least-element-vec-Prop : - {n : ℕ} → vec (type-Decidable-Total-Order X) n → Prop l2 - is-sorted-least-element-vec-Prop {0} v = raise-unit-Prop l2 - is-sorted-least-element-vec-Prop {1} v = raise-unit-Prop l2 - is-sorted-least-element-vec-Prop {succ-ℕ (succ-ℕ n)} (x ∷ v) = + is-sorted-least-element-tuple-Prop : + {n : ℕ} → tuple (type-Decidable-Total-Order X) n → Prop l2 + is-sorted-least-element-tuple-Prop {0} v = raise-unit-Prop l2 + is-sorted-least-element-tuple-Prop {1} v = raise-unit-Prop l2 + is-sorted-least-element-tuple-Prop {succ-ℕ (succ-ℕ n)} (x ∷ v) = product-Prop - ( is-least-element-vec-Prop x v) - ( is-sorted-least-element-vec-Prop v) + ( is-least-element-tuple-Prop x v) + ( is-sorted-least-element-tuple-Prop v) - is-sorted-least-element-vec : - {n : ℕ} → vec (type-Decidable-Total-Order X) n → UU l2 - is-sorted-least-element-vec v = - type-Prop (is-sorted-least-element-vec-Prop v) + is-sorted-least-element-tuple : + {n : ℕ} → tuple (type-Decidable-Total-Order X) n → UU l2 + is-sorted-least-element-tuple v = + type-Prop (is-sorted-least-element-tuple-Prop v) - is-sorted-least-element-vec-is-sorted-vec : + is-sorted-least-element-tuple-is-sorted-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) n) → - is-sorted-vec v → is-sorted-least-element-vec v - is-sorted-least-element-vec-is-sorted-vec {0} v x = raise-star - is-sorted-least-element-vec-is-sorted-vec {1} v x = raise-star - is-sorted-least-element-vec-is-sorted-vec + (v : tuple (type-Decidable-Total-Order X) n) → + is-sorted-tuple v → is-sorted-least-element-tuple v + is-sorted-least-element-tuple-is-sorted-tuple {0} v x = raise-star + is-sorted-least-element-tuple-is-sorted-tuple {1} v x = raise-star + is-sorted-least-element-tuple-is-sorted-tuple {succ-ℕ (succ-ℕ n)} ( x ∷ y ∷ v) ( p , q) = - is-least-element-vec-is-leq-head-sorted-vec x (y ∷ v) q p , - is-sorted-least-element-vec-is-sorted-vec (y ∷ v) q + is-least-element-tuple-is-leq-head-sorted-tuple x (y ∷ v) q p , + is-sorted-least-element-tuple-is-sorted-tuple (y ∷ v) q - is-sorted-vec-is-sorted-least-element-vec : + is-sorted-tuple-is-sorted-least-element-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) n) → - is-sorted-least-element-vec v → - is-sorted-vec v - is-sorted-vec-is-sorted-least-element-vec {0} v x = raise-star - is-sorted-vec-is-sorted-least-element-vec {1} v x = raise-star - is-sorted-vec-is-sorted-least-element-vec + (v : tuple (type-Decidable-Total-Order X) n) → + is-sorted-least-element-tuple v → + is-sorted-tuple v + is-sorted-tuple-is-sorted-least-element-tuple {0} v x = raise-star + is-sorted-tuple-is-sorted-least-element-tuple {1} v x = raise-star + is-sorted-tuple-is-sorted-least-element-tuple {succ-ℕ (succ-ℕ n)} (x ∷ y ∷ v) (p , q) = ( pr1 p) , - ( is-sorted-vec-is-sorted-least-element-vec (y ∷ v) q) + ( is-sorted-tuple-is-sorted-least-element-tuple (y ∷ v) q) ``` -### If the tail of a vector `v` is sorted and `x ≤ head-vec v`, then `v` is sorted +### If the tail of a tuple `v` is sorted and `x ≤ head-tuple v`, then `v` is sorted ```agda - is-sorted-vec-is-sorted-tail-is-leq-head-vec : + is-sorted-tuple-is-sorted-tail-is-leq-head-tuple : {n : ℕ} - (v : vec (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ n))) → - is-sorted-vec (tail-vec v) → - (leq-Decidable-Total-Order X (head-vec v) (head-vec (tail-vec v))) → - is-sorted-vec v - is-sorted-vec-is-sorted-tail-is-leq-head-vec (x ∷ y ∷ v) s p = p , s + (v : tuple (type-Decidable-Total-Order X) (succ-ℕ (succ-ℕ n))) → + is-sorted-tuple (tail-tuple v) → + (leq-Decidable-Total-Order X (head-tuple v) (head-tuple (tail-tuple v))) → + is-sorted-tuple v + is-sorted-tuple-is-sorted-tail-is-leq-head-tuple (x ∷ y ∷ v) s p = p , s ``` -### If an element `x` is less than or equal to every element of a vector `v`, then it is less than or equal to every element of every permutation of `v` +### If an element `x` is less than or equal to every element of a tuple `v`, then it is less than or equal to every element of every permutation of `v` ```agda - is-least-element-functional-vec-Prop : + is-least-element-functional-tuple-Prop : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-vec (type-Decidable-Total-Order X) n) → + (fv : functional-tuple (type-Decidable-Total-Order X) n) → Prop l2 - is-least-element-functional-vec-Prop n x fv = + is-least-element-functional-tuple-Prop n x fv = Π-Prop (Fin n) (λ k → leq-Decidable-Total-Order-Prop X x (fv k)) - is-least-element-functional-vec : + is-least-element-functional-tuple : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-vec (type-Decidable-Total-Order X) n) → + (fv : functional-tuple (type-Decidable-Total-Order X) n) → UU l2 - is-least-element-functional-vec n x fv = - type-Prop (is-least-element-functional-vec-Prop n x fv) + is-least-element-functional-tuple n x fv = + type-Prop (is-least-element-functional-tuple-Prop n x fv) - is-least-element-permute-functional-vec : + is-least-element-permute-functional-tuple : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-vec (type-Decidable-Total-Order X) n) + (fv : functional-tuple (type-Decidable-Total-Order X) n) (a : Permutation n) → - is-least-element-functional-vec n x fv → - is-least-element-functional-vec n x (fv ∘ map-equiv a) - is-least-element-permute-functional-vec n x fv a p k = + is-least-element-functional-tuple n x fv → + is-least-element-functional-tuple n x (fv ∘ map-equiv a) + is-least-element-permute-functional-tuple n x fv a p k = p (map-equiv a k) - is-least-element-vec-is-least-element-functional-vec : + is-least-element-tuple-is-least-element-functional-tuple : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-vec (type-Decidable-Total-Order X) n) → - is-least-element-functional-vec n x fv → - is-least-element-vec x (listed-vec-functional-vec n fv) - is-least-element-vec-is-least-element-functional-vec 0 x fv p = raise-star - is-least-element-vec-is-least-element-functional-vec (succ-ℕ n) x fv p = + (fv : functional-tuple (type-Decidable-Total-Order X) n) → + is-least-element-functional-tuple n x fv → + is-least-element-tuple x (listed-tuple-functional-tuple n fv) + is-least-element-tuple-is-least-element-functional-tuple 0 x fv p = raise-star + is-least-element-tuple-is-least-element-functional-tuple (succ-ℕ n) x fv p = (p (inr star)) , - ( is-least-element-vec-is-least-element-functional-vec + ( is-least-element-tuple-is-least-element-functional-tuple ( n) ( x) - ( tail-functional-vec n fv) + ( tail-functional-tuple n fv) ( p ∘ inl)) - is-least-element-functional-vec-is-least-element-vec : + is-least-element-functional-tuple-is-least-element-tuple : (n : ℕ) (x : type-Decidable-Total-Order X) - (v : vec (type-Decidable-Total-Order X) n) → - is-least-element-vec x v → - is-least-element-functional-vec n x (functional-vec-vec n v) - is-least-element-functional-vec-is-least-element-vec + (v : tuple (type-Decidable-Total-Order X) n) → + is-least-element-tuple x v → + is-least-element-functional-tuple n x (functional-tuple-tuple n v) + is-least-element-functional-tuple-is-least-element-tuple ( succ-ℕ n) ( x) ( y ∷ v) ( p , q) ( inl k) = - is-least-element-functional-vec-is-least-element-vec n x v q k - is-least-element-functional-vec-is-least-element-vec + is-least-element-functional-tuple-is-least-element-tuple n x v q k + is-least-element-functional-tuple-is-least-element-tuple ( succ-ℕ n) ( x) ( y ∷ v) @@ -243,22 +243,22 @@ module _ ( inr star) = p - is-least-element-permute-vec : + is-least-element-permute-tuple : {n : ℕ} (x : type-Decidable-Total-Order X) - (v : vec (type-Decidable-Total-Order X) n) + (v : tuple (type-Decidable-Total-Order X) n) (a : Permutation n) → - is-least-element-vec x v → - is-least-element-vec x (permute-vec n v a) - is-least-element-permute-vec {n} x v a p = - is-least-element-vec-is-least-element-functional-vec + is-least-element-tuple x v → + is-least-element-tuple x (permute-tuple n v a) + is-least-element-permute-tuple {n} x v a p = + is-least-element-tuple-is-least-element-functional-tuple ( n) ( x) - ( functional-vec-vec n v ∘ map-equiv a) - ( is-least-element-permute-functional-vec + ( functional-tuple-tuple n v ∘ map-equiv a) + ( is-least-element-permute-functional-tuple ( n) ( x) - ( functional-vec-vec n v) + ( functional-tuple-tuple n v) ( a) - ( is-least-element-functional-vec-is-least-element-vec n x v p)) + ( is-least-element-functional-tuple-is-least-element-tuple n x v p)) ``` diff --git a/src/lists/sorting-algorithms-lists.lagda.md b/src/lists/sorting-algorithms-lists.lagda.md index 14b5f6541e..7d1bd701dc 100644 --- a/src/lists/sorting-algorithms-lists.lagda.md +++ b/src/lists/sorting-algorithms-lists.lagda.md @@ -16,13 +16,13 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples open import lists.arrays open import lists.lists open import lists.permutation-lists open import lists.sorted-lists -open import lists.sorting-algorithms-vectors +open import lists.sorting-algorithms-tuples open import order-theory.decidable-total-orders ``` @@ -78,7 +78,7 @@ module _ ## Properties -### From sorting algorithms for vectors to sorting algorithms for lists +### From sorting algorithms for tuples to sorting algorithms for lists ```agda module _ @@ -86,20 +86,20 @@ module _ (X : Decidable-Total-Order l1 l2) where - is-sort-list-is-sort-vec : + is-sort-list-is-sort-tuple : (f : {n : ℕ} → - vec (type-Decidable-Total-Order X) n → - vec (type-Decidable-Total-Order X) n) → - is-sort-vec X f → - is-sort-list X (λ l → list-vec (length-list l) (f (vec-list l))) - pr1 (is-sort-list-is-sort-vec f S) = - is-permutation-list-is-permutation-vec + tuple (type-Decidable-Total-Order X) n → + tuple (type-Decidable-Total-Order X) n) → + is-sort-tuple X f → + is-sort-list X (λ l → list-tuple (length-list l) (f (tuple-list l))) + pr1 (is-sort-list-is-sort-tuple f S) = + is-permutation-list-is-permutation-tuple ( λ n → f) ( λ n → pr1 (S n)) - pr2 (is-sort-list-is-sort-vec f S) l = - is-sorted-list-is-sorted-vec + pr2 (is-sort-list-is-sort-tuple f S) l = + is-sorted-list-is-sorted-tuple ( X) ( length-list l) - ( f (vec-list l)) (pr2 (S (length-list l)) (vec-list l)) + ( f (tuple-list l)) (pr2 (S (length-list l)) (tuple-list l)) ``` diff --git a/src/lists/sorting-algorithms-vectors.lagda.md b/src/lists/sorting-algorithms-vectors.lagda.md index 029591d5fb..9b2308d55d 100644 --- a/src/lists/sorting-algorithms-vectors.lagda.md +++ b/src/lists/sorting-algorithms-vectors.lagda.md @@ -1,7 +1,7 @@ -# Sorting algorithms for vectors +# Sorting algorithms for tuples ```agda -module lists.sorting-algorithms-vectors where +module lists.sorting-algorithms-tuples where ```
Imports @@ -16,10 +16,10 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples -open import lists.permutation-vectors -open import lists.sorted-vectors +open import lists.permutation-tuples +open import lists.sorted-tuples open import order-theory.decidable-total-orders ``` @@ -28,8 +28,8 @@ open import order-theory.decidable-total-orders ## Idea -A function `f` on vectors is a **sort** if `f` is a permutation and if for every -vector `v`, `f v` is sorted. +A function `f` on tuples is a **sort** if `f` is a permutation and if for every +tuple `v`, `f v` is sorted. ## Definition @@ -39,37 +39,42 @@ module _ (X : Decidable-Total-Order l1 l2) (f : {n : ℕ} → - vec (type-Decidable-Total-Order X) n → - vec (type-Decidable-Total-Order X) n) + tuple (type-Decidable-Total-Order X) n → + tuple (type-Decidable-Total-Order X) n) where - is-sort-vec : + is-sort-tuple : UU (l1 ⊔ l2) - is-sort-vec = + is-sort-tuple = (n : ℕ) → - is-permutation-vec n f × - ((v : vec (type-Decidable-Total-Order X) n) → is-sorted-vec X (f v)) - - is-permutation-vec-is-sort-vec : - is-sort-vec → (n : ℕ) → is-permutation-vec n f - is-permutation-vec-is-sort-vec S n = pr1 (S n) - - permutation-vec-is-sort-vec : - is-sort-vec → (n : ℕ) → vec (type-Decidable-Total-Order X) n → Permutation n - permutation-vec-is-sort-vec S n v = - permutation-is-permutation-vec n f (is-permutation-vec-is-sort-vec S n) v - - eq-permute-vec-permutation-is-sort-vec : - (S : is-sort-vec) (n : ℕ) (v : vec (type-Decidable-Total-Order X) n) → - f v = permute-vec n v (permutation-vec-is-sort-vec S n v) - eq-permute-vec-permutation-is-sort-vec S n v = - eq-permute-vec-permutation-is-permutation-vec + is-permutation-tuple n f × + ((v : tuple (type-Decidable-Total-Order X) n) → is-sorted-tuple X (f v)) + + is-permutation-tuple-is-sort-tuple : + is-sort-tuple → (n : ℕ) → is-permutation-tuple n f + is-permutation-tuple-is-sort-tuple S n = pr1 (S n) + + permutation-tuple-is-sort-tuple : + is-sort-tuple → (n : ℕ) → tuple (type-Decidable-Total-Order X) n → + Permutation n + permutation-tuple-is-sort-tuple S n v = + permutation-is-permutation-tuple ( n) ( f) - ( is-permutation-vec-is-sort-vec S n) v + ( is-permutation-tuple-is-sort-tuple S n) + ( v) + + eq-permute-tuple-permutation-is-sort-tuple : + (S : is-sort-tuple) (n : ℕ) (v : tuple (type-Decidable-Total-Order X) n) → + f v = permute-tuple n v (permutation-tuple-is-sort-tuple S n v) + eq-permute-tuple-permutation-is-sort-tuple S n v = + eq-permute-tuple-permutation-is-permutation-tuple + ( n) + ( f) + ( is-permutation-tuple-is-sort-tuple S n) v - is-sorting-vec-is-sort-vec : - is-sort-vec → (n : ℕ) → - (v : vec (type-Decidable-Total-Order X) n) → is-sorted-vec X (f v) - is-sorting-vec-is-sort-vec S n = pr2 (S n) + is-sorting-tuple-is-sort-tuple : + is-sort-tuple → (n : ℕ) → + (v : tuple (type-Decidable-Total-Order X) n) → is-sorted-tuple X (f v) + is-sorting-tuple-is-sort-tuple S n = pr2 (S n) ``` diff --git a/src/reflection/group-solver.lagda.md b/src/reflection/group-solver.lagda.md index 2f6e85638e..5922c01b3f 100644 --- a/src/reflection/group-solver.lagda.md +++ b/src/reflection/group-solver.lagda.md @@ -18,7 +18,7 @@ open import foundation.universe-levels open import group-theory.groups -open import linear-algebra.vectors +open import linear-algebra.tuples open import lists.concatenation-lists open import lists.functoriality-lists @@ -46,7 +46,7 @@ finEq (succ-Inductive-Fin a) (succ-Inductive-Fin b) with finEq a b ... | inl eq = inl (ap succ-Inductive-Fin eq) ... | inr neq = inr (λ where refl → neq refl) -getVec : {n : ℕ} {l : Level} {A : UU l} → vec A n → Inductive-Fin n → A +getVec : {n : ℕ} {l : Level} {A : UU l} → tuple A n → Inductive-Fin n → A getVec (x ∷ v) zero-Inductive-Fin = x getVec (x ∷ v) (succ-Inductive-Fin k) = getVec v k @@ -353,7 +353,7 @@ module _ {n : ℕ} where simplifyValid (inner _) = refl-GE Env : {l : Level} → ℕ → UU l → UU l - Env n A = vec A n + Env n A = tuple A n module _ {l : Level} (G : Group l) @@ -463,12 +463,12 @@ module _ ex2 x' y' = simplifyExpression G ( gInv (x *' y *' gInv x *' gInv y)) - ( x' ∷ y' ∷ empty-vec) + ( x' ∷ y' ∷ empty-tuple) ``` ```text ex3 : ∀ x y → (x * y) ⁻¹ = (y ⁻¹ * x ⁻¹) - ex3 x' y' = {!simplifyExpression G (gInv (x *' y)) (x' ∷ y' ∷ empty-vec)!} + ex3 x' y' = {!simplifyExpression G (gInv (x *' y)) (x' ∷ y' ∷ empty-tuple)!} _ : GroupEquality {n = 2} (y *' (x *' (gInv y *' (gInv x *' gUnit)))) (y *' (x *' (gInv y *' (gInv x *' gUnit)))) _ = {!simplifyValid (gInv x *' x *' y)!} diff --git a/src/ring-theory/binomial-theorem-rings.lagda.md b/src/ring-theory/binomial-theorem-rings.lagda.md index d951452476..42a1d03f14 100644 --- a/src/ring-theory/binomial-theorem-rings.lagda.md +++ b/src/ring-theory/binomial-theorem-rings.lagda.md @@ -16,7 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors-on-rings +open import linear-algebra.tuples-on-rings open import ring-theory.binomial-theorem-semirings open import ring-theory.powers-of-elements-rings @@ -49,7 +49,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Ring : {l : Level} (R : Ring l) - (n : ℕ) (f : functional-vec-Ring R (succ-ℕ n)) → type-Ring R + (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → type-Ring R binomial-sum-Ring R = binomial-sum-Semiring (semiring-Ring R) ``` @@ -63,13 +63,13 @@ module _ where binomial-sum-one-element-Ring : - (f : functional-vec-Ring R 1) → - binomial-sum-Ring R 0 f = head-functional-vec-Ring R 0 f + (f : functional-tuple-Ring R 1) → + binomial-sum-Ring R 0 f = head-functional-tuple-Ring R 0 f binomial-sum-one-element-Ring = binomial-sum-one-element-Semiring (semiring-Ring R) binomial-sum-two-elements-Ring : - (f : functional-vec-Ring R 2) → + (f : functional-tuple-Ring R 2) → binomial-sum-Ring R 1 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Ring = binomial-sum-two-elements-Semiring (semiring-Ring R) @@ -83,7 +83,7 @@ module _ where htpy-binomial-sum-Ring : - (n : ℕ) {f g : functional-vec-Ring R (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple-Ring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Ring R n f = binomial-sum-Ring R n g htpy-binomial-sum-Ring = htpy-binomial-sum-Semiring (semiring-Ring R) ``` @@ -96,14 +96,14 @@ module _ where left-distributive-mul-binomial-sum-Ring : - (n : ℕ) (x : type-Ring R) (f : functional-vec-Ring R (succ-ℕ n)) → + (n : ℕ) (x : type-Ring R) (f : functional-tuple-Ring R (succ-ℕ n)) → mul-Ring R x (binomial-sum-Ring R n f) = binomial-sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-binomial-sum-Ring = left-distributive-mul-binomial-sum-Semiring (semiring-Ring R) right-distributive-mul-binomial-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R (succ-ℕ n)) (x : type-Ring R) → + (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) (x : type-Ring R) → mul-Ring R (binomial-sum-Ring R n f) x = binomial-sum-Ring R n (λ i → mul-Ring R (f i) x) right-distributive-mul-binomial-sum-Ring = diff --git a/src/ring-theory/binomial-theorem-semirings.lagda.md b/src/ring-theory/binomial-theorem-semirings.lagda.md index 66679c0071..f46fda9c11 100644 --- a/src/ring-theory/binomial-theorem-semirings.lagda.md +++ b/src/ring-theory/binomial-theorem-semirings.lagda.md @@ -19,7 +19,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors-on-semirings +open import linear-algebra.tuples-on-semirings open import ring-theory.powers-of-elements-semirings open import ring-theory.semirings @@ -52,7 +52,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Semiring : {l : Level} (R : Semiring l) - (n : ℕ) (f : functional-vec-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → type-Semiring R binomial-sum-Semiring R n f = sum-Semiring R (succ-ℕ n) @@ -72,9 +72,9 @@ module _ where binomial-sum-one-element-Semiring : - (f : functional-vec-Semiring R 1) → + (f : functional-tuple-Semiring R 1) → binomial-sum-Semiring R 0 f = - head-functional-vec-Semiring R 0 f + head-functional-tuple-Semiring R 0 f binomial-sum-one-element-Semiring f = ( sum-one-element-Semiring R ( λ i → @@ -82,10 +82,10 @@ module _ ( binomial-coefficient-Fin 0 i) ( f i))) ∙ ( left-unit-law-mul-nat-scalar-Semiring R - ( head-functional-vec-Semiring R 0 f)) + ( head-functional-tuple-Semiring R 0 f)) binomial-sum-two-elements-Semiring : - (f : functional-vec-Semiring R 2) → + (f : functional-tuple-Semiring R 2) → binomial-sum-Semiring R 1 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Semiring f = @@ -105,7 +105,7 @@ module _ where htpy-binomial-sum-Semiring : - (n : ℕ) {f g : functional-vec-Semiring R (succ-ℕ n)} → + (n : ℕ) {f g : functional-tuple-Semiring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Semiring R n f = binomial-sum-Semiring R n g htpy-binomial-sum-Semiring n H = @@ -126,7 +126,7 @@ module _ left-distributive-mul-binomial-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : functional-vec-Semiring R (succ-ℕ n)) → + (f : functional-tuple-Semiring R (succ-ℕ n)) → mul-Semiring R x (binomial-sum-Semiring R n f) = binomial-sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-binomial-sum-Semiring n x f = @@ -144,7 +144,7 @@ module _ ( f i))) right-distributive-mul-binomial-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → (x : type-Semiring R) → mul-Semiring R (binomial-sum-Semiring R n f) x = binomial-sum-Semiring R n (λ i → mul-Semiring R (f i) x) diff --git a/src/ring-theory/sums-rings.lagda.md b/src/ring-theory/sums-rings.lagda.md index f2f5859aa9..879e8a5978 100644 --- a/src/ring-theory/sums-rings.lagda.md +++ b/src/ring-theory/sums-rings.lagda.md @@ -15,8 +15,8 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.vectors -open import linear-algebra.vectors-on-rings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-rings open import ring-theory.rings open import ring-theory.sums-semirings @@ -36,7 +36,7 @@ family of elements of `R` indexed by a standard finite type. ```agda sum-Ring : - {l : Level} (R : Ring l) (n : ℕ) → functional-vec-Ring R n → type-Ring R + {l : Level} (R : Ring l) (n : ℕ) → functional-tuple-Ring R n → type-Ring R sum-Ring R = sum-Semiring (semiring-Ring R) ``` @@ -50,11 +50,11 @@ module _ where sum-one-element-Ring : - (f : functional-vec-Ring R 1) → sum-Ring R 1 f = head-functional-vec 0 f + (f : functional-tuple-Ring R 1) → sum-Ring R 1 f = head-functional-tuple 0 f sum-one-element-Ring = sum-one-element-Semiring (semiring-Ring R) sum-two-elements-Ring : - (f : functional-vec-Ring R 2) → + (f : functional-tuple-Ring R 2) → sum-Ring R 2 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Ring = sum-two-elements-Semiring (semiring-Ring R) ``` @@ -67,7 +67,7 @@ module _ where htpy-sum-Ring : - (n : ℕ) {f g : functional-vec-Ring R n} → + (n : ℕ) {f g : functional-tuple-Ring R n} → (f ~ g) → sum-Ring R n f = sum-Ring R n g htpy-sum-Ring = htpy-sum-Semiring (semiring-Ring R) ``` @@ -80,14 +80,14 @@ module _ where cons-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R (succ-ℕ n)) → - {x : type-Ring R} → head-functional-vec n f = x → + (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → + {x : type-Ring R} → head-functional-tuple n f = x → sum-Ring R (succ-ℕ n) f = - add-Ring R (sum-Ring R n (tail-functional-vec n f)) x + add-Ring R (sum-Ring R n (tail-functional-tuple n f)) x cons-sum-Ring = cons-sum-Semiring (semiring-Ring R) snoc-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → {x : type-Ring R} → f (zero-Fin n) = x → sum-Ring R (succ-ℕ n) f = add-Ring R @@ -105,14 +105,14 @@ module _ left-distributive-mul-sum-Ring : (n : ℕ) (x : type-Ring R) - (f : functional-vec-Ring R n) → + (f : functional-tuple-Ring R n) → mul-Ring R x (sum-Ring R n f) = sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-sum-Ring = left-distributive-mul-sum-Semiring (semiring-Ring R) right-distributive-mul-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R n) + (n : ℕ) (f : functional-tuple-Ring R n) (x : type-Ring R) → mul-Ring R (sum-Ring R n f) x = sum-Ring R n (λ i → mul-Ring R (f i) x) @@ -128,12 +128,12 @@ module _ where interchange-add-sum-Ring : - (n : ℕ) (f g : functional-vec-Ring R n) → + (n : ℕ) (f g : functional-tuple-Ring R n) → add-Ring R ( sum-Ring R n f) ( sum-Ring R n g) = sum-Ring R n - ( add-functional-vec-Ring R n f g) + ( add-functional-tuple-Ring R n f g) interchange-add-sum-Ring = interchange-add-sum-Semiring (semiring-Ring R) ``` @@ -145,10 +145,10 @@ module _ where extend-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R n) → + (n : ℕ) (f : functional-tuple-Ring R n) → sum-Ring R ( succ-ℕ n) - ( cons-functional-vec-Ring R n (zero-Ring R) f) = + ( cons-functional-tuple-Ring R n (zero-Ring R) f) = sum-Ring R n f extend-sum-Ring = extend-sum-Semiring (semiring-Ring R) ``` @@ -161,10 +161,10 @@ module _ where shift-sum-Ring : - (n : ℕ) (f : functional-vec-Ring R n) → + (n : ℕ) (f : functional-tuple-Ring R n) → sum-Ring R ( succ-ℕ n) - ( snoc-functional-vec-Ring R n f + ( snoc-functional-tuple-Ring R n f ( zero-Ring R)) = sum-Ring R n f shift-sum-Ring = shift-sum-Semiring (semiring-Ring R) @@ -178,7 +178,7 @@ module _ where sum-zero-Ring : - (n : ℕ) → sum-Ring R n (zero-functional-vec-Ring R n) = zero-Ring R + (n : ℕ) → sum-Ring R n (zero-functional-tuple-Ring R n) = zero-Ring R sum-zero-Ring = sum-zero-Semiring (semiring-Ring R) ``` @@ -187,7 +187,7 @@ module _ ```agda split-sum-Ring : {l : Level} (R : Ring l) - (n m : ℕ) (f : functional-vec-Ring R (n +ℕ m)) → + (n m : ℕ) (f : functional-tuple-Ring R (n +ℕ m)) → sum-Ring R (n +ℕ m) f = add-Ring R ( sum-Ring R n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index 3f42f0a446..ffc93d8084 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -19,8 +19,8 @@ open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.vectors -open import linear-algebra.vectors-on-semirings +open import linear-algebra.tuples +open import linear-algebra.tuples-on-semirings open import ring-theory.semirings @@ -40,7 +40,7 @@ family of elements of `R` indexed by a standard finite type. ```agda sum-Semiring : {l : Level} (R : Semiring l) (n : ℕ) → - (functional-vec-Semiring R n) → type-Semiring R + (functional-tuple-Semiring R n) → type-Semiring R sum-Semiring R zero-ℕ f = zero-Semiring R sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -58,13 +58,13 @@ module _ where sum-one-element-Semiring : - (f : functional-vec-Semiring R 1) → - sum-Semiring R 1 f = head-functional-vec 0 f + (f : functional-tuple-Semiring R 1) → + sum-Semiring R 1 f = head-functional-tuple 0 f sum-one-element-Semiring f = left-unit-law-add-Semiring R (f (inr star)) sum-two-elements-Semiring : - (f : functional-vec-Semiring R 2) → + (f : functional-tuple-Semiring R 2) → sum-Semiring R 2 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Semiring f = ( associative-add-Semiring R @@ -81,7 +81,7 @@ module _ where htpy-sum-Semiring : - (n : ℕ) {f g : functional-vec-Semiring R n} → + (n : ℕ) {f g : functional-tuple-Semiring R n} → (f ~ g) → sum-Semiring R n f = sum-Semiring R n g htpy-sum-Semiring zero-ℕ H = refl htpy-sum-Semiring (succ-ℕ n) H = @@ -98,14 +98,14 @@ module _ where cons-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R (succ-ℕ n)) → - {x : type-Semiring R} → head-functional-vec n f = x → + (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → + {x : type-Semiring R} → head-functional-tuple n f = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R (sum-Semiring R n (f ∘ inl-Fin n)) x cons-sum-Semiring n f refl = refl snoc-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → {x : type-Semiring R} → f (zero-Fin n) = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -116,12 +116,12 @@ module _ ( inv (right-unit-law-add-Semiring R (f (zero-Fin 0)))) snoc-sum-Semiring (succ-ℕ n) f refl = ( ap - ( add-Semiring' R (head-functional-vec (succ-ℕ n) f)) + ( add-Semiring' R (head-functional-tuple (succ-ℕ n) f)) ( snoc-sum-Semiring n (f ∘ inl-Fin (succ-ℕ n)) refl)) ∙ ( associative-add-Semiring R ( f (zero-Fin (succ-ℕ n))) ( sum-Semiring R n (f ∘ (inr-Fin (succ-ℕ n) ∘ inl-Fin n))) - ( head-functional-vec (succ-ℕ n) f)) + ( head-functional-tuple (succ-ℕ n) f)) ``` ### Multiplication distributes over sums @@ -133,7 +133,7 @@ module _ left-distributive-mul-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : functional-vec-Semiring R n) → + (f : functional-tuple-Semiring R n) → mul-Semiring R x (sum-Semiring R n f) = sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-sum-Semiring zero-ℕ x f = @@ -147,7 +147,7 @@ module _ ( left-distributive-mul-sum-Semiring n x (f ∘ inl-Fin n))) right-distributive-mul-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R n) + (n : ℕ) (f : functional-tuple-Semiring R n) (x : type-Semiring R) → mul-Semiring R (sum-Semiring R n f) x = sum-Semiring R n (λ i → mul-Semiring R (f i) x) @@ -171,12 +171,12 @@ module _ where interchange-add-sum-Semiring : - (n : ℕ) (f g : functional-vec-Semiring R n) → + (n : ℕ) (f g : functional-tuple-Semiring R n) → add-Semiring R ( sum-Semiring R n f) ( sum-Semiring R n g) = sum-Semiring R n - ( add-functional-vec-Semiring R n f g) + ( add-functional-tuple-Semiring R n f g) interchange-add-sum-Semiring zero-ℕ f g = left-unit-law-add-Semiring R (zero-Semiring R) interchange-add-sum-Semiring (succ-ℕ n) f g = @@ -201,10 +201,10 @@ module _ where extend-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R n) → + (n : ℕ) (f : functional-tuple-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( cons-functional-vec-Semiring R n (zero-Semiring R) f) = + ( cons-functional-tuple-Semiring R n (zero-Semiring R) f) = sum-Semiring R n f extend-sum-Semiring n f = right-unit-law-add-Semiring R (sum-Semiring R n f) @@ -218,10 +218,10 @@ module _ where shift-sum-Semiring : - (n : ℕ) (f : functional-vec-Semiring R n) → + (n : ℕ) (f : functional-tuple-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( snoc-functional-vec-Semiring R n f + ( snoc-functional-tuple-Semiring R n f ( zero-Semiring R)) = sum-Semiring R n f shift-sum-Semiring zero-ℕ f = @@ -229,9 +229,9 @@ module _ shift-sum-Semiring (succ-ℕ n) f = ap ( add-Semiring' R - ( head-functional-vec-Semiring R n f)) + ( head-functional-tuple-Semiring R n f)) ( shift-sum-Semiring n - ( tail-functional-vec-Semiring R n f)) + ( tail-functional-tuple-Semiring R n f)) ``` ### A sum of zeroes is zero @@ -243,7 +243,7 @@ module _ sum-zero-Semiring : (n : ℕ) → - sum-Semiring R n (zero-functional-vec-Semiring R n) = zero-Semiring R + sum-Semiring R n (zero-functional-tuple-Semiring R n) = zero-Semiring R sum-zero-Semiring zero-ℕ = refl sum-zero-Semiring (succ-ℕ n) = right-unit-law-add-Semiring R _ ∙ sum-zero-Semiring n @@ -254,7 +254,7 @@ module _ ```agda split-sum-Semiring : {l : Level} (R : Semiring l) - (n m : ℕ) (f : functional-vec-Semiring R (n +ℕ m)) → + (n m : ℕ) (f : functional-tuple-Semiring R (n +ℕ m)) → sum-Semiring R (n +ℕ m) f = add-Semiring R ( sum-Semiring R n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md b/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md index f1c5ab49c3..70a7a2046a 100644 --- a/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md +++ b/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md @@ -58,7 +58,7 @@ concrete-group-cycle-prime-decomposition-ℕ n H = ( map-list ( concrete-group-Cyclic-Type) ( list-fundamental-theorem-arithmetic-ℕ n H)))) - ( functional-vec-array + ( functional-tuple-array ( array-list ( map-list ( concrete-group-Cyclic-Type) diff --git a/src/universal-algebra/algebraic-theory-of-groups.lagda.md b/src/universal-algebra/algebraic-theory-of-groups.lagda.md index 719d008255..e4fb58b2ba 100644 --- a/src/universal-algebra/algebraic-theory-of-groups.lagda.md +++ b/src/universal-algebra/algebraic-theory-of-groups.lagda.md @@ -19,7 +19,7 @@ open import foundation.universe-levels open import group-theory.groups -open import linear-algebra.vectors +open import linear-algebra.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories @@ -61,22 +61,22 @@ pr2 group-Theory = λ where associative-l-group-laws → ( op mul-group-op - ( ( op mul-group-op (var 0 ∷ var 1 ∷ empty-vec)) ∷ var 2 ∷ empty-vec)) , + ( ( op mul-group-op (var 0 ∷ var 1 ∷ empty-tuple)) ∷ var 2 ∷ empty-tuple)) , ( op mul-group-op - ( var 0 ∷ (op mul-group-op (var 1 ∷ var 2 ∷ empty-vec)) ∷ empty-vec)) + ( var 0 ∷ (op mul-group-op (var 1 ∷ var 2 ∷ empty-tuple)) ∷ empty-tuple)) invl-l-group-laws → ( op mul-group-op - ( op inv-group-op (var 0 ∷ empty-vec) ∷ var 0 ∷ empty-vec)) , - ( op unit-group-op empty-vec) + ( op inv-group-op (var 0 ∷ empty-tuple) ∷ var 0 ∷ empty-tuple)) , + ( op unit-group-op empty-tuple) invr-r-group-laws → ( op mul-group-op - ( var 0 ∷ op inv-group-op (var 0 ∷ empty-vec) ∷ empty-vec)) , - ( op unit-group-op empty-vec) + ( var 0 ∷ op inv-group-op (var 0 ∷ empty-tuple) ∷ empty-tuple)) , + ( op unit-group-op empty-tuple) idl-l-group-laws → - ( op mul-group-op (op unit-group-op empty-vec ∷ var 0 ∷ empty-vec)) , + ( op mul-group-op (op unit-group-op empty-tuple ∷ var 0 ∷ empty-tuple)) , ( var 0) idr-r-group-laws → - ( op mul-group-op (var 0 ∷ op unit-group-op empty-vec ∷ empty-vec)) , + ( op mul-group-op (var 0 ∷ op unit-group-op empty-tuple ∷ empty-tuple)) , ( var 0) where op = op-Term @@ -97,18 +97,18 @@ group-Algebra-Group : Group l pr1 (pr1 (group-Algebra-Group ((A-Set , models-A) , satisfies-A))) = A-Set pr1 (pr2 (pr1 (group-Algebra-Group ((A-Set , models-A) , satisfies-A)))) x y = - models-A mul-group-op (x ∷ y ∷ empty-vec) + models-A mul-group-op (x ∷ y ∷ empty-tuple) pr2 (pr2 (pr1 (group-Algebra-Group ((A-Set , models-A) , satisfies-A)))) x y z = satisfies-A associative-l-group-laws ( λ { 0 → x ; 1 → y ; (succ-ℕ (succ-ℕ n)) → z}) pr1 (pr1 (pr2 (group-Algebra-Group ((A-Set , models-A) , satisfies-A)))) = - models-A unit-group-op empty-vec + models-A unit-group-op empty-tuple pr1 (pr2 (pr1 (pr2 (group-Algebra-Group (_ , satisfies-A))))) x = satisfies-A idl-l-group-laws (λ _ → x) pr2 (pr2 (pr1 (pr2 (group-Algebra-Group (_ , satisfies-A))))) x = satisfies-A idr-r-group-laws (λ _ → x) pr1 (pr2 (pr2 (group-Algebra-Group ((A-Set , models-A) , satisfies-A)))) x = - models-A inv-group-op (x ∷ empty-vec) + models-A inv-group-op (x ∷ empty-tuple) pr1 (pr2 (pr2 (pr2 (group-Algebra-Group (_ , satisfies-A))))) x = satisfies-A invl-l-group-laws (λ _ → x) pr2 (pr2 (pr2 (pr2 (group-Algebra-Group (_ , satisfies-A))))) x = @@ -124,8 +124,8 @@ Group-group-Algebra G = ( ( set-Group G)) ( λ where unit-group-op v → unit-Group G - mul-group-op (x ∷ y ∷ empty-vec) → mul-Group G x y - inv-group-op (x ∷ empty-vec) → inv-Group G x)) + mul-group-op (x ∷ y ∷ empty-tuple) → mul-Group G x y + inv-group-op (x ∷ empty-tuple) → inv-Group G x)) ( λ where associative-l-group-laws assign → associative-mul-Group G (assign 0) (assign 1) (assign 2) @@ -154,9 +154,9 @@ abstract ( eq-pair-eq-fiber ( eq-htpy ( λ where - unit-group-op → eq-htpy (λ where empty-vec → refl) - mul-group-op → eq-htpy (λ where (x ∷ y ∷ empty-vec) → refl) - inv-group-op → eq-htpy (λ where (x ∷ empty-vec) → refl)))) + unit-group-op → eq-htpy (λ where empty-tuple → refl) + mul-group-op → eq-htpy (λ where (x ∷ y ∷ empty-tuple) → refl) + inv-group-op → eq-htpy (λ where (x ∷ empty-tuple) → refl)))) ( eq-is-prop ( is-prop-is-algebra ( group-signature) ( group-Theory) diff --git a/src/universal-algebra/congruences.lagda.md b/src/universal-algebra/congruences.lagda.md index 811e9e865c..0cf6c30ef0 100644 --- a/src/universal-algebra/congruences.lagda.md +++ b/src/universal-algebra/congruences.lagda.md @@ -16,7 +16,7 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories @@ -39,17 +39,18 @@ module _ { l3 : Level} ( Alg : Algebra Sg Th l3) where - relation-holds-all-vec : + relation-holds-all-tuple : { l4 : Level} → ( R : equivalence-relation l4 (type-Algebra Sg Th Alg)) → { n : ℕ} → - ( v : vec (type-Algebra Sg Th Alg) n) → - ( v' : vec (type-Algebra Sg Th Alg) n) → + ( v : tuple (type-Algebra Sg Th Alg) n) → + ( v' : tuple (type-Algebra Sg Th Alg) n) → UU l4 - relation-holds-all-vec {l4} R {.zero-ℕ} empty-vec empty-vec = raise-unit l4 - relation-holds-all-vec {l4} R {.(succ-ℕ _)} (x ∷ v) (x' ∷ v') = + relation-holds-all-tuple {l4} R {.zero-ℕ} empty-tuple empty-tuple = + raise-unit l4 + relation-holds-all-tuple {l4} R {.(succ-ℕ _)} (x ∷ v) (x' ∷ v') = ( type-Prop (prop-equivalence-relation R x x')) × - ( relation-holds-all-vec R v v') + ( relation-holds-all-tuple R v v') preserves-operations : { l4 : Level} → @@ -57,11 +58,11 @@ module _ UU (l1 ⊔ l3 ⊔ l4) preserves-operations R = ( op : operation-signature Sg) → - ( v : vec (type-Algebra Sg Th Alg) + ( v : tuple (type-Algebra Sg Th Alg) ( arity-operation-signature Sg op)) → - ( v' : vec (type-Algebra Sg Th Alg) + ( v' : tuple (type-Algebra Sg Th Alg) ( arity-operation-signature Sg op)) → - ( relation-holds-all-vec R v v' → + ( relation-holds-all-tuple R v v' → ( type-Prop ( prop-equivalence-relation R ( is-model-set-Algebra Sg Th Alg op v) diff --git a/src/universal-algebra/homomorphisms-of-algebras.lagda.md b/src/universal-algebra/homomorphisms-of-algebras.lagda.md index f8c7ad948a..e680d66306 100644 --- a/src/universal-algebra/homomorphisms-of-algebras.lagda.md +++ b/src/universal-algebra/homomorphisms-of-algebras.lagda.md @@ -11,8 +11,8 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories @@ -42,10 +42,10 @@ module _ UU (l1 ⊔ l3 ⊔ l4) preserves-operations-Algebra f = ( op : operation-signature Sg) → - ( v : vec (type-Algebra Sg Th Alg1) + ( v : tuple (type-Algebra Sg Th Alg1) ( arity-operation-signature Sg op)) → ( f (is-model-set-Algebra Sg Th Alg1 op v) = - ( is-model-set-Algebra Sg Th Alg2 op (map-vec f v))) + ( is-model-set-Algebra Sg Th Alg2 op (map-tuple f v))) hom-Algebra : UU (l1 ⊔ l3 ⊔ l4) hom-Algebra = diff --git a/src/universal-algebra/kernels.lagda.md b/src/universal-algebra/kernels.lagda.md index e8c0fe6128..9021850751 100644 --- a/src/universal-algebra/kernels.lagda.md +++ b/src/universal-algebra/kernels.lagda.md @@ -17,8 +17,8 @@ open import foundation.equivalence-relations open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories @@ -68,9 +68,9 @@ module _ pr2 kernel-hom-Algebra op v v' p = equational-reasoning f (is-model-set-Algebra Sg Th Alg1 op v) - = is-model-set-Algebra Sg Th Alg2 op (map-vec f v) + = is-model-set-Algebra Sg Th Alg2 op (map-tuple f v) by preserves-operations-hom-Algebra Sg Th Alg1 Alg2 F op v - = is-model-set-Algebra Sg Th Alg2 op (map-vec f v') + = is-model-set-Algebra Sg Th Alg2 op (map-tuple f v') by ap ( is-model-set-Algebra Sg Th Alg2 op) @@ -81,11 +81,11 @@ module _ f = map-hom-Algebra Sg Th Alg1 Alg2 F map-hom-Algebra-lemma : ( n : ℕ) → - ( v v' : vec (type-Algebra Sg Th Alg1) n) → - ( relation-holds-all-vec Sg Th Alg1 + ( v v' : tuple (type-Algebra Sg Th Alg1) n) → + ( relation-holds-all-tuple Sg Th Alg1 equivalence-relation-kernel-hom-Algebra v v') → - (map-vec f v) = (map-vec f v') - map-hom-Algebra-lemma zero-ℕ empty-vec empty-vec p = refl + (map-tuple f v) = (map-tuple f v') + map-hom-Algebra-lemma zero-ℕ empty-tuple empty-tuple p = refl map-hom-Algebra-lemma (succ-ℕ n) (x ∷ v) (x' ∷ v') (p , p') = ap-binary (_∷_) p (map-hom-Algebra-lemma n v v' p') ``` diff --git a/src/universal-algebra/models-of-signatures.lagda.md b/src/universal-algebra/models-of-signatures.lagda.md index 18b796de52..0cdfd65ff0 100644 --- a/src/universal-algebra/models-of-signatures.lagda.md +++ b/src/universal-algebra/models-of-signatures.lagda.md @@ -11,7 +11,7 @@ open import foundation.dependent-pair-types open import foundation.sets open import foundation.universe-levels -open import linear-algebra.vectors +open import linear-algebra.tuples open import universal-algebra.signatures ``` @@ -21,7 +21,7 @@ open import universal-algebra.signatures ## Idea A model of a signature `Sig` in a type `A` is a dependent function that assings -to each function symbol `f` of arity `n` and a vector of `n` elements of `A` an +to each function symbol `f` of arity `n` and a tuple of `n` elements of `A` an element of `A`. ## Definitions @@ -36,7 +36,7 @@ module _ is-model : {l2 : Level} → UU l2 → UU (l1 ⊔ l2) is-model X = ( f : operation-signature Sg) → - ( vec X (arity-operation-signature Sg f) → X) + ( tuple X (arity-operation-signature Sg f) → X) is-model-signature : {l2 : Level} → (Set l2) → UU (l1 ⊔ l2) is-model-signature X = is-model (type-Set X) diff --git a/src/universal-algebra/quotient-algebras.lagda.md b/src/universal-algebra/quotient-algebras.lagda.md index 6a031ee6f2..58073512c3 100644 --- a/src/universal-algebra/quotient-algebras.lagda.md +++ b/src/universal-algebra/quotient-algebras.lagda.md @@ -20,11 +20,11 @@ open import foundation.propositional-truncations open import foundation.propositions open import foundation.set-quotients open import foundation.sets +open import foundation.tuples-set-quotients open import foundation.unit-type open import foundation.universe-levels -open import foundation.vectors-set-quotients -open import linear-algebra.vectors +open import linear-algebra.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories @@ -83,21 +83,22 @@ module _ equivalence-class-set-quotient-Algebra = map-inv-equiv compute-quotient-Algebra - vec-type-quotient-vec-type-Algebra : + tuple-type-quotient-tuple-type-Algebra : { n : ℕ} → - vec type-quotient-Algebra n → - type-trunc-Prop (vec (type-Algebra Sg Th Alg) n) - vec-type-quotient-vec-type-Algebra empty-vec = unit-trunc-Prop empty-vec - vec-type-quotient-vec-type-Algebra (x ∷ v) = + tuple type-quotient-Algebra n → + type-trunc-Prop (tuple (type-Algebra Sg Th Alg) n) + tuple-type-quotient-tuple-type-Algebra empty-tuple = + unit-trunc-Prop empty-tuple + tuple-type-quotient-tuple-type-Algebra (x ∷ v) = map-universal-property-trunc-Prop ( trunc-Prop _) ( λ (z , p) → map-trunc-Prop (λ v' → z ∷ v') - ( vec-type-quotient-vec-type-Algebra v)) + ( tuple-type-quotient-tuple-type-Algebra v)) ( pr2 (equivalence-class-set-quotient-Algebra x)) - relation-holds-all-vec-all-sim-equivalence-relation : + relation-holds-all-tuple-all-sim-equivalence-relation : { n : ℕ} ( v v' : multivariable-input n ( λ _ → type-Algebra Sg Th Alg)) → ( type-Prop @@ -105,15 +106,15 @@ module _ ( all-sim-equivalence-relation n ( λ _ → type-Algebra Sg Th Alg) ( λ _ → equivalence-relation-congruence-Algebra Sg Th Alg R)) v v')) → - relation-holds-all-vec Sg Th Alg + relation-holds-all-tuple Sg Th Alg ( equivalence-relation-congruence-Algebra Sg Th Alg R) - ( vector-multivariable-input n (type-Algebra Sg Th Alg) v) - ( vector-multivariable-input n (type-Algebra Sg Th Alg) v') - relation-holds-all-vec-all-sim-equivalence-relation {zero-ℕ} v v' p = + ( tuple-multivariable-input n (type-Algebra Sg Th Alg) v) + ( tuple-multivariable-input n (type-Algebra Sg Th Alg) v') + relation-holds-all-tuple-all-sim-equivalence-relation {zero-ℕ} v v' p = raise-star - relation-holds-all-vec-all-sim-equivalence-relation + relation-holds-all-tuple-all-sim-equivalence-relation {succ-ℕ n} (x , v) (x' , v') (p , p') = - p , (relation-holds-all-vec-all-sim-equivalence-relation v v' p') + p , (relation-holds-all-tuple-all-sim-equivalence-relation v v' p') is-model-set-quotient-Algebra : is-model-signature Sg set-quotient-Algebra @@ -126,22 +127,22 @@ module _ ( pair ( λ v → is-model-set-Algebra Sg Th Alg op - ( vector-multivariable-input + ( tuple-multivariable-input ( arity-operation-signature Sg op) ( type-Algebra Sg Th Alg) ( v))) ( λ {v} {v'} p → preserves-operations-congruence-Algebra Sg Th Alg R op - ( vector-multivariable-input + ( tuple-multivariable-input ( arity-operation-signature Sg op) ( type-Algebra Sg Th Alg) ( v)) - ( vector-multivariable-input + ( tuple-multivariable-input ( arity-operation-signature Sg op) ( type-Algebra Sg Th Alg) ( v')) - (relation-holds-all-vec-all-sim-equivalence-relation v v' p))) - ( multivariable-input-vector + (relation-holds-all-tuple-all-sim-equivalence-relation v v' p))) + ( multivariable-input-tuple ( arity-operation-signature Sg op) ( type-quotient-Algebra) ( v)) diff --git a/src/universal-algebra/terms-over-signatures.lagda.md b/src/universal-algebra/terms-over-signatures.lagda.md index 8a5cf6febf..abef4ec114 100644 --- a/src/universal-algebra/terms-over-signatures.lagda.md +++ b/src/universal-algebra/terms-over-signatures.lagda.md @@ -18,8 +18,8 @@ open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.functoriality-vectors -open import linear-algebra.vectors +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples open import lists.lists open import lists.lists-discrete-types @@ -51,17 +51,17 @@ module _ de-bruijn-variables-term : Term → list ℕ - de-bruijn-variables-term-vec : {n : ℕ} → vec Term n → list ℕ + de-bruijn-variables-term-tuple : {n : ℕ} → tuple Term n → list ℕ de-bruijn-variables-term (var-Term x) = cons x nil - de-bruijn-variables-term (op-Term f x) = de-bruijn-variables-term-vec x + de-bruijn-variables-term (op-Term f x) = de-bruijn-variables-term-tuple x - de-bruijn-variables-term-vec empty-vec = nil - de-bruijn-variables-term-vec (x ∷ v) = + de-bruijn-variables-term-tuple empty-tuple = nil + de-bruijn-variables-term-tuple (x ∷ v) = union-list has-decidable-equality-ℕ (de-bruijn-variables-term x) - (de-bruijn-variables-term-vec v) + (de-bruijn-variables-term-tuple v) arity-term : Term → ℕ arity-term t = length-list (de-bruijn-variables-term t) @@ -87,24 +87,24 @@ evaluated to a concrete element of the type `A`. {l2 : Level} → {A : UU l2} → is-model Sg A → assignment A → Term → A - eval-vec : + eval-tuple : { l2 : Level} → {A : UU l2} {n : ℕ} → - is-model Sg A → assignment A → vec Term n → vec A n + is-model Sg A → assignment A → tuple Term n → tuple A n eval-term m assign (var-Term n) = assign n - eval-term m assign (op-Term f x) = m f (eval-vec m assign x) + eval-term m assign (op-Term f x) = m f (eval-tuple m assign x) - eval-vec m assign empty-vec = empty-vec - eval-vec m assign (x ∷ v) = - eval-term m assign x ∷ (eval-vec m assign v) + eval-tuple m assign empty-tuple = empty-tuple + eval-tuple m assign (x ∷ v) = + eval-term m assign x ∷ (eval-tuple m assign v) - eval-vec-map-vec-eval-term : + eval-tuple-map-tuple-eval-term : { l2 : Level} {A : UU l2} {n : ℕ} → - (m : is-model Sg A) → (assign : assignment A) → (v : vec Term n) → - eval-vec m assign v = map-vec (eval-term m assign) v - eval-vec-map-vec-eval-term m assign empty-vec = refl - eval-vec-map-vec-eval-term m assign (x ∷ v) = - ap (eval-term m assign x ∷_) (eval-vec-map-vec-eval-term m assign v) + (m : is-model Sg A) → (assign : assignment A) → (v : tuple Term n) → + eval-tuple m assign v = map-tuple (eval-term m assign) v + eval-tuple-map-tuple-eval-term m assign empty-tuple = refl + eval-tuple-map-tuple-eval-term m assign (x ∷ v) = + ap (eval-term m assign x ∷_) (eval-tuple-map-tuple-eval-term m assign v) ``` ### Evaluation for constant terms @@ -120,56 +120,56 @@ element of `A`. (de-bruijn-variables-term t = nil) → A - eval-constant-term-vec : + eval-constant-term-tuple : { l2 : Level} {A : UU l2} {n : ℕ} → ( is-model Sg A) → - ( v : vec Term n) → - ( all-vec (λ t → is-nil-list (de-bruijn-variables-term t)) v) → - vec A n + ( v : tuple Term n) → + ( all-tuple (λ t → is-nil-list (de-bruijn-variables-term t)) v) → + tuple A n eval-constant-term m (op-Term f x) p = - m f (eval-constant-term-vec m x (all-vec-lemma x p)) + m f (eval-constant-term-tuple m x (all-tuple-lemma x p)) where - all-vec-lemma : + all-tuple-lemma : { n : ℕ} - ( v : vec Term n) → - ( de-bruijn-variables-term-vec v = nil) → - all-vec (λ t → is-nil-list (de-bruijn-variables-term t)) v - all-vec-lemma empty-vec p = raise-star - all-vec-lemma (x ∷ v) p = + ( v : tuple Term n) → + ( de-bruijn-variables-term-tuple v = nil) → + all-tuple (λ t → is-nil-list (de-bruijn-variables-term t)) v + all-tuple-lemma empty-tuple p = raise-star + all-tuple-lemma (x ∷ v) p = pair ( pr1 (is-nil-lemma p)) - ( all-vec-lemma v (pr2 (is-nil-lemma p))) + ( all-tuple-lemma v (pr2 (is-nil-lemma p))) where is-nil-lemma = is-nil-union-is-nil-list ( has-decidable-equality-ℕ) ( de-bruijn-variables-term x) - ( de-bruijn-variables-term-vec v) + ( de-bruijn-variables-term-tuple v) - eval-constant-term-vec m empty-vec p = empty-vec - eval-constant-term-vec m (x ∷ v) (p , p') = - eval-constant-term m x p ∷ eval-constant-term-vec m v p' + eval-constant-term-tuple m empty-tuple p = empty-tuple + eval-constant-term-tuple m (x ∷ v) (p , p') = + eval-constant-term m x p ∷ eval-constant-term-tuple m v p' ``` ### The induced function by a term on a model ```agda - vec-assignment : + tuple-assignment : {l2 : Level} {A : UU l2} → ℕ → (l : list ℕ) → - vec A (succ-ℕ (length-list l)) → assignment A - vec-assignment x nil (y ∷ empty-vec) n = y - vec-assignment x (cons x' l) (y ∷ y' ∷ v) n + tuple A (succ-ℕ (length-list l)) → assignment A + tuple-assignment x nil (y ∷ empty-tuple) n = y + tuple-assignment x (cons x' l) (y ∷ y' ∷ v) n with ( has-decidable-equality-ℕ x n) ... | inl p = y - ... | inr p = vec-assignment x' l (y' ∷ v) n + ... | inr p = tuple-assignment x' l (y' ∷ v) n induced-function-term : {l2 : Level} → {A : UU l2} → is-model Sg A → (t : Term) → - vec A (arity-term t) → A + tuple A (arity-term t) → A induced-function-term {l2} {A} m t v with ( has-decidable-equality-list has-decidable-equality-ℕ @@ -178,21 +178,21 @@ element of `A`. ... | inr p = eval-term m ( tr - ( λ n → vec A n → assignment A) + ( λ n → tuple A n → assignment A) ( lenght-tail-is-nonnil-list (de-bruijn-variables-term t) p) - ( vec-assignment + ( tuple-assignment ( head-is-nonnil-list (de-bruijn-variables-term t) p) ( tail-is-nonnil-list (de-bruijn-variables-term t) p)) ( v)) ( t) - assignment-vec : + assignment-tuple : {l2 : Level} {A : UU l2} → (l : list ℕ) → assignment A → - vec A (length-list l) - assignment-vec nil f = empty-vec - assignment-vec (cons x l) f = f x ∷ assignment-vec l f + tuple A (length-list l) + assignment-tuple nil f = empty-tuple + assignment-tuple (cons x l) f = f x ∷ assignment-tuple l f ``` ### Translation of terms @@ -205,23 +205,23 @@ translation-term : is-extension-signature Sg1 Sg2 → Term Sg2 → Term Sg1 -translation-vec : +translation-tuple : { l1 l2 : Level} → ( Sg1 : signature l1) → ( Sg2 : signature l2) → { n : ℕ} → is-extension-signature Sg1 Sg2 → - vec (Term Sg2) n → vec (Term Sg1) n + tuple (Term Sg2) n → tuple (Term Sg1) n translation-term Sg1 Sg2 ext (var-Term x) = var-Term x translation-term Sg1 Sg2 ext (op-Term f v) = op-Term (emb-extension-signature Sg1 Sg2 ext f) - ( tr (vec (Term Sg1)) + ( tr (tuple (Term Sg1)) ( arity-preserved-extension-signature Sg1 Sg2 ext f) - ( translation-vec Sg1 Sg2 ext v)) + ( translation-tuple Sg1 Sg2 ext v)) -translation-vec Sg1 Sg2 ext empty-vec = empty-vec -translation-vec Sg1 Sg2 ext (x ∷ v) = +translation-tuple Sg1 Sg2 ext empty-tuple = empty-tuple +translation-tuple Sg1 Sg2 ext (x ∷ v) = ( translation-term Sg1 Sg2 ext x) ∷ - ( translation-vec Sg1 Sg2 ext v) + ( translation-tuple Sg1 Sg2 ext v) ``` From fade62cfb78720a79fe1cda601cd3446f893e3cc Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 10:40:00 -0700 Subject: [PATCH 03/24] Rename --- .../{permutation-vectors.lagda.md => permutation-tuples.lagda.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/lists/{permutation-vectors.lagda.md => permutation-tuples.lagda.md} (100%) diff --git a/src/lists/permutation-vectors.lagda.md b/src/lists/permutation-tuples.lagda.md similarity index 100% rename from src/lists/permutation-vectors.lagda.md rename to src/lists/permutation-tuples.lagda.md From 0570ab00a9fa9fcfad05398ef8b5fee95122f149 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 10:42:21 -0700 Subject: [PATCH 04/24] Fix line lengths --- src/lists/arrays.lagda.md | 3 ++- src/lists/functoriality-lists.lagda.md | 4 +++- src/lists/permutation-tuples.lagda.md | 3 ++- ...ion-vectors.lagda.md => sort-by-insertion-tuples.lagda.md} | 3 ++- src/universal-algebra/algebraic-theory-of-groups.lagda.md | 4 +++- 5 files changed, 12 insertions(+), 5 deletions(-) rename src/lists/{sort-by-insertion-vectors.lagda.md => sort-by-insertion-tuples.lagda.md} (99%) diff --git a/src/lists/arrays.lagda.md b/src/lists/arrays.lagda.md index 7884bb545c..d53ccda02a 100644 --- a/src/lists/arrays.lagda.md +++ b/src/lists/arrays.lagda.md @@ -189,7 +189,8 @@ module _ x ∈-tuple (tuple-list l) → x ∈-list l is-in-list-is-in-tuple-list (cons y l) .y (is-head .y .(tuple-list l)) = is-head y l - is-in-list-is-in-tuple-list (cons y l) x (is-in-tail .x .y .(tuple-list l) I) = + is-in-list-is-in-tuple-list + (cons y l) x (is-in-tail .x .y .(tuple-list l) I) = is-in-tail x y l (is-in-list-is-in-tuple-list l x I) is-in-tuple-list-is-in-list : diff --git a/src/lists/functoriality-lists.lagda.md b/src/lists/functoriality-lists.lagda.md index 28bb406fec..6b87b03a26 100644 --- a/src/lists/functoriality-lists.lagda.md +++ b/src/lists/functoriality-lists.lagda.md @@ -72,7 +72,9 @@ module _ map-list-map-tuple-list nil = refl map-list-map-tuple-list (cons x l) = eq-Eq-list - ( list-tuple (length-list (cons x l)) (map-tuple f (tuple-list (cons x l)))) + ( list-tuple + ( length-list (cons x l)) + ( map-tuple f (tuple-list (cons x l)))) ( map-list f (cons x l)) ( refl , Eq-eq-list diff --git a/src/lists/permutation-tuples.lagda.md b/src/lists/permutation-tuples.lagda.md index a0a9c9dc15..0f4e14123b 100644 --- a/src/lists/permutation-tuples.lagda.md +++ b/src/lists/permutation-tuples.lagda.md @@ -332,7 +332,8 @@ module _ ( fold-tuple b μ) ( inv ( compute-permute-tuple-id-equiv n v)) invariant-list-transpositions-fold-tuple {0} v (cons _ _) = refl - invariant-list-transpositions-fold-tuple {succ-ℕ n} v (cons ((i , j) , neq) l) = + invariant-list-transpositions-fold-tuple + {succ-ℕ n} v (cons ((i , j) , neq) l) = ( invariant-transposition-fold-tuple v i j neq ∙ ( ( invariant-list-transpositions-fold-tuple ( permute-tuple (succ-ℕ n) v (transposition-Fin (succ-ℕ n) i j neq)) diff --git a/src/lists/sort-by-insertion-vectors.lagda.md b/src/lists/sort-by-insertion-tuples.lagda.md similarity index 99% rename from src/lists/sort-by-insertion-vectors.lagda.md rename to src/lists/sort-by-insertion-tuples.lagda.md index b13a17e9d1..7566df3f7b 100644 --- a/src/lists/sort-by-insertion-vectors.lagda.md +++ b/src/lists/sort-by-insertion-tuples.lagda.md @@ -207,7 +207,8 @@ module _ eq-permute-tuple-permutation-insertion-sort-tuple : {n : ℕ} (v : tuple (type-Decidable-Total-Order X) n) → - insertion-sort-tuple v = permute-tuple n v (permutation-insertion-sort-tuple v) + insertion-sort-tuple v = + permute-tuple n v (permutation-insertion-sort-tuple v) eq-permute-tuple-permutation-insertion-sort-tuple {0} empty-tuple = refl eq-permute-tuple-permutation-insertion-sort-tuple {1} (x ∷ empty-tuple) = refl eq-permute-tuple-permutation-insertion-sort-tuple diff --git a/src/universal-algebra/algebraic-theory-of-groups.lagda.md b/src/universal-algebra/algebraic-theory-of-groups.lagda.md index e4fb58b2ba..9ed007b8aa 100644 --- a/src/universal-algebra/algebraic-theory-of-groups.lagda.md +++ b/src/universal-algebra/algebraic-theory-of-groups.lagda.md @@ -61,7 +61,9 @@ pr2 group-Theory = λ where associative-l-group-laws → ( op mul-group-op - ( ( op mul-group-op (var 0 ∷ var 1 ∷ empty-tuple)) ∷ var 2 ∷ empty-tuple)) , + ( ( op mul-group-op (var 0 ∷ var 1 ∷ empty-tuple)) ∷ + var 2 ∷ + empty-tuple)) , ( op mul-group-op ( var 0 ∷ (op mul-group-op (var 1 ∷ var 2 ∷ empty-tuple)) ∷ empty-tuple)) invl-l-group-laws → From 9bc47b9308c89b49a34073bbcaea5a0352cd60f9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 10:46:31 -0700 Subject: [PATCH 05/24] Progress --- src/lists.lagda.md | 5 ++--- .../{sorted-vectors.lagda.md => sorted-tuples.lagda.md} | 0 ...s-vectors.lagda.md => sorting-algorithms-tuples.lagda.md} | 0 3 files changed, 2 insertions(+), 3 deletions(-) rename src/lists/{sorted-vectors.lagda.md => sorted-tuples.lagda.md} (100%) rename src/lists/{sorting-algorithms-vectors.lagda.md => sorting-algorithms-tuples.lagda.md} (100%) diff --git a/src/lists.lagda.md b/src/lists.lagda.md index 0263108995..59ff052e06 100644 --- a/src/lists.lagda.md +++ b/src/lists.lagda.md @@ -12,14 +12,13 @@ open import lists.functoriality-lists public open import lists.lists public open import lists.lists-discrete-types public open import lists.permutation-lists public -open import lists.permutation-vectors public +open import lists.permutation-tuples public open import lists.predicates-on-lists public open import lists.quicksort-lists public open import lists.reversing-lists public open import lists.sort-by-insertion-lists public -open import lists.sort-by-insertion-vectors public +open import lists.sort-by-insertion-tuples public open import lists.sorted-lists public -open import lists.sorted-vectors public open import lists.sorting-algorithms-lists public open import lists.sorting-algorithms-vectors public open import lists.universal-property-lists-wild-monoids public diff --git a/src/lists/sorted-vectors.lagda.md b/src/lists/sorted-tuples.lagda.md similarity index 100% rename from src/lists/sorted-vectors.lagda.md rename to src/lists/sorted-tuples.lagda.md diff --git a/src/lists/sorting-algorithms-vectors.lagda.md b/src/lists/sorting-algorithms-tuples.lagda.md similarity index 100% rename from src/lists/sorting-algorithms-vectors.lagda.md rename to src/lists/sorting-algorithms-tuples.lagda.md From 7eb10711cd2efde79bee066f8dff35a2d3df8c0d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 11:15:54 -0700 Subject: [PATCH 06/24] Doc overhaul --- src/foundation.lagda.md | 2 +- ...ients.lagda.md => tuples-set-quotients.lagda.md} | 0 src/linear-algebra/constant-matrices.lagda.md | 3 ++- src/linear-algebra/constant-tuples.lagda.md | 4 ++-- .../diagonal-matrices-on-rings.lagda.md | 4 ++++ src/linear-algebra/functoriality-matrices.lagda.md | 3 ++- src/linear-algebra/functoriality-tuples.lagda.md | 3 ++- src/linear-algebra/matrices-on-rings.lagda.md | 3 +++ src/linear-algebra/matrices.lagda.md | 8 +++++--- .../scalar-multiplication-tuples-on-rings.lagda.md | 7 +++++++ .../scalar-multiplication-tuples.lagda.md | 2 +- src/linear-algebra/transposition-matrices.lagda.md | 6 ++++-- .../tuples-on-commutative-rings.lagda.md | 3 ++- .../tuples-on-commutative-semirings.lagda.md | 3 ++- .../tuples-on-euclidean-domains.lagda.md | 4 ++-- src/linear-algebra/tuples-on-rings.lagda.md | 9 ++++++++- src/linear-algebra/tuples-on-semirings.lagda.md | 4 +++- src/linear-algebra/tuples.lagda.md | 13 +++++++++---- src/lists.lagda.md | 3 ++- 19 files changed, 61 insertions(+), 23 deletions(-) rename src/foundation/{vectors-set-quotients.lagda.md => tuples-set-quotients.lagda.md} (100%) diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 429dd75e39..50f323f9b6 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -444,6 +444,7 @@ open import foundation.truncation-levels public open import foundation.truncation-modalities public open import foundation.truncations public open import foundation.tuples-of-types public +open import foundation.tuples-set-quotients public open import foundation.type-arithmetic-booleans public open import foundation.type-arithmetic-cartesian-product-types public open import foundation.type-arithmetic-coproduct-types public @@ -494,7 +495,6 @@ open import foundation.unordered-pairs public open import foundation.unordered-pairs-of-types public open import foundation.unordered-tuples public open import foundation.unordered-tuples-of-types public -open import foundation.vectors-set-quotients public open import foundation.vertical-composition-spans-of-spans public open import foundation.weak-function-extensionality public open import foundation.weak-limited-principle-of-omniscience public diff --git a/src/foundation/vectors-set-quotients.lagda.md b/src/foundation/tuples-set-quotients.lagda.md similarity index 100% rename from src/foundation/vectors-set-quotients.lagda.md rename to src/foundation/tuples-set-quotients.lagda.md diff --git a/src/linear-algebra/constant-matrices.lagda.md b/src/linear-algebra/constant-matrices.lagda.md index 1438e41949..e939ea2378 100644 --- a/src/linear-algebra/constant-matrices.lagda.md +++ b/src/linear-algebra/constant-matrices.lagda.md @@ -19,7 +19,8 @@ open import linear-algebra.matrices ## Idea -Constant matrices are matrices in which all elements are the same. +Constant matrices are [matrices](linear-algebra.matrices.md) in which all +elements are the same. ## Definition diff --git a/src/linear-algebra/constant-tuples.lagda.md b/src/linear-algebra/constant-tuples.lagda.md index 52a20de08e..80604fa4a5 100644 --- a/src/linear-algebra/constant-tuples.lagda.md +++ b/src/linear-algebra/constant-tuples.lagda.md @@ -18,8 +18,8 @@ open import linear-algebra.tuples ## Idea -Diagonal tuples are tuples on the diagonal, i.e., they are tuples of which all -coefficients are equal. +Diagonal tuples are [tuples](linear-algebra.tuples.md) on the diagonal, i.e., +they are tuples of which all coefficients are equal. ## Definition diff --git a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md index a5c9a1fc58..880228ea99 100644 --- a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md +++ b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md @@ -24,6 +24,10 @@ open import ring-theory.rings ## Definitions +A {{#concept "diagonal matrix" Agda=diagonal-matrix-Ring WD="diagonal matrix" WDID=Q332791}} +is a [matrix](linear-algebra.matrices.md) whose only nonzero elements are +on the diagonal of the matrix. + ### Diagonal matrices ```agda diff --git a/src/linear-algebra/functoriality-matrices.lagda.md b/src/linear-algebra/functoriality-matrices.lagda.md index 0219c5f9ea..ee118a9404 100644 --- a/src/linear-algebra/functoriality-matrices.lagda.md +++ b/src/linear-algebra/functoriality-matrices.lagda.md @@ -19,7 +19,8 @@ open import linear-algebra.matrices ## Idea -Any map `f : A → B` induces a map `matrix A m n → matrix B m n`. +Any map `f : A → B` induces a map between [matrices](linear-algebra.matrices.md) +`matrix A m n → matrix B m n`. ## Definition diff --git a/src/linear-algebra/functoriality-tuples.lagda.md b/src/linear-algebra/functoriality-tuples.lagda.md index ba845c2fdf..104c3540fb 100644 --- a/src/linear-algebra/functoriality-tuples.lagda.md +++ b/src/linear-algebra/functoriality-tuples.lagda.md @@ -28,7 +28,8 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Any map `f : A → B` determines a map `tuple A n → tuple B n` for every `n`. +Any map `f : A → B` determines a map between [tuples](linear-algebra.tuples.md) +`tuple A n → tuple B n` for every `n`. ## Definition diff --git a/src/linear-algebra/matrices-on-rings.lagda.md b/src/linear-algebra/matrices-on-rings.lagda.md index 7aff600012..6b2c05094b 100644 --- a/src/linear-algebra/matrices-on-rings.lagda.md +++ b/src/linear-algebra/matrices-on-rings.lagda.md @@ -26,6 +26,9 @@ open import ring-theory.rings ## Definitions +A [matrix](linear-algebra.matrices.md) on a [ring](ring-theory.rings.md) +is a matrix whose elements are elements of the ring. + ### Matrices ```agda diff --git a/src/linear-algebra/matrices.lagda.md b/src/linear-algebra/matrices.lagda.md index e7ad736e99..e2b71d7894 100644 --- a/src/linear-algebra/matrices.lagda.md +++ b/src/linear-algebra/matrices.lagda.md @@ -23,9 +23,11 @@ open import linear-algebra.tuples ## Idea -An `(m × n)`-matrix of elements in `A` is an arrangement of elements of A with -`m` rows and `n` columns. In other words, a matrix is tuple of length `m` of -tuples of length `n` of elements of `A`. +An `m × n` +{{#concept "matrix" Agda=matrix WD="matrix" WDID=Q44337}} of elements in `A` is +an arrangement of elements of A with `m` rows and `n` columns. In other words, +a matrix is a [tuple](linear-algebra.tuples.md) of length `m` of tuples of +length `n` of elements of `A`. ## Definitions diff --git a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md index 157e8fb44b..ed2c1d7b0b 100644 --- a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md @@ -29,6 +29,13 @@ open import ring-theory.rings ## Definition +For [tuples on rings](linear-algebra.tuples-on-rings.md), +{{#concept "scalar multiplication" disambiguation="Of tuples on rings" WD="scalar multiplication" WDID=Q126736}} +is an operation taking an element `c` of a [ring](ring-theory.rings.md) and a tuple +of elements of that ring and multiplying each element of the tuple by `c`. +With addition of tuples on rings, this forms a +[left module](ring-theory.modules-rings.md). + ### Scalar multiplication of tuples on rings ```agda diff --git a/src/linear-algebra/scalar-multiplication-tuples.lagda.md b/src/linear-algebra/scalar-multiplication-tuples.lagda.md index e72e663610..04fb3364fe 100644 --- a/src/linear-algebra/scalar-multiplication-tuples.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples.lagda.md @@ -20,7 +20,7 @@ open import linear-algebra.tuples ## Idea Any operation `B → A → A` for some type `B` of formal scalars induces an -operation `B → tuple n A → tuple n A`. +operation on [tuples](linear-algebra.tuples.md) `B → tuple n A → tuple n A`. ## Definition diff --git a/src/linear-algebra/transposition-matrices.lagda.md b/src/linear-algebra/transposition-matrices.lagda.md index b93ea96cac..49a5c49244 100644 --- a/src/linear-algebra/transposition-matrices.lagda.md +++ b/src/linear-algebra/transposition-matrices.lagda.md @@ -23,8 +23,10 @@ open import linear-algebra.tuples ## Idea -The transposition of a matrix is the operation that turns rows into columns and -columns into rows. +The +{{#concept "transposition of a matrix" WD="matrix transposition" WDID=Q77961711 Agda=transpose-matrix}} +is the operation on [matrices](linear-algebra.matrices.md) that turns rows into +columns and columns into rows. ## Definition diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index de9c586df9..cccf07abab 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -26,7 +26,8 @@ open import linear-algebra.tuples-on-rings ## Idea -Tuples on a commutative ring `R` are tuples on the underlying type of `R`. The +Tuples on a [commutative ring](commutative-algebra.commutative-rings.md) `R` +are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. The commutative ring structure on `R` induces further structure on the type of tuples on `R`. diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index 177a25d4d6..e372aff89d 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -26,7 +26,8 @@ open import linear-algebra.tuples-on-semirings ## Idea -Tuples on a commutative semiring `R` are tuples on the underlying type of `R`. +Tuples on a [commutative semiring](commutative-algebra.commutative-semirings.md) +`R` are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. The commutative semiring structure on `R` induces further structure on the type of tuples on `R`. diff --git a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md index 5c8fcf629d..d6b587e0b5 100644 --- a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md @@ -33,8 +33,8 @@ open import linear-algebra.tuples ## Idea -Given an euclidean domain `R`, the type `tuple n R` of `R`-tuples is an -`R`-module. +Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the +type `tuple n R` of `R`-[tuples](linear-algebra.tuples.md) is an `R`-module. ## Definitions diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index 4d0ead0d32..8fbcaef481 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -33,7 +33,9 @@ open import ring-theory.rings ## Idea -Given a ring `R`, the type `tuple n R` of `R`-tuples is an `R`-module. +Given a [ring](ring-theory.rings.md) `R`, the type `tuple n R` of +`R`-[tuples](linear-algebra.tuples.md) is an +[Abelian group](group-theory.abelian-groups.md). ## Definitions @@ -280,3 +282,8 @@ module _ pr1 (tuple-Ring-Ab n) = tuple-Ring-Group n pr2 (tuple-Ring-Ab n) = commutative-add-tuple-Ring R ``` + +## See also + +* For the [module](ring-theory.modules-rings.md) of tuples on rings, see + [`linear-algebra.scalar-multiplication-tuples-on-rings`]( diff --git a/src/linear-algebra/tuples-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md index a384c17285..4fc5c4f96b 100644 --- a/src/linear-algebra/tuples-on-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-semirings.lagda.md @@ -30,7 +30,9 @@ open import ring-theory.semirings ## Idea -Given a ring `R`, the type `tuple n R` of `R`-tuples is an `R`-module +Given a [semiring](ring-theory.semirings.md) `R`, the type `tuple n R` of +`R`-[tuples](linear-algebra.tuples.md) is a +[commutative monoid](group-theory.commutative-monoids.md) under addition. ## Definitions diff --git a/src/linear-algebra/tuples.lagda.md b/src/linear-algebra/tuples.lagda.md index 86b1e65bf9..fa4dcdc84f 100644 --- a/src/linear-algebra/tuples.lagda.md +++ b/src/linear-algebra/tuples.lagda.md @@ -37,10 +37,15 @@ open import univalent-combinatorics.standard-finite-types ## Idea -There are two equivalent definitions of tuples of length `n`. First, a **listed -tuple** of length `n` is a list of `n` elements of type `A`. Secondly, a -**functional tuple** of length `n` is a map `Fin n → A`. We define both types of -tuples and show that they are equivalent. +There are two equivalent definitions of +{{#concept "tuples" WD="n-tuple" WDID=Q600590}} of length `n`. First, a +{{#concept "listed tuple" Agda=tuple}} of length `n` is a list of `n` elements +of type `A`. Secondly, a +{{#concept "functional tuple" Agda=functional-tuple}} of length `n` is a map +from the +[standard finite type](univalent-combinatorics.standard-finite-types.md) of +cardinality `n` `Fin n` to `A`. We define both types of tuples and show that +they are equivalent. ## Definitions diff --git a/src/lists.lagda.md b/src/lists.lagda.md index 59ff052e06..93bdcca792 100644 --- a/src/lists.lagda.md +++ b/src/lists.lagda.md @@ -19,7 +19,8 @@ open import lists.reversing-lists public open import lists.sort-by-insertion-lists public open import lists.sort-by-insertion-tuples public open import lists.sorted-lists public +open import lists.sorted-tuples public open import lists.sorting-algorithms-lists public -open import lists.sorting-algorithms-vectors public +open import lists.sorting-algorithms-tuples public open import lists.universal-property-lists-wild-monoids public ``` From 3cb864d4cab603879966ac4734eff74dbcf3c59d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 6 Apr 2025 11:20:44 -0700 Subject: [PATCH 07/24] Doc overhaul --- src/linear-algebra/diagonal-matrices-on-rings.lagda.md | 7 ++++--- src/linear-algebra/matrices-on-rings.lagda.md | 4 ++-- src/linear-algebra/matrices.lagda.md | 9 ++++----- .../scalar-multiplication-tuples-on-rings.lagda.md | 4 ++-- src/linear-algebra/tuples-on-commutative-rings.lagda.md | 4 ++-- .../tuples-on-commutative-semirings.lagda.md | 6 +++--- src/linear-algebra/tuples-on-rings.lagda.md | 2 +- src/linear-algebra/tuples.lagda.md | 5 ++--- 8 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md index 880228ea99..9fcc0ff390 100644 --- a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md +++ b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md @@ -24,9 +24,10 @@ open import ring-theory.rings ## Definitions -A {{#concept "diagonal matrix" Agda=diagonal-matrix-Ring WD="diagonal matrix" WDID=Q332791}} -is a [matrix](linear-algebra.matrices.md) whose only nonzero elements are -on the diagonal of the matrix. +A +{{#concept "diagonal matrix" Agda=diagonal-matrix-Ring WD="diagonal matrix" WDID=Q332791}} +is a [matrix](linear-algebra.matrices.md) whose only nonzero elements are on the +diagonal of the matrix. ### Diagonal matrices diff --git a/src/linear-algebra/matrices-on-rings.lagda.md b/src/linear-algebra/matrices-on-rings.lagda.md index 6b2c05094b..ed7f29eccb 100644 --- a/src/linear-algebra/matrices-on-rings.lagda.md +++ b/src/linear-algebra/matrices-on-rings.lagda.md @@ -26,8 +26,8 @@ open import ring-theory.rings ## Definitions -A [matrix](linear-algebra.matrices.md) on a [ring](ring-theory.rings.md) -is a matrix whose elements are elements of the ring. +A [matrix](linear-algebra.matrices.md) on a [ring](ring-theory.rings.md) is a +matrix whose elements are elements of the ring. ### Matrices diff --git a/src/linear-algebra/matrices.lagda.md b/src/linear-algebra/matrices.lagda.md index e2b71d7894..4e786721a0 100644 --- a/src/linear-algebra/matrices.lagda.md +++ b/src/linear-algebra/matrices.lagda.md @@ -23,11 +23,10 @@ open import linear-algebra.tuples ## Idea -An `m × n` -{{#concept "matrix" Agda=matrix WD="matrix" WDID=Q44337}} of elements in `A` is -an arrangement of elements of A with `m` rows and `n` columns. In other words, -a matrix is a [tuple](linear-algebra.tuples.md) of length `m` of tuples of -length `n` of elements of `A`. +An `m × n` {{#concept "matrix" Agda=matrix WD="matrix" WDID=Q44337}} of elements +in `A` is an arrangement of elements of A with `m` rows and `n` columns. In +other words, a matrix is a [tuple](linear-algebra.tuples.md) of length `m` of +tuples of length `n` of elements of `A`. ## Definitions diff --git a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md index ed2c1d7b0b..6f4cffff23 100644 --- a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md @@ -31,8 +31,8 @@ open import ring-theory.rings For [tuples on rings](linear-algebra.tuples-on-rings.md), {{#concept "scalar multiplication" disambiguation="Of tuples on rings" WD="scalar multiplication" WDID=Q126736}} -is an operation taking an element `c` of a [ring](ring-theory.rings.md) and a tuple -of elements of that ring and multiplying each element of the tuple by `c`. +is an operation taking an element `c` of a [ring](ring-theory.rings.md) and a +tuple of elements of that ring and multiplying each element of the tuple by `c`. With addition of tuples on rings, this forms a [left module](ring-theory.modules-rings.md). diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index cccf07abab..35e76317e9 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -26,8 +26,8 @@ open import linear-algebra.tuples-on-rings ## Idea -Tuples on a [commutative ring](commutative-algebra.commutative-rings.md) `R` -are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. The +Tuples on a [commutative ring](commutative-algebra.commutative-rings.md) `R` are +[tuples](linear-algebra.tuples.md) on the underlying type of `R`. The commutative ring structure on `R` induces further structure on the type of tuples on `R`. diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index e372aff89d..a042930001 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -27,9 +27,9 @@ open import linear-algebra.tuples-on-semirings ## Idea Tuples on a [commutative semiring](commutative-algebra.commutative-semirings.md) -`R` are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. -The commutative semiring structure on `R` induces further structure on the type -of tuples on `R`. +`R` are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. The +commutative semiring structure on `R` induces further structure on the type of +tuples on `R`. ## Definitions diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index 8fbcaef481..607fc584f4 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -285,5 +285,5 @@ module _ ## See also -* For the [module](ring-theory.modules-rings.md) of tuples on rings, see +- For the [module](ring-theory.modules-rings.md) of tuples on rings, see [`linear-algebra.scalar-multiplication-tuples-on-rings`]( diff --git a/src/linear-algebra/tuples.lagda.md b/src/linear-algebra/tuples.lagda.md index fa4dcdc84f..9a5cc5597b 100644 --- a/src/linear-algebra/tuples.lagda.md +++ b/src/linear-algebra/tuples.lagda.md @@ -40,9 +40,8 @@ open import univalent-combinatorics.standard-finite-types There are two equivalent definitions of {{#concept "tuples" WD="n-tuple" WDID=Q600590}} of length `n`. First, a {{#concept "listed tuple" Agda=tuple}} of length `n` is a list of `n` elements -of type `A`. Secondly, a -{{#concept "functional tuple" Agda=functional-tuple}} of length `n` is a map -from the +of type `A`. Secondly, a {{#concept "functional tuple" Agda=functional-tuple}} +of length `n` is a map from the [standard finite type](univalent-combinatorics.standard-finite-types.md) of cardinality `n` `Fin n` to `A`. We define both types of tuples and show that they are equivalent. From e766ecdc0c05e3eea49f11e41b185e4da92ba262 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 25 Apr 2025 13:00:42 -0700 Subject: [PATCH 08/24] Refactoring --- ...inomial-theorem-commutative-rings.lagda.md | 16 +- ...ial-theorem-commutative-semirings.lagda.md | 16 +- .../sums-commutative-rings.lagda.md | 45 +-- .../sums-commutative-semirings.lagda.md | 45 +-- .../binomial-theorem-integers.lagda.md | 14 +- .../binomial-theorem-natural-numbers.lagda.md | 14 +- src/foundation.lagda.md | 2 +- ...> finite-sequences-set-quotients.lagda.md} | 296 +++++++++--------- .../iterated-cartesian-product-types.lagda.md | 8 +- ...iable-functoriality-set-quotients.lagda.md | 33 +- .../multivariable-operations.lagda.md | 21 +- src/linear-algebra.lagda.md | 9 + ...uivalence-tuples-finite-sequences.lagda.md | 110 +++++++ ...te-sequences-on-commutative-rings.lagda.md | 225 +++++++++++++ ...equences-on-commutative-semirings.lagda.md | 175 +++++++++++ ...te-sequences-on-euclidean-domains.lagda.md | 247 +++++++++++++++ .../finite-sequences-on-rings.lagda.md | 216 +++++++++++++ .../finite-sequences-on-semirings.lagda.md | 177 +++++++++++ src/linear-algebra/finite-sequences.lagda.md | 140 +++++++++ .../functoriality-finite-sequences.lagda.md | 65 ++++ ...toriality-tuples-finite-sequences.lagda.md | 73 +++++ .../functoriality-tuples.lagda.md | 67 +--- .../tuples-on-commutative-rings.lagda.md | 192 +++++------- .../tuples-on-commutative-semirings.lagda.md | 161 +++------- .../tuples-on-euclidean-domains.lagda.md | 284 +++++------------ src/linear-algebra/tuples-on-rings.lagda.md | 210 ++++--------- .../tuples-on-semirings.lagda.md | 162 +++------- src/linear-algebra/tuples.lagda.md | 202 +----------- src/lists/arrays.lagda.md | 29 +- src/lists/permutation-tuples.lagda.md | 72 +++-- src/lists/sorted-tuples.lagda.md | 62 ++-- .../binomial-theorem-rings.lagda.md | 16 +- .../binomial-theorem-semirings.lagda.md | 18 +- src/ring-theory/sums-rings.lagda.md | 42 +-- src/ring-theory/sums-semirings.lagda.md | 50 +-- ...ime-decomposition-natural-numbers.lagda.md | 2 +- .../quotient-algebras.lagda.md | 2 +- 37 files changed, 2158 insertions(+), 1360 deletions(-) rename src/foundation/{tuples-set-quotients.lagda.md => finite-sequences-set-quotients.lagda.md} (56%) create mode 100644 src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md create mode 100644 src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md create mode 100644 src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md create mode 100644 src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md create mode 100644 src/linear-algebra/finite-sequences-on-rings.lagda.md create mode 100644 src/linear-algebra/finite-sequences-on-semirings.lagda.md create mode 100644 src/linear-algebra/finite-sequences.lagda.md create mode 100644 src/linear-algebra/functoriality-finite-sequences.lagda.md create mode 100644 src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md diff --git a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md index 703699691a..09b75409b2 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md @@ -21,7 +21,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples-on-commutative-rings +open import linear-algebra.finite-sequences-on-commutative-rings open import ring-theory.binomial-theorem-rings @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → type-Commutative-Ring A binomial-sum-Commutative-Ring A = binomial-sum-Ring (ring-Commutative-Ring A) ``` @@ -65,14 +65,14 @@ module _ where binomial-sum-one-element-Commutative-Ring : - (f : functional-tuple-Commutative-Ring A 1) → + (f : fin-sequence-Commutative-Ring A 1) → binomial-sum-Commutative-Ring A 0 f = - head-functional-tuple-Commutative-Ring A 0 f + head-fin-sequence-Commutative-Ring A 0 f binomial-sum-one-element-Commutative-Ring = binomial-sum-one-element-Ring (ring-Commutative-Ring A) binomial-sum-two-elements-Commutative-Ring : - (f : functional-tuple-Commutative-Ring A 2) → + (f : fin-sequence-Commutative-Ring A 2) → binomial-sum-Commutative-Ring A 1 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Ring = @@ -87,7 +87,7 @@ module _ where htpy-binomial-sum-Commutative-Ring : - (n : ℕ) {f g : functional-tuple-Commutative-Ring A (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-Commutative-Ring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Ring A n f = binomial-sum-Commutative-Ring A n g htpy-binomial-sum-Commutative-Ring = @@ -103,14 +103,14 @@ module _ left-distributive-mul-binomial-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → + (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → mul-Commutative-Ring A x (binomial-sum-Commutative-Ring A n f) = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-binomial-sum-Commutative-Ring = left-distributive-mul-binomial-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-binomial-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → (x : type-Commutative-Ring A) → mul-Commutative-Ring A (binomial-sum-Commutative-Ring A n f) x = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) diff --git a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md index a69c4ff98a..c660311237 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md @@ -20,7 +20,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples-on-commutative-semirings +open import linear-algebra.finite-sequences-on-commutative-semirings open import ring-theory.binomial-theorem-semirings @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → type-Commutative-Semiring A binomial-sum-Commutative-Semiring A = binomial-sum-Semiring (semiring-Commutative-Semiring A) @@ -66,14 +66,14 @@ module _ where binomial-sum-one-element-Commutative-Semiring : - (f : functional-tuple-Commutative-Semiring A 1) → + (f : fin-sequence-Commutative-Semiring A 1) → binomial-sum-Commutative-Semiring A 0 f = - head-functional-tuple-Commutative-Semiring A 0 f + head-fin-sequence-Commutative-Semiring A 0 f binomial-sum-one-element-Commutative-Semiring = binomial-sum-one-element-Semiring (semiring-Commutative-Semiring A) binomial-sum-two-elements-Commutative-Semiring : - (f : functional-tuple-Commutative-Semiring A 2) → + (f : fin-sequence-Commutative-Semiring A 2) → binomial-sum-Commutative-Semiring A 1 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Semiring = @@ -88,7 +88,7 @@ module _ where htpy-binomial-sum-Commutative-Semiring : - (n : ℕ) {f g : functional-tuple-Commutative-Semiring A (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-Commutative-Semiring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Semiring A n f = binomial-sum-Commutative-Semiring A n g @@ -105,7 +105,7 @@ module _ left-distributive-mul-binomial-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → + (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → mul-Commutative-Semiring A x (binomial-sum-Commutative-Semiring A n f) = binomial-sum-Commutative-Semiring A n ( λ i → mul-Commutative-Semiring A x (f i)) @@ -114,7 +114,7 @@ module _ ( semiring-Commutative-Semiring A) right-distributive-mul-binomial-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (binomial-sum-Commutative-Semiring A n f) x = binomial-sum-Commutative-Semiring A n diff --git a/src/commutative-algebra/sums-commutative-rings.lagda.md b/src/commutative-algebra/sums-commutative-rings.lagda.md index db89333dd7..2c33c87d8e 100644 --- a/src/commutative-algebra/sums-commutative-rings.lagda.md +++ b/src/commutative-algebra/sums-commutative-rings.lagda.md @@ -20,8 +20,8 @@ open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.tuples -open import linear-algebra.tuples-on-commutative-rings +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-commutative-rings open import ring-theory.sums-rings @@ -34,14 +34,15 @@ open import univalent-combinatorics.standard-finite-types ## Idea The **sum operation** extends the binary addition operation on a commutative -ring `A` to any family of elements of `A` indexed by a standard finite type. +ring `A` to any [finite sequence](linear-algebra.finite-sequences.md) of +elements of `A`. ## Definition ```agda sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) (n : ℕ) → - (functional-tuple-Commutative-Ring A n) → type-Commutative-Ring A + (fin-sequence-Commutative-Ring A n) → type-Commutative-Ring A sum-Commutative-Ring A = sum-Ring (ring-Commutative-Ring A) ``` @@ -55,13 +56,13 @@ module _ where sum-one-element-Commutative-Ring : - (f : functional-tuple-Commutative-Ring A 1) → - sum-Commutative-Ring A 1 f = head-functional-tuple 0 f + (f : fin-sequence-Commutative-Ring A 1) → + sum-Commutative-Ring A 1 f = head-fin-sequence 0 f sum-one-element-Commutative-Ring = sum-one-element-Ring (ring-Commutative-Ring A) sum-two-elements-Commutative-Ring : - (f : functional-tuple-Commutative-Ring A 2) → + (f : fin-sequence-Commutative-Ring A 2) → sum-Commutative-Ring A 2 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Ring = @@ -76,7 +77,7 @@ module _ where htpy-sum-Commutative-Ring : - (n : ℕ) {f g : functional-tuple-Commutative-Ring A n} → + (n : ℕ) {f g : fin-sequence-Commutative-Ring A n} → (f ~ g) → sum-Commutative-Ring A n f = sum-Commutative-Ring A n g htpy-sum-Commutative-Ring = htpy-sum-Ring (ring-Commutative-Ring A) ``` @@ -89,15 +90,15 @@ module _ where cons-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → - {x : type-Commutative-Ring A} → head-functional-tuple n f = x → + (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + {x : type-Commutative-Ring A} → head-fin-sequence n f = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A - ( sum-Commutative-Ring A n (tail-functional-tuple n f)) x + ( sum-Commutative-Ring A n (tail-fin-sequence n f)) x cons-sum-Commutative-Ring = cons-sum-Ring (ring-Commutative-Ring A) snoc-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → {x : type-Commutative-Ring A} → f (zero-Fin n) = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A @@ -115,14 +116,14 @@ module _ left-distributive-mul-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : functional-tuple-Commutative-Ring A n) → + (f : fin-sequence-Commutative-Ring A n) → mul-Commutative-Ring A x (sum-Commutative-Ring A n f) = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-sum-Commutative-Ring = left-distributive-mul-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A n) + (n : ℕ) (f : fin-sequence-Commutative-Ring A n) (x : type-Commutative-Ring A) → mul-Commutative-Ring A (sum-Commutative-Ring A n f) x = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) @@ -138,12 +139,12 @@ module _ where interchange-add-sum-Commutative-Ring : - (n : ℕ) (f g : functional-tuple-Commutative-Ring A n) → + (n : ℕ) (f g : fin-sequence-Commutative-Ring A n) → add-Commutative-Ring A ( sum-Commutative-Ring A n f) ( sum-Commutative-Ring A n g) = sum-Commutative-Ring A n - ( add-functional-tuple-Commutative-Ring A n f g) + ( add-fin-sequence-Commutative-Ring A n f g) interchange-add-sum-Commutative-Ring = interchange-add-sum-Ring (ring-Commutative-Ring A) ``` @@ -156,10 +157,10 @@ module _ where extend-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A n) → + (n : ℕ) (f : fin-sequence-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( cons-functional-tuple-Commutative-Ring + ( cons-fin-sequence-Commutative-Ring ( A) ( n) ( zero-Commutative-Ring A) @@ -176,10 +177,10 @@ module _ where shift-sum-Commutative-Ring : - (n : ℕ) (f : functional-tuple-Commutative-Ring A n) → + (n : ℕ) (f : fin-sequence-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( snoc-functional-tuple-Commutative-Ring A n f + ( snoc-fin-sequence-Commutative-Ring A n f ( zero-Commutative-Ring A)) = sum-Commutative-Ring A n f shift-sum-Commutative-Ring = shift-sum-Ring (ring-Commutative-Ring A) @@ -190,7 +191,7 @@ module _ ```agda split-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n m : ℕ) (f : functional-tuple-Commutative-Ring A (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-Commutative-Ring A (n +ℕ m)) → sum-Commutative-Ring A (n +ℕ m) f = add-Commutative-Ring A ( sum-Commutative-Ring A n (f ∘ inl-coproduct-Fin n m)) @@ -214,7 +215,7 @@ module _ sum-zero-Commutative-Ring : (n : ℕ) → sum-Commutative-Ring A n - ( zero-functional-tuple-Commutative-Ring A n) = + ( zero-fin-sequence-Commutative-Ring A n) = zero-Commutative-Ring A sum-zero-Commutative-Ring = sum-zero-Ring (ring-Commutative-Ring A) ``` diff --git a/src/commutative-algebra/sums-commutative-semirings.lagda.md b/src/commutative-algebra/sums-commutative-semirings.lagda.md index 8c8b541009..1865ce8255 100644 --- a/src/commutative-algebra/sums-commutative-semirings.lagda.md +++ b/src/commutative-algebra/sums-commutative-semirings.lagda.md @@ -17,8 +17,8 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples -open import linear-algebra.tuples-on-commutative-semirings +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-commutative-semirings open import ring-theory.sums-semirings @@ -31,14 +31,15 @@ open import univalent-combinatorics.standard-finite-types ## Idea The **sum operation** extends the binary addition operation on a commutative -semiring `R` to any family of elements of `R` indexed by a standard finite type. +semiring `R` to any [finite sequence](linear-algebra.finite-sequences.md) of +elements of `R`. ## Definition ```agda sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) (n : ℕ) → - (functional-tuple-Commutative-Semiring A n) → type-Commutative-Semiring A + (fin-sequence-Commutative-Semiring A n) → type-Commutative-Semiring A sum-Commutative-Semiring A = sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -52,13 +53,13 @@ module _ where sum-one-element-Commutative-Semiring : - (f : functional-tuple-Commutative-Semiring A 1) → - sum-Commutative-Semiring A 1 f = head-functional-tuple 0 f + (f : fin-sequence-Commutative-Semiring A 1) → + sum-Commutative-Semiring A 1 f = head-fin-sequence 0 f sum-one-element-Commutative-Semiring = sum-one-element-Semiring (semiring-Commutative-Semiring A) sum-two-elements-Commutative-Semiring : - (f : functional-tuple-Commutative-Semiring A 2) → + (f : fin-sequence-Commutative-Semiring A 2) → sum-Commutative-Semiring A 2 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Semiring = @@ -73,7 +74,7 @@ module _ where htpy-sum-Commutative-Semiring : - (n : ℕ) {f g : functional-tuple-Commutative-Semiring A n} → + (n : ℕ) {f g : fin-sequence-Commutative-Semiring A n} → (f ~ g) → sum-Commutative-Semiring A n f = sum-Commutative-Semiring A n g htpy-sum-Commutative-Semiring = htpy-sum-Semiring (semiring-Commutative-Semiring A) @@ -87,16 +88,16 @@ module _ where cons-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → - {x : type-Commutative-Semiring A} → head-functional-tuple n f = x → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + {x : type-Commutative-Semiring A} → head-fin-sequence n f = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A - ( sum-Commutative-Semiring A n (tail-functional-tuple n f)) x + ( sum-Commutative-Semiring A n (tail-fin-sequence n f)) x cons-sum-Commutative-Semiring = cons-sum-Semiring (semiring-Commutative-Semiring A) snoc-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → {x : type-Commutative-Semiring A} → f (zero-Fin n) = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A @@ -115,14 +116,14 @@ module _ left-distributive-mul-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : functional-tuple-Commutative-Semiring A n) → + (f : fin-sequence-Commutative-Semiring A n) → mul-Commutative-Semiring A x (sum-Commutative-Semiring A n f) = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A x (f i)) left-distributive-mul-sum-Commutative-Semiring = left-distributive-mul-sum-Semiring (semiring-Commutative-Semiring A) right-distributive-mul-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) + (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (sum-Commutative-Semiring A n f) x = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A (f i) x) @@ -138,12 +139,12 @@ module _ where interchange-add-sum-Commutative-Semiring : - (n : ℕ) (f g : functional-tuple-Commutative-Semiring A n) → + (n : ℕ) (f g : fin-sequence-Commutative-Semiring A n) → add-Commutative-Semiring A ( sum-Commutative-Semiring A n f) ( sum-Commutative-Semiring A n g) = sum-Commutative-Semiring A n - ( add-functional-tuple-Commutative-Semiring A n f g) + ( add-fin-sequence-Commutative-Semiring A n f g) interchange-add-sum-Commutative-Semiring = interchange-add-sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -156,10 +157,10 @@ module _ where extend-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( cons-functional-tuple-Commutative-Semiring A n + ( cons-fin-sequence-Commutative-Semiring A n ( zero-Commutative-Semiring A) f) = sum-Commutative-Semiring A n f extend-sum-Commutative-Semiring = @@ -174,10 +175,10 @@ module _ where shift-sum-Commutative-Semiring : - (n : ℕ) (f : functional-tuple-Commutative-Semiring A n) → + (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( snoc-functional-tuple-Commutative-Semiring A n f + ( snoc-fin-sequence-Commutative-Semiring A n f ( zero-Commutative-Semiring A)) = sum-Commutative-Semiring A n f shift-sum-Commutative-Semiring = @@ -194,7 +195,7 @@ module _ sum-zero-Commutative-Semiring : (n : ℕ) → sum-Commutative-Semiring A n - ( zero-functional-tuple-Commutative-Semiring A n) = + ( zero-fin-sequence-Commutative-Semiring A n) = zero-Commutative-Semiring A sum-zero-Commutative-Semiring = sum-zero-Semiring (semiring-Commutative-Semiring A) @@ -205,7 +206,7 @@ module _ ```agda split-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n m : ℕ) (f : functional-tuple-Commutative-Semiring A (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-Commutative-Semiring A (n +ℕ m)) → sum-Commutative-Semiring A (n +ℕ m) f = add-Commutative-Semiring A ( sum-Commutative-Semiring A n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/elementary-number-theory/binomial-theorem-integers.lagda.md b/src/elementary-number-theory/binomial-theorem-integers.lagda.md index c9f1b91c0d..206cd8da7a 100644 --- a/src/elementary-number-theory/binomial-theorem-integers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-integers.lagda.md @@ -20,7 +20,7 @@ open import elementary-number-theory.ring-of-integers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.tuples +open import linear-algebra.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -45,7 +45,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ### Binomial sums ```agda -binomial-sum-ℤ : (n : ℕ) (f : functional-tuple ℤ (succ-ℕ n)) → ℤ +binomial-sum-ℤ : (n : ℕ) (f : fin-sequence ℤ (succ-ℕ n)) → ℤ binomial-sum-ℤ = binomial-sum-Commutative-Ring ℤ-Commutative-Ring ``` @@ -55,12 +55,12 @@ binomial-sum-ℤ = binomial-sum-Commutative-Ring ℤ-Commutative-Ring ```agda binomial-sum-one-element-ℤ : - (f : functional-tuple ℤ 1) → binomial-sum-ℤ 0 f = head-functional-tuple 0 f + (f : fin-sequence ℤ 1) → binomial-sum-ℤ 0 f = head-fin-sequence 0 f binomial-sum-one-element-ℤ = binomial-sum-one-element-Commutative-Ring ℤ-Commutative-Ring binomial-sum-two-elements-ℤ : - (f : functional-tuple ℤ 2) → + (f : fin-sequence ℤ 2) → binomial-sum-ℤ 1 f = (f (zero-Fin 1)) +ℤ (f (one-Fin 1)) binomial-sum-two-elements-ℤ = binomial-sum-two-elements-Commutative-Ring ℤ-Commutative-Ring @@ -70,7 +70,7 @@ binomial-sum-two-elements-ℤ = ```agda htpy-binomial-sum-ℤ : - (n : ℕ) {f g : functional-tuple ℤ (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence ℤ (succ-ℕ n)} → (f ~ g) → binomial-sum-ℤ n f = binomial-sum-ℤ n g htpy-binomial-sum-ℤ = htpy-binomial-sum-Commutative-Ring ℤ-Commutative-Ring @@ -80,13 +80,13 @@ htpy-binomial-sum-ℤ = ```agda left-distributive-mul-binomial-sum-ℤ : - (n : ℕ) (x : ℤ) (f : functional-tuple ℤ (succ-ℕ n)) → + (n : ℕ) (x : ℤ) (f : fin-sequence ℤ (succ-ℕ n)) → x *ℤ (binomial-sum-ℤ n f) = binomial-sum-ℤ n (λ i → x *ℤ (f i)) left-distributive-mul-binomial-sum-ℤ = left-distributive-mul-binomial-sum-Commutative-Ring ℤ-Commutative-Ring right-distributive-mul-binomial-sum-ℤ : - (n : ℕ) (f : functional-tuple ℤ (succ-ℕ n)) (x : ℤ) → + (n : ℕ) (f : fin-sequence ℤ (succ-ℕ n)) (x : ℤ) → (binomial-sum-ℤ n f) *ℤ x = binomial-sum-ℤ n (λ i → (f i) *ℤ x) right-distributive-mul-binomial-sum-ℤ = right-distributive-mul-binomial-sum-Commutative-Ring diff --git a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md index d0d79aec2c..0cf1efb137 100644 --- a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md @@ -19,7 +19,7 @@ open import elementary-number-theory.natural-numbers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.tuples +open import linear-algebra.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -44,7 +44,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ### Binomial sums ```agda -binomial-sum-ℕ : (n : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) → ℕ +binomial-sum-ℕ : (n : ℕ) (f : fin-sequence ℕ (succ-ℕ n)) → ℕ binomial-sum-ℕ = binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring ``` @@ -54,12 +54,12 @@ binomial-sum-ℕ = binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring ```agda binomial-sum-one-element-ℕ : - (f : functional-tuple ℕ 1) → binomial-sum-ℕ 0 f = head-functional-tuple 0 f + (f : fin-sequence ℕ 1) → binomial-sum-ℕ 0 f = head-fin-sequence 0 f binomial-sum-one-element-ℕ = binomial-sum-one-element-Commutative-Semiring ℕ-Commutative-Semiring binomial-sum-two-elements-ℕ : - (f : functional-tuple ℕ 2) → + (f : fin-sequence ℕ 2) → binomial-sum-ℕ 1 f = (f (zero-Fin 1)) +ℕ (f (one-Fin 1)) binomial-sum-two-elements-ℕ = binomial-sum-two-elements-Commutative-Semiring ℕ-Commutative-Semiring @@ -69,7 +69,7 @@ binomial-sum-two-elements-ℕ = ```agda htpy-binomial-sum-ℕ : - (n : ℕ) {f g : functional-tuple ℕ (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence ℕ (succ-ℕ n)} → (f ~ g) → binomial-sum-ℕ n f = binomial-sum-ℕ n g htpy-binomial-sum-ℕ = htpy-binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring @@ -79,13 +79,13 @@ htpy-binomial-sum-ℕ = ```agda left-distributive-mul-binomial-sum-ℕ : - (n : ℕ) (x : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) → + (n : ℕ) (x : ℕ) (f : fin-sequence ℕ (succ-ℕ n)) → x *ℕ (binomial-sum-ℕ n f) = binomial-sum-ℕ n (λ i → x *ℕ (f i)) left-distributive-mul-binomial-sum-ℕ = left-distributive-mul-binomial-sum-Commutative-Semiring ℕ-Commutative-Semiring right-distributive-mul-binomial-sum-ℕ : - (n : ℕ) (f : functional-tuple ℕ (succ-ℕ n)) (x : ℕ) → + (n : ℕ) (f : fin-sequence ℕ (succ-ℕ n)) (x : ℕ) → (binomial-sum-ℕ n f) *ℕ x = binomial-sum-ℕ n (λ i → (f i) *ℕ x) right-distributive-mul-binomial-sum-ℕ = right-distributive-mul-binomial-sum-Commutative-Semiring diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 50f323f9b6..cfaab6478a 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -193,6 +193,7 @@ open import foundation.fibered-equivalences public open import foundation.fibered-involutions public open import foundation.fibered-maps public open import foundation.fibers-of-maps public +open import foundation.finite-sequences-set-quotients public open import foundation.finitely-coherent-equivalences public open import foundation.finitely-coherently-invertible-maps public open import foundation.fixed-points-endofunctions public @@ -444,7 +445,6 @@ open import foundation.truncation-levels public open import foundation.truncation-modalities public open import foundation.truncations public open import foundation.tuples-of-types public -open import foundation.tuples-set-quotients public open import foundation.type-arithmetic-booleans public open import foundation.type-arithmetic-cartesian-product-types public open import foundation.type-arithmetic-coproduct-types public diff --git a/src/foundation/tuples-set-quotients.lagda.md b/src/foundation/finite-sequences-set-quotients.lagda.md similarity index 56% rename from src/foundation/tuples-set-quotients.lagda.md rename to src/foundation/finite-sequences-set-quotients.lagda.md index 6367fb8067..4e9b5cc8fa 100644 --- a/src/foundation/tuples-set-quotients.lagda.md +++ b/src/foundation/finite-sequences-set-quotients.lagda.md @@ -1,9 +1,9 @@ -# Tuples of set quotients +# Finite sequences of set quotients ```agda {-# OPTIONS --lossy-unification #-} -module foundation.tuples-set-quotients where +module foundation.finite-sequences-set-quotients where ```
Imports @@ -38,7 +38,7 @@ open import foundation-core.propositions open import foundation-core.retractions open import foundation-core.sections -open import linear-algebra.tuples +open import linear-algebra.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -47,19 +47,21 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Say we have a family of types `A1`, ..., `An` each equipped with an equivalence -relation `Ri`. Then, the set quotient of a tuple with these types is the tuple -of the set quotients of each `Ai`. +Say we have a [finite sequence](linear-algebra.finite-sequences.md) of types +`A1`, ..., `An` each equipped with an +[equivalence relation](foundation.equivalence-relations.md) `Ri`. Then, the set +quotient of this finite sequence is the finite sequence of the +[set quotients](foundation.set-quotients.md) of each `Ai`. ## Definition -### The induced relation on the tuple of types +### The induced relation on the fin-sequence of types ```agda all-sim-equivalence-relation : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( equivalence-relation l2 (multivariable-input n A)) all-sim-equivalence-relation {l1} {l2} zero-ℕ A R = @@ -67,117 +69,119 @@ all-sim-equivalence-relation {l1} {l2} zero-ℕ A R = all-sim-equivalence-relation (succ-ℕ n) A R = product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) ``` -### The set quotient of a tuple of types +### The set quotient of a fin-sequence of types ```agda -set-quotient-tuple : +set-quotient-fin-sequence : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → UU (l1 ⊔ l2) -set-quotient-tuple n A R = +set-quotient-fin-sequence n A R = multivariable-input n (λ i → ( set-quotient (R i))) -is-set-set-quotient-tuple : +is-set-set-quotient-fin-sequence : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - is-set (set-quotient-tuple n A R) -is-set-set-quotient-tuple zero-ℕ A R = is-set-raise-unit -is-set-set-quotient-tuple (succ-ℕ n) A R = + is-set (set-quotient-fin-sequence n A R) +is-set-set-quotient-fin-sequence zero-ℕ A R = is-set-raise-unit +is-set-set-quotient-fin-sequence (succ-ℕ n) A R = is-set-product ( is-set-set-quotient (R (inr star))) - ( is-set-set-quotient-tuple n - ( tail-functional-tuple n A) + ( is-set-set-quotient-fin-sequence n + ( tail-fin-sequence n A) ( λ x → R (inl x))) -set-quotient-tuple-Set : +set-quotient-fin-sequence-Set : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → Set (l1 ⊔ l2) -pr1 (set-quotient-tuple-Set n A R) = - set-quotient-tuple n A R -pr2 (set-quotient-tuple-Set n A R) = - is-set-set-quotient-tuple n A R +pr1 (set-quotient-fin-sequence-Set n A R) = + set-quotient-fin-sequence n A R +pr2 (set-quotient-fin-sequence-Set n A R) = + is-set-set-quotient-fin-sequence n A R -quotient-tuple-map : +quotient-fin-sequence-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → multivariable-input n A → - set-quotient-tuple n A R -quotient-tuple-map zero-ℕ A R a = raise-star -pr1 (quotient-tuple-map (succ-ℕ n) A R (a0 , a)) = + set-quotient-fin-sequence n A R +quotient-fin-sequence-map zero-ℕ A R a = raise-star +pr1 (quotient-fin-sequence-map (succ-ℕ n) A R (a0 , a)) = quotient-map (R (inr star)) (a0) -pr2 (quotient-tuple-map (succ-ℕ n) A R a) = - quotient-tuple-map n - ( tail-functional-tuple n A) +pr2 (quotient-fin-sequence-map (succ-ℕ n) A R a) = + quotient-fin-sequence-map n + ( tail-fin-sequence n A) ( λ x → R (inl x)) ( tail-multivariable-input n A a) -reflects-quotient-tuple-map : +reflects-quotient-fin-sequence-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → reflects-equivalence-relation ( all-sim-equivalence-relation n A R) - ( quotient-tuple-map n A R) -reflects-quotient-tuple-map zero-ℕ A R p = refl -reflects-quotient-tuple-map (succ-ℕ n) A R (p , p') = + ( quotient-fin-sequence-map n A R) +reflects-quotient-fin-sequence-map zero-ℕ A R p = refl +reflects-quotient-fin-sequence-map (succ-ℕ n) A R (p , p') = eq-pair ( apply-effectiveness-quotient-map' (R (inr star)) p) - ( reflects-quotient-tuple-map n - ( tail-functional-tuple n A) + ( reflects-quotient-fin-sequence-map n + ( tail-fin-sequence n A) ( λ x → R (inl x)) p') -reflecting-map-quotient-tuple-map : +reflecting-map-quotient-fin-sequence-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → reflecting-map-equivalence-relation ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple n A R) -pr1 (reflecting-map-quotient-tuple-map n A R) = - quotient-tuple-map n A R -pr2 (reflecting-map-quotient-tuple-map n A R) = - reflects-quotient-tuple-map n A R + ( set-quotient-fin-sequence n A R) +pr1 (reflecting-map-quotient-fin-sequence-map n A R) = + quotient-fin-sequence-map n A R +pr2 (reflecting-map-quotient-fin-sequence-map n A R) = + reflects-quotient-fin-sequence-map n A R -equiv-set-quotient-tuple : +equiv-set-quotient-fin-sequence : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - set-quotient-tuple n A R ≃ set-quotient (all-sim-equivalence-relation n A R) -pr1 (equiv-set-quotient-tuple zero-ℕ A R) _ = quotient-map _ raise-star -pr1 (pr1 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) _ = raise-star -pr2 (pr1 (pr2 (equiv-set-quotient-tuple {l1} {l2} zero-ℕ A R))) = + set-quotient-fin-sequence n A R ≃ + set-quotient (all-sim-equivalence-relation n A R) +pr1 (equiv-set-quotient-fin-sequence zero-ℕ A R) _ = quotient-map _ raise-star +pr1 (pr1 (pr2 (equiv-set-quotient-fin-sequence zero-ℕ A R))) _ = raise-star +pr2 (pr1 (pr2 (equiv-set-quotient-fin-sequence {l1} {l2} zero-ℕ A R))) = induction-set-quotient ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( λ x → pair _ (is-set-set-quotient _ _ x)) ( λ x → apply-effectiveness-quotient-map' _ raise-star) -pr1 (pr2 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) _ = raise-star -pr2 (pr2 (pr2 (equiv-set-quotient-tuple zero-ℕ A R))) (map-raise star) = refl -equiv-set-quotient-tuple (succ-ℕ n) A R = +pr1 (pr2 (pr2 (equiv-set-quotient-fin-sequence zero-ℕ A R))) _ = raise-star +pr2 (pr2 (pr2 (equiv-set-quotient-fin-sequence zero-ℕ A R))) (map-raise star) = + refl +equiv-set-quotient-fin-sequence (succ-ℕ n) A R = equivalence-reasoning set-quotient (R (inr star)) × - ( set-quotient-tuple n - ( tail-functional-tuple n A) + ( set-quotient-fin-sequence n + ( tail-fin-sequence n A) ( λ x → R (inl x))) ≃ set-quotient (R (inr star)) × ( set-quotient (all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) by lemma ≃ set-quotient (all-sim-equivalence-relation (succ-ℕ n) A R) @@ -185,91 +189,94 @@ equiv-set-quotient-tuple (succ-ℕ n) A R = where lemma : ( set-quotient (R (inr star)) × - ( set-quotient-tuple n - ( tail-functional-tuple n A) + ( set-quotient-fin-sequence n + ( tail-fin-sequence n A) (λ x → R (inl x)))) ≃ ( set-quotient (R (inr star)) × ( set-quotient ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))))) pr1 (pr1 lemma (qa0 , qa)) = qa0 - pr2 (pr1 lemma (qa0 , qa)) = map-equiv (equiv-set-quotient-tuple n _ _) qa + pr2 (pr1 lemma (qa0 , qa)) = + map-equiv (equiv-set-quotient-fin-sequence n _ _) qa pr1 (pr1 (pr1 (pr2 lemma)) (qa0 , qa)) = qa0 pr2 (pr1 (pr1 (pr2 lemma)) (qa0 , qa)) = - map-inv-equiv (equiv-set-quotient-tuple n _ _) qa + map-inv-equiv (equiv-set-quotient-fin-sequence n _ _) qa pr2 (pr1 (pr2 lemma)) (qa0 , qa) = - eq-pair refl (is-section-map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) + eq-pair + ( refl) + ( is-section-map-inv-equiv (equiv-set-quotient-fin-sequence n _ _) qa) pr1 (pr1 (pr2 (pr2 lemma)) (qa0 , qa)) = qa0 pr2 (pr1 (pr2 (pr2 lemma)) (qa0 , qa)) = - map-inv-equiv (equiv-set-quotient-tuple n _ _) qa + map-inv-equiv (equiv-set-quotient-fin-sequence n _ _) qa pr2 (pr2 (pr2 lemma)) (qa0 , qa) = eq-pair ( refl) - ( is-retraction-map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) + ( is-retraction-map-inv-equiv (equiv-set-quotient-fin-sequence n _ _) qa) -map-equiv-equiv-set-quotient-tuple-quotient-map : +map-equiv-equiv-set-quotient-fin-sequence-quotient-map : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → - ( map-equiv (equiv-set-quotient-tuple n A R) ∘ - ( quotient-tuple-map n A R)) ~ + ( map-equiv (equiv-set-quotient-fin-sequence n A R) ∘ + ( quotient-fin-sequence-map n A R)) ~ ( quotient-map (all-sim-equivalence-relation n A R)) -map-equiv-equiv-set-quotient-tuple-quotient-map zero-ℕ A R (map-raise star) = - refl -map-equiv-equiv-set-quotient-tuple-quotient-map (succ-ℕ n) A R (a0 , a) = +map-equiv-equiv-set-quotient-fin-sequence-quotient-map + zero-ℕ A R (map-raise star) = refl +map-equiv-equiv-set-quotient-fin-sequence-quotient-map (succ-ℕ n) A R (a0 , a) = ap ( λ qa → map-equiv ( equiv-quotient-product-product-set-quotient _ _) ( quotient-map (R (inr star)) a0 , qa)) - ( map-equiv-equiv-set-quotient-tuple-quotient-map n - ( tail-functional-tuple n A) + ( map-equiv-equiv-set-quotient-fin-sequence-quotient-map n + ( tail-fin-sequence n A) ( λ x → R (inl x)) a) ∙ ( triangle-uniqueness-product-set-quotient ( R (inr star)) - ( all-sim-equivalence-relation n (λ z → tail-functional-tuple n A z) + ( all-sim-equivalence-relation n (λ z → tail-fin-sequence n A z) ( λ i → R (inl i))) ( a0 , a)) -inv-precomp-tuple-set-quotient : +inv-precomp-fin-sequence-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → (X : Set l) → reflecting-map-equivalence-relation ( all-sim-equivalence-relation n A R) ( type-Set X) → - ((set-quotient-tuple n A R) → type-Set X) -inv-precomp-tuple-set-quotient zero-ℕ A R X f (map-raise star) = + ((set-quotient-fin-sequence n A R) → type-Set X) +inv-precomp-fin-sequence-set-quotient zero-ℕ A R X f (map-raise star) = pr1 f raise-star -inv-precomp-tuple-set-quotient (succ-ℕ n) A R X f (qa0 , qa) = +inv-precomp-fin-sequence-set-quotient (succ-ℕ n) A R X f (qa0 , qa) = inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) ( X) ( f) - ( qa0 , map-equiv (equiv-set-quotient-tuple n _ _) qa) + ( qa0 , map-equiv (equiv-set-quotient-fin-sequence n _ _) qa) abstract - is-section-inv-precomp-tuple-set-quotient : + is-section-inv-precomp-fin-sequence-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) ( X)) ∘ - ( inv-precomp-tuple-set-quotient n A R X) ~ + ( inv-precomp-fin-sequence-set-quotient n A R X) ~ ( id) - is-section-inv-precomp-tuple-set-quotient {l} {l1} {l2} 0 A R X f = + is-section-inv-precomp-fin-sequence-set-quotient {l} {l1} {l2} 0 A R X f = eq-pair-Σ ( eq-htpy (λ where (map-raise star) → refl)) ( eq-is-prop @@ -277,7 +284,7 @@ abstract ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( X) ( map-reflecting-map-equivalence-relation _ f))) - is-section-inv-precomp-tuple-set-quotient (succ-ℕ n) A R X f = + is-section-inv-precomp-fin-sequence-set-quotient (succ-ℕ n) A R X f = eq-pair-Σ ( eq-htpy ( λ (a0 , a) → @@ -285,17 +292,21 @@ abstract ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) X f) ( eq-pair-eq-fiber - ( map-equiv-equiv-set-quotient-tuple-quotient-map n _ _ a)) ∙ + ( map-equiv-equiv-set-quotient-fin-sequence-quotient-map + ( n) + ( _) + ( _) + ( a))) ∙ ( htpy-eq ( ap ( map-reflecting-map-equivalence-relation _) ( is-section-inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) X f)) ( a0 , a))))) ( eq-is-prop @@ -304,110 +315,111 @@ abstract ( X) ( map-reflecting-map-equivalence-relation _ f))) -section-precomp-tuple-set-quotient : +section-precomp-fin-sequence-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( section ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) ( X))) -pr1 (section-precomp-tuple-set-quotient n A R X) = - inv-precomp-tuple-set-quotient n A R X -pr2 (section-precomp-tuple-set-quotient n A R X) = - is-section-inv-precomp-tuple-set-quotient n A R X +pr1 (section-precomp-fin-sequence-set-quotient n A R X) = + inv-precomp-fin-sequence-set-quotient n A R X +pr2 (section-precomp-fin-sequence-set-quotient n A R X) = + is-section-inv-precomp-fin-sequence-set-quotient n A R X abstract - is-retraction-inv-precomp-tuple-set-quotient : + is-retraction-inv-precomp-fin-sequence-set-quotient : { l l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( retraction ( precomp-Set-Quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) ( X))) - pr1 (is-retraction-inv-precomp-tuple-set-quotient n A R X) = - inv-precomp-tuple-set-quotient n A R X - pr2 (is-retraction-inv-precomp-tuple-set-quotient zero-ℕ A R X) f = + pr1 (is-retraction-inv-precomp-fin-sequence-set-quotient n A R X) = + inv-precomp-fin-sequence-set-quotient n A R X + pr2 (is-retraction-inv-precomp-fin-sequence-set-quotient zero-ℕ A R X) f = eq-htpy (λ where (map-raise star) → refl) - pr2 (is-retraction-inv-precomp-tuple-set-quotient (succ-ℕ n) A R X) f = - ap (_∘ set-quotient-tuple-product-set-quotient) + pr2 (is-retraction-inv-precomp-fin-sequence-set-quotient (succ-ℕ n) A R X) f = + ap (_∘ set-quotient-fin-sequence-product-set-quotient) is-inv-map-inv-equiv-f ∙ lemma-f where precomp-f : reflecting-map-equivalence-relation ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) ( type-Set X) precomp-f = precomp-Set-Quotient ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) - ( set-quotient-tuple-Set (succ-ℕ n) A R) - ( reflecting-map-quotient-tuple-map (succ-ℕ n) A R) X f + ( set-quotient-fin-sequence-Set (succ-ℕ n) A R) + ( reflecting-map-quotient-fin-sequence-map (succ-ℕ n) A R) X f - set-quotient-tuple-product-set-quotient : - ( set-quotient-tuple (succ-ℕ n) A R) → + set-quotient-fin-sequence-product-set-quotient : + ( set-quotient-fin-sequence (succ-ℕ n) A R) → ( product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) - set-quotient-tuple-product-set-quotient (qa0' , qa') = - (qa0' , map-equiv (equiv-set-quotient-tuple n _ _) qa') + set-quotient-fin-sequence-product-set-quotient (qa0' , qa') = + (qa0' , map-equiv (equiv-set-quotient-fin-sequence n _ _) qa') map-inv-equiv-f : ( product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) → ( type-Set X) map-inv-equiv-f (qa0 , qa) = - f (qa0 , map-inv-equiv (equiv-set-quotient-tuple n _ _) qa) + f (qa0 , map-inv-equiv (equiv-set-quotient-fin-sequence n _ _) qa) - lemma-f : (map-inv-equiv-f ∘ set-quotient-tuple-product-set-quotient) = f + lemma-f : + (map-inv-equiv-f ∘ set-quotient-fin-sequence-product-set-quotient) = f lemma-f = eq-htpy ( λ (qa0 , qa) → ( ap f ( eq-pair-eq-fiber ( is-retraction-map-inv-equiv - ( equiv-set-quotient-tuple n _ _) + ( equiv-set-quotient-fin-sequence n _ _) ( qa))))) is-retraction-inv-precomp-f : ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) ( X) ( precomp-Set-Quotient ( product-equivalence-relation (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) ( product-set-quotient-Set ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) ( reflecting-map-product-quotient-map (R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x)))) ( X) ( map-inv-equiv-f))) = @@ -416,7 +428,7 @@ abstract is-retraction-inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) ( X) ( map-inv-equiv-f) @@ -425,7 +437,7 @@ abstract ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) ( all-sim-equivalence-relation n - ( tail-functional-tuple n A) + ( tail-fin-sequence n A) ( λ x → R (inl x))) ( X) ( precomp-f)) = @@ -434,17 +446,17 @@ abstract ap ( inv-precomp-set-quotient-product-set-quotient ( R (inr star)) - ( all-sim-equivalence-relation n (tail-functional-tuple n A) + ( all-sim-equivalence-relation n (tail-fin-sequence n A) ( λ x → R (inl x))) ( X)) ( eq-pair-Σ - ( ap ( _∘ quotient-tuple-map _ A R) (inv lemma-f) ∙ + ( ap ( _∘ quotient-fin-sequence-map _ A R) (inv lemma-f) ∙ ( ap ( map-inv-equiv-f ∘_) ( eq-htpy ( λ (a0 , a) → ( eq-pair-eq-fiber - ( map-equiv-equiv-set-quotient-tuple-quotient-map + ( map-equiv-equiv-set-quotient-fin-sequence-quotient-map _ _ _ a)))))) ( eq-is-prop ( is-prop-reflects-equivalence-relation @@ -454,17 +466,17 @@ abstract ( X) _))) ∙ is-retraction-inv-precomp-f -is-set-quotient-tuple-set-quotient : +is-set-quotient-fin-sequence-set-quotient : { l1 l2 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) → is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) -pr1 (is-set-quotient-tuple-set-quotient n A R X) = - section-precomp-tuple-set-quotient n A R X -pr2 (is-set-quotient-tuple-set-quotient n A R X) = - is-retraction-inv-precomp-tuple-set-quotient n A R X + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) +pr1 (is-set-quotient-fin-sequence-set-quotient n A R X) = + section-precomp-fin-sequence-set-quotient n A R X +pr2 (is-set-quotient-fin-sequence-set-quotient n A R X) = + is-retraction-inv-precomp-fin-sequence-set-quotient n A R X ``` diff --git a/src/foundation/iterated-cartesian-product-types.lagda.md b/src/foundation/iterated-cartesian-product-types.lagda.md index 288c7dee63..e51230c990 100644 --- a/src/foundation/iterated-cartesian-product-types.lagda.md +++ b/src/foundation/iterated-cartesian-product-types.lagda.md @@ -114,7 +114,7 @@ equiv-iterated-product-Fin-recursive-lists : {l : Level} (l : list (UU l)) → iterated-product-Fin-recursive ( length-array (array-list l)) - ( functional-tuple-array (array-list l)) ≃ + ( fin-sequence-array (array-list l)) ≃ iterated-product-lists l equiv-iterated-product-Fin-recursive-lists nil = id-equiv equiv-iterated-product-Fin-recursive-lists (cons x l) = @@ -194,17 +194,17 @@ equiv-permutation-iterated-product-lists L t = ( equiv-iterated-product-Fin-recursive-lists L ∘e ( ( equiv-permutation-iterated-product-Fin-recursive ( length-list L) - ( functional-tuple-array (array-list L)) + ( fin-sequence-array (array-list L)) ( t)) ∘e ( equiv-eq ( ap ( λ p → iterated-product-Fin-recursive ( length-array p) - ( functional-tuple-array p)) + ( fin-sequence-array p)) ( is-retraction-array-list ( length-list L , - ( functional-tuple-array (array-list L) ∘ map-equiv t)))) ∘e + ( fin-sequence-array (array-list L) ∘ map-equiv t)))) ∘e ( inv-equiv ( equiv-iterated-product-Fin-recursive-lists (permute-list L t)))))) diff --git a/src/foundation/multivariable-functoriality-set-quotients.lagda.md b/src/foundation/multivariable-functoriality-set-quotients.lagda.md index a2d1ea55b8..eb11ff3864 100644 --- a/src/foundation/multivariable-functoriality-set-quotients.lagda.md +++ b/src/foundation/multivariable-functoriality-set-quotients.lagda.md @@ -9,16 +9,16 @@ module foundation.multivariable-functoriality-set-quotients where ```agda open import elementary-number-theory.natural-numbers +open import foundation.finite-sequences-set-quotients open import foundation.functoriality-set-quotients open import foundation.set-quotients -open import foundation.tuples-set-quotients open import foundation.universe-levels open import foundation-core.equivalence-relations open import foundation-core.function-types open import foundation-core.homotopies -open import linear-algebra.tuples +open import linear-algebra.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -27,11 +27,12 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Say we have a family of types `A1`, ..., `An` each equipped with an equivalence -relation `Ri`, as well as a type `X` equipped with an equivalence relation `S`, -Then, any multivariable operation from the `Ai`s to the `X` that respects the -equivalence relations extends uniquely to a multivariable operation from the -`Ai/Ri`s to `X/S`. +Say we have a [finite sequence](linear-algebra.finite-sequences.md) of types +`A1`, ..., `An` each equipped with an +[equivalence relation](foundation.equivalence-relations.md) `Ri`, as well as a +type `X` equipped with an equivalence relation `S`, Then, any multivariable +operation from the `Ai`s to the `X` that respects the equivalence relations +extends uniquely to a multivariable operation from the `Ai/Ri`s to `X/S`. ## Definition @@ -41,39 +42,39 @@ equivalence relations extends uniquely to a multivariable operation from the module _ { l1 l2 l3 l4 : Level} ( n : ℕ) - ( A : functional-tuple (UU l1) n) + ( A : fin-sequence (UU l1) n) ( R : (i : Fin n) → equivalence-relation l2 (A i)) { X : UU l3} (S : equivalence-relation l4 X) where multivariable-map-set-quotient : ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → - set-quotient-tuple n A R → set-quotient S + set-quotient-fin-sequence n A R → set-quotient S multivariable-map-set-quotient = map-is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) ( S) ( quotient-Set S) ( reflecting-map-quotient-map S) - ( is-set-quotient-tuple-set-quotient n A R) + ( is-set-quotient-fin-sequence-set-quotient n A R) ( is-set-quotient-set-quotient S) compute-multivariable-map-set-quotient : ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → ( multivariable-map-set-quotient h ∘ - quotient-tuple-map n A R) ~ + quotient-fin-sequence-map n A R) ~ ( quotient-map S ∘ map-hom-equivalence-relation (all-sim-equivalence-relation n A R) S h) compute-multivariable-map-set-quotient = coherence-square-map-is-set-quotient ( all-sim-equivalence-relation n A R) - ( set-quotient-tuple-Set n A R) - ( reflecting-map-quotient-tuple-map n A R) + ( set-quotient-fin-sequence-Set n A R) + ( reflecting-map-quotient-fin-sequence-map n A R) ( S) ( quotient-Set S) ( reflecting-map-quotient-map S) - ( is-set-quotient-tuple-set-quotient n A R) + ( is-set-quotient-fin-sequence-set-quotient n A R) ( is-set-quotient-set-quotient S) ``` diff --git a/src/foundation/multivariable-operations.lagda.md b/src/foundation/multivariable-operations.lagda.md index 1a967dfc61..602dcebb13 100644 --- a/src/foundation/multivariable-operations.lagda.md +++ b/src/foundation/multivariable-operations.lagda.md @@ -23,6 +23,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types +open import linear-algebra.finite-sequences open import linear-algebra.tuples ``` @@ -40,49 +41,49 @@ takes as inputs one element of each type, and returns an element in some type multivariable-input : {l : Level} (n : ℕ) - (A : functional-tuple (UU l) n) → + (A : fin-sequence (UU l) n) → UU l multivariable-input zero-ℕ A = raise-unit _ multivariable-input (succ-ℕ n) A = - A (inr star) × multivariable-input n (tail-functional-tuple n A) + A (inr star) × multivariable-input n (tail-fin-sequence n A) empty-multivariable-input : {l : Level} - (A : functional-tuple (UU l) 0) → + (A : fin-sequence (UU l) 0) → multivariable-input 0 A empty-multivariable-input A = raise-star head-multivariable-input : {l : Level} (n : ℕ) - (A : functional-tuple (UU l) (succ-ℕ n)) → + (A : fin-sequence (UU l) (succ-ℕ n)) → multivariable-input (succ-ℕ n) A → - head-functional-tuple n A + head-fin-sequence n A head-multivariable-input n A (a0 , a) = a0 tail-multivariable-input : {l : Level} (n : ℕ) - (A : functional-tuple (UU l) (succ-ℕ n)) → + (A : fin-sequence (UU l) (succ-ℕ n)) → multivariable-input (succ-ℕ n) A → - multivariable-input n (tail-functional-tuple n A) + multivariable-input n (tail-fin-sequence n A) tail-multivariable-input n A (a0 , a) = a cons-multivariable-input : {l : Level} (n : ℕ) - (A : functional-tuple (UU l) n) → + (A : fin-sequence (UU l) n) → {A0 : UU l} → A0 → multivariable-input n A → - multivariable-input (succ-ℕ n) (cons-functional-tuple n A0 A) + multivariable-input (succ-ℕ n) (cons-fin-sequence n A0 A) pr1 (cons-multivariable-input n A a0 a) = a0 pr2 (cons-multivariable-input n A a0 a) = a multivariable-operation : { l : Level} ( n : ℕ) - ( A : functional-tuple (UU l) n) + ( A : fin-sequence (UU l) n) ( X : UU l) → UU l multivariable-operation n A X = diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index 0edb9b3f3d..555a6c902e 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -8,8 +8,17 @@ module linear-algebra where open import linear-algebra.constant-matrices public open import linear-algebra.constant-tuples public open import linear-algebra.diagonal-matrices-on-rings public +open import linear-algebra.equivalence-tuples-finite-sequences public +open import linear-algebra.finite-sequences public +open import linear-algebra.finite-sequences-on-commutative-rings public +open import linear-algebra.finite-sequences-on-commutative-semirings public +open import linear-algebra.finite-sequences-on-euclidean-domains public +open import linear-algebra.finite-sequences-on-rings public +open import linear-algebra.finite-sequences-on-semirings public +open import linear-algebra.functoriality-finite-sequences public open import linear-algebra.functoriality-matrices public open import linear-algebra.functoriality-tuples public +open import linear-algebra.functoriality-tuples-finite-sequences public open import linear-algebra.matrices public open import linear-algebra.matrices-on-rings public open import linear-algebra.multiplication-matrices public diff --git a/src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md b/src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md new file mode 100644 index 0000000000..4f0c44b0b1 --- /dev/null +++ b/src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md @@ -0,0 +1,110 @@ +# The equivalence between tuples and finite sequences + +```agda +module linear-algebra.equivalence-tuples-finite-sequences where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-functions +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.unit-type +open import foundation.universe-levels + +open import linear-algebra.finite-sequences +open import linear-algebra.tuples +``` + +
+ +### The types of listed tuples and functional tuples are equivalent + +```agda +module _ + {l : Level} {A : UU l} + where + + tuple-fin-sequence : (n : ℕ) → fin-sequence A n → tuple A n + tuple-fin-sequence zero-ℕ v = empty-tuple + tuple-fin-sequence (succ-ℕ n) v = + head-fin-sequence n v ∷ + tuple-fin-sequence n (tail-fin-sequence n v) + + fin-sequence-tuple : (n : ℕ) → tuple A n → fin-sequence A n + fin-sequence-tuple zero-ℕ v = empty-fin-sequence + fin-sequence-tuple (succ-ℕ n) (a ∷ v) = + cons-fin-sequence n a (fin-sequence-tuple n v) + + is-section-fin-sequence-tuple : + (n : ℕ) → (tuple-fin-sequence n ∘ fin-sequence-tuple n) ~ id + is-section-fin-sequence-tuple .zero-ℕ empty-tuple = refl + is-section-fin-sequence-tuple .(succ-ℕ _) (a ∷ v) = + ap (λ u → a ∷ u) (is-section-fin-sequence-tuple _ v) + + abstract + is-retraction-fin-sequence-tuple : + (n : ℕ) → + (fin-sequence-tuple n ∘ tuple-fin-sequence n) ~ id + is-retraction-fin-sequence-tuple zero-ℕ v = eq-htpy (λ ()) + is-retraction-fin-sequence-tuple (succ-ℕ n) v = + eq-htpy + ( λ where + ( inl x) → + htpy-eq + ( is-retraction-fin-sequence-tuple + ( n) + ( tail-fin-sequence n v)) + ( x) + ( inr star) → refl) + + is-equiv-tuple-fin-sequence : + (n : ℕ) → is-equiv (tuple-fin-sequence n) + is-equiv-tuple-fin-sequence n = + is-equiv-is-invertible + ( fin-sequence-tuple n) + ( is-section-fin-sequence-tuple n) + ( is-retraction-fin-sequence-tuple n) + + is-equiv-fin-sequence-tuple : + (n : ℕ) → is-equiv (fin-sequence-tuple n) + is-equiv-fin-sequence-tuple n = + is-equiv-is-invertible + ( tuple-fin-sequence n) + ( is-retraction-fin-sequence-tuple n) + ( is-section-fin-sequence-tuple n) + + compute-tuple : (n : ℕ) → fin-sequence A n ≃ tuple A n + pr1 (compute-tuple n) = tuple-fin-sequence n + pr2 (compute-tuple n) = is-equiv-tuple-fin-sequence n +``` + +### Characterizing the elementhood predicate + +```agda + is-in-fin-sequence-is-in-tuple : + (n : ℕ) (v : tuple A n) (x : A) → + (x ∈-tuple v) → (in-fin-sequence n x (fin-sequence-tuple n v)) + is-in-fin-sequence-is-in-tuple (succ-ℕ n) (y ∷ l) x (is-head .x l) = + (inr star) , refl + is-in-fin-sequence-is-in-tuple + (succ-ℕ n) (y ∷ l) x (is-in-tail .x x₁ l I) = + inl (pr1 (is-in-fin-sequence-is-in-tuple n l x I)) , + pr2 (is-in-fin-sequence-is-in-tuple n l x I) + + is-in-tuple-is-in-fin-sequence : + (n : ℕ) (v : tuple A n) (x : A) → + (in-fin-sequence n x (fin-sequence-tuple n v)) → (x ∈-tuple v) + is-in-tuple-is-in-fin-sequence (succ-ℕ n) (y ∷ v) x (inl k , p) = + is-in-tail x y v (is-in-tuple-is-in-fin-sequence n v x (k , p)) + is-in-tuple-is-in-fin-sequence (succ-ℕ n) (y ∷ v) _ (inr k , refl) = + is-head (fin-sequence-tuple (succ-ℕ n) (y ∷ v) (inr k)) v +``` diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md new file mode 100644 index 0000000000..00040b3bdf --- /dev/null +++ b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md @@ -0,0 +1,225 @@ +# Finite sequences on commutative rings + +```agda +module linear-algebra.finite-sequences-on-commutative-rings where +``` + +
Imports + +```agda +open import commutative-algebra.commutative-rings + +open import elementary-number-theory.natural-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.commutative-monoids +open import group-theory.groups +open import group-theory.monoids +open import group-theory.semigroups + +open import linear-algebra.finite-sequences-on-rings +``` + +
+ +## Idea + +Finite sequences on a +[commutative ring](commutative-algebra.commutative-rings.md) `R` are +[finite sequences](linear-algebra.finite-sequences.md) on the underlying type of +`R`. + +## Definitions + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + fin-sequence-Commutative-Ring : ℕ → UU l + fin-sequence-Commutative-Ring = + fin-sequence-Ring (ring-Commutative-Ring R) + + head-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence-Commutative-Ring (succ-ℕ n) → + type-Commutative-Ring R + head-fin-sequence-Commutative-Ring = + head-fin-sequence-Ring (ring-Commutative-Ring R) + + tail-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence-Commutative-Ring (succ-ℕ n) → + fin-sequence-Commutative-Ring n + tail-fin-sequence-Commutative-Ring = + tail-fin-sequence-Ring (ring-Commutative-Ring R) + + cons-fin-sequence-Commutative-Ring : + (n : ℕ) → type-Commutative-Ring R → + fin-sequence-Commutative-Ring n → + fin-sequence-Commutative-Ring (succ-ℕ n) + cons-fin-sequence-Commutative-Ring = + cons-fin-sequence-Ring (ring-Commutative-Ring R) + + snoc-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence-Commutative-Ring n → + type-Commutative-Ring R → fin-sequence-Commutative-Ring (succ-ℕ n) + snoc-fin-sequence-Commutative-Ring = + snoc-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Zero finite sequence on a commutative ring + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + zero-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence-Commutative-Ring R n + zero-fin-sequence-Commutative-Ring n i = zero-Commutative-Ring R +``` + +### Pointwise addition on a commutative ring + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + add-fin-sequence-Commutative-Ring : + (n : ℕ) (v w : fin-sequence-Commutative-Ring R n) → + fin-sequence-Commutative-Ring R n + add-fin-sequence-Commutative-Ring = + add-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Pointwise negation on a commutative ring + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + neg-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence-Commutative-Ring R n → + fin-sequence-Commutative-Ring R n + neg-fin-sequence-Commutative-Ring = + neg-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +## Properties of pointwise addition + +### Associativity + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + associative-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v1 v2 v3 : fin-sequence-Commutative-Ring R n) → + ( add-fin-sequence-Commutative-Ring R n + ( add-fin-sequence-Commutative-Ring R n v1 v2) v3) = + ( add-fin-sequence-Commutative-Ring R n v1 + ( add-fin-sequence-Commutative-Ring R n v2 v3)) + associative-add-fin-sequence-Commutative-Ring = + associative-add-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Unit laws + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + left-unit-law-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → + add-fin-sequence-Commutative-Ring R n + ( zero-fin-sequence-Commutative-Ring R n) v = v + left-unit-law-add-fin-sequence-Commutative-Ring = + left-unit-law-add-fin-sequence-Ring (ring-Commutative-Ring R) + + right-unit-law-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → + add-fin-sequence-Commutative-Ring R n v + ( zero-fin-sequence-Commutative-Ring R n) = v + right-unit-law-add-fin-sequence-Commutative-Ring = + right-unit-law-add-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Commutativity + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + commutative-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v w : fin-sequence-Commutative-Ring R n) → + add-fin-sequence-Commutative-Ring R n v w = + add-fin-sequence-Commutative-Ring R n w v + commutative-add-fin-sequence-Commutative-Ring = + commutative-add-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Inverse laws + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + left-inverse-law-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → + add-fin-sequence-Commutative-Ring + ( R) + ( n) + ( neg-fin-sequence-Commutative-Ring R n v) + ( v) = + zero-fin-sequence-Commutative-Ring R n + left-inverse-law-add-fin-sequence-Commutative-Ring = + left-inverse-law-add-fin-sequence-Ring (ring-Commutative-Ring R) + + right-inverse-law-add-fin-sequence-Commutative-Ring : + (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → + add-fin-sequence-Commutative-Ring + ( R) + ( n) + ( v) + ( neg-fin-sequence-Commutative-Ring R n v) = + zero-fin-sequence-Commutative-Ring R n + right-inverse-law-add-fin-sequence-Commutative-Ring = + right-inverse-law-add-fin-sequence-Ring (ring-Commutative-Ring R) +``` + +### Abelian group of pointwise addition + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + fin-sequence-Commutative-Ring-Semigroup : ℕ → Semigroup l + fin-sequence-Commutative-Ring-Semigroup = + fin-sequence-Ring-Semigroup (ring-Commutative-Ring R) + + fin-sequence-Commutative-Ring-Monoid : ℕ → Monoid l + fin-sequence-Commutative-Ring-Monoid = + fin-sequence-Ring-Monoid (ring-Commutative-Ring R) + + fin-sequence-Commutative-Ring-Commutative-Monoid : + ℕ → Commutative-Monoid l + fin-sequence-Commutative-Ring-Commutative-Monoid = + fin-sequence-Ring-Commutative-Monoid (ring-Commutative-Ring R) + + fin-sequence-Commutative-Ring-Group : ℕ → Group l + fin-sequence-Commutative-Ring-Group = + fin-sequence-Ring-Group (ring-Commutative-Ring R) + + fin-sequence-Commutative-Ring-Ab : ℕ → Ab l + fin-sequence-Commutative-Ring-Ab = + fin-sequence-Ring-Ab (ring-Commutative-Ring R) +``` diff --git a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md new file mode 100644 index 0000000000..5c6e5d34da --- /dev/null +++ b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md @@ -0,0 +1,175 @@ +# Finite sequences on commutative semirings + +```agda +module linear-algebra.finite-sequences-on-commutative-semirings where +``` + +
Imports + +```agda +open import commutative-algebra.commutative-semirings + +open import elementary-number-theory.natural-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import linear-algebra.finite-sequences-on-semirings +``` + +
+ +## Idea + +Finite sequences on a +[commutative semiring](commutative-algebra.commutative-semirings.md) `R` are +[finite sequences](linear-algebra.finite-sequences.md) on the underlying type of +`R`. + +## Definitions + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + fin-sequence-Commutative-Semiring : ℕ → UU l + fin-sequence-Commutative-Semiring = + fin-sequence-Semiring (semiring-Commutative-Semiring R) + + head-fin-sequence-Commutative-Semiring : + (n : ℕ) → fin-sequence-Commutative-Semiring (succ-ℕ n) → + type-Commutative-Semiring R + head-fin-sequence-Commutative-Semiring = + head-fin-sequence-Semiring (semiring-Commutative-Semiring R) + + tail-fin-sequence-Commutative-Semiring : + (n : ℕ) → fin-sequence-Commutative-Semiring (succ-ℕ n) → + fin-sequence-Commutative-Semiring n + tail-fin-sequence-Commutative-Semiring = + tail-fin-sequence-Semiring (semiring-Commutative-Semiring R) + + cons-fin-sequence-Commutative-Semiring : + (n : ℕ) → type-Commutative-Semiring R → + fin-sequence-Commutative-Semiring n → + fin-sequence-Commutative-Semiring (succ-ℕ n) + cons-fin-sequence-Commutative-Semiring = + cons-fin-sequence-Semiring (semiring-Commutative-Semiring R) + + snoc-fin-sequence-Commutative-Semiring : + (n : ℕ) → fin-sequence-Commutative-Semiring n → + type-Commutative-Semiring R → + fin-sequence-Commutative-Semiring (succ-ℕ n) + snoc-fin-sequence-Commutative-Semiring = + snoc-fin-sequence-Semiring (semiring-Commutative-Semiring R) +``` + +### Zero finite sequence on a commutative semiring + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + zero-fin-sequence-Commutative-Semiring : + (n : ℕ) → fin-sequence-Commutative-Semiring R n + zero-fin-sequence-Commutative-Semiring n i = zero-Commutative-Semiring R +``` + +#### Pointwise addition of finite sequences on a commutative semiring + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + add-fin-sequence-Commutative-Semiring : + (n : ℕ) (v w : fin-sequence-Commutative-Semiring R n) → + fin-sequence-Commutative-Semiring R n + add-fin-sequence-Commutative-Semiring = + add-fin-sequence-Semiring (semiring-Commutative-Semiring R) +``` + +## Properties of pointwise addition + +### Associativity + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + associative-add-fin-sequence-Commutative-Semiring : + (n : ℕ) (v1 v2 v3 : fin-sequence-Commutative-Semiring R n) → + ( add-fin-sequence-Commutative-Semiring R n + ( add-fin-sequence-Commutative-Semiring R n v1 v2) v3) = + ( add-fin-sequence-Commutative-Semiring R n v1 + ( add-fin-sequence-Commutative-Semiring R n v2 v3)) + associative-add-fin-sequence-Commutative-Semiring = + associative-add-fin-sequence-Semiring (semiring-Commutative-Semiring R) +``` + +### Unit laws + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + left-unit-law-add-fin-sequence-Commutative-Semiring : + (n : ℕ) (v : fin-sequence-Commutative-Semiring R n) → + add-fin-sequence-Commutative-Semiring R n + ( zero-fin-sequence-Commutative-Semiring R n) v = v + left-unit-law-add-fin-sequence-Commutative-Semiring = + left-unit-law-add-fin-sequence-Semiring + ( semiring-Commutative-Semiring R) + + right-unit-law-add-fin-sequence-Commutative-Semiring : + (n : ℕ) (v : fin-sequence-Commutative-Semiring R n) → + add-fin-sequence-Commutative-Semiring R n v + ( zero-fin-sequence-Commutative-Semiring R n) = v + right-unit-law-add-fin-sequence-Commutative-Semiring = + right-unit-law-add-fin-sequence-Semiring + ( semiring-Commutative-Semiring R) +``` + +### Commutativity + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + commutative-add-fin-sequence-Commutative-Semiring : + (n : ℕ) (v w : fin-sequence-Commutative-Semiring R n) → + add-fin-sequence-Commutative-Semiring R n v w = + add-fin-sequence-Commutative-Semiring R n w v + commutative-add-fin-sequence-Commutative-Semiring = + commutative-add-fin-sequence-Semiring (semiring-Commutative-Semiring R) +``` + +### The commutative monoid of pointwise addition + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + fin-sequence-Commutative-Semiring-Semigroup : ℕ → Semigroup l + fin-sequence-Commutative-Semiring-Semigroup = + fin-sequence-Semiring-Semigroup (semiring-Commutative-Semiring R) + + fin-sequence-Commutative-Semiring-Monoid : ℕ → Monoid l + fin-sequence-Commutative-Semiring-Monoid = + fin-sequence-Semiring-Monoid (semiring-Commutative-Semiring R) + + fin-sequence-Commutative-Semiring-Commutative-Monoid : + ℕ → Commutative-Monoid l + fin-sequence-Commutative-Semiring-Commutative-Monoid = + fin-sequence-Semiring-Commutative-Monoid + ( semiring-Commutative-Semiring R) +``` diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md new file mode 100644 index 0000000000..01b0704666 --- /dev/null +++ b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md @@ -0,0 +1,247 @@ +# Finite sequences on euclidean domains + +```agda +module linear-algebra.finite-sequences-on-euclidean-domains where +``` + +
Imports + +```agda +open import commutative-algebra.euclidean-domains + +open import elementary-number-theory.natural-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.commutative-monoids +open import group-theory.groups +open import group-theory.monoids +open import group-theory.semigroups + +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-commutative-rings +open import linear-algebra.functoriality-finite-sequences +``` + +
+ +## Idea + +Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the +type `fin-sequence n R` of +`R`-[finite sequences](linear-algebra.finite-sequences.md) is an `R`-module. + +## Definitions + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + fin-sequence-Euclidean-Domain : ℕ → UU l + fin-sequence-Euclidean-Domain = fin-sequence (type-Euclidean-Domain R) + + head-fin-sequence-Euclidean-Domain : + (n : ℕ) → + fin-sequence-Euclidean-Domain (succ-ℕ n) → + type-Euclidean-Domain R + head-fin-sequence-Euclidean-Domain n v = head-fin-sequence n v + + tail-fin-sequence-Euclidean-Domain : + (n : ℕ) → + fin-sequence-Euclidean-Domain (succ-ℕ n) → + fin-sequence-Euclidean-Domain n + tail-fin-sequence-Euclidean-Domain = tail-fin-sequence + + cons-fin-sequence-Euclidean-Domain : + (n : ℕ) → type-Euclidean-Domain R → + fin-sequence-Euclidean-Domain n → + fin-sequence-Euclidean-Domain (succ-ℕ n) + cons-fin-sequence-Euclidean-Domain = cons-fin-sequence + + snoc-fin-sequence-Euclidean-Domain : + (n : ℕ) → fin-sequence-Euclidean-Domain n → type-Euclidean-Domain R → + fin-sequence-Euclidean-Domain (succ-ℕ n) + snoc-fin-sequence-Euclidean-Domain = snoc-fin-sequence +``` + +### Zero finite sequences on a euclidean domain + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + zero-fin-sequence-Euclidean-Domain : + (n : ℕ) → fin-sequence-Euclidean-Domain R n + zero-fin-sequence-Euclidean-Domain n i = zero-Euclidean-Domain R +``` + +### Pointwise addition of finite sequences on a euclidean domain + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v w : fin-sequence-Euclidean-Domain R n) → + fin-sequence-Euclidean-Domain R n + add-fin-sequence-Euclidean-Domain n = + binary-map-fin-sequence n (add-Euclidean-Domain R) +``` + +### Pointwise negation of finite sequences on a euclidean domain + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + neg-fin-sequence-Euclidean-Domain : + (n : ℕ) → fin-sequence-Euclidean-Domain R n → + fin-sequence-Euclidean-Domain R n + neg-fin-sequence-Euclidean-Domain = + neg-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +## Properties of pointwise addition + +### Associativity + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + associative-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v1 v2 v3 : fin-sequence-Euclidean-Domain R n) → + ( add-fin-sequence-Euclidean-Domain + ( R) + ( n) + ( add-fin-sequence-Euclidean-Domain R n v1 v2) + ( v3)) = + ( add-fin-sequence-Euclidean-Domain + ( R) + ( n) + ( v1) + ( add-fin-sequence-Euclidean-Domain R n v2 v3)) + associative-add-fin-sequence-Euclidean-Domain = + associative-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +### Unit laws + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + left-unit-law-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + ( add-fin-sequence-Euclidean-Domain + ( R) + ( n) + ( zero-fin-sequence-Euclidean-Domain R n) + ( v)) = + ( v) + left-unit-law-add-fin-sequence-Euclidean-Domain = + left-unit-law-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) + + right-unit-law-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + ( add-fin-sequence-Euclidean-Domain + ( R) + ( n) + ( v) + ( zero-fin-sequence-Euclidean-Domain R n)) = + ( v) + right-unit-law-add-fin-sequence-Euclidean-Domain = + right-unit-law-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +### Commutativity + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + commutative-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v w : fin-sequence-Euclidean-Domain R n) → + add-fin-sequence-Euclidean-Domain R n v w = + add-fin-sequence-Euclidean-Domain R n w v + commutative-add-fin-sequence-Euclidean-Domain = + commutative-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +### Inverse laws + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + left-inverse-law-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + Id + ( add-fin-sequence-Euclidean-Domain + R n ( neg-fin-sequence-Euclidean-Domain R n v) v) + ( zero-fin-sequence-Euclidean-Domain R n) + left-inverse-law-add-fin-sequence-Euclidean-Domain = + left-inverse-law-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) + + right-inverse-law-add-fin-sequence-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + Id + ( add-fin-sequence-Euclidean-Domain + ( R) + ( n) + ( v) + ( neg-fin-sequence-Euclidean-Domain R n v)) + ( zero-fin-sequence-Euclidean-Domain R n) + right-inverse-law-add-fin-sequence-Euclidean-Domain = + right-inverse-law-add-fin-sequence-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +### Abelian group of pointwise addition + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + fin-sequence-Euclidean-Domain-Semigroup : ℕ → Semigroup l + fin-sequence-Euclidean-Domain-Semigroup = + fin-sequence-Commutative-Ring-Semigroup + ( commutative-ring-Euclidean-Domain R) + + fin-sequence-Euclidean-Domain-Monoid : ℕ → Monoid l + fin-sequence-Euclidean-Domain-Monoid = + fin-sequence-Commutative-Ring-Monoid + ( commutative-ring-Euclidean-Domain R) + + fin-sequence-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l + fin-sequence-Euclidean-Domain-Commutative-Monoid = + fin-sequence-Commutative-Ring-Commutative-Monoid + ( commutative-ring-Euclidean-Domain R) + + fin-sequence-Euclidean-Domain-Group : ℕ → Group l + fin-sequence-Euclidean-Domain-Group = + fin-sequence-Commutative-Ring-Group + ( commutative-ring-Euclidean-Domain R) + + fin-sequence-Euclidean-Domain-Ab : ℕ → Ab l + fin-sequence-Euclidean-Domain-Ab = + fin-sequence-Commutative-Ring-Ab + ( commutative-ring-Euclidean-Domain R) +``` diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md new file mode 100644 index 0000000000..9c88744141 --- /dev/null +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -0,0 +1,216 @@ +# Finite sequences on rings + +```agda +module linear-algebra.finite-sequences-on-rings where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-binary-functions +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.unital-binary-operations +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.commutative-monoids +open import group-theory.groups +open import group-theory.monoids +open import group-theory.semigroups + +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-semirings +open import linear-algebra.functoriality-finite-sequences + +open import ring-theory.rings +``` + +
+ +## Idea + +Given a [ring](ring-theory.rings.md) `R`, the type `fin-sequence n R` of +`R`-[finite sequences](linear-algebra.finite-sequences.md) is an +[Abelian group](group-theory.abelian-groups.md). + +## Definitions + +```agda +module _ + {l : Level} (R : Ring l) + where + + fin-sequence-Ring : ℕ → UU l + fin-sequence-Ring = fin-sequence (type-Ring R) + + head-fin-sequence-Ring : + (n : ℕ) → fin-sequence-Ring (succ-ℕ n) → type-Ring R + head-fin-sequence-Ring n v = head-fin-sequence n v + + tail-fin-sequence-Ring : + (n : ℕ) → fin-sequence-Ring (succ-ℕ n) → fin-sequence-Ring n + tail-fin-sequence-Ring = tail-fin-sequence + + cons-fin-sequence-Ring : + (n : ℕ) → type-Ring R → + fin-sequence-Ring n → fin-sequence-Ring (succ-ℕ n) + cons-fin-sequence-Ring = cons-fin-sequence + + snoc-fin-sequence-Ring : + (n : ℕ) → fin-sequence-Ring n → type-Ring R → + fin-sequence-Ring (succ-ℕ n) + snoc-fin-sequence-Ring = snoc-fin-sequence +``` + +### Zero finite sequence on a ring + +```agda +module _ + {l : Level} (R : Ring l) + where + + zero-fin-sequence-Ring : (n : ℕ) → fin-sequence-Ring R n + zero-fin-sequence-Ring n i = zero-Ring R +``` + +### Pointwise addition of finite sequences on a ring + +```agda +module _ + {l : Level} (R : Ring l) + where + + add-fin-sequence-Ring : + (n : ℕ) (v w : fin-sequence-Ring R n) → fin-sequence-Ring R n + add-fin-sequence-Ring n = binary-map-fin-sequence n (add-Ring R) +``` + +### Pointwise negation of finite sequences on a ring + +```agda +module _ + {l : Level} (R : Ring l) + where + + neg-fin-sequence-Ring : + (n : ℕ) (v : fin-sequence-Ring R n) → fin-sequence-Ring R n + neg-fin-sequence-Ring n = map-fin-sequence n (neg-Ring R) +``` + +## Properties of pointwise addition + +### Associativity + +```agda +module _ + {l : Level} (R : Ring l) + where + + associative-add-fin-sequence-Ring : + (n : ℕ) (v1 v2 v3 : fin-sequence-Ring R n) → + ( add-fin-sequence-Ring R n (add-fin-sequence-Ring R n v1 v2) v3) = + ( add-fin-sequence-Ring R n v1 (add-fin-sequence-Ring R n v2 v3)) + associative-add-fin-sequence-Ring = + associative-add-fin-sequence-Semiring (semiring-Ring R) +``` + +### Unit laws + +```agda +module _ + {l : Level} (R : Ring l) + where + + left-unit-law-add-fin-sequence-Ring : + (n : ℕ) (v : fin-sequence-Ring R n) → + add-fin-sequence-Ring R n (zero-fin-sequence-Ring R n) v = v + left-unit-law-add-fin-sequence-Ring = + left-unit-law-add-fin-sequence-Semiring (semiring-Ring R) + + right-unit-law-add-fin-sequence-Ring : + (n : ℕ) (v : fin-sequence-Ring R n) → + add-fin-sequence-Ring R n v (zero-fin-sequence-Ring R n) = v + right-unit-law-add-fin-sequence-Ring = + right-unit-law-add-fin-sequence-Semiring (semiring-Ring R) +``` + +### Commutativity + +```agda +module _ + {l : Level} (R : Ring l) + where + + commutative-add-fin-sequence-Ring : + (n : ℕ) (v w : fin-sequence-Ring R n) → + add-fin-sequence-Ring R n v w = add-fin-sequence-Ring R n w v + commutative-add-fin-sequence-Ring = + commutative-add-fin-sequence-Semiring (semiring-Ring R) +``` + +### Inverse laws + +```agda +module _ + {l : Level} (R : Ring l) + where + + left-inverse-law-add-fin-sequence-Ring : + (n : ℕ) (v : fin-sequence-Ring R n) → + add-fin-sequence-Ring R n (neg-fin-sequence-Ring R n v) v = + zero-fin-sequence-Ring R n + left-inverse-law-add-fin-sequence-Ring n v = + eq-htpy (λ i → left-inverse-law-add-Ring R _) + + right-inverse-law-add-fin-sequence-Ring : + (n : ℕ) (v : fin-sequence-Ring R n) → + add-fin-sequence-Ring R n v (neg-fin-sequence-Ring R n v) = + zero-fin-sequence-Ring R n + right-inverse-law-add-fin-sequence-Ring n v = + eq-htpy (λ i → right-inverse-law-add-Ring R _) +``` + +### Abelian group of pointwise addition + +```agda +module _ + {l : Level} (R : Ring l) + where + + fin-sequence-Ring-Semigroup : ℕ → Semigroup l + fin-sequence-Ring-Semigroup = + fin-sequence-Semiring-Semigroup (semiring-Ring R) + + fin-sequence-Ring-Monoid : ℕ → Monoid l + fin-sequence-Ring-Monoid = + fin-sequence-Semiring-Monoid (semiring-Ring R) + + fin-sequence-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + fin-sequence-Ring-Commutative-Monoid = + fin-sequence-Semiring-Commutative-Monoid (semiring-Ring R) + + is-unital-fin-sequence-Ring : + (n : ℕ) → is-unital (add-fin-sequence-Ring R n) + is-unital-fin-sequence-Ring n = is-unital-Monoid (fin-sequence-Ring-Monoid n) + + is-group-fin-sequence-Ring : + (n : ℕ) → is-group-Semigroup (fin-sequence-Ring-Semigroup n) + pr1 (is-group-fin-sequence-Ring n) = is-unital-fin-sequence-Ring n + pr1 (pr2 (is-group-fin-sequence-Ring n)) = neg-fin-sequence-Ring R n + pr1 (pr2 (pr2 (is-group-fin-sequence-Ring n))) = + left-inverse-law-add-fin-sequence-Ring R n + pr2 (pr2 (pr2 (is-group-fin-sequence-Ring n))) = + right-inverse-law-add-fin-sequence-Ring R n + + fin-sequence-Ring-Group : ℕ → Group l + pr1 (fin-sequence-Ring-Group n) = fin-sequence-Ring-Semigroup n + pr2 (fin-sequence-Ring-Group n) = is-group-fin-sequence-Ring n + + fin-sequence-Ring-Ab : ℕ → Ab l + pr1 (fin-sequence-Ring-Ab n) = fin-sequence-Ring-Group n + pr2 (fin-sequence-Ring-Ab n) = commutative-add-fin-sequence-Ring R n +``` diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-semirings.lagda.md new file mode 100644 index 0000000000..a623e33d06 --- /dev/null +++ b/src/linear-algebra/finite-sequences-on-semirings.lagda.md @@ -0,0 +1,177 @@ +# Finite sequences on semirings + +```agda +module linear-algebra.finite-sequences-on-semirings where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import linear-algebra.finite-sequences +open import linear-algebra.functoriality-finite-sequences + +open import ring-theory.semirings +``` + +
+ +## Idea + +Given a [semiring](ring-theory.semirings.md) `R`, the type +`finite-sequence-Semiring R n` of +`R`-[finite sequences](linear-algebra.finite-sequences.md) is a +[commutative monoid](group-theory.commutative-monoids.md) under addition. + +## Definitions + +```agda +module _ + {l : Level} (R : Semiring l) + where + + fin-sequence-Semiring : ℕ → UU l + fin-sequence-Semiring = fin-sequence (type-Semiring R) + + head-fin-sequence-Semiring : + (n : ℕ) → fin-sequence-Semiring (succ-ℕ n) → type-Semiring R + head-fin-sequence-Semiring n v = head-fin-sequence n v + + tail-fin-sequence-Semiring : + (n : ℕ) → fin-sequence-Semiring (succ-ℕ n) → fin-sequence-Semiring n + tail-fin-sequence-Semiring = tail-fin-sequence + + cons-fin-sequence-Semiring : + (n : ℕ) → type-Semiring R → + fin-sequence-Semiring n → fin-sequence-Semiring (succ-ℕ n) + cons-fin-sequence-Semiring = cons-fin-sequence + + snoc-fin-sequence-Semiring : + (n : ℕ) → fin-sequence-Semiring n → type-Semiring R → + fin-sequence-Semiring (succ-ℕ n) + snoc-fin-sequence-Semiring = snoc-fin-sequence +``` + +### Zero finite sequence on a ring + +```agda +module _ + {l : Level} (R : Semiring l) + where + + zero-fin-sequence-Semiring : (n : ℕ) → fin-sequence-Semiring R n + zero-fin-sequence-Semiring n i = zero-Semiring R +``` + +### Pointwise addition on a ring + +```agda +module _ + {l : Level} (R : Semiring l) + where + + add-fin-sequence-Semiring : + (n : ℕ) (v w : fin-sequence-Semiring R n) → + fin-sequence-Semiring R n + add-fin-sequence-Semiring n = + binary-map-fin-sequence n (add-Semiring R) +``` + +## Properties + +### Associativity of pointwise addition + +```agda +module _ + {l : Level} (R : Semiring l) + where + + associative-add-fin-sequence-Semiring : + (n : ℕ) (v1 v2 v3 : fin-sequence-Semiring R n) → + ( add-fin-sequence-Semiring R + ( n) + ( add-fin-sequence-Semiring R n v1 v2) + ( v3)) = + ( add-fin-sequence-Semiring R + ( n) + ( v1) + ( add-fin-sequence-Semiring R n v2 v3)) + associative-add-fin-sequence-Semiring n v1 v2 v3 = + eq-htpy (λ i → associative-add-Semiring R (v1 i) (v2 i) (v3 i)) +``` + +### Unit laws of pointwise addition + +```agda +module _ + {l : Level} (R : Semiring l) + where + + left-unit-law-add-fin-sequence-Semiring : + (n : ℕ) (v : fin-sequence-Semiring R n) → + add-fin-sequence-Semiring R n (zero-fin-sequence-Semiring R n) v = v + left-unit-law-add-fin-sequence-Semiring n v = + eq-htpy (λ i → left-unit-law-add-Semiring R (v i)) + + right-unit-law-add-fin-sequence-Semiring : + (n : ℕ) (v : fin-sequence-Semiring R n) → + add-fin-sequence-Semiring R n v (zero-fin-sequence-Semiring R n) = v + right-unit-law-add-fin-sequence-Semiring n v = + eq-htpy (λ i → right-unit-law-add-Semiring R (v i)) +``` + +### Commutativity of pointwise addition + +```agda +module _ + {l : Level} (R : Semiring l) + where + + commutative-add-fin-sequence-Semiring : + (n : ℕ) (v w : fin-sequence-Semiring R n) → + add-fin-sequence-Semiring R n v w = add-fin-sequence-Semiring R n w v + commutative-add-fin-sequence-Semiring n v w = + eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) +``` + +### Commutative monoid of pointwise addition + +```agda +module _ + {l : Level} (R : Semiring l) + where + + fin-sequence-Semiring-Semigroup : ℕ → Semigroup l + pr1 (fin-sequence-Semiring-Semigroup n) = + fin-sequence-Set (set-Semiring R) n + pr1 (pr2 (fin-sequence-Semiring-Semigroup n)) = + add-fin-sequence-Semiring R n + pr2 (pr2 (fin-sequence-Semiring-Semigroup n)) = + associative-add-fin-sequence-Semiring R n + + fin-sequence-Semiring-Monoid : ℕ → Monoid l + pr1 (fin-sequence-Semiring-Monoid n) = + fin-sequence-Semiring-Semigroup n + pr1 (pr2 (fin-sequence-Semiring-Monoid n)) = + zero-fin-sequence-Semiring R n + pr1 (pr2 (pr2 (fin-sequence-Semiring-Monoid n))) = + left-unit-law-add-fin-sequence-Semiring R n + pr2 (pr2 (pr2 (fin-sequence-Semiring-Monoid n))) = + right-unit-law-add-fin-sequence-Semiring R n + + fin-sequence-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (fin-sequence-Semiring-Commutative-Monoid n) = + fin-sequence-Semiring-Monoid n + pr2 (fin-sequence-Semiring-Commutative-Monoid n) = + commutative-add-fin-sequence-Semiring R n +``` diff --git a/src/linear-algebra/finite-sequences.lagda.md b/src/linear-algebra/finite-sequences.lagda.md new file mode 100644 index 0000000000..28b2ef1477 --- /dev/null +++ b/src/linear-algebra/finite-sequences.lagda.md @@ -0,0 +1,140 @@ +# Finite sequences + +```agda +module linear-algebra.finite-sequences where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.sets +open import foundation.truncated-types +open import foundation.truncation-levels +open import foundation.unit-type +open import foundation.universe-levels + +open import univalent-combinatorics.involution-standard-finite-types +open import univalent-combinatorics.standard-finite-types +``` + +
+ +## Idea + +A {{#concept "finite sequence" Agda=fin-sequence}} of length `n` is a map from +the [standard finite type](univalent-combinatorics.standard-finite-types.md) of +cardinality `n`, `Fin n`, to `A`. + +## Definition + +```agda +fin-sequence : {l : Level} → UU l → ℕ → UU l +fin-sequence A n = Fin n → A + +module _ + {l : Level} {A : UU l} + where + + empty-fin-sequence : fin-sequence A 0 + empty-fin-sequence () + + head-fin-sequence : (n : ℕ) → fin-sequence A (succ-ℕ n) → A + head-fin-sequence n v = v (inr star) + + tail-fin-sequence : + (n : ℕ) → fin-sequence A (succ-ℕ n) → fin-sequence A n + tail-fin-sequence n v = v ∘ (inl-Fin n) + + cons-fin-sequence : + (n : ℕ) → A → fin-sequence A n → fin-sequence A (succ-ℕ n) + cons-fin-sequence n a v (inl x) = v x + cons-fin-sequence n a v (inr x) = a + + snoc-fin-sequence : + (n : ℕ) → fin-sequence A n → A → fin-sequence A (succ-ℕ n) + snoc-fin-sequence zero-ℕ v a i = a + snoc-fin-sequence (succ-ℕ n) v a (inl x) = + snoc-fin-sequence n (tail-fin-sequence n v) a x + snoc-fin-sequence (succ-ℕ n) v a (inr x) = head-fin-sequence n v + + revert-fin-sequence : + (n : ℕ) → fin-sequence A n → fin-sequence A n + revert-fin-sequence n v i = v (opposite-Fin n i) + + in-fin-sequence : (n : ℕ) → A → fin-sequence A n → UU l + in-fin-sequence n a v = Σ (Fin n) (λ k → a = v k) + + index-in-fin-sequence : + (n : ℕ) (x : A) (v : fin-sequence A n) → + in-fin-sequence n x v → Fin n + index-in-fin-sequence n x v I = pr1 I + + eq-component-fin-sequence-index-in-fin-sequence : + (n : ℕ) (x : A) (v : fin-sequence A n) (I : in-fin-sequence n x v) → + x = v (index-in-fin-sequence n x v I) + eq-component-fin-sequence-index-in-fin-sequence n x v I = pr2 I +``` + +## Properties + +### The type of finite sequences of elements in a truncated type is truncated + +```agda +module _ + {l : Level} {A : UU l} + where + + is-trunc-fin-sequence : + (k : 𝕋) (n : ℕ) → is-trunc k A → is-trunc k (fin-sequence A n) + is-trunc-fin-sequence k n H = is-trunc-function-type k H +``` + +### The type of finite sequences of elements in a set is a set + +```agda +module _ + {l : Level} {A : UU l} + where + + is-set-fin-sequence : (n : ℕ) → is-set A → is-set (fin-sequence A n) + is-set-fin-sequence = is-trunc-fin-sequence zero-𝕋 + +fin-sequence-Set : {l : Level} → Set l → ℕ → Set l +pr1 (fin-sequence-Set A n) = fin-sequence (type-Set A) n +pr2 (fin-sequence-Set A n) = is-set-fin-sequence n (is-set-type-Set A) +``` + +### Adding the tail to the head gives the same functional tuple + +```agda +module _ + {l : Level} {A : UU l} + where + htpy-cons-head-tail-fin-sequence : + ( n : ℕ) → + ( v : fin-sequence A (succ-ℕ n)) → + ( cons-fin-sequence n + ( head-fin-sequence n v) + ( tail-fin-sequence n v)) ~ + ( v) + htpy-cons-head-tail-fin-sequence n v (inl x) = refl + htpy-cons-head-tail-fin-sequence n v (inr star) = refl + + cons-head-tail-fin-sequence : + ( n : ℕ) → + ( v : fin-sequence A (succ-ℕ n)) → + ( cons-fin-sequence n + ( head-fin-sequence n v) + ( tail-fin-sequence n v)) = + ( v) + cons-head-tail-fin-sequence n v = + eq-htpy (htpy-cons-head-tail-fin-sequence n v) +``` diff --git a/src/linear-algebra/functoriality-finite-sequences.lagda.md b/src/linear-algebra/functoriality-finite-sequences.lagda.md new file mode 100644 index 0000000000..933520004c --- /dev/null +++ b/src/linear-algebra/functoriality-finite-sequences.lagda.md @@ -0,0 +1,65 @@ +# Functoriality of the type of finite sequences + +```agda +module linear-algebra.functoriality-finite-sequences where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-binary-functions +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.postcomposition-functions +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition + +open import linear-algebra.finite-sequences + +open import univalent-combinatorics.standard-finite-types +``` + +
+ +## Idea + +Any map `f : A → B` determines a map between +[finite sequences](linear-algebra.finite-sequences.md) +`fin-sequence A n → fin-sequence B n` for every `n`. + +## Definition + +### Functoriality of the type of finite sequences + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + where + + map-fin-sequence : + (n : ℕ) → (A → B) → fin-sequence A n → fin-sequence B n + map-fin-sequence n f v = f ∘ v + + htpy-fin-sequence : + (n : ℕ) {f g : A → B} → (f ~ g) → + map-fin-sequence n f ~ map-fin-sequence n g + htpy-fin-sequence n = htpy-postcomp (Fin n) +``` + +### Binary functoriality of the type of finite sequences + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + where + + binary-map-fin-sequence : + (n : ℕ) → (A → B → C) → + fin-sequence A n → fin-sequence B n → fin-sequence C n + binary-map-fin-sequence n f v w i = f (v i) (w i) +``` diff --git a/src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md b/src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md new file mode 100644 index 0000000000..9285e15604 --- /dev/null +++ b/src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md @@ -0,0 +1,73 @@ +# Relationship between functoriality of tuples and finite sequences + +```agda +module linear-algebra.functoriality-tuples-finite-sequences where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-binary-functions +open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.postcomposition-functions +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition + +open import linear-algebra.equivalence-tuples-finite-sequences +open import linear-algebra.finite-sequences +open import linear-algebra.functoriality-finite-sequences +open import linear-algebra.functoriality-tuples +open import linear-algebra.tuples + +open import univalent-combinatorics.standard-finite-types +``` + +
+ +## Idea + +Mapping a function over a [tuple](linear-algebra.tuples.md) is equivalent to +mapping the same function over the +[corresponding](linear-algebra.equivalence-tuples-finite-sequences.md) +[finite sequence](linear-algebra.finite-sequences.md) + +## Proof + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + (f : A → B) + where + + map-tuple-map-fin-sequence : + (n : ℕ) (v : tuple A n) → + tuple-fin-sequence + ( n) + ( map-fin-sequence n f (fin-sequence-tuple n v)) = + map-tuple f v + map-tuple-map-fin-sequence zero-ℕ empty-tuple = refl + map-tuple-map-fin-sequence (succ-ℕ n) (x ∷ v) = + eq-Eq-tuple + ( succ-ℕ n) + ( tuple-fin-sequence + ( succ-ℕ n) + ( map-fin-sequence + ( succ-ℕ n) + ( f) + ( fin-sequence-tuple (succ-ℕ n) (x ∷ v)))) + ( map-tuple f (x ∷ v)) + ( refl , + Eq-eq-tuple + ( n) + ( tuple-fin-sequence + ( n) + ( map-fin-sequence n f (fin-sequence-tuple n v))) + ( map-tuple f v) + ( map-tuple-map-fin-sequence n v)) +``` diff --git a/src/linear-algebra/functoriality-tuples.lagda.md b/src/linear-algebra/functoriality-tuples.lagda.md index 104c3540fb..c6dbae49d5 100644 --- a/src/linear-algebra/functoriality-tuples.lagda.md +++ b/src/linear-algebra/functoriality-tuples.lagda.md @@ -33,7 +33,7 @@ Any map `f : A → B` determines a map between [tuples](linear-algebra.tuples.md ## Definition -### Functoriality of the type of listed tuples +### Functoriality of the type of tuples ```agda module _ @@ -62,68 +62,3 @@ module _ binary-map-tuple f empty-tuple empty-tuple = empty-tuple binary-map-tuple f (x ∷ v) (y ∷ w) = f x y ∷ binary-map-tuple f v w ``` - -### Functoriality of the type of functional tuples - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} - where - - map-functional-tuple : - (n : ℕ) → (A → B) → functional-tuple A n → functional-tuple B n - map-functional-tuple n f v = f ∘ v - - htpy-functional-tuple : - (n : ℕ) {f g : A → B} → (f ~ g) → - map-functional-tuple n f ~ map-functional-tuple n g - htpy-functional-tuple n = htpy-postcomp (Fin n) -``` - -### Binary functoriality of the type of functional tuples - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - where - - binary-map-functional-tuple : - (n : ℕ) → (A → B → C) → - functional-tuple A n → functional-tuple B n → functional-tuple C n - binary-map-functional-tuple n f v w i = f (v i) (w i) -``` - -### Link between functoriality of the type of tuples and of the type of functional tuples - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} - (f : A → B) - where - - map-tuple-map-functional-tuple : - (n : ℕ) (v : tuple A n) → - listed-tuple-functional-tuple - ( n) - ( map-functional-tuple n f (functional-tuple-tuple n v)) = - map-tuple f v - map-tuple-map-functional-tuple zero-ℕ empty-tuple = refl - map-tuple-map-functional-tuple (succ-ℕ n) (x ∷ v) = - eq-Eq-tuple - ( succ-ℕ n) - ( listed-tuple-functional-tuple - ( succ-ℕ n) - ( map-functional-tuple - ( succ-ℕ n) - ( f) - ( functional-tuple-tuple (succ-ℕ n) (x ∷ v)))) - ( map-tuple f (x ∷ v)) - ( refl , - Eq-eq-tuple - ( n) - ( listed-tuple-functional-tuple - ( n) - ( map-functional-tuple n f (functional-tuple-tuple n v))) - ( map-tuple f v) - ( map-tuple-map-functional-tuple n v)) -``` diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index 35e76317e9..fe0a12c648 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -14,7 +14,9 @@ open import elementary-number-theory.natural-numbers open import foundation.identity-types open import foundation.universe-levels +open import group-theory.abelian-groups open import group-theory.commutative-monoids +open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups @@ -33,8 +35,6 @@ tuples on `R`. ## Definitions -### Listed tuples on commutative rings - ```agda module _ {l : Level} (R : Commutative-Ring l) @@ -57,174 +57,144 @@ module _ snoc-tuple-Commutative-Ring = snoc-tuple-Ring (ring-Commutative-Ring R) ``` -### Functional tuples on commutative rings +### Zero tuple on a commutative ring ```agda module _ {l : Level} (R : Commutative-Ring l) where - functional-tuple-Commutative-Ring : ℕ → UU l - functional-tuple-Commutative-Ring = - functional-tuple-Ring (ring-Commutative-Ring R) - - head-functional-tuple-Commutative-Ring : - (n : ℕ) → functional-tuple-Commutative-Ring (succ-ℕ n) → - type-Commutative-Ring R - head-functional-tuple-Commutative-Ring = - head-functional-tuple-Ring (ring-Commutative-Ring R) - - tail-functional-tuple-Commutative-Ring : - (n : ℕ) → functional-tuple-Commutative-Ring (succ-ℕ n) → - functional-tuple-Commutative-Ring n - tail-functional-tuple-Commutative-Ring = - tail-functional-tuple-Ring (ring-Commutative-Ring R) - - cons-functional-tuple-Commutative-Ring : - (n : ℕ) → type-Commutative-Ring R → - functional-tuple-Commutative-Ring n → - functional-tuple-Commutative-Ring (succ-ℕ n) - cons-functional-tuple-Commutative-Ring = - cons-functional-tuple-Ring (ring-Commutative-Ring R) - - snoc-functional-tuple-Commutative-Ring : - (n : ℕ) → functional-tuple-Commutative-Ring n → - type-Commutative-Ring R → functional-tuple-Commutative-Ring (succ-ℕ n) - snoc-functional-tuple-Commutative-Ring = - snoc-functional-tuple-Ring (ring-Commutative-Ring R) + zero-tuple-Commutative-Ring : {n : ℕ} → tuple-Commutative-Ring R n + zero-tuple-Commutative-Ring = constant-tuple (zero-Commutative-Ring R) ``` -### Zero tuple on a commutative ring - -#### The zero listed tuple +### Pointwise addition of tuples on a commutative ring ```agda module _ {l : Level} (R : Commutative-Ring l) where - zero-tuple-Commutative-Ring : {n : ℕ} → tuple-Commutative-Ring R n - zero-tuple-Commutative-Ring = constant-tuple (zero-Commutative-Ring R) + add-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring R n → tuple-Commutative-Ring R n → + tuple-Commutative-Ring R n + add-tuple-Commutative-Ring = + add-tuple-Ring (ring-Commutative-Ring R) ``` -#### The zero functional tuple +### Pointwise negation of tuples on a commutative ring ```agda module _ {l : Level} (R : Commutative-Ring l) where - zero-functional-tuple-Commutative-Ring : - (n : ℕ) → functional-tuple-Commutative-Ring R n - zero-functional-tuple-Commutative-Ring n i = zero-Commutative-Ring R + neg-tuple-Commutative-Ring : + {n : ℕ} → tuple-Commutative-Ring R n → tuple-Commutative-Ring R n + neg-tuple-Commutative-Ring = neg-tuple-Ring (ring-Commutative-Ring R) ``` -### Pointwise addition of tuples on a commutative ring +## Properties of pointwise addition -#### Pointwise addition of listed tuples on a commutative ring +### Associativity ```agda module _ {l : Level} (R : Commutative-Ring l) where - add-tuple-Commutative-Ring : - {n : ℕ} → tuple-Commutative-Ring R n → tuple-Commutative-Ring R n → - tuple-Commutative-Ring R n - add-tuple-Commutative-Ring = - add-tuple-Ring (ring-Commutative-Ring R) - associative-add-tuple-Commutative-Ring : {n : ℕ} (v1 v2 v3 : tuple-Commutative-Ring R n) → - add-tuple-Commutative-Ring (add-tuple-Commutative-Ring v1 v2) v3 = - add-tuple-Commutative-Ring v1 (add-tuple-Commutative-Ring v2 v3) + add-tuple-Commutative-Ring R (add-tuple-Commutative-Ring R v1 v2) v3 = + add-tuple-Commutative-Ring R v1 (add-tuple-Commutative-Ring R v2 v3) associative-add-tuple-Commutative-Ring = associative-add-tuple-Ring (ring-Commutative-Ring R) +``` - tuple-Commutative-Ring-Semigroup : ℕ → Semigroup l - tuple-Commutative-Ring-Semigroup = - tuple-Ring-Semigroup (ring-Commutative-Ring R) +### Unit laws + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where left-unit-law-add-tuple-Commutative-Ring : {n : ℕ} (v : tuple-Commutative-Ring R n) → - add-tuple-Commutative-Ring (zero-tuple-Commutative-Ring R) v = v + add-tuple-Commutative-Ring R (zero-tuple-Commutative-Ring R) v = v left-unit-law-add-tuple-Commutative-Ring = left-unit-law-add-tuple-Ring (ring-Commutative-Ring R) right-unit-law-add-tuple-Commutative-Ring : {n : ℕ} (v : tuple-Commutative-Ring R n) → - add-tuple-Commutative-Ring v (zero-tuple-Commutative-Ring R) = v + add-tuple-Commutative-Ring R v (zero-tuple-Commutative-Ring R) = v right-unit-law-add-tuple-Commutative-Ring = right-unit-law-add-tuple-Ring (ring-Commutative-Ring R) +``` - tuple-Commutative-Ring-Monoid : ℕ → Monoid l - tuple-Commutative-Ring-Monoid = - tuple-Ring-Monoid (ring-Commutative-Ring R) +### Commutativity + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where commutative-add-tuple-Commutative-Ring : {n : ℕ} (v w : tuple-Commutative-Ring R n) → - add-tuple-Commutative-Ring v w = add-tuple-Commutative-Ring w v + add-tuple-Commutative-Ring R v w = add-tuple-Commutative-Ring R w v commutative-add-tuple-Commutative-Ring = commutative-add-tuple-Ring (ring-Commutative-Ring R) +``` - tuple-Commutative-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - tuple-Commutative-Ring-Commutative-Monoid = - tuple-Ring-Commutative-Monoid (ring-Commutative-Ring R) +### Inverse laws + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + left-inverse-law-add-tuple-Commutative-Ring : + {n : ℕ} (v : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring + ( R) + ( neg-tuple-Commutative-Ring R v) + ( v) = + zero-tuple-Commutative-Ring R + left-inverse-law-add-tuple-Commutative-Ring = + left-inverse-law-add-tuple-Ring (ring-Commutative-Ring R) + + right-inverse-law-add-tuple-Commutative-Ring : + {n : ℕ} (v : tuple-Commutative-Ring R n) → + add-tuple-Commutative-Ring + ( R) + ( v) + ( neg-tuple-Commutative-Ring R v) = + zero-tuple-Commutative-Ring R + right-inverse-law-add-tuple-Commutative-Ring = + right-inverse-law-add-tuple-Ring (ring-Commutative-Ring R) ``` -#### Pointwise addition of functional tuples on a commutative ring +### The Abelian group of pointwise addition ```agda module _ {l : Level} (R : Commutative-Ring l) where - add-functional-tuple-Commutative-Ring : - (n : ℕ) (v w : functional-tuple-Commutative-Ring R n) → - functional-tuple-Commutative-Ring R n - add-functional-tuple-Commutative-Ring = - add-functional-tuple-Ring (ring-Commutative-Ring R) - - associative-add-functional-tuple-Commutative-Ring : - (n : ℕ) (v1 v2 v3 : functional-tuple-Commutative-Ring R n) → - ( add-functional-tuple-Commutative-Ring n - ( add-functional-tuple-Commutative-Ring n v1 v2) v3) = - ( add-functional-tuple-Commutative-Ring n v1 - ( add-functional-tuple-Commutative-Ring n v2 v3)) - associative-add-functional-tuple-Commutative-Ring = - associative-add-functional-tuple-Ring (ring-Commutative-Ring R) - - functional-tuple-Commutative-Ring-Semigroup : ℕ → Semigroup l - functional-tuple-Commutative-Ring-Semigroup = - functional-tuple-Ring-Semigroup (ring-Commutative-Ring R) - - left-unit-law-add-functional-tuple-Commutative-Ring : - (n : ℕ) (v : functional-tuple-Commutative-Ring R n) → - add-functional-tuple-Commutative-Ring n - ( zero-functional-tuple-Commutative-Ring R n) v = v - left-unit-law-add-functional-tuple-Commutative-Ring = - left-unit-law-add-functional-tuple-Ring (ring-Commutative-Ring R) - - right-unit-law-add-functional-tuple-Commutative-Ring : - (n : ℕ) (v : functional-tuple-Commutative-Ring R n) → - add-functional-tuple-Commutative-Ring n v - ( zero-functional-tuple-Commutative-Ring R n) = v - right-unit-law-add-functional-tuple-Commutative-Ring = - right-unit-law-add-functional-tuple-Ring (ring-Commutative-Ring R) - - functional-tuple-Commutative-Ring-Monoid : ℕ → Monoid l - functional-tuple-Commutative-Ring-Monoid = - functional-tuple-Ring-Monoid (ring-Commutative-Ring R) - - commutative-add-functional-tuple-Commutative-Ring : - (n : ℕ) (v w : functional-tuple-Commutative-Ring R n) → - add-functional-tuple-Commutative-Ring n v w = - add-functional-tuple-Commutative-Ring n w v - commutative-add-functional-tuple-Commutative-Ring = - commutative-add-functional-tuple-Ring (ring-Commutative-Ring R) - - functional-tuple-Commutative-Ring-Commutative-Monoid : - ℕ → Commutative-Monoid l - functional-tuple-Commutative-Ring-Commutative-Monoid = - functional-tuple-Ring-Commutative-Monoid (ring-Commutative-Ring R) + tuple-Commutative-Ring-Semigroup : ℕ → Semigroup l + tuple-Commutative-Ring-Semigroup = + tuple-Ring-Semigroup (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Monoid : ℕ → Monoid l + tuple-Commutative-Ring-Monoid = + tuple-Ring-Monoid (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Commutative-Ring-Commutative-Monoid = + tuple-Ring-Commutative-Monoid (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Group : ℕ → Group l + tuple-Commutative-Ring-Group = tuple-Ring-Group (ring-Commutative-Ring R) + + tuple-Commutative-Ring-Ab : ℕ → Ab l + tuple-Commutative-Ring-Ab = tuple-Ring-Ab (ring-Commutative-Ring R) ``` diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index a042930001..610eb95a7c 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -33,8 +33,6 @@ tuples on `R`. ## Definitions -### Listed tuples on commutative semirings - ```agda module _ {l : Level} (R : Commutative-Semiring l) @@ -63,48 +61,8 @@ module _ snoc-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Functional tuples on commutative semirings - -```agda -module _ - {l : Level} (R : Commutative-Semiring l) - where - - functional-tuple-Commutative-Semiring : ℕ → UU l - functional-tuple-Commutative-Semiring = - functional-tuple-Semiring (semiring-Commutative-Semiring R) - - head-functional-tuple-Commutative-Semiring : - (n : ℕ) → functional-tuple-Commutative-Semiring (succ-ℕ n) → - type-Commutative-Semiring R - head-functional-tuple-Commutative-Semiring = - head-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - tail-functional-tuple-Commutative-Semiring : - (n : ℕ) → functional-tuple-Commutative-Semiring (succ-ℕ n) → - functional-tuple-Commutative-Semiring n - tail-functional-tuple-Commutative-Semiring = - tail-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - cons-functional-tuple-Commutative-Semiring : - (n : ℕ) → type-Commutative-Semiring R → - functional-tuple-Commutative-Semiring n → - functional-tuple-Commutative-Semiring (succ-ℕ n) - cons-functional-tuple-Commutative-Semiring = - cons-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - snoc-functional-tuple-Commutative-Semiring : - (n : ℕ) → functional-tuple-Commutative-Semiring n → - type-Commutative-Semiring R → - functional-tuple-Commutative-Semiring (succ-ℕ n) - snoc-functional-tuple-Commutative-Semiring = - snoc-functional-tuple-Semiring (semiring-Commutative-Semiring R) -``` - ### Zero tuple on a commutative semiring -#### The zero listed tuple - ```agda module _ {l : Level} (R : Commutative-Semiring l) @@ -114,127 +72,88 @@ module _ zero-tuple-Commutative-Semiring = constant-tuple (zero-Commutative-Semiring R) ``` -#### The zero functional tuple +### Pointwise addition of tuples on a commutative semiring ```agda module _ {l : Level} (R : Commutative-Semiring l) where - zero-functional-tuple-Commutative-Semiring : - (n : ℕ) → functional-tuple-Commutative-Semiring R n - zero-functional-tuple-Commutative-Semiring n i = zero-Commutative-Semiring R + add-tuple-Commutative-Semiring : + {n : ℕ} → tuple-Commutative-Semiring R n → tuple-Commutative-Semiring R n → + tuple-Commutative-Semiring R n + add-tuple-Commutative-Semiring = + add-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Pointwise addition of tuples on a commutative semiring +## Properties of pointwise addition -#### Pointwise addition of listed tuples on a commutative semiring +### Associativity ```agda module _ {l : Level} (R : Commutative-Semiring l) where - add-tuple-Commutative-Semiring : - {n : ℕ} → tuple-Commutative-Semiring R n → tuple-Commutative-Semiring R n → - tuple-Commutative-Semiring R n - add-tuple-Commutative-Semiring = - add-tuple-Semiring (semiring-Commutative-Semiring R) - associative-add-tuple-Commutative-Semiring : {n : ℕ} (v1 v2 v3 : tuple-Commutative-Semiring R n) → - add-tuple-Commutative-Semiring (add-tuple-Commutative-Semiring v1 v2) v3 = - add-tuple-Commutative-Semiring v1 (add-tuple-Commutative-Semiring v2 v3) + add-tuple-Commutative-Semiring + R (add-tuple-Commutative-Semiring R v1 v2) v3 = + add-tuple-Commutative-Semiring R v1 (add-tuple-Commutative-Semiring R v2 v3) associative-add-tuple-Commutative-Semiring = associative-add-tuple-Semiring (semiring-Commutative-Semiring R) +``` - tuple-Commutative-Semiring-Semigroup : ℕ → Semigroup l - tuple-Commutative-Semiring-Semigroup = - tuple-Semiring-Semigroup (semiring-Commutative-Semiring R) +### Unit laws + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where left-unit-law-add-tuple-Commutative-Semiring : {n : ℕ} (v : tuple-Commutative-Semiring R n) → - add-tuple-Commutative-Semiring (zero-tuple-Commutative-Semiring R) v = v + add-tuple-Commutative-Semiring R (zero-tuple-Commutative-Semiring R) v = v left-unit-law-add-tuple-Commutative-Semiring = left-unit-law-add-tuple-Semiring (semiring-Commutative-Semiring R) right-unit-law-add-tuple-Commutative-Semiring : {n : ℕ} (v : tuple-Commutative-Semiring R n) → - add-tuple-Commutative-Semiring v (zero-tuple-Commutative-Semiring R) = v + add-tuple-Commutative-Semiring R v (zero-tuple-Commutative-Semiring R) = v right-unit-law-add-tuple-Commutative-Semiring = right-unit-law-add-tuple-Semiring (semiring-Commutative-Semiring R) +``` - tuple-Commutative-Semiring-Monoid : ℕ → Monoid l - tuple-Commutative-Semiring-Monoid = - tuple-Semiring-Monoid (semiring-Commutative-Semiring R) +### Commutativity + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where commutative-add-tuple-Commutative-Semiring : {n : ℕ} (v w : tuple-Commutative-Semiring R n) → - add-tuple-Commutative-Semiring v w = add-tuple-Commutative-Semiring w v + add-tuple-Commutative-Semiring R v w = add-tuple-Commutative-Semiring R w v commutative-add-tuple-Commutative-Semiring = commutative-add-tuple-Semiring (semiring-Commutative-Semiring R) - - tuple-Commutative-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - tuple-Commutative-Semiring-Commutative-Monoid = - tuple-Semiring-Commutative-Monoid (semiring-Commutative-Semiring R) ``` -#### Pointwise addition of functional tuples on a commutative semiring +### The commutative monoid of pointwise addition ```agda module _ {l : Level} (R : Commutative-Semiring l) where - add-functional-tuple-Commutative-Semiring : - (n : ℕ) (v w : functional-tuple-Commutative-Semiring R n) → - functional-tuple-Commutative-Semiring R n - add-functional-tuple-Commutative-Semiring = - add-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - associative-add-functional-tuple-Commutative-Semiring : - (n : ℕ) (v1 v2 v3 : functional-tuple-Commutative-Semiring R n) → - ( add-functional-tuple-Commutative-Semiring n - ( add-functional-tuple-Commutative-Semiring n v1 v2) v3) = - ( add-functional-tuple-Commutative-Semiring n v1 - ( add-functional-tuple-Commutative-Semiring n v2 v3)) - associative-add-functional-tuple-Commutative-Semiring = - associative-add-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - functional-tuple-Commutative-Semiring-Semigroup : ℕ → Semigroup l - functional-tuple-Commutative-Semiring-Semigroup = - functional-tuple-Semiring-Semigroup (semiring-Commutative-Semiring R) - - left-unit-law-add-functional-tuple-Commutative-Semiring : - (n : ℕ) (v : functional-tuple-Commutative-Semiring R n) → - add-functional-tuple-Commutative-Semiring n - ( zero-functional-tuple-Commutative-Semiring R n) v = v - left-unit-law-add-functional-tuple-Commutative-Semiring = - left-unit-law-add-functional-tuple-Semiring - ( semiring-Commutative-Semiring R) - - right-unit-law-add-functional-tuple-Commutative-Semiring : - (n : ℕ) (v : functional-tuple-Commutative-Semiring R n) → - add-functional-tuple-Commutative-Semiring n v - ( zero-functional-tuple-Commutative-Semiring R n) = v - right-unit-law-add-functional-tuple-Commutative-Semiring = - right-unit-law-add-functional-tuple-Semiring - ( semiring-Commutative-Semiring R) - - functional-tuple-Commutative-Semiring-Monoid : ℕ → Monoid l - functional-tuple-Commutative-Semiring-Monoid = - functional-tuple-Semiring-Monoid (semiring-Commutative-Semiring R) - - commutative-add-functional-tuple-Commutative-Semiring : - (n : ℕ) (v w : functional-tuple-Commutative-Semiring R n) → - add-functional-tuple-Commutative-Semiring n v w = - add-functional-tuple-Commutative-Semiring n w v - commutative-add-functional-tuple-Commutative-Semiring = - commutative-add-functional-tuple-Semiring (semiring-Commutative-Semiring R) - - functional-tuple-Commutative-Semiring-Commutative-Monoid : - ℕ → Commutative-Monoid l - functional-tuple-Commutative-Semiring-Commutative-Monoid = - functional-tuple-Semiring-Commutative-Monoid - ( semiring-Commutative-Semiring R) + tuple-Commutative-Semiring-Semigroup : ℕ → Semigroup l + tuple-Commutative-Semiring-Semigroup = + tuple-Semiring-Semigroup (semiring-Commutative-Semiring R) + + tuple-Commutative-Semiring-Monoid : ℕ → Monoid l + tuple-Commutative-Semiring-Monoid = + tuple-Semiring-Monoid (semiring-Commutative-Semiring R) + + tuple-Commutative-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Commutative-Semiring-Commutative-Monoid = + tuple-Semiring-Commutative-Monoid (semiring-Commutative-Semiring R) ``` diff --git a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md index d6b587e0b5..c96010de7a 100644 --- a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md @@ -11,11 +11,7 @@ open import commutative-algebra.euclidean-domains open import elementary-number-theory.natural-numbers -open import foundation.action-on-identifications-binary-functions -open import foundation.dependent-pair-types -open import foundation.function-extensionality open import foundation.identity-types -open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.abelian-groups @@ -27,6 +23,7 @@ open import group-theory.semigroups open import linear-algebra.constant-tuples open import linear-algebra.functoriality-tuples open import linear-algebra.tuples +open import linear-algebra.tuples-on-commutative-rings ```
@@ -62,276 +59,151 @@ module _ snoc-tuple-Euclidean-Domain v r = snoc-tuple v r ``` -### Functional tuples on euclidean domains +### Zero tuple on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - functional-tuple-Euclidean-Domain : ℕ → UU l - functional-tuple-Euclidean-Domain = functional-tuple (type-Euclidean-Domain R) - - head-functional-tuple-Euclidean-Domain : - (n : ℕ) → - functional-tuple-Euclidean-Domain (succ-ℕ n) → - type-Euclidean-Domain R - head-functional-tuple-Euclidean-Domain n v = head-functional-tuple n v - - tail-functional-tuple-Euclidean-Domain : - (n : ℕ) → - functional-tuple-Euclidean-Domain (succ-ℕ n) → - functional-tuple-Euclidean-Domain n - tail-functional-tuple-Euclidean-Domain = tail-functional-tuple - - cons-functional-tuple-Euclidean-Domain : - (n : ℕ) → type-Euclidean-Domain R → - functional-tuple-Euclidean-Domain n → - functional-tuple-Euclidean-Domain (succ-ℕ n) - cons-functional-tuple-Euclidean-Domain = cons-functional-tuple - - snoc-functional-tuple-Euclidean-Domain : - (n : ℕ) → functional-tuple-Euclidean-Domain n → type-Euclidean-Domain R → - functional-tuple-Euclidean-Domain (succ-ℕ n) - snoc-functional-tuple-Euclidean-Domain = snoc-functional-tuple + zero-tuple-Euclidean-Domain : {n : ℕ} → tuple-Euclidean-Domain R n + zero-tuple-Euclidean-Domain = constant-tuple (zero-Euclidean-Domain R) ``` -### Zero tuple on a euclidean domain - -#### The zero listed tuple +### Pointwise addition of tuples on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - zero-tuple-Euclidean-Domain : {n : ℕ} → tuple-Euclidean-Domain R n - zero-tuple-Euclidean-Domain = constant-tuple (zero-Euclidean-Domain R) + add-tuple-Euclidean-Domain : + {n : ℕ} → + tuple-Euclidean-Domain R n → + tuple-Euclidean-Domain R n → + tuple-Euclidean-Domain R n + add-tuple-Euclidean-Domain = binary-map-tuple (add-Euclidean-Domain R) ``` -#### The zero functional tuple +### Pointwise negation of tuples on a euclidean domain ```agda module _ {l : Level} (R : Euclidean-Domain l) where - zero-functional-tuple-Euclidean-Domain : - (n : ℕ) → functional-tuple-Euclidean-Domain R n - zero-functional-tuple-Euclidean-Domain n i = zero-Euclidean-Domain R + neg-tuple-Euclidean-Domain : + {n : ℕ} → tuple-Euclidean-Domain R n → tuple-Euclidean-Domain R n + neg-tuple-Euclidean-Domain = map-tuple (neg-Euclidean-Domain R) ``` -### Pointwise addition of tuples on a euclidean domain +## Properties of pointwise addition -#### Pointwise addition of listed tuples on a euclidean domain +### Associativity ```agda module _ {l : Level} (R : Euclidean-Domain l) where - add-tuple-Euclidean-Domain : - {n : ℕ} → - tuple-Euclidean-Domain R n → - tuple-Euclidean-Domain R n → - tuple-Euclidean-Domain R n - add-tuple-Euclidean-Domain = binary-map-tuple (add-Euclidean-Domain R) - associative-add-tuple-Euclidean-Domain : {n : ℕ} (v1 v2 v3 : tuple-Euclidean-Domain R n) → Id - ( add-tuple-Euclidean-Domain (add-tuple-Euclidean-Domain v1 v2) v3) - ( add-tuple-Euclidean-Domain v1 (add-tuple-Euclidean-Domain v2 v3)) - associative-add-tuple-Euclidean-Domain empty-tuple empty-tuple empty-tuple = - refl - associative-add-tuple-Euclidean-Domain (x ∷ v1) (y ∷ v2) (z ∷ v3) = - ap-binary _∷_ - ( associative-add-Euclidean-Domain R x y z) - ( associative-add-tuple-Euclidean-Domain v1 v2 v3) + ( add-tuple-Euclidean-Domain R (add-tuple-Euclidean-Domain R v1 v2) v3) + ( add-tuple-Euclidean-Domain R v1 (add-tuple-Euclidean-Domain R v2 v3)) + associative-add-tuple-Euclidean-Domain = + associative-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` - tuple-Euclidean-Domain-Semigroup : ℕ → Semigroup l - pr1 (tuple-Euclidean-Domain-Semigroup n) = - tuple-Set (set-Euclidean-Domain R) n - pr1 (pr2 (tuple-Euclidean-Domain-Semigroup n)) = add-tuple-Euclidean-Domain - pr2 (pr2 (tuple-Euclidean-Domain-Semigroup n)) = - associative-add-tuple-Euclidean-Domain +### Unit laws + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where left-unit-law-add-tuple-Euclidean-Domain : {n : ℕ} (v : tuple-Euclidean-Domain R n) → - Id (add-tuple-Euclidean-Domain (zero-tuple-Euclidean-Domain R) v) v - left-unit-law-add-tuple-Euclidean-Domain empty-tuple = refl - left-unit-law-add-tuple-Euclidean-Domain (x ∷ v) = - ap-binary _∷_ - ( left-unit-law-add-Euclidean-Domain R x) - ( left-unit-law-add-tuple-Euclidean-Domain v) + Id (add-tuple-Euclidean-Domain R (zero-tuple-Euclidean-Domain R) v) v + left-unit-law-add-tuple-Euclidean-Domain = + left-unit-law-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) right-unit-law-add-tuple-Euclidean-Domain : {n : ℕ} (v : tuple-Euclidean-Domain R n) → - Id (add-tuple-Euclidean-Domain v (zero-tuple-Euclidean-Domain R)) v - right-unit-law-add-tuple-Euclidean-Domain empty-tuple = refl - right-unit-law-add-tuple-Euclidean-Domain (x ∷ v) = - ap-binary _∷_ - ( right-unit-law-add-Euclidean-Domain R x) - ( right-unit-law-add-tuple-Euclidean-Domain v) - - tuple-Euclidean-Domain-Monoid : ℕ → Monoid l - pr1 (tuple-Euclidean-Domain-Monoid n) = tuple-Euclidean-Domain-Semigroup n - pr1 (pr2 (tuple-Euclidean-Domain-Monoid n)) = zero-tuple-Euclidean-Domain R - pr1 (pr2 (pr2 (tuple-Euclidean-Domain-Monoid n))) = - left-unit-law-add-tuple-Euclidean-Domain - pr2 (pr2 (pr2 (tuple-Euclidean-Domain-Monoid n))) = - right-unit-law-add-tuple-Euclidean-Domain - - commutative-add-tuple-Euclidean-Domain : - {n : ℕ} (v w : tuple-Euclidean-Domain R n) → - Id (add-tuple-Euclidean-Domain v w) (add-tuple-Euclidean-Domain w v) - commutative-add-tuple-Euclidean-Domain empty-tuple empty-tuple = refl - commutative-add-tuple-Euclidean-Domain (x ∷ v) (y ∷ w) = - ap-binary _∷_ - ( commutative-add-Euclidean-Domain R x y) - ( commutative-add-tuple-Euclidean-Domain v w) - - tuple-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (tuple-Euclidean-Domain-Commutative-Monoid n) = - tuple-Euclidean-Domain-Monoid n - pr2 (tuple-Euclidean-Domain-Commutative-Monoid n) = - commutative-add-tuple-Euclidean-Domain + Id (add-tuple-Euclidean-Domain R v (zero-tuple-Euclidean-Domain R)) v + right-unit-law-add-tuple-Euclidean-Domain = + right-unit-law-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) ``` -#### Pointwise addition of functional tuples on a euclidean domain +### Commutativity ```agda module _ {l : Level} (R : Euclidean-Domain l) where - add-functional-tuple-Euclidean-Domain : - (n : ℕ) (v w : functional-tuple-Euclidean-Domain R n) → - functional-tuple-Euclidean-Domain R n - add-functional-tuple-Euclidean-Domain n = - binary-map-functional-tuple n (add-Euclidean-Domain R) - - associative-add-functional-tuple-Euclidean-Domain : - (n : ℕ) (v1 v2 v3 : functional-tuple-Euclidean-Domain R n) → - ( add-functional-tuple-Euclidean-Domain - ( n) - ( add-functional-tuple-Euclidean-Domain n v1 v2) - ( v3)) = - ( add-functional-tuple-Euclidean-Domain - ( n) - ( v1) - ( add-functional-tuple-Euclidean-Domain n v2 v3)) - associative-add-functional-tuple-Euclidean-Domain n v1 v2 v3 = - eq-htpy (λ i → associative-add-Euclidean-Domain R (v1 i) (v2 i) (v3 i)) - - functional-tuple-Euclidean-Domain-Semigroup : ℕ → Semigroup l - pr1 (functional-tuple-Euclidean-Domain-Semigroup n) = - functional-tuple-Set (set-Euclidean-Domain R) n - pr1 (pr2 (functional-tuple-Euclidean-Domain-Semigroup n)) = - add-functional-tuple-Euclidean-Domain n - pr2 (pr2 (functional-tuple-Euclidean-Domain-Semigroup n)) = - associative-add-functional-tuple-Euclidean-Domain n - - left-unit-law-add-functional-tuple-Euclidean-Domain : - (n : ℕ) (v : functional-tuple-Euclidean-Domain R n) → - ( add-functional-tuple-Euclidean-Domain - ( n) - ( zero-functional-tuple-Euclidean-Domain R n) - ( v)) = - ( v) - left-unit-law-add-functional-tuple-Euclidean-Domain n v = - eq-htpy (λ i → left-unit-law-add-Euclidean-Domain R (v i)) - - right-unit-law-add-functional-tuple-Euclidean-Domain : - (n : ℕ) (v : functional-tuple-Euclidean-Domain R n) → - ( add-functional-tuple-Euclidean-Domain - ( n) - ( v) - ( zero-functional-tuple-Euclidean-Domain R n)) = - ( v) - right-unit-law-add-functional-tuple-Euclidean-Domain n v = - eq-htpy (λ i → right-unit-law-add-Euclidean-Domain R (v i)) - - functional-tuple-Euclidean-Domain-Monoid : ℕ → Monoid l - pr1 (functional-tuple-Euclidean-Domain-Monoid n) = - functional-tuple-Euclidean-Domain-Semigroup n - pr1 (pr2 (functional-tuple-Euclidean-Domain-Monoid n)) = - zero-functional-tuple-Euclidean-Domain R n - pr1 (pr2 (pr2 (functional-tuple-Euclidean-Domain-Monoid n))) = - left-unit-law-add-functional-tuple-Euclidean-Domain n - pr2 (pr2 (pr2 (functional-tuple-Euclidean-Domain-Monoid n))) = - right-unit-law-add-functional-tuple-Euclidean-Domain n - - commutative-add-functional-tuple-Euclidean-Domain : - (n : ℕ) (v w : functional-tuple-Euclidean-Domain R n) → - add-functional-tuple-Euclidean-Domain n v w = - add-functional-tuple-Euclidean-Domain n w v - commutative-add-functional-tuple-Euclidean-Domain n v w = - eq-htpy (λ i → commutative-add-Euclidean-Domain R (v i) (w i)) - - functional-tuple-Euclidean-Domain-Commutative-Monoid : - ℕ → Commutative-Monoid l - pr1 (functional-tuple-Euclidean-Domain-Commutative-Monoid n) = - functional-tuple-Euclidean-Domain-Monoid n - pr2 (functional-tuple-Euclidean-Domain-Commutative-Monoid n) = - commutative-add-functional-tuple-Euclidean-Domain n + commutative-add-tuple-Euclidean-Domain : + {n : ℕ} (v w : tuple-Euclidean-Domain R n) → + Id (add-tuple-Euclidean-Domain R v w) (add-tuple-Euclidean-Domain R w v) + commutative-add-tuple-Euclidean-Domain = + commutative-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) ``` -### The negative of a tuple on a euclidean domain +### Inverse laws ```agda module _ {l : Level} (R : Euclidean-Domain l) where - neg-tuple-Euclidean-Domain : - {n : ℕ} → tuple-Euclidean-Domain R n → tuple-Euclidean-Domain R n - neg-tuple-Euclidean-Domain = map-tuple (neg-Euclidean-Domain R) - left-inverse-law-add-tuple-Euclidean-Domain : {n : ℕ} (v : tuple-Euclidean-Domain R n) → Id - ( add-tuple-Euclidean-Domain R (neg-tuple-Euclidean-Domain v) v) + ( add-tuple-Euclidean-Domain R (neg-tuple-Euclidean-Domain R v) v) ( zero-tuple-Euclidean-Domain R) - left-inverse-law-add-tuple-Euclidean-Domain empty-tuple = refl - left-inverse-law-add-tuple-Euclidean-Domain (x ∷ v) = - ap-binary _∷_ - ( left-inverse-law-add-Euclidean-Domain R x) - ( left-inverse-law-add-tuple-Euclidean-Domain v) + left-inverse-law-add-tuple-Euclidean-Domain = + left-inverse-law-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) right-inverse-law-add-tuple-Euclidean-Domain : {n : ℕ} (v : tuple-Euclidean-Domain R n) → Id - ( add-tuple-Euclidean-Domain R v (neg-tuple-Euclidean-Domain v)) + ( add-tuple-Euclidean-Domain R v (neg-tuple-Euclidean-Domain R v)) ( zero-tuple-Euclidean-Domain R) - right-inverse-law-add-tuple-Euclidean-Domain empty-tuple = refl - right-inverse-law-add-tuple-Euclidean-Domain (x ∷ v) = - ap-binary _∷_ - ( right-inverse-law-add-Euclidean-Domain R x) - ( right-inverse-law-add-tuple-Euclidean-Domain v) - - is-unital-tuple-Euclidean-Domain : - (n : ℕ) → is-unital (add-tuple-Euclidean-Domain R {n}) - pr1 (is-unital-tuple-Euclidean-Domain n) = zero-tuple-Euclidean-Domain R - pr1 (pr2 (is-unital-tuple-Euclidean-Domain n)) = - left-unit-law-add-tuple-Euclidean-Domain R - pr2 (pr2 (is-unital-tuple-Euclidean-Domain n)) = - right-unit-law-add-tuple-Euclidean-Domain R - - is-group-tuple-Euclidean-Domain : - (n : ℕ) → is-group-Semigroup (tuple-Euclidean-Domain-Semigroup R n) - pr1 (is-group-tuple-Euclidean-Domain n) = is-unital-tuple-Euclidean-Domain n - pr1 (pr2 (is-group-tuple-Euclidean-Domain n)) = neg-tuple-Euclidean-Domain - pr1 (pr2 (pr2 (is-group-tuple-Euclidean-Domain n))) = - left-inverse-law-add-tuple-Euclidean-Domain - pr2 (pr2 (pr2 (is-group-tuple-Euclidean-Domain n))) = - right-inverse-law-add-tuple-Euclidean-Domain + right-inverse-law-add-tuple-Euclidean-Domain = + right-inverse-law-add-tuple-Commutative-Ring + ( commutative-ring-Euclidean-Domain R) +``` + +### The Abelian group of pointwise addition + +```agda +module _ + {l : Level} (R : Euclidean-Domain l) + where + + tuple-Euclidean-Domain-Semigroup : ℕ → Semigroup l + tuple-Euclidean-Domain-Semigroup = + tuple-Commutative-Ring-Semigroup (commutative-ring-Euclidean-Domain R) + + tuple-Euclidean-Domain-Monoid : ℕ → Monoid l + tuple-Euclidean-Domain-Monoid = + tuple-Commutative-Ring-Monoid (commutative-ring-Euclidean-Domain R) + + tuple-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Euclidean-Domain-Commutative-Monoid = + tuple-Commutative-Ring-Commutative-Monoid + ( commutative-ring-Euclidean-Domain R) tuple-Euclidean-Domain-Group : ℕ → Group l - pr1 (tuple-Euclidean-Domain-Group n) = tuple-Euclidean-Domain-Semigroup R n - pr2 (tuple-Euclidean-Domain-Group n) = is-group-tuple-Euclidean-Domain n + tuple-Euclidean-Domain-Group = + tuple-Commutative-Ring-Group (commutative-ring-Euclidean-Domain R) tuple-Euclidean-Domain-Ab : ℕ → Ab l - pr1 (tuple-Euclidean-Domain-Ab n) = tuple-Euclidean-Domain-Group n - pr2 (tuple-Euclidean-Domain-Ab n) = commutative-add-tuple-Euclidean-Domain R + tuple-Euclidean-Domain-Ab = + tuple-Commutative-Ring-Ab (commutative-ring-Euclidean-Domain R) ``` diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index 607fc584f4..daaeda2a01 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -11,9 +11,7 @@ open import elementary-number-theory.natural-numbers open import foundation.action-on-identifications-binary-functions open import foundation.dependent-pair-types -open import foundation.function-extensionality open import foundation.identity-types -open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.abelian-groups @@ -25,6 +23,7 @@ open import group-theory.semigroups open import linear-algebra.constant-tuples open import linear-algebra.functoriality-tuples open import linear-algebra.tuples +open import linear-algebra.tuples-on-semirings open import ring-theory.rings ``` @@ -39,8 +38,6 @@ Given a [ring](ring-theory.rings.md) `R`, the type `tuple n R` of ## Definitions -### Listed tuples on rings - ```agda module _ {l : Level} (R : Ring l) @@ -59,195 +56,101 @@ module _ snoc-tuple-Ring v r = snoc-tuple v r ``` -### Functional tuples on rings +### Zero tuple on a ring ```agda module _ {l : Level} (R : Ring l) where - functional-tuple-Ring : ℕ → UU l - functional-tuple-Ring = functional-tuple (type-Ring R) - - head-functional-tuple-Ring : - (n : ℕ) → functional-tuple-Ring (succ-ℕ n) → type-Ring R - head-functional-tuple-Ring n v = head-functional-tuple n v - - tail-functional-tuple-Ring : - (n : ℕ) → functional-tuple-Ring (succ-ℕ n) → functional-tuple-Ring n - tail-functional-tuple-Ring = tail-functional-tuple - - cons-functional-tuple-Ring : - (n : ℕ) → type-Ring R → - functional-tuple-Ring n → functional-tuple-Ring (succ-ℕ n) - cons-functional-tuple-Ring = cons-functional-tuple - - snoc-functional-tuple-Ring : - (n : ℕ) → functional-tuple-Ring n → type-Ring R → - functional-tuple-Ring (succ-ℕ n) - snoc-functional-tuple-Ring = snoc-functional-tuple + zero-tuple-Ring : {n : ℕ} → tuple-Ring R n + zero-tuple-Ring = constant-tuple (zero-Ring R) ``` -### Zero tuple on a ring - -#### The zero listed tuple +### Pointwise addition of tuples on a ring ```agda module _ {l : Level} (R : Ring l) where - zero-tuple-Ring : {n : ℕ} → tuple-Ring R n - zero-tuple-Ring = constant-tuple (zero-Ring R) + add-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n → tuple-Ring R n + add-tuple-Ring = binary-map-tuple (add-Ring R) ``` -#### The zero functional tuple +### Pointwise negation ```agda module _ {l : Level} (R : Ring l) where - zero-functional-tuple-Ring : (n : ℕ) → functional-tuple-Ring R n - zero-functional-tuple-Ring n i = zero-Ring R + neg-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n + neg-tuple-Ring = map-tuple (neg-Ring R) ``` -### Pointwise addition of tuples on a ring +## Properties of pointwise addition -#### Pointwise addition of listed tuples on a ring +### Associativity ```agda module _ {l : Level} (R : Ring l) where - add-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n → tuple-Ring R n - add-tuple-Ring = binary-map-tuple (add-Ring R) - associative-add-tuple-Ring : {n : ℕ} (v1 v2 v3 : tuple-Ring R n) → Id - ( add-tuple-Ring (add-tuple-Ring v1 v2) v3) - ( add-tuple-Ring v1 (add-tuple-Ring v2 v3)) - associative-add-tuple-Ring empty-tuple empty-tuple empty-tuple = refl - associative-add-tuple-Ring (x ∷ v1) (y ∷ v2) (z ∷ v3) = - ap-binary _∷_ - ( associative-add-Ring R x y z) - ( associative-add-tuple-Ring v1 v2 v3) + ( add-tuple-Ring R (add-tuple-Ring R v1 v2) v3) + ( add-tuple-Ring R v1 (add-tuple-Ring R v2 v3)) + associative-add-tuple-Ring = associative-add-tuple-Semiring (semiring-Ring R) +``` - tuple-Ring-Semigroup : ℕ → Semigroup l - pr1 (tuple-Ring-Semigroup n) = tuple-Set (set-Ring R) n - pr1 (pr2 (tuple-Ring-Semigroup n)) = add-tuple-Ring - pr2 (pr2 (tuple-Ring-Semigroup n)) = associative-add-tuple-Ring +### Unit laws + +```agda +module _ + {l : Level} (R : Ring l) + where left-unit-law-add-tuple-Ring : - {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring (zero-tuple-Ring R) v) v - left-unit-law-add-tuple-Ring empty-tuple = refl - left-unit-law-add-tuple-Ring (x ∷ v) = - ap-binary _∷_ - ( left-unit-law-add-Ring R x) - ( left-unit-law-add-tuple-Ring v) + {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring R (zero-tuple-Ring R) v) v + left-unit-law-add-tuple-Ring = + left-unit-law-add-tuple-Semiring (semiring-Ring R) right-unit-law-add-tuple-Ring : - {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring v (zero-tuple-Ring R)) v - right-unit-law-add-tuple-Ring empty-tuple = refl - right-unit-law-add-tuple-Ring (x ∷ v) = - ap-binary _∷_ - ( right-unit-law-add-Ring R x) - ( right-unit-law-add-tuple-Ring v) + {n : ℕ} (v : tuple-Ring R n) → Id (add-tuple-Ring R v (zero-tuple-Ring R)) v + right-unit-law-add-tuple-Ring = + right-unit-law-add-tuple-Semiring (semiring-Ring R) +``` - tuple-Ring-Monoid : ℕ → Monoid l - pr1 (tuple-Ring-Monoid n) = tuple-Ring-Semigroup n - pr1 (pr2 (tuple-Ring-Monoid n)) = zero-tuple-Ring R - pr1 (pr2 (pr2 (tuple-Ring-Monoid n))) = left-unit-law-add-tuple-Ring - pr2 (pr2 (pr2 (tuple-Ring-Monoid n))) = right-unit-law-add-tuple-Ring +### Commutativity + +```agda +module _ + {l : Level} (R : Ring l) + where commutative-add-tuple-Ring : {n : ℕ} (v w : tuple-Ring R n) → - Id (add-tuple-Ring v w) (add-tuple-Ring w v) + Id (add-tuple-Ring R v w) (add-tuple-Ring R w v) commutative-add-tuple-Ring empty-tuple empty-tuple = refl commutative-add-tuple-Ring (x ∷ v) (y ∷ w) = ap-binary _∷_ ( commutative-add-Ring R x y) ( commutative-add-tuple-Ring v w) - - tuple-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (tuple-Ring-Commutative-Monoid n) = tuple-Ring-Monoid n - pr2 (tuple-Ring-Commutative-Monoid n) = commutative-add-tuple-Ring -``` - -#### Pointwise addition of functional tuples on a ring - -```agda -module _ - {l : Level} (R : Ring l) - where - - add-functional-tuple-Ring : - (n : ℕ) (v w : functional-tuple-Ring R n) → functional-tuple-Ring R n - add-functional-tuple-Ring n = binary-map-functional-tuple n (add-Ring R) - - associative-add-functional-tuple-Ring : - (n : ℕ) (v1 v2 v3 : functional-tuple-Ring R n) → - ( add-functional-tuple-Ring n (add-functional-tuple-Ring n v1 v2) v3) = - ( add-functional-tuple-Ring n v1 (add-functional-tuple-Ring n v2 v3)) - associative-add-functional-tuple-Ring n v1 v2 v3 = - eq-htpy (λ i → associative-add-Ring R (v1 i) (v2 i) (v3 i)) - - functional-tuple-Ring-Semigroup : ℕ → Semigroup l - pr1 (functional-tuple-Ring-Semigroup n) = functional-tuple-Set (set-Ring R) n - pr1 (pr2 (functional-tuple-Ring-Semigroup n)) = add-functional-tuple-Ring n - pr2 (pr2 (functional-tuple-Ring-Semigroup n)) = - associative-add-functional-tuple-Ring n - - left-unit-law-add-functional-tuple-Ring : - (n : ℕ) (v : functional-tuple-Ring R n) → - add-functional-tuple-Ring n (zero-functional-tuple-Ring R n) v = v - left-unit-law-add-functional-tuple-Ring n v = - eq-htpy (λ i → left-unit-law-add-Ring R (v i)) - - right-unit-law-add-functional-tuple-Ring : - (n : ℕ) (v : functional-tuple-Ring R n) → - add-functional-tuple-Ring n v (zero-functional-tuple-Ring R n) = v - right-unit-law-add-functional-tuple-Ring n v = - eq-htpy (λ i → right-unit-law-add-Ring R (v i)) - - functional-tuple-Ring-Monoid : ℕ → Monoid l - pr1 (functional-tuple-Ring-Monoid n) = - functional-tuple-Ring-Semigroup n - pr1 (pr2 (functional-tuple-Ring-Monoid n)) = - zero-functional-tuple-Ring R n - pr1 (pr2 (pr2 (functional-tuple-Ring-Monoid n))) = - left-unit-law-add-functional-tuple-Ring n - pr2 (pr2 (pr2 (functional-tuple-Ring-Monoid n))) = - right-unit-law-add-functional-tuple-Ring n - - commutative-add-functional-tuple-Ring : - (n : ℕ) (v w : functional-tuple-Ring R n) → - add-functional-tuple-Ring n v w = add-functional-tuple-Ring n w v - commutative-add-functional-tuple-Ring n v w = - eq-htpy (λ i → commutative-add-Ring R (v i) (w i)) - - functional-tuple-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (functional-tuple-Ring-Commutative-Monoid n) = - functional-tuple-Ring-Monoid n - pr2 (functional-tuple-Ring-Commutative-Monoid n) = - commutative-add-functional-tuple-Ring n ``` -### The negative of a tuple on a ring +### Inverse laws ```agda module _ {l : Level} (R : Ring l) where - neg-tuple-Ring : {n : ℕ} → tuple-Ring R n → tuple-Ring R n - neg-tuple-Ring = map-tuple (neg-Ring R) - left-inverse-law-add-tuple-Ring : {n : ℕ} (v : tuple-Ring R n) → - Id (add-tuple-Ring R (neg-tuple-Ring v) v) (zero-tuple-Ring R) + Id (add-tuple-Ring R (neg-tuple-Ring R v) v) (zero-tuple-Ring R) left-inverse-law-add-tuple-Ring empty-tuple = refl left-inverse-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ @@ -256,26 +159,39 @@ module _ right-inverse-law-add-tuple-Ring : {n : ℕ} (v : tuple-Ring R n) → - Id (add-tuple-Ring R v (neg-tuple-Ring v)) (zero-tuple-Ring R) + Id (add-tuple-Ring R v (neg-tuple-Ring R v)) (zero-tuple-Ring R) right-inverse-law-add-tuple-Ring empty-tuple = refl right-inverse-law-add-tuple-Ring (x ∷ v) = ap-binary _∷_ ( right-inverse-law-add-Ring R x) ( right-inverse-law-add-tuple-Ring v) +``` - is-unital-tuple-Ring : (n : ℕ) → is-unital (add-tuple-Ring R {n}) - pr1 (is-unital-tuple-Ring n) = zero-tuple-Ring R - pr1 (pr2 (is-unital-tuple-Ring n)) = left-unit-law-add-tuple-Ring R - pr2 (pr2 (is-unital-tuple-Ring n)) = right-unit-law-add-tuple-Ring R +### Abelian group of addition of tuples + +```agda +module _ + {l : Level} (R : Ring l) + where + + tuple-Ring-Semigroup : ℕ → Semigroup l + tuple-Ring-Semigroup = tuple-Semiring-Semigroup (semiring-Ring R) + + tuple-Ring-Monoid : ℕ → Monoid l + tuple-Ring-Monoid = tuple-Semiring-Monoid (semiring-Ring R) + + tuple-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l + tuple-Ring-Commutative-Monoid = + tuple-Semiring-Commutative-Monoid (semiring-Ring R) - is-group-tuple-Ring : (n : ℕ) → is-group-Semigroup (tuple-Ring-Semigroup R n) - pr1 (is-group-tuple-Ring n) = is-unital-tuple-Ring n - pr1 (pr2 (is-group-tuple-Ring n)) = neg-tuple-Ring - pr1 (pr2 (pr2 (is-group-tuple-Ring n))) = left-inverse-law-add-tuple-Ring - pr2 (pr2 (pr2 (is-group-tuple-Ring n))) = right-inverse-law-add-tuple-Ring + is-group-tuple-Ring : (n : ℕ) → is-group-Semigroup (tuple-Ring-Semigroup n) + pr1 (is-group-tuple-Ring n) = is-unital-Monoid (tuple-Ring-Monoid n) + pr1 (pr2 (is-group-tuple-Ring n)) = neg-tuple-Ring R + pr1 (pr2 (pr2 (is-group-tuple-Ring n))) = left-inverse-law-add-tuple-Ring R + pr2 (pr2 (pr2 (is-group-tuple-Ring n))) = right-inverse-law-add-tuple-Ring R tuple-Ring-Group : ℕ → Group l - pr1 (tuple-Ring-Group n) = tuple-Ring-Semigroup R n + pr1 (tuple-Ring-Group n) = tuple-Ring-Semigroup n pr2 (tuple-Ring-Group n) = is-group-tuple-Ring n tuple-Ring-Ab : ℕ → Ab l @@ -286,4 +202,4 @@ module _ ## See also - For the [module](ring-theory.modules-rings.md) of tuples on rings, see - [`linear-algebra.scalar-multiplication-tuples-on-rings`]( + [`linear-algebra.scalar-multiplication-tuples-on-rings`](linear-algebra.scalar-multiplication-tuples-on-rings.md) diff --git a/src/linear-algebra/tuples-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md index 4fc5c4f96b..916202db65 100644 --- a/src/linear-algebra/tuples-on-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-semirings.lagda.md @@ -36,8 +36,6 @@ Given a [semiring](ring-theory.semirings.md) `R`, the type `tuple n R` of ## Definitions -### Listed tuples on semirings - ```agda module _ {l : Level} (R : Semiring l) @@ -57,39 +55,8 @@ module _ snoc-tuple-Semiring v r = snoc-tuple v r ``` -### Functional tuples on rings - -```agda -module _ - {l : Level} (R : Semiring l) - where - - functional-tuple-Semiring : ℕ → UU l - functional-tuple-Semiring = functional-tuple (type-Semiring R) - - head-functional-tuple-Semiring : - (n : ℕ) → functional-tuple-Semiring (succ-ℕ n) → type-Semiring R - head-functional-tuple-Semiring n v = head-functional-tuple n v - - tail-functional-tuple-Semiring : - (n : ℕ) → functional-tuple-Semiring (succ-ℕ n) → functional-tuple-Semiring n - tail-functional-tuple-Semiring = tail-functional-tuple - - cons-functional-tuple-Semiring : - (n : ℕ) → type-Semiring R → - functional-tuple-Semiring n → functional-tuple-Semiring (succ-ℕ n) - cons-functional-tuple-Semiring = cons-functional-tuple - - snoc-functional-tuple-Semiring : - (n : ℕ) → functional-tuple-Semiring n → type-Semiring R → - functional-tuple-Semiring (succ-ℕ n) - snoc-functional-tuple-Semiring = snoc-functional-tuple -``` - ### Zero tuple on a ring -#### The zero listed tuple - ```agda module _ {l : Level} (R : Semiring l) @@ -99,48 +66,48 @@ module _ zero-tuple-Semiring = constant-tuple (zero-Semiring R) ``` -#### The zero functional tuple +### Pointwise addition of tuples on a ring ```agda module _ {l : Level} (R : Semiring l) where - zero-functional-tuple-Semiring : (n : ℕ) → functional-tuple-Semiring R n - zero-functional-tuple-Semiring n i = zero-Semiring R + add-tuple-Semiring : + {n : ℕ} → tuple-Semiring R n → tuple-Semiring R n → tuple-Semiring R n + add-tuple-Semiring = binary-map-tuple (add-Semiring R) ``` -### Pointwise addition of tuples on a ring +## Properties of pointwise addition -#### Pointwise addition of listed tuples on a ring +### Associativity ```agda module _ {l : Level} (R : Semiring l) where - add-tuple-Semiring : - {n : ℕ} → tuple-Semiring R n → tuple-Semiring R n → tuple-Semiring R n - add-tuple-Semiring = binary-map-tuple (add-Semiring R) - associative-add-tuple-Semiring : {n : ℕ} (v1 v2 v3 : tuple-Semiring R n) → - add-tuple-Semiring (add-tuple-Semiring v1 v2) v3 = - add-tuple-Semiring v1 (add-tuple-Semiring v2 v3) + add-tuple-Semiring R (add-tuple-Semiring R v1 v2) v3 = + add-tuple-Semiring R v1 (add-tuple-Semiring R v2 v3) associative-add-tuple-Semiring empty-tuple empty-tuple empty-tuple = refl associative-add-tuple-Semiring (x ∷ v1) (y ∷ v2) (z ∷ v3) = ap-binary _∷_ ( associative-add-Semiring R x y z) ( associative-add-tuple-Semiring v1 v2 v3) +``` - tuple-Semiring-Semigroup : ℕ → Semigroup l - pr1 (tuple-Semiring-Semigroup n) = tuple-Set (set-Semiring R) n - pr1 (pr2 (tuple-Semiring-Semigroup n)) = add-tuple-Semiring - pr2 (pr2 (tuple-Semiring-Semigroup n)) = associative-add-tuple-Semiring +### Unit laws + +```agda +module _ + {l : Level} (R : Semiring l) + where left-unit-law-add-tuple-Semiring : {n : ℕ} (v : tuple-Semiring R n) → - add-tuple-Semiring (zero-tuple-Semiring R) v = v + add-tuple-Semiring R (zero-tuple-Semiring R) v = v left-unit-law-add-tuple-Semiring empty-tuple = refl left-unit-law-add-tuple-Semiring (x ∷ v) = ap-binary _∷_ @@ -149,98 +116,51 @@ module _ right-unit-law-add-tuple-Semiring : {n : ℕ} (v : tuple-Semiring R n) → - add-tuple-Semiring v (zero-tuple-Semiring R) = v + add-tuple-Semiring R v (zero-tuple-Semiring R) = v right-unit-law-add-tuple-Semiring empty-tuple = refl right-unit-law-add-tuple-Semiring (x ∷ v) = ap-binary _∷_ ( right-unit-law-add-Semiring R x) ( right-unit-law-add-tuple-Semiring v) +``` - tuple-Semiring-Monoid : ℕ → Monoid l - pr1 (tuple-Semiring-Monoid n) = tuple-Semiring-Semigroup n - pr1 (pr2 (tuple-Semiring-Monoid n)) = zero-tuple-Semiring R - pr1 (pr2 (pr2 (tuple-Semiring-Monoid n))) = left-unit-law-add-tuple-Semiring - pr2 (pr2 (pr2 (tuple-Semiring-Monoid n))) = right-unit-law-add-tuple-Semiring +### Commutativity + +```agda +module _ + {l : Level} (R : Semiring l) + where commutative-add-tuple-Semiring : {n : ℕ} (v w : tuple-Semiring R n) → - add-tuple-Semiring v w = add-tuple-Semiring w v + add-tuple-Semiring R v w = add-tuple-Semiring R w v commutative-add-tuple-Semiring empty-tuple empty-tuple = refl commutative-add-tuple-Semiring (x ∷ v) (y ∷ w) = ap-binary _∷_ ( commutative-add-Semiring R x y) ( commutative-add-tuple-Semiring v w) - - tuple-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (tuple-Semiring-Commutative-Monoid n) = tuple-Semiring-Monoid n - pr2 (tuple-Semiring-Commutative-Monoid n) = commutative-add-tuple-Semiring ``` -#### Pointwise addition of functional tuples on a ring +### The commutative monoid of addition ```agda module _ {l : Level} (R : Semiring l) where - add-functional-tuple-Semiring : - (n : ℕ) (v w : functional-tuple-Semiring R n) → - functional-tuple-Semiring R n - add-functional-tuple-Semiring n = - binary-map-functional-tuple n (add-Semiring R) - - associative-add-functional-tuple-Semiring : - (n : ℕ) (v1 v2 v3 : functional-tuple-Semiring R n) → - ( add-functional-tuple-Semiring - ( n) - ( add-functional-tuple-Semiring n v1 v2) - ( v3)) = - ( add-functional-tuple-Semiring - ( n) - ( v1) - ( add-functional-tuple-Semiring n v2 v3)) - associative-add-functional-tuple-Semiring n v1 v2 v3 = - eq-htpy (λ i → associative-add-Semiring R (v1 i) (v2 i) (v3 i)) - - functional-tuple-Semiring-Semigroup : ℕ → Semigroup l - pr1 (functional-tuple-Semiring-Semigroup n) = - functional-tuple-Set (set-Semiring R) n - pr1 (pr2 (functional-tuple-Semiring-Semigroup n)) = - add-functional-tuple-Semiring n - pr2 (pr2 (functional-tuple-Semiring-Semigroup n)) = - associative-add-functional-tuple-Semiring n - - left-unit-law-add-functional-tuple-Semiring : - (n : ℕ) (v : functional-tuple-Semiring R n) → - add-functional-tuple-Semiring n (zero-functional-tuple-Semiring R n) v = v - left-unit-law-add-functional-tuple-Semiring n v = - eq-htpy (λ i → left-unit-law-add-Semiring R (v i)) - - right-unit-law-add-functional-tuple-Semiring : - (n : ℕ) (v : functional-tuple-Semiring R n) → - add-functional-tuple-Semiring n v (zero-functional-tuple-Semiring R n) = v - right-unit-law-add-functional-tuple-Semiring n v = - eq-htpy (λ i → right-unit-law-add-Semiring R (v i)) - - functional-tuple-Semiring-Monoid : ℕ → Monoid l - pr1 (functional-tuple-Semiring-Monoid n) = - functional-tuple-Semiring-Semigroup n - pr1 (pr2 (functional-tuple-Semiring-Monoid n)) = - zero-functional-tuple-Semiring R n - pr1 (pr2 (pr2 (functional-tuple-Semiring-Monoid n))) = - left-unit-law-add-functional-tuple-Semiring n - pr2 (pr2 (pr2 (functional-tuple-Semiring-Monoid n))) = - right-unit-law-add-functional-tuple-Semiring n - - commutative-add-functional-tuple-Semiring : - (n : ℕ) (v w : functional-tuple-Semiring R n) → - add-functional-tuple-Semiring n v w = add-functional-tuple-Semiring n w v - commutative-add-functional-tuple-Semiring n v w = - eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) - - functional-tuple-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (functional-tuple-Semiring-Commutative-Monoid n) = - functional-tuple-Semiring-Monoid n - pr2 (functional-tuple-Semiring-Commutative-Monoid n) = - commutative-add-functional-tuple-Semiring n + tuple-Semiring-Semigroup : ℕ → Semigroup l + pr1 (tuple-Semiring-Semigroup n) = tuple-Set (set-Semiring R) n + pr1 (pr2 (tuple-Semiring-Semigroup n)) = add-tuple-Semiring R + pr2 (pr2 (tuple-Semiring-Semigroup n)) = associative-add-tuple-Semiring R + + tuple-Semiring-Monoid : ℕ → Monoid l + pr1 (tuple-Semiring-Monoid n) = tuple-Semiring-Semigroup n + pr1 (pr2 (tuple-Semiring-Monoid n)) = zero-tuple-Semiring R + pr1 (pr2 (pr2 (tuple-Semiring-Monoid n))) = left-unit-law-add-tuple-Semiring R + pr2 (pr2 (pr2 (tuple-Semiring-Monoid n))) = + right-unit-law-add-tuple-Semiring R + + tuple-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l + pr1 (tuple-Semiring-Commutative-Monoid n) = tuple-Semiring-Monoid n + pr2 (tuple-Semiring-Commutative-Monoid n) = commutative-add-tuple-Semiring R ``` diff --git a/src/linear-algebra/tuples.lagda.md b/src/linear-algebra/tuples.lagda.md index 9a5cc5597b..064f58e3ef 100644 --- a/src/linear-algebra/tuples.lagda.md +++ b/src/linear-algebra/tuples.lagda.md @@ -16,8 +16,6 @@ open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.equality-dependent-pair-types open import foundation.equivalences -open import foundation.function-extensionality -open import foundation.function-types open import foundation.homotopies open import foundation.identity-types open import foundation.raising-universe-levels @@ -29,7 +27,6 @@ open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-higher-homotopies-composition -open import univalent-combinatorics.involution-standard-finite-types open import univalent-combinatorics.standard-finite-types ``` @@ -40,15 +37,11 @@ open import univalent-combinatorics.standard-finite-types There are two equivalent definitions of {{#concept "tuples" WD="n-tuple" WDID=Q600590}} of length `n`. First, a {{#concept "listed tuple" Agda=tuple}} of length `n` is a list of `n` elements -of type `A`. Secondly, a {{#concept "functional tuple" Agda=functional-tuple}} -of length `n` is a map from the -[standard finite type](univalent-combinatorics.standard-finite-types.md) of -cardinality `n` `Fin n` to `A`. We define both types of tuples and show that -they are equivalent. +of type `A`. ## Definitions -### The type of listed tuples +### The type of tuples ```agda infixr 10 _∷_ @@ -105,59 +98,9 @@ module _ eq-component-tuple-index-in-tuple n a v I ``` -### The functional type of tuples - -```agda -functional-tuple : {l : Level} → UU l → ℕ → UU l -functional-tuple A n = Fin n → A - -module _ - {l : Level} {A : UU l} - where - - empty-functional-tuple : functional-tuple A 0 - empty-functional-tuple () - - head-functional-tuple : (n : ℕ) → functional-tuple A (succ-ℕ n) → A - head-functional-tuple n v = v (inr star) - - tail-functional-tuple : - (n : ℕ) → functional-tuple A (succ-ℕ n) → functional-tuple A n - tail-functional-tuple n v = v ∘ (inl-Fin n) - - cons-functional-tuple : - (n : ℕ) → A → functional-tuple A n → functional-tuple A (succ-ℕ n) - cons-functional-tuple n a v (inl x) = v x - cons-functional-tuple n a v (inr x) = a - - snoc-functional-tuple : - (n : ℕ) → functional-tuple A n → A → functional-tuple A (succ-ℕ n) - snoc-functional-tuple zero-ℕ v a i = a - snoc-functional-tuple (succ-ℕ n) v a (inl x) = - snoc-functional-tuple n (tail-functional-tuple n v) a x - snoc-functional-tuple (succ-ℕ n) v a (inr x) = head-functional-tuple n v - - revert-functional-tuple : - (n : ℕ) → functional-tuple A n → functional-tuple A n - revert-functional-tuple n v i = v (opposite-Fin n i) - - in-functional-tuple : (n : ℕ) → A → functional-tuple A n → UU l - in-functional-tuple n a v = Σ (Fin n) (λ k → a = v k) - - index-in-functional-tuple : - (n : ℕ) (x : A) (v : functional-tuple A n) → - in-functional-tuple n x v → Fin n - index-in-functional-tuple n x v I = pr1 I - - eq-component-functional-tuple-index-in-functional-tuple : - (n : ℕ) (x : A) (v : functional-tuple A n) (I : in-functional-tuple n x v) → - x = v (index-in-functional-tuple n x v I) - eq-component-functional-tuple-index-in-functional-tuple n x v I = pr2 I -``` - ## Properties -### Characterizing equality of listed tuples +### Characterizing equality of tuples ```agda module _ @@ -215,89 +158,6 @@ module _ extensionality-tuple n u v = (Eq-eq-tuple n u v , is-equiv-Eq-eq-tuple n u v) ``` -### The types of listed tuples and functional tuples are equivalent - -```agda -module _ - {l : Level} {A : UU l} - where - - listed-tuple-functional-tuple : (n : ℕ) → functional-tuple A n → tuple A n - listed-tuple-functional-tuple zero-ℕ v = empty-tuple - listed-tuple-functional-tuple (succ-ℕ n) v = - head-functional-tuple n v ∷ - listed-tuple-functional-tuple n (tail-functional-tuple n v) - - functional-tuple-tuple : (n : ℕ) → tuple A n → functional-tuple A n - functional-tuple-tuple zero-ℕ v = empty-functional-tuple - functional-tuple-tuple (succ-ℕ n) (a ∷ v) = - cons-functional-tuple n a (functional-tuple-tuple n v) - - is-section-functional-tuple-tuple : - (n : ℕ) → (listed-tuple-functional-tuple n ∘ functional-tuple-tuple n) ~ id - is-section-functional-tuple-tuple .zero-ℕ empty-tuple = refl - is-section-functional-tuple-tuple .(succ-ℕ _) (a ∷ v) = - ap (λ u → a ∷ u) (is-section-functional-tuple-tuple _ v) - - abstract - is-retraction-functional-tuple-tuple : - (n : ℕ) → - (functional-tuple-tuple n ∘ listed-tuple-functional-tuple n) ~ id - is-retraction-functional-tuple-tuple zero-ℕ v = eq-htpy (λ ()) - is-retraction-functional-tuple-tuple (succ-ℕ n) v = - eq-htpy - ( λ where - ( inl x) → - htpy-eq - ( is-retraction-functional-tuple-tuple - ( n) - ( tail-functional-tuple n v)) - ( x) - ( inr star) → refl) - - is-equiv-listed-tuple-functional-tuple : - (n : ℕ) → is-equiv (listed-tuple-functional-tuple n) - is-equiv-listed-tuple-functional-tuple n = - is-equiv-is-invertible - ( functional-tuple-tuple n) - ( is-section-functional-tuple-tuple n) - ( is-retraction-functional-tuple-tuple n) - - is-equiv-functional-tuple-tuple : - (n : ℕ) → is-equiv (functional-tuple-tuple n) - is-equiv-functional-tuple-tuple n = - is-equiv-is-invertible - ( listed-tuple-functional-tuple n) - ( is-retraction-functional-tuple-tuple n) - ( is-section-functional-tuple-tuple n) - - compute-tuple : (n : ℕ) → functional-tuple A n ≃ tuple A n - pr1 (compute-tuple n) = listed-tuple-functional-tuple n - pr2 (compute-tuple n) = is-equiv-listed-tuple-functional-tuple n -``` - -### Characterizing the elementhood predicate - -```agda - is-in-functional-tuple-is-in-tuple : - (n : ℕ) (v : tuple A n) (x : A) → - (x ∈-tuple v) → (in-functional-tuple n x (functional-tuple-tuple n v)) - is-in-functional-tuple-is-in-tuple (succ-ℕ n) (y ∷ l) x (is-head .x l) = - (inr star) , refl - is-in-functional-tuple-is-in-tuple - (succ-ℕ n) (y ∷ l) x (is-in-tail .x x₁ l I) = - inl (pr1 (is-in-functional-tuple-is-in-tuple n l x I)) , - pr2 (is-in-functional-tuple-is-in-tuple n l x I) - - is-in-tuple-is-in-functional-tuple : - (n : ℕ) (v : tuple A n) (x : A) → - (in-functional-tuple n x (functional-tuple-tuple n v)) → (x ∈-tuple v) - is-in-tuple-is-in-functional-tuple (succ-ℕ n) (y ∷ v) x (inl k , p) = - is-in-tail x y v (is-in-tuple-is-in-functional-tuple n v x (k , p)) - is-in-tuple-is-in-functional-tuple (succ-ℕ n) (y ∷ v) _ (inr k , refl) = - is-head (functional-tuple-tuple (succ-ℕ n) (y ∷ v) (inr k)) v -``` - ### The type of tuples of elements in a truncated type is truncated #### The type of listed tuples of elements in a truncated type is truncated @@ -350,18 +210,6 @@ module _ ( is-trunc-Eq-tuple k n H x y) ``` -#### The type of functional tuples of elements in a truncated type is truncated - -```agda -module _ - {l : Level} {A : UU l} - where - - is-trunc-functional-tuple : - (k : 𝕋) (n : ℕ) → is-trunc k A → is-trunc k (functional-tuple A n) - is-trunc-functional-tuple k n H = is-trunc-function-type k H -``` - ### The type of tuples of elements in a set is a set #### The type of listed tuples of elements in a set is a set @@ -379,25 +227,8 @@ pr1 (tuple-Set A n) = tuple (type-Set A) n pr2 (tuple-Set A n) = is-set-tuple n (is-set-type-Set A) ``` -#### The type of functional tuples of elements in a set is a set - -```agda -module _ - {l : Level} {A : UU l} - where - - is-set-functional-tuple : (n : ℕ) → is-set A → is-set (functional-tuple A n) - is-set-functional-tuple = is-trunc-functional-tuple zero-𝕋 - -functional-tuple-Set : {l : Level} → Set l → ℕ → Set l -pr1 (functional-tuple-Set A n) = functional-tuple (type-Set A) n -pr2 (functional-tuple-Set A n) = is-set-functional-tuple n (is-set-type-Set A) -``` - ### Adding the tail to the head gives the same tuple -#### Adding the tail to the head gives the same listed tuple - ```agda module _ {l : Level} {A : UU l} @@ -410,33 +241,6 @@ module _ cons-head-tail-tuple n (x ∷ v) = refl ``` -#### Adding the tail to the head gives the same functional tuple - -```agda -module _ - {l : Level} {A : UU l} - where - htpy-cons-head-tail-functional-tuple : - ( n : ℕ) → - ( v : functional-tuple A (succ-ℕ n)) → - ( cons-functional-tuple n - ( head-functional-tuple n v) - ( tail-functional-tuple n v)) ~ - ( v) - htpy-cons-head-tail-functional-tuple n v (inl x) = refl - htpy-cons-head-tail-functional-tuple n v (inr star) = refl - - cons-head-tail-functional-tuple : - ( n : ℕ) → - ( v : functional-tuple A (succ-ℕ n)) → - ( cons-functional-tuple n - ( head-functional-tuple n v) - ( tail-functional-tuple n v)) = - ( v) - cons-head-tail-functional-tuple n v = - eq-htpy (htpy-cons-head-tail-functional-tuple n v) -``` - ### Computing the transport of a tuple over its size ```agda diff --git a/src/lists/arrays.lagda.md b/src/lists/arrays.lagda.md index d53ccda02a..29b7dc87ed 100644 --- a/src/lists/arrays.lagda.md +++ b/src/lists/arrays.lagda.md @@ -22,6 +22,8 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels +open import linear-algebra.equivalence-tuples-finite-sequences +open import linear-algebra.finite-sequences open import linear-algebra.tuples open import lists.lists @@ -34,12 +36,13 @@ open import univalent-combinatorics.standard-finite-types ## Idea -An array is a pair of a natural number `n`, and a function from `Fin n` to `A`. -We show that arrays and lists are equivalent. +An array is a pair of a natural number `n`, and a +[finite sequence](linear-algebra.finite-sequences.md) of elements of the type +`A`. We show that arrays and lists are equivalent. ```agda array : {l : Level} → UU l → UU l -array A = Σ ℕ (λ n → functional-tuple A n) +array A = Σ ℕ (λ n → fin-sequence A n) module _ {l : Level} {A : UU l} @@ -48,8 +51,8 @@ module _ length-array : array A → ℕ length-array = pr1 - functional-tuple-array : (t : array A) → Fin (length-array t) → A - functional-tuple-array = pr2 + fin-sequence-array : (t : array A) → Fin (length-array t) → A + fin-sequence-array = pr2 empty-array : array A pr1 (empty-array) = zero-ℕ @@ -78,7 +81,7 @@ module _ cons-array : A → array A → array A cons-array a t = ( succ-ℕ (length-array t) , - rec-coproduct (functional-tuple-array t) (λ _ → a)) + rec-coproduct (fin-sequence-array t) (λ _ → a)) revert-array : array A → array A revert-array (n , t) = (n , λ k → t (opposite-Fin n k)) @@ -127,11 +130,11 @@ module _ ( is-retraction-tuple-list (n , v)) list-array : array A → list A - list-array (n , t) = list-tuple n (listed-tuple-functional-tuple n t) + list-array (n , t) = list-tuple n (tuple-fin-sequence n t) array-list : list A → array A array-list l = - ( length-list l , functional-tuple-tuple (length-list l) (tuple-list l)) + ( length-list l , fin-sequence-tuple (length-list l) (tuple-list l)) is-section-array-list : (list-array ∘ array-list) ~ id is-section-array-list nil = refl @@ -140,9 +143,9 @@ module _ is-retraction-array-list : (array-list ∘ list-array) ~ id is-retraction-array-list (n , t) = ap - ( λ (n , v) → (n , functional-tuple-tuple n v)) - ( is-retraction-tuple-list (n , listed-tuple-functional-tuple n t)) ∙ - eq-pair-eq-fiber (is-retraction-functional-tuple-tuple n t) + ( λ (n , v) → (n , fin-sequence-tuple n v)) + ( is-retraction-tuple-list (n , tuple-fin-sequence n t)) ∙ + eq-pair-eq-fiber (is-retraction-fin-sequence-tuple n t) equiv-list-array : array A ≃ list A pr1 equiv-list-array = list-array @@ -176,9 +179,9 @@ module _ compute-length-list-list-array t = compute-length-list-list-tuple ( length-array t) - ( listed-tuple-functional-tuple + ( tuple-fin-sequence ( length-array t) - ( functional-tuple-array t)) + ( fin-sequence-array t)) ``` ### An element `x` is in a tuple `v` iff it is in `list-tuple n v` diff --git a/src/lists/permutation-tuples.lagda.md b/src/lists/permutation-tuples.lagda.md index 0f4e14123b..cc265ce8f9 100644 --- a/src/lists/permutation-tuples.lagda.md +++ b/src/lists/permutation-tuples.lagda.md @@ -25,7 +25,11 @@ open import foundation.negated-equality open import foundation.transport-along-identifications open import foundation.universe-levels +open import linear-algebra.equivalence-tuples-finite-sequences +open import linear-algebra.finite-sequences +open import linear-algebra.functoriality-finite-sequences open import linear-algebra.functoriality-tuples +open import linear-algebra.functoriality-tuples-finite-sequences open import linear-algebra.tuples open import lists.arrays @@ -52,7 +56,7 @@ module _ permute-tuple : (n : ℕ) → tuple A n → Permutation n → tuple A n permute-tuple n v s = - listed-tuple-functional-tuple n (functional-tuple-tuple n v ∘ (map-equiv s)) + tuple-fin-sequence n (fin-sequence-tuple n v ∘ (map-equiv s)) ``` ### The predicate that a function from `tuple` to `tuple` is just permuting tuples @@ -95,10 +99,10 @@ module _ permute-tuple n v (a ∘e b) = permute-tuple n (permute-tuple n v a) b compute-composition-permute-tuple n v a b = ap - ( λ f → listed-tuple-functional-tuple n (f ∘ (map-equiv b))) + ( λ f → tuple-fin-sequence n (f ∘ (map-equiv b))) ( inv - ( is-retraction-functional-tuple-tuple n - ( functional-tuple-tuple n v ∘ map-equiv a))) + ( is-retraction-fin-sequence-tuple n + ( fin-sequence-tuple n v ∘ map-equiv a))) compute-swap-two-last-elements-transposition-Fin-permute-tuple : (n : ℕ) @@ -156,56 +160,56 @@ module _ ### `x` is in a tuple `v` iff it is in `permute v t` ```agda - is-in-functional-tuple-is-in-permute-functional-tuple : + is-in-fin-sequence-is-in-permute-fin-sequence : (n : ℕ) (v : Fin n → A) (t : Permutation n) (x : A) → - in-functional-tuple n x (v ∘ map-equiv t) → in-functional-tuple n x v - is-in-functional-tuple-is-in-permute-functional-tuple n v t x (k , refl) = + in-fin-sequence n x (v ∘ map-equiv t) → in-fin-sequence n x v + is-in-fin-sequence-is-in-permute-fin-sequence n v t x (k , refl) = map-equiv t k , refl is-in-tuple-is-in-permute-tuple : (n : ℕ) (v : tuple A n) (t : Permutation n) (x : A) → x ∈-tuple (permute-tuple n v t) → x ∈-tuple v is-in-tuple-is-in-permute-tuple n v t x I = - is-in-tuple-is-in-functional-tuple + is-in-tuple-is-in-fin-sequence ( n) ( v) ( x) - ( is-in-functional-tuple-is-in-permute-functional-tuple + ( is-in-fin-sequence-is-in-permute-fin-sequence ( n) - ( functional-tuple-tuple n v) + ( fin-sequence-tuple n v) ( t) ( x) ( tr - ( λ p → in-functional-tuple n x p) - ( is-retraction-functional-tuple-tuple n - ( functional-tuple-tuple n v ∘ map-equiv t)) - ( is-in-functional-tuple-is-in-tuple n (permute-tuple n v t) x I))) + ( λ p → in-fin-sequence n x p) + ( is-retraction-fin-sequence-tuple n + ( fin-sequence-tuple n v ∘ map-equiv t)) + ( is-in-fin-sequence-is-in-tuple n (permute-tuple n v t) x I))) - is-in-permute-functional-tuple-is-in-functional-tuple : + is-in-permute-fin-sequence-is-in-fin-sequence : (n : ℕ) (v : Fin n → A) (t : Permutation n) (x : A) → - in-functional-tuple n x v → in-functional-tuple n x (v ∘ map-equiv t) - is-in-permute-functional-tuple-is-in-functional-tuple n v t x (k , refl) = + in-fin-sequence n x v → in-fin-sequence n x (v ∘ map-equiv t) + is-in-permute-fin-sequence-is-in-fin-sequence n v t x (k , refl) = map-inv-equiv t k , ap v (inv (is-section-map-inv-equiv t k)) is-in-permute-tuple-is-in-tuple : (n : ℕ) (v : tuple A n) (t : Permutation n) (x : A) → x ∈-tuple v → x ∈-tuple (permute-tuple n v t) is-in-permute-tuple-is-in-tuple n v t x I = - is-in-tuple-is-in-functional-tuple + is-in-tuple-is-in-fin-sequence ( n) ( permute-tuple n v t) ( x) ( tr - ( λ p → in-functional-tuple n x p) + ( λ p → in-fin-sequence n x p) ( inv - ( is-retraction-functional-tuple-tuple n - ( functional-tuple-tuple n v ∘ map-equiv t))) - ( is-in-permute-functional-tuple-is-in-functional-tuple + ( is-retraction-fin-sequence-tuple n + ( fin-sequence-tuple n v ∘ map-equiv t))) + ( is-in-permute-fin-sequence-is-in-fin-sequence ( n) - ( functional-tuple-tuple n v) + ( fin-sequence-tuple n v) ( t) ( x) - ( is-in-functional-tuple-is-in-tuple n v x I))) + ( is-in-fin-sequence-is-in-tuple n v x I))) ``` ### If `μ : A → (B → B)` satisfies a commutativity property, then `fold-tuple b μ` is invariant under permutation for every `b : B` @@ -376,23 +380,23 @@ eq-map-tuple-permute-tuple : eq-map-tuple-permute-tuple f {n} v t = ( ( ap ( λ w → - ( listed-tuple-functional-tuple + ( tuple-fin-sequence ( n) - ( functional-tuple-tuple n w ∘ (map-equiv t))))) - ( inv (map-tuple-map-functional-tuple f n v)) ∙ + ( fin-sequence-tuple n w ∘ (map-equiv t))))) + ( inv (map-tuple-map-fin-sequence f n v)) ∙ ( ( ap ( λ p → - listed-tuple-functional-tuple + tuple-fin-sequence ( n) ( p ∘ map-equiv t)) - ( is-retraction-functional-tuple-tuple + ( is-retraction-fin-sequence-tuple ( n) - ( map-functional-tuple n f (functional-tuple-tuple n v)))) ∙ + ( map-fin-sequence n f (fin-sequence-tuple n v)))) ∙ ( ( ap - ( listed-tuple-functional-tuple n ∘ map-functional-tuple n f) + ( tuple-fin-sequence n ∘ map-fin-sequence n f) ( inv - ( is-retraction-functional-tuple-tuple + ( is-retraction-fin-sequence-tuple ( n) - ( λ z → functional-tuple-tuple n v (map-equiv t z))))) ∙ - ( map-tuple-map-functional-tuple f n (permute-tuple n v t))))) + ( λ z → fin-sequence-tuple n v (map-equiv t z))))) ∙ + ( map-tuple-map-fin-sequence f n (permute-tuple n v t))))) ``` diff --git a/src/lists/sorted-tuples.lagda.md b/src/lists/sorted-tuples.lagda.md index 8ddfcbc174..6e59cb4897 100644 --- a/src/lists/sorted-tuples.lagda.md +++ b/src/lists/sorted-tuples.lagda.md @@ -19,6 +19,8 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels +open import linear-algebra.equivalence-tuples-finite-sequences +open import linear-algebra.finite-sequences open import linear-algebra.tuples open import lists.permutation-tuples @@ -181,61 +183,61 @@ module _ ### If an element `x` is less than or equal to every element of a tuple `v`, then it is less than or equal to every element of every permutation of `v` ```agda - is-least-element-functional-tuple-Prop : + is-least-element-fin-sequence-Prop : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-tuple (type-Decidable-Total-Order X) n) → + (fv : fin-sequence (type-Decidable-Total-Order X) n) → Prop l2 - is-least-element-functional-tuple-Prop n x fv = + is-least-element-fin-sequence-Prop n x fv = Π-Prop (Fin n) (λ k → leq-Decidable-Total-Order-Prop X x (fv k)) - is-least-element-functional-tuple : + is-least-element-fin-sequence : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-tuple (type-Decidable-Total-Order X) n) → + (fv : fin-sequence (type-Decidable-Total-Order X) n) → UU l2 - is-least-element-functional-tuple n x fv = - type-Prop (is-least-element-functional-tuple-Prop n x fv) + is-least-element-fin-sequence n x fv = + type-Prop (is-least-element-fin-sequence-Prop n x fv) - is-least-element-permute-functional-tuple : + is-least-element-permute-fin-sequence : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-tuple (type-Decidable-Total-Order X) n) + (fv : fin-sequence (type-Decidable-Total-Order X) n) (a : Permutation n) → - is-least-element-functional-tuple n x fv → - is-least-element-functional-tuple n x (fv ∘ map-equiv a) - is-least-element-permute-functional-tuple n x fv a p k = + is-least-element-fin-sequence n x fv → + is-least-element-fin-sequence n x (fv ∘ map-equiv a) + is-least-element-permute-fin-sequence n x fv a p k = p (map-equiv a k) - is-least-element-tuple-is-least-element-functional-tuple : + is-least-element-tuple-is-least-element-fin-sequence : (n : ℕ) (x : type-Decidable-Total-Order X) - (fv : functional-tuple (type-Decidable-Total-Order X) n) → - is-least-element-functional-tuple n x fv → - is-least-element-tuple x (listed-tuple-functional-tuple n fv) - is-least-element-tuple-is-least-element-functional-tuple 0 x fv p = raise-star - is-least-element-tuple-is-least-element-functional-tuple (succ-ℕ n) x fv p = + (fv : fin-sequence (type-Decidable-Total-Order X) n) → + is-least-element-fin-sequence n x fv → + is-least-element-tuple x (tuple-fin-sequence n fv) + is-least-element-tuple-is-least-element-fin-sequence 0 x fv p = raise-star + is-least-element-tuple-is-least-element-fin-sequence (succ-ℕ n) x fv p = (p (inr star)) , - ( is-least-element-tuple-is-least-element-functional-tuple + ( is-least-element-tuple-is-least-element-fin-sequence ( n) ( x) - ( tail-functional-tuple n fv) + ( tail-fin-sequence n fv) ( p ∘ inl)) - is-least-element-functional-tuple-is-least-element-tuple : + is-least-element-fin-sequence-is-least-element-tuple : (n : ℕ) (x : type-Decidable-Total-Order X) (v : tuple (type-Decidable-Total-Order X) n) → is-least-element-tuple x v → - is-least-element-functional-tuple n x (functional-tuple-tuple n v) - is-least-element-functional-tuple-is-least-element-tuple + is-least-element-fin-sequence n x (fin-sequence-tuple n v) + is-least-element-fin-sequence-is-least-element-tuple ( succ-ℕ n) ( x) ( y ∷ v) ( p , q) ( inl k) = - is-least-element-functional-tuple-is-least-element-tuple n x v q k - is-least-element-functional-tuple-is-least-element-tuple + is-least-element-fin-sequence-is-least-element-tuple n x v q k + is-least-element-fin-sequence-is-least-element-tuple ( succ-ℕ n) ( x) ( y ∷ v) @@ -251,14 +253,14 @@ module _ is-least-element-tuple x v → is-least-element-tuple x (permute-tuple n v a) is-least-element-permute-tuple {n} x v a p = - is-least-element-tuple-is-least-element-functional-tuple + is-least-element-tuple-is-least-element-fin-sequence ( n) ( x) - ( functional-tuple-tuple n v ∘ map-equiv a) - ( is-least-element-permute-functional-tuple + ( fin-sequence-tuple n v ∘ map-equiv a) + ( is-least-element-permute-fin-sequence ( n) ( x) - ( functional-tuple-tuple n v) + ( fin-sequence-tuple n v) ( a) - ( is-least-element-functional-tuple-is-least-element-tuple n x v p)) + ( is-least-element-fin-sequence-is-least-element-tuple n x v p)) ``` diff --git a/src/ring-theory/binomial-theorem-rings.lagda.md b/src/ring-theory/binomial-theorem-rings.lagda.md index 42a1d03f14..f310c88f42 100644 --- a/src/ring-theory/binomial-theorem-rings.lagda.md +++ b/src/ring-theory/binomial-theorem-rings.lagda.md @@ -16,7 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples-on-rings +open import linear-algebra.finite-sequences-on-rings open import ring-theory.binomial-theorem-semirings open import ring-theory.powers-of-elements-rings @@ -49,7 +49,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Ring : {l : Level} (R : Ring l) - (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → type-Ring R + (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → type-Ring R binomial-sum-Ring R = binomial-sum-Semiring (semiring-Ring R) ``` @@ -63,13 +63,13 @@ module _ where binomial-sum-one-element-Ring : - (f : functional-tuple-Ring R 1) → - binomial-sum-Ring R 0 f = head-functional-tuple-Ring R 0 f + (f : fin-sequence-Ring R 1) → + binomial-sum-Ring R 0 f = head-fin-sequence-Ring R 0 f binomial-sum-one-element-Ring = binomial-sum-one-element-Semiring (semiring-Ring R) binomial-sum-two-elements-Ring : - (f : functional-tuple-Ring R 2) → + (f : fin-sequence-Ring R 2) → binomial-sum-Ring R 1 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Ring = binomial-sum-two-elements-Semiring (semiring-Ring R) @@ -83,7 +83,7 @@ module _ where htpy-binomial-sum-Ring : - (n : ℕ) {f g : functional-tuple-Ring R (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-Ring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Ring R n f = binomial-sum-Ring R n g htpy-binomial-sum-Ring = htpy-binomial-sum-Semiring (semiring-Ring R) ``` @@ -96,14 +96,14 @@ module _ where left-distributive-mul-binomial-sum-Ring : - (n : ℕ) (x : type-Ring R) (f : functional-tuple-Ring R (succ-ℕ n)) → + (n : ℕ) (x : type-Ring R) (f : fin-sequence-Ring R (succ-ℕ n)) → mul-Ring R x (binomial-sum-Ring R n f) = binomial-sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-binomial-sum-Ring = left-distributive-mul-binomial-sum-Semiring (semiring-Ring R) right-distributive-mul-binomial-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) (x : type-Ring R) → + (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) (x : type-Ring R) → mul-Ring R (binomial-sum-Ring R n f) x = binomial-sum-Ring R n (λ i → mul-Ring R (f i) x) right-distributive-mul-binomial-sum-Ring = diff --git a/src/ring-theory/binomial-theorem-semirings.lagda.md b/src/ring-theory/binomial-theorem-semirings.lagda.md index f46fda9c11..f7ec01d0ca 100644 --- a/src/ring-theory/binomial-theorem-semirings.lagda.md +++ b/src/ring-theory/binomial-theorem-semirings.lagda.md @@ -19,7 +19,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples-on-semirings +open import linear-algebra.finite-sequences-on-semirings open import ring-theory.powers-of-elements-semirings open import ring-theory.semirings @@ -52,7 +52,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Semiring : {l : Level} (R : Semiring l) - (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → type-Semiring R binomial-sum-Semiring R n f = sum-Semiring R (succ-ℕ n) @@ -72,9 +72,9 @@ module _ where binomial-sum-one-element-Semiring : - (f : functional-tuple-Semiring R 1) → + (f : fin-sequence-Semiring R 1) → binomial-sum-Semiring R 0 f = - head-functional-tuple-Semiring R 0 f + head-fin-sequence-Semiring R 0 f binomial-sum-one-element-Semiring f = ( sum-one-element-Semiring R ( λ i → @@ -82,10 +82,10 @@ module _ ( binomial-coefficient-Fin 0 i) ( f i))) ∙ ( left-unit-law-mul-nat-scalar-Semiring R - ( head-functional-tuple-Semiring R 0 f)) + ( head-fin-sequence-Semiring R 0 f)) binomial-sum-two-elements-Semiring : - (f : functional-tuple-Semiring R 2) → + (f : fin-sequence-Semiring R 2) → binomial-sum-Semiring R 1 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Semiring f = @@ -105,7 +105,7 @@ module _ where htpy-binomial-sum-Semiring : - (n : ℕ) {f g : functional-tuple-Semiring R (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-Semiring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Semiring R n f = binomial-sum-Semiring R n g htpy-binomial-sum-Semiring n H = @@ -126,7 +126,7 @@ module _ left-distributive-mul-binomial-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : functional-tuple-Semiring R (succ-ℕ n)) → + (f : fin-sequence-Semiring R (succ-ℕ n)) → mul-Semiring R x (binomial-sum-Semiring R n f) = binomial-sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-binomial-sum-Semiring n x f = @@ -144,7 +144,7 @@ module _ ( f i))) right-distributive-mul-binomial-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → (x : type-Semiring R) → mul-Semiring R (binomial-sum-Semiring R n f) x = binomial-sum-Semiring R n (λ i → mul-Semiring R (f i) x) diff --git a/src/ring-theory/sums-rings.lagda.md b/src/ring-theory/sums-rings.lagda.md index 879e8a5978..9031192d73 100644 --- a/src/ring-theory/sums-rings.lagda.md +++ b/src/ring-theory/sums-rings.lagda.md @@ -15,8 +15,8 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples -open import linear-algebra.tuples-on-rings +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-rings open import ring-theory.rings open import ring-theory.sums-semirings @@ -30,13 +30,13 @@ open import univalent-combinatorics.standard-finite-types ## Idea The sum operation extends the binary addition operation on a ring `R` to any -family of elements of `R` indexed by a standard finite type. +[finite sequence](linear-algebra.finite-sequences.md) of elements of `R`. ## Definition ```agda sum-Ring : - {l : Level} (R : Ring l) (n : ℕ) → functional-tuple-Ring R n → type-Ring R + {l : Level} (R : Ring l) (n : ℕ) → fin-sequence-Ring R n → type-Ring R sum-Ring R = sum-Semiring (semiring-Ring R) ``` @@ -50,11 +50,11 @@ module _ where sum-one-element-Ring : - (f : functional-tuple-Ring R 1) → sum-Ring R 1 f = head-functional-tuple 0 f + (f : fin-sequence-Ring R 1) → sum-Ring R 1 f = head-fin-sequence 0 f sum-one-element-Ring = sum-one-element-Semiring (semiring-Ring R) sum-two-elements-Ring : - (f : functional-tuple-Ring R 2) → + (f : fin-sequence-Ring R 2) → sum-Ring R 2 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Ring = sum-two-elements-Semiring (semiring-Ring R) ``` @@ -67,7 +67,7 @@ module _ where htpy-sum-Ring : - (n : ℕ) {f g : functional-tuple-Ring R n} → + (n : ℕ) {f g : fin-sequence-Ring R n} → (f ~ g) → sum-Ring R n f = sum-Ring R n g htpy-sum-Ring = htpy-sum-Semiring (semiring-Ring R) ``` @@ -80,14 +80,14 @@ module _ where cons-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → - {x : type-Ring R} → head-functional-tuple n f = x → + (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → + {x : type-Ring R} → head-fin-sequence n f = x → sum-Ring R (succ-ℕ n) f = - add-Ring R (sum-Ring R n (tail-functional-tuple n f)) x + add-Ring R (sum-Ring R n (tail-fin-sequence n f)) x cons-sum-Ring = cons-sum-Semiring (semiring-Ring R) snoc-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → {x : type-Ring R} → f (zero-Fin n) = x → sum-Ring R (succ-ℕ n) f = add-Ring R @@ -105,14 +105,14 @@ module _ left-distributive-mul-sum-Ring : (n : ℕ) (x : type-Ring R) - (f : functional-tuple-Ring R n) → + (f : fin-sequence-Ring R n) → mul-Ring R x (sum-Ring R n f) = sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-sum-Ring = left-distributive-mul-sum-Semiring (semiring-Ring R) right-distributive-mul-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R n) + (n : ℕ) (f : fin-sequence-Ring R n) (x : type-Ring R) → mul-Ring R (sum-Ring R n f) x = sum-Ring R n (λ i → mul-Ring R (f i) x) @@ -128,12 +128,12 @@ module _ where interchange-add-sum-Ring : - (n : ℕ) (f g : functional-tuple-Ring R n) → + (n : ℕ) (f g : fin-sequence-Ring R n) → add-Ring R ( sum-Ring R n f) ( sum-Ring R n g) = sum-Ring R n - ( add-functional-tuple-Ring R n f g) + ( add-fin-sequence-Ring R n f g) interchange-add-sum-Ring = interchange-add-sum-Semiring (semiring-Ring R) ``` @@ -145,10 +145,10 @@ module _ where extend-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R n) → + (n : ℕ) (f : fin-sequence-Ring R n) → sum-Ring R ( succ-ℕ n) - ( cons-functional-tuple-Ring R n (zero-Ring R) f) = + ( cons-fin-sequence-Ring R n (zero-Ring R) f) = sum-Ring R n f extend-sum-Ring = extend-sum-Semiring (semiring-Ring R) ``` @@ -161,10 +161,10 @@ module _ where shift-sum-Ring : - (n : ℕ) (f : functional-tuple-Ring R n) → + (n : ℕ) (f : fin-sequence-Ring R n) → sum-Ring R ( succ-ℕ n) - ( snoc-functional-tuple-Ring R n f + ( snoc-fin-sequence-Ring R n f ( zero-Ring R)) = sum-Ring R n f shift-sum-Ring = shift-sum-Semiring (semiring-Ring R) @@ -178,7 +178,7 @@ module _ where sum-zero-Ring : - (n : ℕ) → sum-Ring R n (zero-functional-tuple-Ring R n) = zero-Ring R + (n : ℕ) → sum-Ring R n (zero-fin-sequence-Ring R n) = zero-Ring R sum-zero-Ring = sum-zero-Semiring (semiring-Ring R) ``` @@ -187,7 +187,7 @@ module _ ```agda split-sum-Ring : {l : Level} (R : Ring l) - (n m : ℕ) (f : functional-tuple-Ring R (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-Ring R (n +ℕ m)) → sum-Ring R (n +ℕ m) f = add-Ring R ( sum-Ring R n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index ffc93d8084..b6508889ee 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -19,8 +19,8 @@ open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.tuples -open import linear-algebra.tuples-on-semirings +open import linear-algebra.finite-sequences +open import linear-algebra.finite-sequences-on-semirings open import ring-theory.semirings @@ -33,14 +33,14 @@ open import univalent-combinatorics.standard-finite-types ## Idea The sum operation extends the binary addition operation on a semiring `R` to any -family of elements of `R` indexed by a standard finite type. +[finite sequence](linear-algebra.finite-sequences.md) of elements of `R`. ## Definition ```agda sum-Semiring : {l : Level} (R : Semiring l) (n : ℕ) → - (functional-tuple-Semiring R n) → type-Semiring R + (fin-sequence-Semiring R n) → type-Semiring R sum-Semiring R zero-ℕ f = zero-Semiring R sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -58,13 +58,13 @@ module _ where sum-one-element-Semiring : - (f : functional-tuple-Semiring R 1) → - sum-Semiring R 1 f = head-functional-tuple 0 f + (f : fin-sequence-Semiring R 1) → + sum-Semiring R 1 f = head-fin-sequence 0 f sum-one-element-Semiring f = left-unit-law-add-Semiring R (f (inr star)) sum-two-elements-Semiring : - (f : functional-tuple-Semiring R 2) → + (f : fin-sequence-Semiring R 2) → sum-Semiring R 2 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Semiring f = ( associative-add-Semiring R @@ -81,7 +81,7 @@ module _ where htpy-sum-Semiring : - (n : ℕ) {f g : functional-tuple-Semiring R n} → + (n : ℕ) {f g : fin-sequence-Semiring R n} → (f ~ g) → sum-Semiring R n f = sum-Semiring R n g htpy-sum-Semiring zero-ℕ H = refl htpy-sum-Semiring (succ-ℕ n) H = @@ -98,14 +98,14 @@ module _ where cons-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → - {x : type-Semiring R} → head-functional-tuple n f = x → + (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → + {x : type-Semiring R} → head-fin-sequence n f = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R (sum-Semiring R n (f ∘ inl-Fin n)) x cons-sum-Semiring n f refl = refl snoc-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → {x : type-Semiring R} → f (zero-Fin n) = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -116,12 +116,12 @@ module _ ( inv (right-unit-law-add-Semiring R (f (zero-Fin 0)))) snoc-sum-Semiring (succ-ℕ n) f refl = ( ap - ( add-Semiring' R (head-functional-tuple (succ-ℕ n) f)) + ( add-Semiring' R (head-fin-sequence (succ-ℕ n) f)) ( snoc-sum-Semiring n (f ∘ inl-Fin (succ-ℕ n)) refl)) ∙ ( associative-add-Semiring R ( f (zero-Fin (succ-ℕ n))) ( sum-Semiring R n (f ∘ (inr-Fin (succ-ℕ n) ∘ inl-Fin n))) - ( head-functional-tuple (succ-ℕ n) f)) + ( head-fin-sequence (succ-ℕ n) f)) ``` ### Multiplication distributes over sums @@ -133,7 +133,7 @@ module _ left-distributive-mul-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : functional-tuple-Semiring R n) → + (f : fin-sequence-Semiring R n) → mul-Semiring R x (sum-Semiring R n f) = sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-sum-Semiring zero-ℕ x f = @@ -147,7 +147,7 @@ module _ ( left-distributive-mul-sum-Semiring n x (f ∘ inl-Fin n))) right-distributive-mul-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R n) + (n : ℕ) (f : fin-sequence-Semiring R n) (x : type-Semiring R) → mul-Semiring R (sum-Semiring R n f) x = sum-Semiring R n (λ i → mul-Semiring R (f i) x) @@ -171,12 +171,12 @@ module _ where interchange-add-sum-Semiring : - (n : ℕ) (f g : functional-tuple-Semiring R n) → + (n : ℕ) (f g : fin-sequence-Semiring R n) → add-Semiring R ( sum-Semiring R n f) ( sum-Semiring R n g) = sum-Semiring R n - ( add-functional-tuple-Semiring R n f g) + ( add-fin-sequence-Semiring R n f g) interchange-add-sum-Semiring zero-ℕ f g = left-unit-law-add-Semiring R (zero-Semiring R) interchange-add-sum-Semiring (succ-ℕ n) f g = @@ -201,10 +201,10 @@ module _ where extend-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R n) → + (n : ℕ) (f : fin-sequence-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( cons-functional-tuple-Semiring R n (zero-Semiring R) f) = + ( cons-fin-sequence-Semiring R n (zero-Semiring R) f) = sum-Semiring R n f extend-sum-Semiring n f = right-unit-law-add-Semiring R (sum-Semiring R n f) @@ -218,10 +218,10 @@ module _ where shift-sum-Semiring : - (n : ℕ) (f : functional-tuple-Semiring R n) → + (n : ℕ) (f : fin-sequence-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( snoc-functional-tuple-Semiring R n f + ( snoc-fin-sequence-Semiring R n f ( zero-Semiring R)) = sum-Semiring R n f shift-sum-Semiring zero-ℕ f = @@ -229,9 +229,9 @@ module _ shift-sum-Semiring (succ-ℕ n) f = ap ( add-Semiring' R - ( head-functional-tuple-Semiring R n f)) + ( head-fin-sequence-Semiring R n f)) ( shift-sum-Semiring n - ( tail-functional-tuple-Semiring R n f)) + ( tail-fin-sequence-Semiring R n f)) ``` ### A sum of zeroes is zero @@ -243,7 +243,7 @@ module _ sum-zero-Semiring : (n : ℕ) → - sum-Semiring R n (zero-functional-tuple-Semiring R n) = zero-Semiring R + sum-Semiring R n (zero-fin-sequence-Semiring R n) = zero-Semiring R sum-zero-Semiring zero-ℕ = refl sum-zero-Semiring (succ-ℕ n) = right-unit-law-add-Semiring R _ ∙ sum-zero-Semiring n @@ -254,7 +254,7 @@ module _ ```agda split-sum-Semiring : {l : Level} (R : Semiring l) - (n m : ℕ) (f : functional-tuple-Semiring R (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-Semiring R (n +ℕ m)) → sum-Semiring R (n +ℕ m) f = add-Semiring R ( sum-Semiring R n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md b/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md index 70a7a2046a..e3c04f3bc9 100644 --- a/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md +++ b/src/univalent-combinatorics/cycle-prime-decomposition-natural-numbers.lagda.md @@ -58,7 +58,7 @@ concrete-group-cycle-prime-decomposition-ℕ n H = ( map-list ( concrete-group-Cyclic-Type) ( list-fundamental-theorem-arithmetic-ℕ n H)))) - ( functional-tuple-array + ( fin-sequence-array ( array-list ( map-list ( concrete-group-Cyclic-Type) diff --git a/src/universal-algebra/quotient-algebras.lagda.md b/src/universal-algebra/quotient-algebras.lagda.md index 58073512c3..eb3e959c9f 100644 --- a/src/universal-algebra/quotient-algebras.lagda.md +++ b/src/universal-algebra/quotient-algebras.lagda.md @@ -13,6 +13,7 @@ open import foundation.dependent-pair-types open import foundation.equivalence-classes open import foundation.equivalence-relations open import foundation.equivalences +open import foundation.finite-sequences-set-quotients open import foundation.functoriality-propositional-truncation open import foundation.multivariable-functoriality-set-quotients open import foundation.multivariable-operations @@ -20,7 +21,6 @@ open import foundation.propositional-truncations open import foundation.propositions open import foundation.set-quotients open import foundation.sets -open import foundation.tuples-set-quotients open import foundation.unit-type open import foundation.universe-levels From 105e5074722031e6f6610ad15ecfc9f9de4c7c5f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 25 Apr 2025 13:36:41 -0700 Subject: [PATCH 09/24] Move to lists package --- .../sums-commutative-rings.lagda.md | 6 +++--- .../sums-commutative-semirings.lagda.md | 7 ++++--- .../binomial-theorem-integers.lagda.md | 2 +- .../binomial-theorem-natural-numbers.lagda.md | 2 +- .../finite-sequences-set-quotients.lagda.md | 6 +++--- ...riable-functoriality-set-quotients.lagda.md | 6 +++--- .../multivariable-operations.lagda.md | 4 ++-- src/linear-algebra.lagda.md | 6 ------ src/linear-algebra/constant-tuples.lagda.md | 6 +++--- .../diagonal-matrices-on-rings.lagda.md | 5 +++-- ...ite-sequences-on-commutative-rings.lagda.md | 3 +-- ...sequences-on-commutative-semirings.lagda.md | 3 +-- ...ite-sequences-on-euclidean-domains.lagda.md | 9 +++++---- .../finite-sequences-on-rings.lagda.md | 7 ++++--- .../finite-sequences-on-semirings.lagda.md | 6 +++--- .../functoriality-matrices.lagda.md | 3 ++- src/linear-algebra/matrices-on-rings.lagda.md | 3 ++- src/linear-algebra/matrices.lagda.md | 8 ++++---- ...lar-multiplication-tuples-on-rings.lagda.md | 3 ++- .../scalar-multiplication-tuples.lagda.md | 6 +++--- .../transposition-matrices.lagda.md | 5 +++-- .../tuples-on-commutative-rings.lagda.md | 5 ++--- .../tuples-on-commutative-semirings.lagda.md | 6 +++--- .../tuples-on-euclidean-domains.lagda.md | 7 ++++--- src/linear-algebra/tuples-on-rings.lagda.md | 7 ++++--- .../tuples-on-semirings.lagda.md | 7 ++++--- src/lists.lagda.md | 6 ++++++ src/lists/arrays.lagda.md | 11 +++++------ ...quivalence-tuples-finite-sequences.lagda.md | 6 +++--- .../finite-sequences.lagda.md | 2 +- .../functoriality-finite-sequences.lagda.md | 6 +++--- src/lists/functoriality-lists.lagda.md | 5 ++--- ...ctoriality-tuples-finite-sequences.lagda.md | 18 +++++++++--------- .../functoriality-tuples.lagda.md | 6 +++--- src/lists/permutation-lists.lagda.md | 5 ++--- src/lists/permutation-tuples.lagda.md | 13 ++++++------- src/lists/sort-by-insertion-tuples.lagda.md | 3 +-- src/lists/sorted-lists.lagda.md | 3 +-- src/lists/sorted-tuples.lagda.md | 7 +++---- src/lists/sorting-algorithms-lists.lagda.md | 3 +-- src/lists/sorting-algorithms-tuples.lagda.md | 3 +-- src/{linear-algebra => lists}/tuples.lagda.md | 2 +- src/reflection/group-solver.lagda.md | 3 +-- src/ring-theory/sums-rings.lagda.md | 5 +++-- src/ring-theory/sums-semirings.lagda.md | 5 +++-- .../algebraic-theory-of-groups.lagda.md | 2 +- src/universal-algebra/congruences.lagda.md | 2 +- .../homomorphisms-of-algebras.lagda.md | 4 ++-- src/universal-algebra/kernels.lagda.md | 4 ++-- .../models-of-signatures.lagda.md | 2 +- .../quotient-algebras.lagda.md | 2 +- .../terms-over-signatures.lagda.md | 5 ++--- 52 files changed, 135 insertions(+), 136 deletions(-) rename src/{linear-algebra => lists}/equivalence-tuples-finite-sequences.lagda.md (96%) rename src/{linear-algebra => lists}/finite-sequences.lagda.md (98%) rename src/{linear-algebra => lists}/functoriality-finite-sequences.lagda.md (90%) rename src/{linear-algebra => lists}/functoriality-tuples-finite-sequences.lagda.md (77%) rename src/{linear-algebra => lists}/functoriality-tuples.lagda.md (90%) rename src/{linear-algebra => lists}/tuples.lagda.md (99%) diff --git a/src/commutative-algebra/sums-commutative-rings.lagda.md b/src/commutative-algebra/sums-commutative-rings.lagda.md index 2c33c87d8e..491ab7d289 100644 --- a/src/commutative-algebra/sums-commutative-rings.lagda.md +++ b/src/commutative-algebra/sums-commutative-rings.lagda.md @@ -20,9 +20,10 @@ open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-commutative-rings +open import lists.finite-sequences + open import ring-theory.sums-rings open import univalent-combinatorics.coproduct-types @@ -34,8 +35,7 @@ open import univalent-combinatorics.standard-finite-types ## Idea The **sum operation** extends the binary addition operation on a commutative -ring `A` to any [finite sequence](linear-algebra.finite-sequences.md) of -elements of `A`. +ring `A` to any [finite sequence](lists.finite-sequences.md) of elements of `A`. ## Definition diff --git a/src/commutative-algebra/sums-commutative-semirings.lagda.md b/src/commutative-algebra/sums-commutative-semirings.lagda.md index 1865ce8255..2808d0ee75 100644 --- a/src/commutative-algebra/sums-commutative-semirings.lagda.md +++ b/src/commutative-algebra/sums-commutative-semirings.lagda.md @@ -17,9 +17,10 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-commutative-semirings +open import lists.finite-sequences + open import ring-theory.sums-semirings open import univalent-combinatorics.coproduct-types @@ -31,8 +32,8 @@ open import univalent-combinatorics.standard-finite-types ## Idea The **sum operation** extends the binary addition operation on a commutative -semiring `R` to any [finite sequence](linear-algebra.finite-sequences.md) of -elements of `R`. +semiring `R` to any [finite sequence](lists.finite-sequences.md) of elements of +`R`. ## Definition diff --git a/src/elementary-number-theory/binomial-theorem-integers.lagda.md b/src/elementary-number-theory/binomial-theorem-integers.lagda.md index 206cd8da7a..0277a4c1af 100644 --- a/src/elementary-number-theory/binomial-theorem-integers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-integers.lagda.md @@ -20,7 +20,7 @@ open import elementary-number-theory.ring-of-integers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.finite-sequences +open import lists.finite-sequences open import univalent-combinatorics.standard-finite-types ``` diff --git a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md index 0cf1efb137..2e342b18ca 100644 --- a/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md +++ b/src/elementary-number-theory/binomial-theorem-natural-numbers.lagda.md @@ -19,7 +19,7 @@ open import elementary-number-theory.natural-numbers open import foundation.homotopies open import foundation.identity-types -open import linear-algebra.finite-sequences +open import lists.finite-sequences open import univalent-combinatorics.standard-finite-types ``` diff --git a/src/foundation/finite-sequences-set-quotients.lagda.md b/src/foundation/finite-sequences-set-quotients.lagda.md index 4e9b5cc8fa..752d7dd2a4 100644 --- a/src/foundation/finite-sequences-set-quotients.lagda.md +++ b/src/foundation/finite-sequences-set-quotients.lagda.md @@ -38,7 +38,7 @@ open import foundation-core.propositions open import foundation-core.retractions open import foundation-core.sections -open import linear-algebra.finite-sequences +open import lists.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -47,8 +47,8 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Say we have a [finite sequence](linear-algebra.finite-sequences.md) of types -`A1`, ..., `An` each equipped with an +Say we have a [finite sequence](lists.finite-sequences.md) of types `A1`, ..., +`An` each equipped with an [equivalence relation](foundation.equivalence-relations.md) `Ri`. Then, the set quotient of this finite sequence is the finite sequence of the [set quotients](foundation.set-quotients.md) of each `Ai`. diff --git a/src/foundation/multivariable-functoriality-set-quotients.lagda.md b/src/foundation/multivariable-functoriality-set-quotients.lagda.md index eb11ff3864..154e41ff46 100644 --- a/src/foundation/multivariable-functoriality-set-quotients.lagda.md +++ b/src/foundation/multivariable-functoriality-set-quotients.lagda.md @@ -18,7 +18,7 @@ open import foundation-core.equivalence-relations open import foundation-core.function-types open import foundation-core.homotopies -open import linear-algebra.finite-sequences +open import lists.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -27,8 +27,8 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Say we have a [finite sequence](linear-algebra.finite-sequences.md) of types -`A1`, ..., `An` each equipped with an +Say we have a [finite sequence](lists.finite-sequences.md) of types `A1`, ..., +`An` each equipped with an [equivalence relation](foundation.equivalence-relations.md) `Ri`, as well as a type `X` equipped with an equivalence relation `S`, Then, any multivariable operation from the `Ai`s to the `X` that respects the equivalence relations diff --git a/src/foundation/multivariable-operations.lagda.md b/src/foundation/multivariable-operations.lagda.md index 602dcebb13..c7568751c2 100644 --- a/src/foundation/multivariable-operations.lagda.md +++ b/src/foundation/multivariable-operations.lagda.md @@ -23,8 +23,8 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import linear-algebra.finite-sequences -open import linear-algebra.tuples +open import lists.finite-sequences +open import lists.tuples ```
diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index 555a6c902e..e068b70fba 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -8,17 +8,12 @@ module linear-algebra where open import linear-algebra.constant-matrices public open import linear-algebra.constant-tuples public open import linear-algebra.diagonal-matrices-on-rings public -open import linear-algebra.equivalence-tuples-finite-sequences public -open import linear-algebra.finite-sequences public open import linear-algebra.finite-sequences-on-commutative-rings public open import linear-algebra.finite-sequences-on-commutative-semirings public open import linear-algebra.finite-sequences-on-euclidean-domains public open import linear-algebra.finite-sequences-on-rings public open import linear-algebra.finite-sequences-on-semirings public -open import linear-algebra.functoriality-finite-sequences public open import linear-algebra.functoriality-matrices public -open import linear-algebra.functoriality-tuples public -open import linear-algebra.functoriality-tuples-finite-sequences public open import linear-algebra.matrices public open import linear-algebra.matrices-on-rings public open import linear-algebra.multiplication-matrices public @@ -26,7 +21,6 @@ open import linear-algebra.scalar-multiplication-matrices public open import linear-algebra.scalar-multiplication-tuples public open import linear-algebra.scalar-multiplication-tuples-on-rings public open import linear-algebra.transposition-matrices public -open import linear-algebra.tuples public open import linear-algebra.tuples-on-commutative-rings public open import linear-algebra.tuples-on-commutative-semirings public open import linear-algebra.tuples-on-euclidean-domains public diff --git a/src/linear-algebra/constant-tuples.lagda.md b/src/linear-algebra/constant-tuples.lagda.md index 80604fa4a5..3bd182da02 100644 --- a/src/linear-algebra/constant-tuples.lagda.md +++ b/src/linear-algebra/constant-tuples.lagda.md @@ -11,15 +11,15 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.tuples +open import lists.tuples ```
## Idea -Diagonal tuples are [tuples](linear-algebra.tuples.md) on the diagonal, i.e., -they are tuples of which all coefficients are equal. +Diagonal tuples are [tuples](lists.tuples.md) on the diagonal, i.e., they are +tuples of which all coefficients are equal. ## Definition diff --git a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md index 9fcc0ff390..45aecbdc7e 100644 --- a/src/linear-algebra/diagonal-matrices-on-rings.lagda.md +++ b/src/linear-algebra/diagonal-matrices-on-rings.lagda.md @@ -12,11 +12,12 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels open import linear-algebra.constant-tuples -open import linear-algebra.functoriality-tuples open import linear-algebra.matrices-on-rings -open import linear-algebra.tuples open import linear-algebra.tuples-on-rings +open import lists.functoriality-tuples +open import lists.tuples + open import ring-theory.rings ``` diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md index 00040b3bdf..b076027b0a 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md @@ -29,8 +29,7 @@ open import linear-algebra.finite-sequences-on-rings Finite sequences on a [commutative ring](commutative-algebra.commutative-rings.md) `R` are -[finite sequences](linear-algebra.finite-sequences.md) on the underlying type of -`R`. +[finite sequences](lists.finite-sequences.md) on the underlying type of `R`. ## Definitions diff --git a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md index 5c6e5d34da..48f5723114 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md @@ -27,8 +27,7 @@ open import linear-algebra.finite-sequences-on-semirings Finite sequences on a [commutative semiring](commutative-algebra.commutative-semirings.md) `R` are -[finite sequences](linear-algebra.finite-sequences.md) on the underlying type of -`R`. +[finite sequences](lists.finite-sequences.md) on the underlying type of `R`. ## Definitions diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md index 01b0704666..a1bba57e5d 100644 --- a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md @@ -20,9 +20,10 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-commutative-rings -open import linear-algebra.functoriality-finite-sequences + +open import lists.finite-sequences +open import lists.functoriality-finite-sequences ```
@@ -30,8 +31,8 @@ open import linear-algebra.functoriality-finite-sequences ## Idea Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the -type `fin-sequence n R` of -`R`-[finite sequences](linear-algebra.finite-sequences.md) is an `R`-module. +type `fin-sequence n R` of `R`-[finite sequences](lists.finite-sequences.md) is +an `R`-module. ## Definitions diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md index 9c88744141..e00611b248 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -22,9 +22,10 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-semirings -open import linear-algebra.functoriality-finite-sequences + +open import lists.finite-sequences +open import lists.functoriality-finite-sequences open import ring-theory.rings ``` @@ -34,7 +35,7 @@ open import ring-theory.rings ## Idea Given a [ring](ring-theory.rings.md) `R`, the type `fin-sequence n R` of -`R`-[finite sequences](linear-algebra.finite-sequences.md) is an +`R`-[finite sequences](lists.finite-sequences.md) is an [Abelian group](group-theory.abelian-groups.md). ## Definitions diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-semirings.lagda.md index a623e33d06..dff18e22e8 100644 --- a/src/linear-algebra/finite-sequences-on-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-semirings.lagda.md @@ -18,8 +18,8 @@ open import group-theory.commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences -open import linear-algebra.functoriality-finite-sequences +open import lists.finite-sequences +open import lists.functoriality-finite-sequences open import ring-theory.semirings ``` @@ -30,7 +30,7 @@ open import ring-theory.semirings Given a [semiring](ring-theory.semirings.md) `R`, the type `finite-sequence-Semiring R n` of -`R`-[finite sequences](linear-algebra.finite-sequences.md) is a +`R`-[finite sequences](lists.finite-sequences.md) is a [commutative monoid](group-theory.commutative-monoids.md) under addition. ## Definitions diff --git a/src/linear-algebra/functoriality-matrices.lagda.md b/src/linear-algebra/functoriality-matrices.lagda.md index ee118a9404..38702be412 100644 --- a/src/linear-algebra/functoriality-matrices.lagda.md +++ b/src/linear-algebra/functoriality-matrices.lagda.md @@ -11,8 +11,9 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.functoriality-tuples open import linear-algebra.matrices + +open import lists.functoriality-tuples ```
diff --git a/src/linear-algebra/matrices-on-rings.lagda.md b/src/linear-algebra/matrices-on-rings.lagda.md index ed7f29eccb..35c07eaca1 100644 --- a/src/linear-algebra/matrices-on-rings.lagda.md +++ b/src/linear-algebra/matrices-on-rings.lagda.md @@ -16,9 +16,10 @@ open import foundation.universe-levels open import linear-algebra.constant-matrices open import linear-algebra.functoriality-matrices open import linear-algebra.matrices -open import linear-algebra.tuples open import linear-algebra.tuples-on-rings +open import lists.tuples + open import ring-theory.rings ``` diff --git a/src/linear-algebra/matrices.lagda.md b/src/linear-algebra/matrices.lagda.md index 4e786721a0..b5ff40520f 100644 --- a/src/linear-algebra/matrices.lagda.md +++ b/src/linear-algebra/matrices.lagda.md @@ -15,8 +15,8 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples +open import lists.functoriality-tuples +open import lists.tuples ```
@@ -25,8 +25,8 @@ open import linear-algebra.tuples An `m × n` {{#concept "matrix" Agda=matrix WD="matrix" WDID=Q44337}} of elements in `A` is an arrangement of elements of A with `m` rows and `n` columns. In -other words, a matrix is a [tuple](linear-algebra.tuples.md) of length `m` of -tuples of length `n` of elements of `A`. +other words, a matrix is a [tuple](lists.tuples.md) of length `m` of tuples of +length `n` of elements of `A`. ## Definitions diff --git a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md index 6f4cffff23..c66771d41d 100644 --- a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md @@ -17,9 +17,10 @@ open import foundation.universe-levels open import group-theory.endomorphism-rings-abelian-groups open import group-theory.homomorphisms-abelian-groups -open import linear-algebra.tuples open import linear-algebra.tuples-on-rings +open import lists.tuples + open import ring-theory.homomorphisms-rings open import ring-theory.modules-rings open import ring-theory.rings diff --git a/src/linear-algebra/scalar-multiplication-tuples.lagda.md b/src/linear-algebra/scalar-multiplication-tuples.lagda.md index 04fb3364fe..a1fb86adfc 100644 --- a/src/linear-algebra/scalar-multiplication-tuples.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples.lagda.md @@ -11,8 +11,8 @@ open import elementary-number-theory.natural-numbers open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples +open import lists.functoriality-tuples +open import lists.tuples ```
@@ -20,7 +20,7 @@ open import linear-algebra.tuples ## Idea Any operation `B → A → A` for some type `B` of formal scalars induces an -operation on [tuples](linear-algebra.tuples.md) `B → tuple n A → tuple n A`. +operation on [tuples](lists.tuples.md) `B → tuple n A → tuple n A`. ## Definition diff --git a/src/linear-algebra/transposition-matrices.lagda.md b/src/linear-algebra/transposition-matrices.lagda.md index 49a5c49244..9ed858094f 100644 --- a/src/linear-algebra/transposition-matrices.lagda.md +++ b/src/linear-algebra/transposition-matrices.lagda.md @@ -14,9 +14,10 @@ open import foundation.action-on-identifications-functions open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-tuples open import linear-algebra.matrices -open import linear-algebra.tuples + +open import lists.functoriality-tuples +open import lists.tuples ``` diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index fe0a12c648..f433f6f797 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -29,9 +29,8 @@ open import linear-algebra.tuples-on-rings ## Idea Tuples on a [commutative ring](commutative-algebra.commutative-rings.md) `R` are -[tuples](linear-algebra.tuples.md) on the underlying type of `R`. The -commutative ring structure on `R` induces further structure on the type of -tuples on `R`. +[tuples](lists.tuples.md) on the underlying type of `R`. The commutative ring +structure on `R` induces further structure on the type of tuples on `R`. ## Definitions diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index 610eb95a7c..8ef87f92b8 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -27,9 +27,9 @@ open import linear-algebra.tuples-on-semirings ## Idea Tuples on a [commutative semiring](commutative-algebra.commutative-semirings.md) -`R` are [tuples](linear-algebra.tuples.md) on the underlying type of `R`. The -commutative semiring structure on `R` induces further structure on the type of -tuples on `R`. +`R` are [tuples](lists.tuples.md) on the underlying type of `R`. The commutative +semiring structure on `R` induces further structure on the type of tuples on +`R`. ## Definitions diff --git a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md index c96010de7a..c76dd404da 100644 --- a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md @@ -21,9 +21,10 @@ open import group-theory.monoids open import group-theory.semigroups open import linear-algebra.constant-tuples -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples open import linear-algebra.tuples-on-commutative-rings + +open import lists.functoriality-tuples +open import lists.tuples ``` @@ -31,7 +32,7 @@ open import linear-algebra.tuples-on-commutative-rings ## Idea Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the -type `tuple n R` of `R`-[tuples](linear-algebra.tuples.md) is an `R`-module. +type `tuple n R` of `R`-[tuples](lists.tuples.md) is an `R`-module. ## Definitions diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index daaeda2a01..26cb430743 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -21,10 +21,11 @@ open import group-theory.monoids open import group-theory.semigroups open import linear-algebra.constant-tuples -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples open import linear-algebra.tuples-on-semirings +open import lists.functoriality-tuples +open import lists.tuples + open import ring-theory.rings ``` @@ -33,7 +34,7 @@ open import ring-theory.rings ## Idea Given a [ring](ring-theory.rings.md) `R`, the type `tuple n R` of -`R`-[tuples](linear-algebra.tuples.md) is an +`R`-[tuples](lists.tuples.md) is an [Abelian group](group-theory.abelian-groups.md). ## Definitions diff --git a/src/linear-algebra/tuples-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md index 916202db65..e1a8e773e6 100644 --- a/src/linear-algebra/tuples-on-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-semirings.lagda.md @@ -20,8 +20,9 @@ open import group-theory.monoids open import group-theory.semigroups open import linear-algebra.constant-tuples -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples + +open import lists.functoriality-tuples +open import lists.tuples open import ring-theory.semirings ``` @@ -31,7 +32,7 @@ open import ring-theory.semirings ## Idea Given a [semiring](ring-theory.semirings.md) `R`, the type `tuple n R` of -`R`-[tuples](linear-algebra.tuples.md) is a +`R`-[tuples](lists.tuples.md) is a [commutative monoid](group-theory.commutative-monoids.md) under addition. ## Definitions diff --git a/src/lists.lagda.md b/src/lists.lagda.md index 93bdcca792..bb36916d48 100644 --- a/src/lists.lagda.md +++ b/src/lists.lagda.md @@ -7,8 +7,13 @@ module lists where open import lists.arrays public open import lists.concatenation-lists public +open import lists.equivalence-tuples-finite-sequences public +open import lists.finite-sequences public open import lists.flattening-lists public +open import lists.functoriality-finite-sequences public open import lists.functoriality-lists public +open import lists.functoriality-tuples public +open import lists.functoriality-tuples-finite-sequences public open import lists.lists public open import lists.lists-discrete-types public open import lists.permutation-lists public @@ -22,5 +27,6 @@ open import lists.sorted-lists public open import lists.sorted-tuples public open import lists.sorting-algorithms-lists public open import lists.sorting-algorithms-tuples public +open import lists.tuples public open import lists.universal-property-lists-wild-monoids public ``` diff --git a/src/lists/arrays.lagda.md b/src/lists/arrays.lagda.md index 29b7dc87ed..b1bc7233d7 100644 --- a/src/lists/arrays.lagda.md +++ b/src/lists/arrays.lagda.md @@ -22,11 +22,10 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.equivalence-tuples-finite-sequences -open import linear-algebra.finite-sequences -open import linear-algebra.tuples - +open import lists.equivalence-tuples-finite-sequences +open import lists.finite-sequences open import lists.lists +open import lists.tuples open import univalent-combinatorics.involution-standard-finite-types open import univalent-combinatorics.standard-finite-types @@ -37,8 +36,8 @@ open import univalent-combinatorics.standard-finite-types ## Idea An array is a pair of a natural number `n`, and a -[finite sequence](linear-algebra.finite-sequences.md) of elements of the type -`A`. We show that arrays and lists are equivalent. +[finite sequence](lists.finite-sequences.md) of elements of the type `A`. We +show that arrays and lists are equivalent. ```agda array : {l : Level} → UU l → UU l diff --git a/src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md b/src/lists/equivalence-tuples-finite-sequences.lagda.md similarity index 96% rename from src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md rename to src/lists/equivalence-tuples-finite-sequences.lagda.md index 4f0c44b0b1..0b95aa1900 100644 --- a/src/linear-algebra/equivalence-tuples-finite-sequences.lagda.md +++ b/src/lists/equivalence-tuples-finite-sequences.lagda.md @@ -1,7 +1,7 @@ # The equivalence between tuples and finite sequences ```agda -module linear-algebra.equivalence-tuples-finite-sequences where +module lists.equivalence-tuples-finite-sequences where ```
Imports @@ -20,8 +20,8 @@ open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.finite-sequences -open import linear-algebra.tuples +open import lists.finite-sequences +open import lists.tuples ```
diff --git a/src/linear-algebra/finite-sequences.lagda.md b/src/lists/finite-sequences.lagda.md similarity index 98% rename from src/linear-algebra/finite-sequences.lagda.md rename to src/lists/finite-sequences.lagda.md index 28b2ef1477..7f8a59cbef 100644 --- a/src/linear-algebra/finite-sequences.lagda.md +++ b/src/lists/finite-sequences.lagda.md @@ -1,7 +1,7 @@ # Finite sequences ```agda -module linear-algebra.finite-sequences where +module lists.finite-sequences where ```
Imports diff --git a/src/linear-algebra/functoriality-finite-sequences.lagda.md b/src/lists/functoriality-finite-sequences.lagda.md similarity index 90% rename from src/linear-algebra/functoriality-finite-sequences.lagda.md rename to src/lists/functoriality-finite-sequences.lagda.md index 933520004c..d808203dd4 100644 --- a/src/linear-algebra/functoriality-finite-sequences.lagda.md +++ b/src/lists/functoriality-finite-sequences.lagda.md @@ -1,7 +1,7 @@ # Functoriality of the type of finite sequences ```agda -module linear-algebra.functoriality-finite-sequences where +module lists.functoriality-finite-sequences where ```
Imports @@ -19,7 +19,7 @@ open import foundation.postcomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.finite-sequences +open import lists.finite-sequences open import univalent-combinatorics.standard-finite-types ``` @@ -29,7 +29,7 @@ open import univalent-combinatorics.standard-finite-types ## Idea Any map `f : A → B` determines a map between -[finite sequences](linear-algebra.finite-sequences.md) +[finite sequences](lists.finite-sequences.md) `fin-sequence A n → fin-sequence B n` for every `n`. ## Definition diff --git a/src/lists/functoriality-lists.lagda.md b/src/lists/functoriality-lists.lagda.md index 6b87b03a26..9a67afdaca 100644 --- a/src/lists/functoriality-lists.lagda.md +++ b/src/lists/functoriality-lists.lagda.md @@ -20,12 +20,11 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples - open import lists.arrays open import lists.concatenation-lists +open import lists.functoriality-tuples open import lists.lists +open import lists.tuples ```
diff --git a/src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md b/src/lists/functoriality-tuples-finite-sequences.lagda.md similarity index 77% rename from src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md rename to src/lists/functoriality-tuples-finite-sequences.lagda.md index 9285e15604..22da4e1e70 100644 --- a/src/linear-algebra/functoriality-tuples-finite-sequences.lagda.md +++ b/src/lists/functoriality-tuples-finite-sequences.lagda.md @@ -1,7 +1,7 @@ # Relationship between functoriality of tuples and finite sequences ```agda -module linear-algebra.functoriality-tuples-finite-sequences where +module lists.functoriality-tuples-finite-sequences where ```
Imports @@ -19,11 +19,11 @@ open import foundation.postcomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.equivalence-tuples-finite-sequences -open import linear-algebra.finite-sequences -open import linear-algebra.functoriality-finite-sequences -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples +open import lists.equivalence-tuples-finite-sequences +open import lists.finite-sequences +open import lists.functoriality-finite-sequences +open import lists.functoriality-tuples +open import lists.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -32,10 +32,10 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Mapping a function over a [tuple](linear-algebra.tuples.md) is equivalent to -mapping the same function over the +Mapping a function over a [tuple](lists.tuples.md) is equivalent to mapping the +same function over the [corresponding](linear-algebra.equivalence-tuples-finite-sequences.md) -[finite sequence](linear-algebra.finite-sequences.md) +[finite sequence](lists.finite-sequences.md) ## Proof diff --git a/src/linear-algebra/functoriality-tuples.lagda.md b/src/lists/functoriality-tuples.lagda.md similarity index 90% rename from src/linear-algebra/functoriality-tuples.lagda.md rename to src/lists/functoriality-tuples.lagda.md index c6dbae49d5..eeffd7dc96 100644 --- a/src/linear-algebra/functoriality-tuples.lagda.md +++ b/src/lists/functoriality-tuples.lagda.md @@ -1,7 +1,7 @@ # Functoriality of the type of tuples ```agda -module linear-algebra.functoriality-tuples where +module lists.functoriality-tuples where ```
Imports @@ -19,7 +19,7 @@ open import foundation.postcomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.tuples +open import lists.tuples open import univalent-combinatorics.standard-finite-types ``` @@ -28,7 +28,7 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Any map `f : A → B` determines a map between [tuples](linear-algebra.tuples.md) +Any map `f : A → B` determines a map between [tuples](lists.tuples.md) `tuple A n → tuple B n` for every `n`. ## Definition diff --git a/src/lists/permutation-lists.lagda.md b/src/lists/permutation-lists.lagda.md index ae248aa1b0..cc8e112baa 100644 --- a/src/lists/permutation-lists.lagda.md +++ b/src/lists/permutation-lists.lagda.md @@ -20,13 +20,12 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples - open import lists.arrays open import lists.functoriality-lists +open import lists.functoriality-tuples open import lists.lists open import lists.permutation-tuples +open import lists.tuples ```
diff --git a/src/lists/permutation-tuples.lagda.md b/src/lists/permutation-tuples.lagda.md index cc265ce8f9..072d74319d 100644 --- a/src/lists/permutation-tuples.lagda.md +++ b/src/lists/permutation-tuples.lagda.md @@ -25,15 +25,14 @@ open import foundation.negated-equality open import foundation.transport-along-identifications open import foundation.universe-levels -open import linear-algebra.equivalence-tuples-finite-sequences -open import linear-algebra.finite-sequences -open import linear-algebra.functoriality-finite-sequences -open import linear-algebra.functoriality-tuples -open import linear-algebra.functoriality-tuples-finite-sequences -open import linear-algebra.tuples - open import lists.arrays +open import lists.equivalence-tuples-finite-sequences +open import lists.finite-sequences +open import lists.functoriality-finite-sequences +open import lists.functoriality-tuples +open import lists.functoriality-tuples-finite-sequences open import lists.lists +open import lists.tuples open import univalent-combinatorics.standard-finite-types ``` diff --git a/src/lists/sort-by-insertion-tuples.lagda.md b/src/lists/sort-by-insertion-tuples.lagda.md index 7566df3f7b..c5cfb0b458 100644 --- a/src/lists/sort-by-insertion-tuples.lagda.md +++ b/src/lists/sort-by-insertion-tuples.lagda.md @@ -22,11 +22,10 @@ open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.tuples - open import lists.permutation-tuples open import lists.sorted-tuples open import lists.sorting-algorithms-tuples +open import lists.tuples open import order-theory.decidable-total-orders ``` diff --git a/src/lists/sorted-lists.lagda.md b/src/lists/sorted-lists.lagda.md index a0cc8f989f..bce65060ce 100644 --- a/src/lists/sorted-lists.lagda.md +++ b/src/lists/sorted-lists.lagda.md @@ -14,11 +14,10 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.tuples - open import lists.arrays open import lists.lists open import lists.sorted-tuples +open import lists.tuples open import order-theory.decidable-total-orders ``` diff --git a/src/lists/sorted-tuples.lagda.md b/src/lists/sorted-tuples.lagda.md index 6e59cb4897..822405d932 100644 --- a/src/lists/sorted-tuples.lagda.md +++ b/src/lists/sorted-tuples.lagda.md @@ -19,11 +19,10 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.equivalence-tuples-finite-sequences -open import linear-algebra.finite-sequences -open import linear-algebra.tuples - +open import lists.equivalence-tuples-finite-sequences +open import lists.finite-sequences open import lists.permutation-tuples +open import lists.tuples open import order-theory.decidable-total-orders diff --git a/src/lists/sorting-algorithms-lists.lagda.md b/src/lists/sorting-algorithms-lists.lagda.md index 7d1bd701dc..4d401c5602 100644 --- a/src/lists/sorting-algorithms-lists.lagda.md +++ b/src/lists/sorting-algorithms-lists.lagda.md @@ -16,13 +16,12 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples - open import lists.arrays open import lists.lists open import lists.permutation-lists open import lists.sorted-lists open import lists.sorting-algorithms-tuples +open import lists.tuples open import order-theory.decidable-total-orders ``` diff --git a/src/lists/sorting-algorithms-tuples.lagda.md b/src/lists/sorting-algorithms-tuples.lagda.md index 9b2308d55d..110731eafc 100644 --- a/src/lists/sorting-algorithms-tuples.lagda.md +++ b/src/lists/sorting-algorithms-tuples.lagda.md @@ -16,10 +16,9 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.tuples - open import lists.permutation-tuples open import lists.sorted-tuples +open import lists.tuples open import order-theory.decidable-total-orders ``` diff --git a/src/linear-algebra/tuples.lagda.md b/src/lists/tuples.lagda.md similarity index 99% rename from src/linear-algebra/tuples.lagda.md rename to src/lists/tuples.lagda.md index 064f58e3ef..d6f709f062 100644 --- a/src/linear-algebra/tuples.lagda.md +++ b/src/lists/tuples.lagda.md @@ -1,7 +1,7 @@ # Tuples ```agda -module linear-algebra.tuples where +module lists.tuples where ```
Imports diff --git a/src/reflection/group-solver.lagda.md b/src/reflection/group-solver.lagda.md index 5922c01b3f..5a1bd511ee 100644 --- a/src/reflection/group-solver.lagda.md +++ b/src/reflection/group-solver.lagda.md @@ -18,12 +18,11 @@ open import foundation.universe-levels open import group-theory.groups -open import linear-algebra.tuples - open import lists.concatenation-lists open import lists.functoriality-lists open import lists.lists open import lists.reversing-lists +open import lists.tuples ```
diff --git a/src/ring-theory/sums-rings.lagda.md b/src/ring-theory/sums-rings.lagda.md index 9031192d73..6f7da3e8da 100644 --- a/src/ring-theory/sums-rings.lagda.md +++ b/src/ring-theory/sums-rings.lagda.md @@ -15,9 +15,10 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-rings +open import lists.finite-sequences + open import ring-theory.rings open import ring-theory.sums-semirings @@ -30,7 +31,7 @@ open import univalent-combinatorics.standard-finite-types ## Idea The sum operation extends the binary addition operation on a ring `R` to any -[finite sequence](linear-algebra.finite-sequences.md) of elements of `R`. +[finite sequence](lists.finite-sequences.md) of elements of `R`. ## Definition diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index b6508889ee..25ad17c059 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -19,9 +19,10 @@ open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.finite-sequences open import linear-algebra.finite-sequences-on-semirings +open import lists.finite-sequences + open import ring-theory.semirings open import univalent-combinatorics.coproduct-types @@ -33,7 +34,7 @@ open import univalent-combinatorics.standard-finite-types ## Idea The sum operation extends the binary addition operation on a semiring `R` to any -[finite sequence](linear-algebra.finite-sequences.md) of elements of `R`. +[finite sequence](lists.finite-sequences.md) of elements of `R`. ## Definition diff --git a/src/universal-algebra/algebraic-theory-of-groups.lagda.md b/src/universal-algebra/algebraic-theory-of-groups.lagda.md index 9ed007b8aa..6545372b5c 100644 --- a/src/universal-algebra/algebraic-theory-of-groups.lagda.md +++ b/src/universal-algebra/algebraic-theory-of-groups.lagda.md @@ -19,7 +19,7 @@ open import foundation.universe-levels open import group-theory.groups -open import linear-algebra.tuples +open import lists.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories diff --git a/src/universal-algebra/congruences.lagda.md b/src/universal-algebra/congruences.lagda.md index 0cf6c30ef0..0288eb62d0 100644 --- a/src/universal-algebra/congruences.lagda.md +++ b/src/universal-algebra/congruences.lagda.md @@ -16,7 +16,7 @@ open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.tuples +open import lists.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories diff --git a/src/universal-algebra/homomorphisms-of-algebras.lagda.md b/src/universal-algebra/homomorphisms-of-algebras.lagda.md index e680d66306..7be75f550a 100644 --- a/src/universal-algebra/homomorphisms-of-algebras.lagda.md +++ b/src/universal-algebra/homomorphisms-of-algebras.lagda.md @@ -11,8 +11,8 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples +open import lists.functoriality-tuples +open import lists.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories diff --git a/src/universal-algebra/kernels.lagda.md b/src/universal-algebra/kernels.lagda.md index 9021850751..0f945b73b5 100644 --- a/src/universal-algebra/kernels.lagda.md +++ b/src/universal-algebra/kernels.lagda.md @@ -17,8 +17,8 @@ open import foundation.equivalence-relations open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples +open import lists.functoriality-tuples +open import lists.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories diff --git a/src/universal-algebra/models-of-signatures.lagda.md b/src/universal-algebra/models-of-signatures.lagda.md index 0cdfd65ff0..288a4100f1 100644 --- a/src/universal-algebra/models-of-signatures.lagda.md +++ b/src/universal-algebra/models-of-signatures.lagda.md @@ -11,7 +11,7 @@ open import foundation.dependent-pair-types open import foundation.sets open import foundation.universe-levels -open import linear-algebra.tuples +open import lists.tuples open import universal-algebra.signatures ``` diff --git a/src/universal-algebra/quotient-algebras.lagda.md b/src/universal-algebra/quotient-algebras.lagda.md index eb3e959c9f..c08ef15c02 100644 --- a/src/universal-algebra/quotient-algebras.lagda.md +++ b/src/universal-algebra/quotient-algebras.lagda.md @@ -24,7 +24,7 @@ open import foundation.sets open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.tuples +open import lists.tuples open import universal-algebra.algebraic-theories open import universal-algebra.algebras-of-theories diff --git a/src/universal-algebra/terms-over-signatures.lagda.md b/src/universal-algebra/terms-over-signatures.lagda.md index abef4ec114..a2bce10a7f 100644 --- a/src/universal-algebra/terms-over-signatures.lagda.md +++ b/src/universal-algebra/terms-over-signatures.lagda.md @@ -18,11 +18,10 @@ open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.functoriality-tuples -open import linear-algebra.tuples - +open import lists.functoriality-tuples open import lists.lists open import lists.lists-discrete-types +open import lists.tuples open import universal-algebra.models-of-signatures open import universal-algebra.signatures From dd220dd70d0d753507e7878e66c3f46786f5c470 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 25 Apr 2025 13:41:43 -0700 Subject: [PATCH 10/24] Fix link --- src/lists/functoriality-tuples-finite-sequences.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lists/functoriality-tuples-finite-sequences.lagda.md b/src/lists/functoriality-tuples-finite-sequences.lagda.md index 22da4e1e70..ca1dd10834 100644 --- a/src/lists/functoriality-tuples-finite-sequences.lagda.md +++ b/src/lists/functoriality-tuples-finite-sequences.lagda.md @@ -34,7 +34,7 @@ open import univalent-combinatorics.standard-finite-types Mapping a function over a [tuple](lists.tuples.md) is equivalent to mapping the same function over the -[corresponding](linear-algebra.equivalence-tuples-finite-sequences.md) +[corresponding](lists.equivalence-tuples-finite-sequences.md) [finite sequence](lists.finite-sequences.md) ## Proof From b558731324cf245b0371fee59914ba522785900a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 3 May 2025 13:38:13 -0700 Subject: [PATCH 11/24] Update src/linear-algebra/finite-sequences-on-rings.lagda.md Co-authored-by: Fredrik Bakke --- src/linear-algebra/finite-sequences-on-rings.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md index e00611b248..ed16cb3786 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -36,7 +36,7 @@ open import ring-theory.rings Given a [ring](ring-theory.rings.md) `R`, the type `fin-sequence n R` of `R`-[finite sequences](lists.finite-sequences.md) is an -[Abelian group](group-theory.abelian-groups.md). +[abelian group](group-theory.abelian-groups.md). ## Definitions From b7fb0fad34ad63520b8c8788b2a81ab56c52501a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 3 May 2025 13:38:26 -0700 Subject: [PATCH 12/24] Renaming --- ...inomial-theorem-commutative-rings.lagda.md | 14 +- ...ial-theorem-commutative-semirings.lagda.md | 14 +- .../sums-commutative-rings.lagda.md | 32 +-- .../sums-commutative-semirings.lagda.md | 32 +-- ...te-sequences-on-commutative-rings.lagda.md | 184 +++++++++--------- ...equences-on-commutative-semirings.lagda.md | 130 ++++++------- ...te-sequences-on-euclidean-domains.lagda.md | 170 ++++++++-------- .../finite-sequences-on-rings.lagda.md | 174 ++++++++--------- .../finite-sequences-on-semirings.lagda.md | 124 ++++++------ ...ar-multiplication-tuples-on-rings.lagda.md | 8 +- .../binomial-theorem-rings.lagda.md | 14 +- .../binomial-theorem-semirings.lagda.md | 16 +- src/ring-theory/sums-rings.lagda.md | 32 +-- src/ring-theory/sums-semirings.lagda.md | 36 ++-- 14 files changed, 490 insertions(+), 490 deletions(-) diff --git a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md index 09b75409b2..0224396d58 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A (succ-ℕ n)) → type-Commutative-Ring A binomial-sum-Commutative-Ring A = binomial-sum-Ring (ring-Commutative-Ring A) ``` @@ -65,14 +65,14 @@ module _ where binomial-sum-one-element-Commutative-Ring : - (f : fin-sequence-Commutative-Ring A 1) → + (f : fin-sequence-type-Commutative-Ring A 1) → binomial-sum-Commutative-Ring A 0 f = - head-fin-sequence-Commutative-Ring A 0 f + head-fin-sequence-type-Commutative-Ring A 0 f binomial-sum-one-element-Commutative-Ring = binomial-sum-one-element-Ring (ring-Commutative-Ring A) binomial-sum-two-elements-Commutative-Ring : - (f : fin-sequence-Commutative-Ring A 2) → + (f : fin-sequence-type-Commutative-Ring A 2) → binomial-sum-Commutative-Ring A 1 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Ring = @@ -87,7 +87,7 @@ module _ where htpy-binomial-sum-Commutative-Ring : - (n : ℕ) {f g : fin-sequence-Commutative-Ring A (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-type-Commutative-Ring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Ring A n f = binomial-sum-Commutative-Ring A n g htpy-binomial-sum-Commutative-Ring = @@ -103,14 +103,14 @@ module _ left-distributive-mul-binomial-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + (f : fin-sequence-type-Commutative-Ring A (succ-ℕ n)) → mul-Commutative-Ring A x (binomial-sum-Commutative-Ring A n f) = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-binomial-sum-Commutative-Ring = left-distributive-mul-binomial-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-binomial-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A (succ-ℕ n)) → (x : type-Commutative-Ring A) → mul-Commutative-Ring A (binomial-sum-Commutative-Ring A n f) x = binomial-sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) diff --git a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md index c660311237..3a6569cf53 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md @@ -50,7 +50,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)) → type-Commutative-Semiring A binomial-sum-Commutative-Semiring A = binomial-sum-Semiring (semiring-Commutative-Semiring A) @@ -66,14 +66,14 @@ module _ where binomial-sum-one-element-Commutative-Semiring : - (f : fin-sequence-Commutative-Semiring A 1) → + (f : fin-sequence-type-Commutative-Semiring A 1) → binomial-sum-Commutative-Semiring A 0 f = - head-fin-sequence-Commutative-Semiring A 0 f + head-fin-sequence-type-Commutative-Semiring A 0 f binomial-sum-one-element-Commutative-Semiring = binomial-sum-one-element-Semiring (semiring-Commutative-Semiring A) binomial-sum-two-elements-Commutative-Semiring : - (f : fin-sequence-Commutative-Semiring A 2) → + (f : fin-sequence-type-Commutative-Semiring A 2) → binomial-sum-Commutative-Semiring A 1 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Commutative-Semiring = @@ -88,7 +88,7 @@ module _ where htpy-binomial-sum-Commutative-Semiring : - (n : ℕ) {f g : fin-sequence-Commutative-Semiring A (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)} → (f ~ g) → binomial-sum-Commutative-Semiring A n f = binomial-sum-Commutative-Semiring A n g @@ -105,7 +105,7 @@ module _ left-distributive-mul-binomial-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + (f : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)) → mul-Commutative-Semiring A x (binomial-sum-Commutative-Semiring A n f) = binomial-sum-Commutative-Semiring A n ( λ i → mul-Commutative-Semiring A x (f i)) @@ -114,7 +114,7 @@ module _ ( semiring-Commutative-Semiring A) right-distributive-mul-binomial-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)) → (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (binomial-sum-Commutative-Semiring A n f) x = binomial-sum-Commutative-Semiring A n diff --git a/src/commutative-algebra/sums-commutative-rings.lagda.md b/src/commutative-algebra/sums-commutative-rings.lagda.md index 491ab7d289..b7115be292 100644 --- a/src/commutative-algebra/sums-commutative-rings.lagda.md +++ b/src/commutative-algebra/sums-commutative-rings.lagda.md @@ -42,7 +42,7 @@ ring `A` to any [finite sequence](lists.finite-sequences.md) of elements of `A`. ```agda sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) (n : ℕ) → - (fin-sequence-Commutative-Ring A n) → type-Commutative-Ring A + (fin-sequence-type-Commutative-Ring A n) → type-Commutative-Ring A sum-Commutative-Ring A = sum-Ring (ring-Commutative-Ring A) ``` @@ -56,13 +56,13 @@ module _ where sum-one-element-Commutative-Ring : - (f : fin-sequence-Commutative-Ring A 1) → + (f : fin-sequence-type-Commutative-Ring A 1) → sum-Commutative-Ring A 1 f = head-fin-sequence 0 f sum-one-element-Commutative-Ring = sum-one-element-Ring (ring-Commutative-Ring A) sum-two-elements-Commutative-Ring : - (f : fin-sequence-Commutative-Ring A 2) → + (f : fin-sequence-type-Commutative-Ring A 2) → sum-Commutative-Ring A 2 f = add-Commutative-Ring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Ring = @@ -77,7 +77,7 @@ module _ where htpy-sum-Commutative-Ring : - (n : ℕ) {f g : fin-sequence-Commutative-Ring A n} → + (n : ℕ) {f g : fin-sequence-type-Commutative-Ring A n} → (f ~ g) → sum-Commutative-Ring A n f = sum-Commutative-Ring A n g htpy-sum-Commutative-Ring = htpy-sum-Ring (ring-Commutative-Ring A) ``` @@ -90,7 +90,7 @@ module _ where cons-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A (succ-ℕ n)) → {x : type-Commutative-Ring A} → head-fin-sequence n f = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A @@ -98,7 +98,7 @@ module _ cons-sum-Commutative-Ring = cons-sum-Ring (ring-Commutative-Ring A) snoc-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A (succ-ℕ n)) → {x : type-Commutative-Ring A} → f (zero-Fin n) = x → sum-Commutative-Ring A (succ-ℕ n) f = add-Commutative-Ring A @@ -116,14 +116,14 @@ module _ left-distributive-mul-sum-Commutative-Ring : (n : ℕ) (x : type-Commutative-Ring A) - (f : fin-sequence-Commutative-Ring A n) → + (f : fin-sequence-type-Commutative-Ring A n) → mul-Commutative-Ring A x (sum-Commutative-Ring A n f) = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A x (f i)) left-distributive-mul-sum-Commutative-Ring = left-distributive-mul-sum-Ring (ring-Commutative-Ring A) right-distributive-mul-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A n) + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A n) (x : type-Commutative-Ring A) → mul-Commutative-Ring A (sum-Commutative-Ring A n f) x = sum-Commutative-Ring A n (λ i → mul-Commutative-Ring A (f i) x) @@ -139,12 +139,12 @@ module _ where interchange-add-sum-Commutative-Ring : - (n : ℕ) (f g : fin-sequence-Commutative-Ring A n) → + (n : ℕ) (f g : fin-sequence-type-Commutative-Ring A n) → add-Commutative-Ring A ( sum-Commutative-Ring A n f) ( sum-Commutative-Ring A n g) = sum-Commutative-Ring A n - ( add-fin-sequence-Commutative-Ring A n f g) + ( add-fin-sequence-type-Commutative-Ring A n f g) interchange-add-sum-Commutative-Ring = interchange-add-sum-Ring (ring-Commutative-Ring A) ``` @@ -157,10 +157,10 @@ module _ where extend-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A n) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( cons-fin-sequence-Commutative-Ring + ( cons-fin-sequence-type-Commutative-Ring ( A) ( n) ( zero-Commutative-Ring A) @@ -177,10 +177,10 @@ module _ where shift-sum-Commutative-Ring : - (n : ℕ) (f : fin-sequence-Commutative-Ring A n) → + (n : ℕ) (f : fin-sequence-type-Commutative-Ring A n) → sum-Commutative-Ring A ( succ-ℕ n) - ( snoc-fin-sequence-Commutative-Ring A n f + ( snoc-fin-sequence-type-Commutative-Ring A n f ( zero-Commutative-Ring A)) = sum-Commutative-Ring A n f shift-sum-Commutative-Ring = shift-sum-Ring (ring-Commutative-Ring A) @@ -191,7 +191,7 @@ module _ ```agda split-sum-Commutative-Ring : {l : Level} (A : Commutative-Ring l) - (n m : ℕ) (f : fin-sequence-Commutative-Ring A (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-type-Commutative-Ring A (n +ℕ m)) → sum-Commutative-Ring A (n +ℕ m) f = add-Commutative-Ring A ( sum-Commutative-Ring A n (f ∘ inl-coproduct-Fin n m)) @@ -215,7 +215,7 @@ module _ sum-zero-Commutative-Ring : (n : ℕ) → sum-Commutative-Ring A n - ( zero-fin-sequence-Commutative-Ring A n) = + ( zero-fin-sequence-type-Commutative-Ring A n) = zero-Commutative-Ring A sum-zero-Commutative-Ring = sum-zero-Ring (ring-Commutative-Ring A) ``` diff --git a/src/commutative-algebra/sums-commutative-semirings.lagda.md b/src/commutative-algebra/sums-commutative-semirings.lagda.md index 2808d0ee75..7e013d937a 100644 --- a/src/commutative-algebra/sums-commutative-semirings.lagda.md +++ b/src/commutative-algebra/sums-commutative-semirings.lagda.md @@ -40,7 +40,7 @@ semiring `R` to any [finite sequence](lists.finite-sequences.md) of elements of ```agda sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) (n : ℕ) → - (fin-sequence-Commutative-Semiring A n) → type-Commutative-Semiring A + (fin-sequence-type-Commutative-Semiring A n) → type-Commutative-Semiring A sum-Commutative-Semiring A = sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -54,13 +54,13 @@ module _ where sum-one-element-Commutative-Semiring : - (f : fin-sequence-Commutative-Semiring A 1) → + (f : fin-sequence-type-Commutative-Semiring A 1) → sum-Commutative-Semiring A 1 f = head-fin-sequence 0 f sum-one-element-Commutative-Semiring = sum-one-element-Semiring (semiring-Commutative-Semiring A) sum-two-elements-Commutative-Semiring : - (f : fin-sequence-Commutative-Semiring A 2) → + (f : fin-sequence-type-Commutative-Semiring A 2) → sum-Commutative-Semiring A 2 f = add-Commutative-Semiring A (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Commutative-Semiring = @@ -75,7 +75,7 @@ module _ where htpy-sum-Commutative-Semiring : - (n : ℕ) {f g : fin-sequence-Commutative-Semiring A n} → + (n : ℕ) {f g : fin-sequence-type-Commutative-Semiring A n} → (f ~ g) → sum-Commutative-Semiring A n f = sum-Commutative-Semiring A n g htpy-sum-Commutative-Semiring = htpy-sum-Semiring (semiring-Commutative-Semiring A) @@ -89,7 +89,7 @@ module _ where cons-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)) → {x : type-Commutative-Semiring A} → head-fin-sequence n f = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A @@ -98,7 +98,7 @@ module _ cons-sum-Semiring (semiring-Commutative-Semiring A) snoc-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A (succ-ℕ n)) → {x : type-Commutative-Semiring A} → f (zero-Fin n) = x → sum-Commutative-Semiring A (succ-ℕ n) f = add-Commutative-Semiring A @@ -117,14 +117,14 @@ module _ left-distributive-mul-sum-Commutative-Semiring : (n : ℕ) (x : type-Commutative-Semiring A) - (f : fin-sequence-Commutative-Semiring A n) → + (f : fin-sequence-type-Commutative-Semiring A n) → mul-Commutative-Semiring A x (sum-Commutative-Semiring A n f) = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A x (f i)) left-distributive-mul-sum-Commutative-Semiring = left-distributive-mul-sum-Semiring (semiring-Commutative-Semiring A) right-distributive-mul-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A n) (x : type-Commutative-Semiring A) → mul-Commutative-Semiring A (sum-Commutative-Semiring A n f) x = sum-Commutative-Semiring A n (λ i → mul-Commutative-Semiring A (f i) x) @@ -140,12 +140,12 @@ module _ where interchange-add-sum-Commutative-Semiring : - (n : ℕ) (f g : fin-sequence-Commutative-Semiring A n) → + (n : ℕ) (f g : fin-sequence-type-Commutative-Semiring A n) → add-Commutative-Semiring A ( sum-Commutative-Semiring A n f) ( sum-Commutative-Semiring A n g) = sum-Commutative-Semiring A n - ( add-fin-sequence-Commutative-Semiring A n f g) + ( add-fin-sequence-type-Commutative-Semiring A n f g) interchange-add-sum-Commutative-Semiring = interchange-add-sum-Semiring (semiring-Commutative-Semiring A) ``` @@ -158,10 +158,10 @@ module _ where extend-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( cons-fin-sequence-Commutative-Semiring A n + ( cons-fin-sequence-type-Commutative-Semiring A n ( zero-Commutative-Semiring A) f) = sum-Commutative-Semiring A n f extend-sum-Commutative-Semiring = @@ -176,10 +176,10 @@ module _ where shift-sum-Commutative-Semiring : - (n : ℕ) (f : fin-sequence-Commutative-Semiring A n) → + (n : ℕ) (f : fin-sequence-type-Commutative-Semiring A n) → sum-Commutative-Semiring A ( succ-ℕ n) - ( snoc-fin-sequence-Commutative-Semiring A n f + ( snoc-fin-sequence-type-Commutative-Semiring A n f ( zero-Commutative-Semiring A)) = sum-Commutative-Semiring A n f shift-sum-Commutative-Semiring = @@ -196,7 +196,7 @@ module _ sum-zero-Commutative-Semiring : (n : ℕ) → sum-Commutative-Semiring A n - ( zero-fin-sequence-Commutative-Semiring A n) = + ( zero-fin-sequence-type-Commutative-Semiring A n) = zero-Commutative-Semiring A sum-zero-Commutative-Semiring = sum-zero-Semiring (semiring-Commutative-Semiring A) @@ -207,7 +207,7 @@ module _ ```agda split-sum-Commutative-Semiring : {l : Level} (A : Commutative-Semiring l) - (n m : ℕ) (f : fin-sequence-Commutative-Semiring A (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-type-Commutative-Semiring A (n +ℕ m)) → sum-Commutative-Semiring A (n +ℕ m) f = add-Commutative-Semiring A ( sum-Commutative-Semiring A n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md index b076027b0a..1a24482cac 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md @@ -38,34 +38,34 @@ module _ {l : Level} (R : Commutative-Ring l) where - fin-sequence-Commutative-Ring : ℕ → UU l - fin-sequence-Commutative-Ring = - fin-sequence-Ring (ring-Commutative-Ring R) + fin-sequence-type-Commutative-Ring : ℕ → UU l + fin-sequence-type-Commutative-Ring = + fin-sequence-type-Ring (ring-Commutative-Ring R) - head-fin-sequence-Commutative-Ring : - (n : ℕ) → fin-sequence-Commutative-Ring (succ-ℕ n) → + head-fin-sequence-type-Commutative-Ring : + (n : ℕ) → fin-sequence-type-Commutative-Ring (succ-ℕ n) → type-Commutative-Ring R - head-fin-sequence-Commutative-Ring = - head-fin-sequence-Ring (ring-Commutative-Ring R) + head-fin-sequence-type-Commutative-Ring = + head-fin-sequence-type-Ring (ring-Commutative-Ring R) - tail-fin-sequence-Commutative-Ring : - (n : ℕ) → fin-sequence-Commutative-Ring (succ-ℕ n) → - fin-sequence-Commutative-Ring n - tail-fin-sequence-Commutative-Ring = - tail-fin-sequence-Ring (ring-Commutative-Ring R) + tail-fin-sequence-type-Commutative-Ring : + (n : ℕ) → fin-sequence-type-Commutative-Ring (succ-ℕ n) → + fin-sequence-type-Commutative-Ring n + tail-fin-sequence-type-Commutative-Ring = + tail-fin-sequence-type-Ring (ring-Commutative-Ring R) - cons-fin-sequence-Commutative-Ring : + cons-fin-sequence-type-Commutative-Ring : (n : ℕ) → type-Commutative-Ring R → - fin-sequence-Commutative-Ring n → - fin-sequence-Commutative-Ring (succ-ℕ n) - cons-fin-sequence-Commutative-Ring = - cons-fin-sequence-Ring (ring-Commutative-Ring R) - - snoc-fin-sequence-Commutative-Ring : - (n : ℕ) → fin-sequence-Commutative-Ring n → - type-Commutative-Ring R → fin-sequence-Commutative-Ring (succ-ℕ n) - snoc-fin-sequence-Commutative-Ring = - snoc-fin-sequence-Ring (ring-Commutative-Ring R) + fin-sequence-type-Commutative-Ring n → + fin-sequence-type-Commutative-Ring (succ-ℕ n) + cons-fin-sequence-type-Commutative-Ring = + cons-fin-sequence-type-Ring (ring-Commutative-Ring R) + + snoc-fin-sequence-type-Commutative-Ring : + (n : ℕ) → fin-sequence-type-Commutative-Ring n → + type-Commutative-Ring R → fin-sequence-type-Commutative-Ring (succ-ℕ n) + snoc-fin-sequence-type-Commutative-Ring = + snoc-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Zero finite sequence on a commutative ring @@ -75,9 +75,9 @@ module _ {l : Level} (R : Commutative-Ring l) where - zero-fin-sequence-Commutative-Ring : - (n : ℕ) → fin-sequence-Commutative-Ring R n - zero-fin-sequence-Commutative-Ring n i = zero-Commutative-Ring R + zero-fin-sequence-type-Commutative-Ring : + (n : ℕ) → fin-sequence-type-Commutative-Ring R n + zero-fin-sequence-type-Commutative-Ring n i = zero-Commutative-Ring R ``` ### Pointwise addition on a commutative ring @@ -87,11 +87,11 @@ module _ {l : Level} (R : Commutative-Ring l) where - add-fin-sequence-Commutative-Ring : - (n : ℕ) (v w : fin-sequence-Commutative-Ring R n) → - fin-sequence-Commutative-Ring R n - add-fin-sequence-Commutative-Ring = - add-fin-sequence-Ring (ring-Commutative-Ring R) + add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v w : fin-sequence-type-Commutative-Ring R n) → + fin-sequence-type-Commutative-Ring R n + add-fin-sequence-type-Commutative-Ring = + add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Pointwise negation on a commutative ring @@ -101,11 +101,11 @@ module _ {l : Level} (R : Commutative-Ring l) where - neg-fin-sequence-Commutative-Ring : - (n : ℕ) → fin-sequence-Commutative-Ring R n → - fin-sequence-Commutative-Ring R n - neg-fin-sequence-Commutative-Ring = - neg-fin-sequence-Ring (ring-Commutative-Ring R) + neg-fin-sequence-type-Commutative-Ring : + (n : ℕ) → fin-sequence-type-Commutative-Ring R n → + fin-sequence-type-Commutative-Ring R n + neg-fin-sequence-type-Commutative-Ring = + neg-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ## Properties of pointwise addition @@ -117,14 +117,14 @@ module _ {l : Level} (R : Commutative-Ring l) where - associative-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v1 v2 v3 : fin-sequence-Commutative-Ring R n) → - ( add-fin-sequence-Commutative-Ring R n - ( add-fin-sequence-Commutative-Ring R n v1 v2) v3) = - ( add-fin-sequence-Commutative-Ring R n v1 - ( add-fin-sequence-Commutative-Ring R n v2 v3)) - associative-add-fin-sequence-Commutative-Ring = - associative-add-fin-sequence-Ring (ring-Commutative-Ring R) + associative-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v1 v2 v3 : fin-sequence-type-Commutative-Ring R n) → + ( add-fin-sequence-type-Commutative-Ring R n + ( add-fin-sequence-type-Commutative-Ring R n v1 v2) v3) = + ( add-fin-sequence-type-Commutative-Ring R n v1 + ( add-fin-sequence-type-Commutative-Ring R n v2 v3)) + associative-add-fin-sequence-type-Commutative-Ring = + associative-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Unit laws @@ -134,19 +134,19 @@ module _ {l : Level} (R : Commutative-Ring l) where - left-unit-law-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → - add-fin-sequence-Commutative-Ring R n - ( zero-fin-sequence-Commutative-Ring R n) v = v - left-unit-law-add-fin-sequence-Commutative-Ring = - left-unit-law-add-fin-sequence-Ring (ring-Commutative-Ring R) - - right-unit-law-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → - add-fin-sequence-Commutative-Ring R n v - ( zero-fin-sequence-Commutative-Ring R n) = v - right-unit-law-add-fin-sequence-Commutative-Ring = - right-unit-law-add-fin-sequence-Ring (ring-Commutative-Ring R) + left-unit-law-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v : fin-sequence-type-Commutative-Ring R n) → + add-fin-sequence-type-Commutative-Ring R n + ( zero-fin-sequence-type-Commutative-Ring R n) v = v + left-unit-law-add-fin-sequence-type-Commutative-Ring = + left-unit-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) + + right-unit-law-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v : fin-sequence-type-Commutative-Ring R n) → + add-fin-sequence-type-Commutative-Ring R n v + ( zero-fin-sequence-type-Commutative-Ring R n) = v + right-unit-law-add-fin-sequence-type-Commutative-Ring = + right-unit-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Commutativity @@ -156,12 +156,12 @@ module _ {l : Level} (R : Commutative-Ring l) where - commutative-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v w : fin-sequence-Commutative-Ring R n) → - add-fin-sequence-Commutative-Ring R n v w = - add-fin-sequence-Commutative-Ring R n w v - commutative-add-fin-sequence-Commutative-Ring = - commutative-add-fin-sequence-Ring (ring-Commutative-Ring R) + commutative-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v w : fin-sequence-type-Commutative-Ring R n) → + add-fin-sequence-type-Commutative-Ring R n v w = + add-fin-sequence-type-Commutative-Ring R n w v + commutative-add-fin-sequence-type-Commutative-Ring = + commutative-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Inverse laws @@ -171,27 +171,27 @@ module _ {l : Level} (R : Commutative-Ring l) where - left-inverse-law-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → - add-fin-sequence-Commutative-Ring + left-inverse-law-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v : fin-sequence-type-Commutative-Ring R n) → + add-fin-sequence-type-Commutative-Ring ( R) ( n) - ( neg-fin-sequence-Commutative-Ring R n v) + ( neg-fin-sequence-type-Commutative-Ring R n v) ( v) = - zero-fin-sequence-Commutative-Ring R n - left-inverse-law-add-fin-sequence-Commutative-Ring = - left-inverse-law-add-fin-sequence-Ring (ring-Commutative-Ring R) + zero-fin-sequence-type-Commutative-Ring R n + left-inverse-law-add-fin-sequence-type-Commutative-Ring = + left-inverse-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) - right-inverse-law-add-fin-sequence-Commutative-Ring : - (n : ℕ) (v : fin-sequence-Commutative-Ring R n) → - add-fin-sequence-Commutative-Ring + right-inverse-law-add-fin-sequence-type-Commutative-Ring : + (n : ℕ) (v : fin-sequence-type-Commutative-Ring R n) → + add-fin-sequence-type-Commutative-Ring ( R) ( n) ( v) - ( neg-fin-sequence-Commutative-Ring R n v) = - zero-fin-sequence-Commutative-Ring R n - right-inverse-law-add-fin-sequence-Commutative-Ring = - right-inverse-law-add-fin-sequence-Ring (ring-Commutative-Ring R) + ( neg-fin-sequence-type-Commutative-Ring R n v) = + zero-fin-sequence-type-Commutative-Ring R n + right-inverse-law-add-fin-sequence-type-Commutative-Ring = + right-inverse-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` ### Abelian group of pointwise addition @@ -201,24 +201,24 @@ module _ {l : Level} (R : Commutative-Ring l) where - fin-sequence-Commutative-Ring-Semigroup : ℕ → Semigroup l - fin-sequence-Commutative-Ring-Semigroup = - fin-sequence-Ring-Semigroup (ring-Commutative-Ring R) + semigroup-fin-sequence-type-Commutative-Ring : ℕ → Semigroup l + semigroup-fin-sequence-type-Commutative-Ring = + semigroup-fin-sequence-type-Ring (ring-Commutative-Ring R) - fin-sequence-Commutative-Ring-Monoid : ℕ → Monoid l - fin-sequence-Commutative-Ring-Monoid = - fin-sequence-Ring-Monoid (ring-Commutative-Ring R) + monoid-fin-sequence-type-Commutative-Ring : ℕ → Monoid l + monoid-fin-sequence-type-Commutative-Ring = + monoid-fin-sequence-type-Ring (ring-Commutative-Ring R) - fin-sequence-Commutative-Ring-Commutative-Monoid : + commutative-monoid-fin-sequence-type-Commutative-Ring : ℕ → Commutative-Monoid l - fin-sequence-Commutative-Ring-Commutative-Monoid = - fin-sequence-Ring-Commutative-Monoid (ring-Commutative-Ring R) + commutative-monoid-fin-sequence-type-Commutative-Ring = + commutative-monoid-fin-sequence-type-Ring (ring-Commutative-Ring R) - fin-sequence-Commutative-Ring-Group : ℕ → Group l - fin-sequence-Commutative-Ring-Group = - fin-sequence-Ring-Group (ring-Commutative-Ring R) + group-fin-sequence-type-Commutative-Ring : ℕ → Group l + group-fin-sequence-type-Commutative-Ring = + group-fin-sequence-type-Ring (ring-Commutative-Ring R) - fin-sequence-Commutative-Ring-Ab : ℕ → Ab l - fin-sequence-Commutative-Ring-Ab = - fin-sequence-Ring-Ab (ring-Commutative-Ring R) + ab-fin-sequence-type-Commutative-Ring : ℕ → Ab l + ab-fin-sequence-type-Commutative-Ring = + ab-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` diff --git a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md index 48f5723114..4b29907aa0 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md @@ -36,35 +36,35 @@ module _ {l : Level} (R : Commutative-Semiring l) where - fin-sequence-Commutative-Semiring : ℕ → UU l - fin-sequence-Commutative-Semiring = - fin-sequence-Semiring (semiring-Commutative-Semiring R) + fin-sequence-type-Commutative-Semiring : ℕ → UU l + fin-sequence-type-Commutative-Semiring = + fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - head-fin-sequence-Commutative-Semiring : - (n : ℕ) → fin-sequence-Commutative-Semiring (succ-ℕ n) → + head-fin-sequence-type-Commutative-Semiring : + (n : ℕ) → fin-sequence-type-Commutative-Semiring (succ-ℕ n) → type-Commutative-Semiring R - head-fin-sequence-Commutative-Semiring = - head-fin-sequence-Semiring (semiring-Commutative-Semiring R) + head-fin-sequence-type-Commutative-Semiring = + head-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - tail-fin-sequence-Commutative-Semiring : - (n : ℕ) → fin-sequence-Commutative-Semiring (succ-ℕ n) → - fin-sequence-Commutative-Semiring n - tail-fin-sequence-Commutative-Semiring = - tail-fin-sequence-Semiring (semiring-Commutative-Semiring R) + tail-fin-sequence-type-Commutative-Semiring : + (n : ℕ) → fin-sequence-type-Commutative-Semiring (succ-ℕ n) → + fin-sequence-type-Commutative-Semiring n + tail-fin-sequence-type-Commutative-Semiring = + tail-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - cons-fin-sequence-Commutative-Semiring : + cons-fin-sequence-type-Commutative-Semiring : (n : ℕ) → type-Commutative-Semiring R → - fin-sequence-Commutative-Semiring n → - fin-sequence-Commutative-Semiring (succ-ℕ n) - cons-fin-sequence-Commutative-Semiring = - cons-fin-sequence-Semiring (semiring-Commutative-Semiring R) + fin-sequence-type-Commutative-Semiring n → + fin-sequence-type-Commutative-Semiring (succ-ℕ n) + cons-fin-sequence-type-Commutative-Semiring = + cons-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - snoc-fin-sequence-Commutative-Semiring : - (n : ℕ) → fin-sequence-Commutative-Semiring n → + snoc-fin-sequence-type-Commutative-Semiring : + (n : ℕ) → fin-sequence-type-Commutative-Semiring n → type-Commutative-Semiring R → - fin-sequence-Commutative-Semiring (succ-ℕ n) - snoc-fin-sequence-Commutative-Semiring = - snoc-fin-sequence-Semiring (semiring-Commutative-Semiring R) + fin-sequence-type-Commutative-Semiring (succ-ℕ n) + snoc-fin-sequence-type-Commutative-Semiring = + snoc-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` ### Zero finite sequence on a commutative semiring @@ -74,9 +74,9 @@ module _ {l : Level} (R : Commutative-Semiring l) where - zero-fin-sequence-Commutative-Semiring : - (n : ℕ) → fin-sequence-Commutative-Semiring R n - zero-fin-sequence-Commutative-Semiring n i = zero-Commutative-Semiring R + zero-fin-sequence-type-Commutative-Semiring : + (n : ℕ) → fin-sequence-type-Commutative-Semiring R n + zero-fin-sequence-type-Commutative-Semiring n i = zero-Commutative-Semiring R ``` #### Pointwise addition of finite sequences on a commutative semiring @@ -86,11 +86,11 @@ module _ {l : Level} (R : Commutative-Semiring l) where - add-fin-sequence-Commutative-Semiring : - (n : ℕ) (v w : fin-sequence-Commutative-Semiring R n) → - fin-sequence-Commutative-Semiring R n - add-fin-sequence-Commutative-Semiring = - add-fin-sequence-Semiring (semiring-Commutative-Semiring R) + add-fin-sequence-type-Commutative-Semiring : + (n : ℕ) (v w : fin-sequence-type-Commutative-Semiring R n) → + fin-sequence-type-Commutative-Semiring R n + add-fin-sequence-type-Commutative-Semiring = + add-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` ## Properties of pointwise addition @@ -102,14 +102,14 @@ module _ {l : Level} (R : Commutative-Semiring l) where - associative-add-fin-sequence-Commutative-Semiring : - (n : ℕ) (v1 v2 v3 : fin-sequence-Commutative-Semiring R n) → - ( add-fin-sequence-Commutative-Semiring R n - ( add-fin-sequence-Commutative-Semiring R n v1 v2) v3) = - ( add-fin-sequence-Commutative-Semiring R n v1 - ( add-fin-sequence-Commutative-Semiring R n v2 v3)) - associative-add-fin-sequence-Commutative-Semiring = - associative-add-fin-sequence-Semiring (semiring-Commutative-Semiring R) + associative-add-fin-sequence-type-Commutative-Semiring : + (n : ℕ) (v1 v2 v3 : fin-sequence-type-Commutative-Semiring R n) → + ( add-fin-sequence-type-Commutative-Semiring R n + ( add-fin-sequence-type-Commutative-Semiring R n v1 v2) v3) = + ( add-fin-sequence-type-Commutative-Semiring R n v1 + ( add-fin-sequence-type-Commutative-Semiring R n v2 v3)) + associative-add-fin-sequence-type-Commutative-Semiring = + associative-add-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` ### Unit laws @@ -119,20 +119,20 @@ module _ {l : Level} (R : Commutative-Semiring l) where - left-unit-law-add-fin-sequence-Commutative-Semiring : - (n : ℕ) (v : fin-sequence-Commutative-Semiring R n) → - add-fin-sequence-Commutative-Semiring R n - ( zero-fin-sequence-Commutative-Semiring R n) v = v - left-unit-law-add-fin-sequence-Commutative-Semiring = - left-unit-law-add-fin-sequence-Semiring + left-unit-law-add-fin-sequence-type-Commutative-Semiring : + (n : ℕ) (v : fin-sequence-type-Commutative-Semiring R n) → + add-fin-sequence-type-Commutative-Semiring R n + ( zero-fin-sequence-type-Commutative-Semiring R n) v = v + left-unit-law-add-fin-sequence-type-Commutative-Semiring = + left-unit-law-add-fin-sequence-type-Semiring ( semiring-Commutative-Semiring R) - right-unit-law-add-fin-sequence-Commutative-Semiring : - (n : ℕ) (v : fin-sequence-Commutative-Semiring R n) → - add-fin-sequence-Commutative-Semiring R n v - ( zero-fin-sequence-Commutative-Semiring R n) = v - right-unit-law-add-fin-sequence-Commutative-Semiring = - right-unit-law-add-fin-sequence-Semiring + right-unit-law-add-fin-sequence-type-Commutative-Semiring : + (n : ℕ) (v : fin-sequence-type-Commutative-Semiring R n) → + add-fin-sequence-type-Commutative-Semiring R n v + ( zero-fin-sequence-type-Commutative-Semiring R n) = v + right-unit-law-add-fin-sequence-type-Commutative-Semiring = + right-unit-law-add-fin-sequence-type-Semiring ( semiring-Commutative-Semiring R) ``` @@ -143,12 +143,12 @@ module _ {l : Level} (R : Commutative-Semiring l) where - commutative-add-fin-sequence-Commutative-Semiring : - (n : ℕ) (v w : fin-sequence-Commutative-Semiring R n) → - add-fin-sequence-Commutative-Semiring R n v w = - add-fin-sequence-Commutative-Semiring R n w v - commutative-add-fin-sequence-Commutative-Semiring = - commutative-add-fin-sequence-Semiring (semiring-Commutative-Semiring R) + commutative-add-fin-sequence-type-Commutative-Semiring : + (n : ℕ) (v w : fin-sequence-type-Commutative-Semiring R n) → + add-fin-sequence-type-Commutative-Semiring R n v w = + add-fin-sequence-type-Commutative-Semiring R n w v + commutative-add-fin-sequence-type-Commutative-Semiring = + commutative-add-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` ### The commutative monoid of pointwise addition @@ -158,17 +158,17 @@ module _ {l : Level} (R : Commutative-Semiring l) where - fin-sequence-Commutative-Semiring-Semigroup : ℕ → Semigroup l - fin-sequence-Commutative-Semiring-Semigroup = - fin-sequence-Semiring-Semigroup (semiring-Commutative-Semiring R) + semigroup-fin-sequence-type-Commutative-Semiring : ℕ → Semigroup l + semigroup-fin-sequence-type-Commutative-Semiring = + semigroup-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - fin-sequence-Commutative-Semiring-Monoid : ℕ → Monoid l - fin-sequence-Commutative-Semiring-Monoid = - fin-sequence-Semiring-Monoid (semiring-Commutative-Semiring R) + monoid-fin-sequence-type-Commutative-Semiring : ℕ → Monoid l + monoid-fin-sequence-type-Commutative-Semiring = + monoid-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) - fin-sequence-Commutative-Semiring-Commutative-Monoid : + commutative-monoid-fin-sequence-type-Commutative-Semiring : ℕ → Commutative-Monoid l - fin-sequence-Commutative-Semiring-Commutative-Monoid = - fin-sequence-Semiring-Commutative-Monoid + commutative-monoid-fin-sequence-type-Commutative-Semiring = + commutative-monoid-fin-sequence-type-Semiring ( semiring-Commutative-Semiring R) ``` diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md index a1bba57e5d..3dee90c4d3 100644 --- a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md @@ -41,31 +41,31 @@ module _ {l : Level} (R : Euclidean-Domain l) where - fin-sequence-Euclidean-Domain : ℕ → UU l - fin-sequence-Euclidean-Domain = fin-sequence (type-Euclidean-Domain R) + fin-sequence-type-Euclidean-Domain : ℕ → UU l + fin-sequence-type-Euclidean-Domain = fin-sequence (type-Euclidean-Domain R) - head-fin-sequence-Euclidean-Domain : + head-fin-sequence-type-Euclidean-Domain : (n : ℕ) → - fin-sequence-Euclidean-Domain (succ-ℕ n) → + fin-sequence-type-Euclidean-Domain (succ-ℕ n) → type-Euclidean-Domain R - head-fin-sequence-Euclidean-Domain n v = head-fin-sequence n v + head-fin-sequence-type-Euclidean-Domain n v = head-fin-sequence n v - tail-fin-sequence-Euclidean-Domain : + tail-fin-sequence-type-Euclidean-Domain : (n : ℕ) → - fin-sequence-Euclidean-Domain (succ-ℕ n) → - fin-sequence-Euclidean-Domain n - tail-fin-sequence-Euclidean-Domain = tail-fin-sequence + fin-sequence-type-Euclidean-Domain (succ-ℕ n) → + fin-sequence-type-Euclidean-Domain n + tail-fin-sequence-type-Euclidean-Domain = tail-fin-sequence - cons-fin-sequence-Euclidean-Domain : + cons-fin-sequence-type-Euclidean-Domain : (n : ℕ) → type-Euclidean-Domain R → - fin-sequence-Euclidean-Domain n → - fin-sequence-Euclidean-Domain (succ-ℕ n) - cons-fin-sequence-Euclidean-Domain = cons-fin-sequence - - snoc-fin-sequence-Euclidean-Domain : - (n : ℕ) → fin-sequence-Euclidean-Domain n → type-Euclidean-Domain R → - fin-sequence-Euclidean-Domain (succ-ℕ n) - snoc-fin-sequence-Euclidean-Domain = snoc-fin-sequence + fin-sequence-type-Euclidean-Domain n → + fin-sequence-type-Euclidean-Domain (succ-ℕ n) + cons-fin-sequence-type-Euclidean-Domain = cons-fin-sequence + + snoc-fin-sequence-type-Euclidean-Domain : + (n : ℕ) → fin-sequence-type-Euclidean-Domain n → type-Euclidean-Domain R → + fin-sequence-type-Euclidean-Domain (succ-ℕ n) + snoc-fin-sequence-type-Euclidean-Domain = snoc-fin-sequence ``` ### Zero finite sequences on a euclidean domain @@ -75,9 +75,9 @@ module _ {l : Level} (R : Euclidean-Domain l) where - zero-fin-sequence-Euclidean-Domain : - (n : ℕ) → fin-sequence-Euclidean-Domain R n - zero-fin-sequence-Euclidean-Domain n i = zero-Euclidean-Domain R + zero-fin-sequence-type-Euclidean-Domain : + (n : ℕ) → fin-sequence-type-Euclidean-Domain R n + zero-fin-sequence-type-Euclidean-Domain n i = zero-Euclidean-Domain R ``` ### Pointwise addition of finite sequences on a euclidean domain @@ -87,10 +87,10 @@ module _ {l : Level} (R : Euclidean-Domain l) where - add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v w : fin-sequence-Euclidean-Domain R n) → - fin-sequence-Euclidean-Domain R n - add-fin-sequence-Euclidean-Domain n = + add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v w : fin-sequence-type-Euclidean-Domain R n) → + fin-sequence-type-Euclidean-Domain R n + add-fin-sequence-type-Euclidean-Domain n = binary-map-fin-sequence n (add-Euclidean-Domain R) ``` @@ -101,11 +101,11 @@ module _ {l : Level} (R : Euclidean-Domain l) where - neg-fin-sequence-Euclidean-Domain : - (n : ℕ) → fin-sequence-Euclidean-Domain R n → - fin-sequence-Euclidean-Domain R n - neg-fin-sequence-Euclidean-Domain = - neg-fin-sequence-Commutative-Ring + neg-fin-sequence-type-Euclidean-Domain : + (n : ℕ) → fin-sequence-type-Euclidean-Domain R n → + fin-sequence-type-Euclidean-Domain R n + neg-fin-sequence-type-Euclidean-Domain = + neg-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` @@ -118,20 +118,20 @@ module _ {l : Level} (R : Euclidean-Domain l) where - associative-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v1 v2 v3 : fin-sequence-Euclidean-Domain R n) → - ( add-fin-sequence-Euclidean-Domain + associative-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v1 v2 v3 : fin-sequence-type-Euclidean-Domain R n) → + ( add-fin-sequence-type-Euclidean-Domain ( R) ( n) - ( add-fin-sequence-Euclidean-Domain R n v1 v2) + ( add-fin-sequence-type-Euclidean-Domain R n v1 v2) ( v3)) = - ( add-fin-sequence-Euclidean-Domain + ( add-fin-sequence-type-Euclidean-Domain ( R) ( n) ( v1) - ( add-fin-sequence-Euclidean-Domain R n v2 v3)) - associative-add-fin-sequence-Euclidean-Domain = - associative-add-fin-sequence-Commutative-Ring + ( add-fin-sequence-type-Euclidean-Domain R n v2 v3)) + associative-add-fin-sequence-type-Euclidean-Domain = + associative-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` @@ -142,28 +142,28 @@ module _ {l : Level} (R : Euclidean-Domain l) where - left-unit-law-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → - ( add-fin-sequence-Euclidean-Domain + left-unit-law-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-type-Euclidean-Domain R n) → + ( add-fin-sequence-type-Euclidean-Domain ( R) ( n) - ( zero-fin-sequence-Euclidean-Domain R n) + ( zero-fin-sequence-type-Euclidean-Domain R n) ( v)) = ( v) - left-unit-law-add-fin-sequence-Euclidean-Domain = - left-unit-law-add-fin-sequence-Commutative-Ring + left-unit-law-add-fin-sequence-type-Euclidean-Domain = + left-unit-law-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - right-unit-law-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → - ( add-fin-sequence-Euclidean-Domain + right-unit-law-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-type-Euclidean-Domain R n) → + ( add-fin-sequence-type-Euclidean-Domain ( R) ( n) ( v) - ( zero-fin-sequence-Euclidean-Domain R n)) = + ( zero-fin-sequence-type-Euclidean-Domain R n)) = ( v) - right-unit-law-add-fin-sequence-Euclidean-Domain = - right-unit-law-add-fin-sequence-Commutative-Ring + right-unit-law-add-fin-sequence-type-Euclidean-Domain = + right-unit-law-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` @@ -174,12 +174,12 @@ module _ {l : Level} (R : Euclidean-Domain l) where - commutative-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v w : fin-sequence-Euclidean-Domain R n) → - add-fin-sequence-Euclidean-Domain R n v w = - add-fin-sequence-Euclidean-Domain R n w v - commutative-add-fin-sequence-Euclidean-Domain = - commutative-add-fin-sequence-Commutative-Ring + commutative-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v w : fin-sequence-type-Euclidean-Domain R n) → + add-fin-sequence-type-Euclidean-Domain R n v w = + add-fin-sequence-type-Euclidean-Domain R n w v + commutative-add-fin-sequence-type-Euclidean-Domain = + commutative-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` @@ -190,27 +190,27 @@ module _ {l : Level} (R : Euclidean-Domain l) where - left-inverse-law-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + left-inverse-law-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-type-Euclidean-Domain R n) → Id - ( add-fin-sequence-Euclidean-Domain - R n ( neg-fin-sequence-Euclidean-Domain R n v) v) - ( zero-fin-sequence-Euclidean-Domain R n) - left-inverse-law-add-fin-sequence-Euclidean-Domain = - left-inverse-law-add-fin-sequence-Commutative-Ring + ( add-fin-sequence-type-Euclidean-Domain + R n ( neg-fin-sequence-type-Euclidean-Domain R n v) v) + ( zero-fin-sequence-type-Euclidean-Domain R n) + left-inverse-law-add-fin-sequence-type-Euclidean-Domain = + left-inverse-law-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - right-inverse-law-add-fin-sequence-Euclidean-Domain : - (n : ℕ) (v : fin-sequence-Euclidean-Domain R n) → + right-inverse-law-add-fin-sequence-type-Euclidean-Domain : + (n : ℕ) (v : fin-sequence-type-Euclidean-Domain R n) → Id - ( add-fin-sequence-Euclidean-Domain + ( add-fin-sequence-type-Euclidean-Domain ( R) ( n) ( v) - ( neg-fin-sequence-Euclidean-Domain R n v)) - ( zero-fin-sequence-Euclidean-Domain R n) - right-inverse-law-add-fin-sequence-Euclidean-Domain = - right-inverse-law-add-fin-sequence-Commutative-Ring + ( neg-fin-sequence-type-Euclidean-Domain R n v)) + ( zero-fin-sequence-type-Euclidean-Domain R n) + right-inverse-law-add-fin-sequence-type-Euclidean-Domain = + right-inverse-law-add-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` @@ -221,28 +221,28 @@ module _ {l : Level} (R : Euclidean-Domain l) where - fin-sequence-Euclidean-Domain-Semigroup : ℕ → Semigroup l - fin-sequence-Euclidean-Domain-Semigroup = - fin-sequence-Commutative-Ring-Semigroup + semigroup-fin-sequence-type-Euclidean-Domain : ℕ → Semigroup l + semigroup-fin-sequence-type-Euclidean-Domain = + semigroup-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - fin-sequence-Euclidean-Domain-Monoid : ℕ → Monoid l - fin-sequence-Euclidean-Domain-Monoid = - fin-sequence-Commutative-Ring-Monoid + monoid-fin-sequence-type-Euclidean-Domain : ℕ → Monoid l + monoid-fin-sequence-type-Euclidean-Domain = + monoid-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - fin-sequence-Euclidean-Domain-Commutative-Monoid : ℕ → Commutative-Monoid l - fin-sequence-Euclidean-Domain-Commutative-Monoid = - fin-sequence-Commutative-Ring-Commutative-Monoid + commutative-monoid-fin-sequence-type-Euclidean-Domain : ℕ → Commutative-Monoid l + commutative-monoid-fin-sequence-type-Euclidean-Domain = + commutative-monoid-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - fin-sequence-Euclidean-Domain-Group : ℕ → Group l - fin-sequence-Euclidean-Domain-Group = - fin-sequence-Commutative-Ring-Group + group-fin-sequence-type-Euclidean-Domain : ℕ → Group l + group-fin-sequence-type-Euclidean-Domain = + group-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - fin-sequence-Euclidean-Domain-Ab : ℕ → Ab l - fin-sequence-Euclidean-Domain-Ab = - fin-sequence-Commutative-Ring-Ab + ab-fin-sequence-type-Euclidean-Domain : ℕ → Ab l + ab-fin-sequence-type-Euclidean-Domain = + ab-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) ``` diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md index e00611b248..ac14910fad 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -45,26 +45,26 @@ module _ {l : Level} (R : Ring l) where - fin-sequence-Ring : ℕ → UU l - fin-sequence-Ring = fin-sequence (type-Ring R) + fin-sequence-type-Ring : ℕ → UU l + fin-sequence-type-Ring = fin-sequence (type-Ring R) - head-fin-sequence-Ring : - (n : ℕ) → fin-sequence-Ring (succ-ℕ n) → type-Ring R - head-fin-sequence-Ring n v = head-fin-sequence n v + head-fin-sequence-type-Ring : + (n : ℕ) → fin-sequence-type-Ring (succ-ℕ n) → type-Ring R + head-fin-sequence-type-Ring n v = head-fin-sequence n v - tail-fin-sequence-Ring : - (n : ℕ) → fin-sequence-Ring (succ-ℕ n) → fin-sequence-Ring n - tail-fin-sequence-Ring = tail-fin-sequence + tail-fin-sequence-type-Ring : + (n : ℕ) → fin-sequence-type-Ring (succ-ℕ n) → fin-sequence-type-Ring n + tail-fin-sequence-type-Ring = tail-fin-sequence - cons-fin-sequence-Ring : + cons-fin-sequence-type-Ring : (n : ℕ) → type-Ring R → - fin-sequence-Ring n → fin-sequence-Ring (succ-ℕ n) - cons-fin-sequence-Ring = cons-fin-sequence + fin-sequence-type-Ring n → fin-sequence-type-Ring (succ-ℕ n) + cons-fin-sequence-type-Ring = cons-fin-sequence - snoc-fin-sequence-Ring : - (n : ℕ) → fin-sequence-Ring n → type-Ring R → - fin-sequence-Ring (succ-ℕ n) - snoc-fin-sequence-Ring = snoc-fin-sequence + snoc-fin-sequence-type-Ring : + (n : ℕ) → fin-sequence-type-Ring n → type-Ring R → + fin-sequence-type-Ring (succ-ℕ n) + snoc-fin-sequence-type-Ring = snoc-fin-sequence ``` ### Zero finite sequence on a ring @@ -74,8 +74,8 @@ module _ {l : Level} (R : Ring l) where - zero-fin-sequence-Ring : (n : ℕ) → fin-sequence-Ring R n - zero-fin-sequence-Ring n i = zero-Ring R + zero-fin-sequence-type-Ring : (n : ℕ) → fin-sequence-type-Ring R n + zero-fin-sequence-type-Ring n i = zero-Ring R ``` ### Pointwise addition of finite sequences on a ring @@ -85,9 +85,9 @@ module _ {l : Level} (R : Ring l) where - add-fin-sequence-Ring : - (n : ℕ) (v w : fin-sequence-Ring R n) → fin-sequence-Ring R n - add-fin-sequence-Ring n = binary-map-fin-sequence n (add-Ring R) + add-fin-sequence-type-Ring : + (n : ℕ) (v w : fin-sequence-type-Ring R n) → fin-sequence-type-Ring R n + add-fin-sequence-type-Ring n = binary-map-fin-sequence n (add-Ring R) ``` ### Pointwise negation of finite sequences on a ring @@ -97,9 +97,9 @@ module _ {l : Level} (R : Ring l) where - neg-fin-sequence-Ring : - (n : ℕ) (v : fin-sequence-Ring R n) → fin-sequence-Ring R n - neg-fin-sequence-Ring n = map-fin-sequence n (neg-Ring R) + neg-fin-sequence-type-Ring : + (n : ℕ) (v : fin-sequence-type-Ring R n) → fin-sequence-type-Ring R n + neg-fin-sequence-type-Ring n = map-fin-sequence n (neg-Ring R) ``` ## Properties of pointwise addition @@ -111,12 +111,12 @@ module _ {l : Level} (R : Ring l) where - associative-add-fin-sequence-Ring : - (n : ℕ) (v1 v2 v3 : fin-sequence-Ring R n) → - ( add-fin-sequence-Ring R n (add-fin-sequence-Ring R n v1 v2) v3) = - ( add-fin-sequence-Ring R n v1 (add-fin-sequence-Ring R n v2 v3)) - associative-add-fin-sequence-Ring = - associative-add-fin-sequence-Semiring (semiring-Ring R) + associative-add-fin-sequence-type-Ring : + (n : ℕ) (v1 v2 v3 : fin-sequence-type-Ring R n) → + ( add-fin-sequence-type-Ring R n (add-fin-sequence-type-Ring R n v1 v2) v3) = + ( add-fin-sequence-type-Ring R n v1 (add-fin-sequence-type-Ring R n v2 v3)) + associative-add-fin-sequence-type-Ring = + associative-add-fin-sequence-type-Semiring (semiring-Ring R) ``` ### Unit laws @@ -126,17 +126,17 @@ module _ {l : Level} (R : Ring l) where - left-unit-law-add-fin-sequence-Ring : - (n : ℕ) (v : fin-sequence-Ring R n) → - add-fin-sequence-Ring R n (zero-fin-sequence-Ring R n) v = v - left-unit-law-add-fin-sequence-Ring = - left-unit-law-add-fin-sequence-Semiring (semiring-Ring R) - - right-unit-law-add-fin-sequence-Ring : - (n : ℕ) (v : fin-sequence-Ring R n) → - add-fin-sequence-Ring R n v (zero-fin-sequence-Ring R n) = v - right-unit-law-add-fin-sequence-Ring = - right-unit-law-add-fin-sequence-Semiring (semiring-Ring R) + left-unit-law-add-fin-sequence-type-Ring : + (n : ℕ) (v : fin-sequence-type-Ring R n) → + add-fin-sequence-type-Ring R n (zero-fin-sequence-type-Ring R n) v = v + left-unit-law-add-fin-sequence-type-Ring = + left-unit-law-add-fin-sequence-type-Semiring (semiring-Ring R) + + right-unit-law-add-fin-sequence-type-Ring : + (n : ℕ) (v : fin-sequence-type-Ring R n) → + add-fin-sequence-type-Ring R n v (zero-fin-sequence-type-Ring R n) = v + right-unit-law-add-fin-sequence-type-Ring = + right-unit-law-add-fin-sequence-type-Semiring (semiring-Ring R) ``` ### Commutativity @@ -146,11 +146,11 @@ module _ {l : Level} (R : Ring l) where - commutative-add-fin-sequence-Ring : - (n : ℕ) (v w : fin-sequence-Ring R n) → - add-fin-sequence-Ring R n v w = add-fin-sequence-Ring R n w v - commutative-add-fin-sequence-Ring = - commutative-add-fin-sequence-Semiring (semiring-Ring R) + commutative-add-fin-sequence-type-Ring : + (n : ℕ) (v w : fin-sequence-type-Ring R n) → + add-fin-sequence-type-Ring R n v w = add-fin-sequence-type-Ring R n w v + commutative-add-fin-sequence-type-Ring = + commutative-add-fin-sequence-type-Semiring (semiring-Ring R) ``` ### Inverse laws @@ -160,18 +160,18 @@ module _ {l : Level} (R : Ring l) where - left-inverse-law-add-fin-sequence-Ring : - (n : ℕ) (v : fin-sequence-Ring R n) → - add-fin-sequence-Ring R n (neg-fin-sequence-Ring R n v) v = - zero-fin-sequence-Ring R n - left-inverse-law-add-fin-sequence-Ring n v = + left-inverse-law-add-fin-sequence-type-Ring : + (n : ℕ) (v : fin-sequence-type-Ring R n) → + add-fin-sequence-type-Ring R n (neg-fin-sequence-type-Ring R n v) v = + zero-fin-sequence-type-Ring R n + left-inverse-law-add-fin-sequence-type-Ring n v = eq-htpy (λ i → left-inverse-law-add-Ring R _) - right-inverse-law-add-fin-sequence-Ring : - (n : ℕ) (v : fin-sequence-Ring R n) → - add-fin-sequence-Ring R n v (neg-fin-sequence-Ring R n v) = - zero-fin-sequence-Ring R n - right-inverse-law-add-fin-sequence-Ring n v = + right-inverse-law-add-fin-sequence-type-Ring : + (n : ℕ) (v : fin-sequence-type-Ring R n) → + add-fin-sequence-type-Ring R n v (neg-fin-sequence-type-Ring R n v) = + zero-fin-sequence-type-Ring R n + right-inverse-law-add-fin-sequence-type-Ring n v = eq-htpy (λ i → right-inverse-law-add-Ring R _) ``` @@ -182,36 +182,36 @@ module _ {l : Level} (R : Ring l) where - fin-sequence-Ring-Semigroup : ℕ → Semigroup l - fin-sequence-Ring-Semigroup = - fin-sequence-Semiring-Semigroup (semiring-Ring R) - - fin-sequence-Ring-Monoid : ℕ → Monoid l - fin-sequence-Ring-Monoid = - fin-sequence-Semiring-Monoid (semiring-Ring R) - - fin-sequence-Ring-Commutative-Monoid : ℕ → Commutative-Monoid l - fin-sequence-Ring-Commutative-Monoid = - fin-sequence-Semiring-Commutative-Monoid (semiring-Ring R) - - is-unital-fin-sequence-Ring : - (n : ℕ) → is-unital (add-fin-sequence-Ring R n) - is-unital-fin-sequence-Ring n = is-unital-Monoid (fin-sequence-Ring-Monoid n) - - is-group-fin-sequence-Ring : - (n : ℕ) → is-group-Semigroup (fin-sequence-Ring-Semigroup n) - pr1 (is-group-fin-sequence-Ring n) = is-unital-fin-sequence-Ring n - pr1 (pr2 (is-group-fin-sequence-Ring n)) = neg-fin-sequence-Ring R n - pr1 (pr2 (pr2 (is-group-fin-sequence-Ring n))) = - left-inverse-law-add-fin-sequence-Ring R n - pr2 (pr2 (pr2 (is-group-fin-sequence-Ring n))) = - right-inverse-law-add-fin-sequence-Ring R n - - fin-sequence-Ring-Group : ℕ → Group l - pr1 (fin-sequence-Ring-Group n) = fin-sequence-Ring-Semigroup n - pr2 (fin-sequence-Ring-Group n) = is-group-fin-sequence-Ring n - - fin-sequence-Ring-Ab : ℕ → Ab l - pr1 (fin-sequence-Ring-Ab n) = fin-sequence-Ring-Group n - pr2 (fin-sequence-Ring-Ab n) = commutative-add-fin-sequence-Ring R n + semigroup-fin-sequence-type-Ring : ℕ → Semigroup l + semigroup-fin-sequence-type-Ring = + semigroup-fin-sequence-type-Semiring (semiring-Ring R) + + monoid-fin-sequence-type-Ring : ℕ → Monoid l + monoid-fin-sequence-type-Ring = + monoid-fin-sequence-type-Semiring (semiring-Ring R) + + commutative-monoid-fin-sequence-type-Ring : ℕ → Commutative-Monoid l + commutative-monoid-fin-sequence-type-Ring = + commutative-monoid-fin-sequence-type-Semiring (semiring-Ring R) + + is-unital-fin-sequence-type-Ring : + (n : ℕ) → is-unital (add-fin-sequence-type-Ring R n) + is-unital-fin-sequence-type-Ring n = is-unital-Monoid (monoid-fin-sequence-type-Ring n) + + is-group-fin-sequence-type-Ring : + (n : ℕ) → is-group-Semigroup (semigroup-fin-sequence-type-Ring n) + pr1 (is-group-fin-sequence-type-Ring n) = is-unital-fin-sequence-type-Ring n + pr1 (pr2 (is-group-fin-sequence-type-Ring n)) = neg-fin-sequence-type-Ring R n + pr1 (pr2 (pr2 (is-group-fin-sequence-type-Ring n))) = + left-inverse-law-add-fin-sequence-type-Ring R n + pr2 (pr2 (pr2 (is-group-fin-sequence-type-Ring n))) = + right-inverse-law-add-fin-sequence-type-Ring R n + + group-fin-sequence-type-Ring : ℕ → Group l + pr1 (group-fin-sequence-type-Ring n) = semigroup-fin-sequence-type-Ring n + pr2 (group-fin-sequence-type-Ring n) = is-group-fin-sequence-type-Ring n + + ab-fin-sequence-type-Ring : ℕ → Ab l + pr1 (ab-fin-sequence-type-Ring n) = group-fin-sequence-type-Ring n + pr2 (ab-fin-sequence-type-Ring n) = commutative-add-fin-sequence-type-Ring R n ``` diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-semirings.lagda.md index dff18e22e8..d964cd46a4 100644 --- a/src/linear-algebra/finite-sequences-on-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-semirings.lagda.md @@ -40,26 +40,26 @@ module _ {l : Level} (R : Semiring l) where - fin-sequence-Semiring : ℕ → UU l - fin-sequence-Semiring = fin-sequence (type-Semiring R) + fin-sequence-type-Semiring : ℕ → UU l + fin-sequence-type-Semiring = fin-sequence (type-Semiring R) - head-fin-sequence-Semiring : - (n : ℕ) → fin-sequence-Semiring (succ-ℕ n) → type-Semiring R - head-fin-sequence-Semiring n v = head-fin-sequence n v + head-fin-sequence-type-Semiring : + (n : ℕ) → fin-sequence-type-Semiring (succ-ℕ n) → type-Semiring R + head-fin-sequence-type-Semiring n v = head-fin-sequence n v - tail-fin-sequence-Semiring : - (n : ℕ) → fin-sequence-Semiring (succ-ℕ n) → fin-sequence-Semiring n - tail-fin-sequence-Semiring = tail-fin-sequence + tail-fin-sequence-type-Semiring : + (n : ℕ) → fin-sequence-type-Semiring (succ-ℕ n) → fin-sequence-type-Semiring n + tail-fin-sequence-type-Semiring = tail-fin-sequence - cons-fin-sequence-Semiring : + cons-fin-sequence-type-Semiring : (n : ℕ) → type-Semiring R → - fin-sequence-Semiring n → fin-sequence-Semiring (succ-ℕ n) - cons-fin-sequence-Semiring = cons-fin-sequence + fin-sequence-type-Semiring n → fin-sequence-type-Semiring (succ-ℕ n) + cons-fin-sequence-type-Semiring = cons-fin-sequence - snoc-fin-sequence-Semiring : - (n : ℕ) → fin-sequence-Semiring n → type-Semiring R → - fin-sequence-Semiring (succ-ℕ n) - snoc-fin-sequence-Semiring = snoc-fin-sequence + snoc-fin-sequence-type-Semiring : + (n : ℕ) → fin-sequence-type-Semiring n → type-Semiring R → + fin-sequence-type-Semiring (succ-ℕ n) + snoc-fin-sequence-type-Semiring = snoc-fin-sequence ``` ### Zero finite sequence on a ring @@ -69,8 +69,8 @@ module _ {l : Level} (R : Semiring l) where - zero-fin-sequence-Semiring : (n : ℕ) → fin-sequence-Semiring R n - zero-fin-sequence-Semiring n i = zero-Semiring R + zero-fin-sequence-type-Semiring : (n : ℕ) → fin-sequence-type-Semiring R n + zero-fin-sequence-type-Semiring n i = zero-Semiring R ``` ### Pointwise addition on a ring @@ -80,10 +80,10 @@ module _ {l : Level} (R : Semiring l) where - add-fin-sequence-Semiring : - (n : ℕ) (v w : fin-sequence-Semiring R n) → - fin-sequence-Semiring R n - add-fin-sequence-Semiring n = + add-fin-sequence-type-Semiring : + (n : ℕ) (v w : fin-sequence-type-Semiring R n) → + fin-sequence-type-Semiring R n + add-fin-sequence-type-Semiring n = binary-map-fin-sequence n (add-Semiring R) ``` @@ -96,17 +96,17 @@ module _ {l : Level} (R : Semiring l) where - associative-add-fin-sequence-Semiring : - (n : ℕ) (v1 v2 v3 : fin-sequence-Semiring R n) → - ( add-fin-sequence-Semiring R + associative-add-fin-sequence-type-Semiring : + (n : ℕ) (v1 v2 v3 : fin-sequence-type-Semiring R n) → + ( add-fin-sequence-type-Semiring R ( n) - ( add-fin-sequence-Semiring R n v1 v2) + ( add-fin-sequence-type-Semiring R n v1 v2) ( v3)) = - ( add-fin-sequence-Semiring R + ( add-fin-sequence-type-Semiring R ( n) ( v1) - ( add-fin-sequence-Semiring R n v2 v3)) - associative-add-fin-sequence-Semiring n v1 v2 v3 = + ( add-fin-sequence-type-Semiring R n v2 v3)) + associative-add-fin-sequence-type-Semiring n v1 v2 v3 = eq-htpy (λ i → associative-add-Semiring R (v1 i) (v2 i) (v3 i)) ``` @@ -117,16 +117,16 @@ module _ {l : Level} (R : Semiring l) where - left-unit-law-add-fin-sequence-Semiring : - (n : ℕ) (v : fin-sequence-Semiring R n) → - add-fin-sequence-Semiring R n (zero-fin-sequence-Semiring R n) v = v - left-unit-law-add-fin-sequence-Semiring n v = + left-unit-law-add-fin-sequence-type-Semiring : + (n : ℕ) (v : fin-sequence-type-Semiring R n) → + add-fin-sequence-type-Semiring R n (zero-fin-sequence-type-Semiring R n) v = v + left-unit-law-add-fin-sequence-type-Semiring n v = eq-htpy (λ i → left-unit-law-add-Semiring R (v i)) - right-unit-law-add-fin-sequence-Semiring : - (n : ℕ) (v : fin-sequence-Semiring R n) → - add-fin-sequence-Semiring R n v (zero-fin-sequence-Semiring R n) = v - right-unit-law-add-fin-sequence-Semiring n v = + right-unit-law-add-fin-sequence-type-Semiring : + (n : ℕ) (v : fin-sequence-type-Semiring R n) → + add-fin-sequence-type-Semiring R n v (zero-fin-sequence-type-Semiring R n) = v + right-unit-law-add-fin-sequence-type-Semiring n v = eq-htpy (λ i → right-unit-law-add-Semiring R (v i)) ``` @@ -137,10 +137,10 @@ module _ {l : Level} (R : Semiring l) where - commutative-add-fin-sequence-Semiring : - (n : ℕ) (v w : fin-sequence-Semiring R n) → - add-fin-sequence-Semiring R n v w = add-fin-sequence-Semiring R n w v - commutative-add-fin-sequence-Semiring n v w = + commutative-add-fin-sequence-type-Semiring : + (n : ℕ) (v w : fin-sequence-type-Semiring R n) → + add-fin-sequence-type-Semiring R n v w = add-fin-sequence-type-Semiring R n w v + commutative-add-fin-sequence-type-Semiring n v w = eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) ``` @@ -151,27 +151,27 @@ module _ {l : Level} (R : Semiring l) where - fin-sequence-Semiring-Semigroup : ℕ → Semigroup l - pr1 (fin-sequence-Semiring-Semigroup n) = + semigroup-fin-sequence-type-Semiring : ℕ → Semigroup l + pr1 (semigroup-fin-sequence-type-Semiring n) = fin-sequence-Set (set-Semiring R) n - pr1 (pr2 (fin-sequence-Semiring-Semigroup n)) = - add-fin-sequence-Semiring R n - pr2 (pr2 (fin-sequence-Semiring-Semigroup n)) = - associative-add-fin-sequence-Semiring R n - - fin-sequence-Semiring-Monoid : ℕ → Monoid l - pr1 (fin-sequence-Semiring-Monoid n) = - fin-sequence-Semiring-Semigroup n - pr1 (pr2 (fin-sequence-Semiring-Monoid n)) = - zero-fin-sequence-Semiring R n - pr1 (pr2 (pr2 (fin-sequence-Semiring-Monoid n))) = - left-unit-law-add-fin-sequence-Semiring R n - pr2 (pr2 (pr2 (fin-sequence-Semiring-Monoid n))) = - right-unit-law-add-fin-sequence-Semiring R n - - fin-sequence-Semiring-Commutative-Monoid : ℕ → Commutative-Monoid l - pr1 (fin-sequence-Semiring-Commutative-Monoid n) = - fin-sequence-Semiring-Monoid n - pr2 (fin-sequence-Semiring-Commutative-Monoid n) = - commutative-add-fin-sequence-Semiring R n + pr1 (pr2 (semigroup-fin-sequence-type-Semiring n)) = + add-fin-sequence-type-Semiring R n + pr2 (pr2 (semigroup-fin-sequence-type-Semiring n)) = + associative-add-fin-sequence-type-Semiring R n + + monoid-fin-sequence-type-Semiring : ℕ → Monoid l + pr1 (monoid-fin-sequence-type-Semiring n) = + semigroup-fin-sequence-type-Semiring n + pr1 (pr2 (monoid-fin-sequence-type-Semiring n)) = + zero-fin-sequence-type-Semiring R n + pr1 (pr2 (pr2 (monoid-fin-sequence-type-Semiring n))) = + left-unit-law-add-fin-sequence-type-Semiring R n + pr2 (pr2 (pr2 (monoid-fin-sequence-type-Semiring n))) = + right-unit-law-add-fin-sequence-type-Semiring R n + + commutative-monoid-fin-sequence-type-Semiring : ℕ → Commutative-Monoid l + pr1 (commutative-monoid-fin-sequence-type-Semiring n) = + monoid-fin-sequence-type-Semiring n + pr2 (commutative-monoid-fin-sequence-type-Semiring n) = + commutative-add-fin-sequence-type-Semiring R n ``` diff --git a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md index c66771d41d..89ecf2a22b 100644 --- a/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-tuples-on-rings.lagda.md @@ -93,15 +93,15 @@ module _ ### Scalar multiplication defines an `Ab`-endomorphism of `tuple-Ring`s, and this mapping is a ring homomorphism `R → End(tuple R n)` ```agda - scalar-mul-tuple-Ring-endomorphism : + endo-scalar-mul-tuple-Ring : (n : ℕ) (r : type-Ring R) → hom-Ab (tuple-Ring-Ab R n) (tuple-Ring-Ab R n) - pr1 (scalar-mul-tuple-Ring-endomorphism n r) = scalar-mul-tuple-Ring r - pr2 (scalar-mul-tuple-Ring-endomorphism n r) {x} {y} = + pr1 (endo-scalar-mul-tuple-Ring n r) = scalar-mul-tuple-Ring r + pr2 (endo-scalar-mul-tuple-Ring n r) {x} {y} = left-distributive-scalar-mul-add-tuple-Ring r x y scalar-mul-hom-Ring : (n : ℕ) → hom-Ring R (endomorphism-ring-Ab (tuple-Ring-Ab R n)) - pr1 (pr1 (scalar-mul-hom-Ring n)) = scalar-mul-tuple-Ring-endomorphism n + pr1 (pr1 (scalar-mul-hom-Ring n)) = endo-scalar-mul-tuple-Ring n pr2 (pr1 (scalar-mul-hom-Ring n)) {k1} {k2} = eq-htpy-hom-Ab ( tuple-Ring-Ab R n) diff --git a/src/ring-theory/binomial-theorem-rings.lagda.md b/src/ring-theory/binomial-theorem-rings.lagda.md index f310c88f42..527d6082a9 100644 --- a/src/ring-theory/binomial-theorem-rings.lagda.md +++ b/src/ring-theory/binomial-theorem-rings.lagda.md @@ -49,7 +49,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Ring : {l : Level} (R : Ring l) - (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → type-Ring R + (n : ℕ) (f : fin-sequence-type-Ring R (succ-ℕ n)) → type-Ring R binomial-sum-Ring R = binomial-sum-Semiring (semiring-Ring R) ``` @@ -63,13 +63,13 @@ module _ where binomial-sum-one-element-Ring : - (f : fin-sequence-Ring R 1) → - binomial-sum-Ring R 0 f = head-fin-sequence-Ring R 0 f + (f : fin-sequence-type-Ring R 1) → + binomial-sum-Ring R 0 f = head-fin-sequence-type-Ring R 0 f binomial-sum-one-element-Ring = binomial-sum-one-element-Semiring (semiring-Ring R) binomial-sum-two-elements-Ring : - (f : fin-sequence-Ring R 2) → + (f : fin-sequence-type-Ring R 2) → binomial-sum-Ring R 1 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Ring = binomial-sum-two-elements-Semiring (semiring-Ring R) @@ -83,7 +83,7 @@ module _ where htpy-binomial-sum-Ring : - (n : ℕ) {f g : fin-sequence-Ring R (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-type-Ring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Ring R n f = binomial-sum-Ring R n g htpy-binomial-sum-Ring = htpy-binomial-sum-Semiring (semiring-Ring R) ``` @@ -96,14 +96,14 @@ module _ where left-distributive-mul-binomial-sum-Ring : - (n : ℕ) (x : type-Ring R) (f : fin-sequence-Ring R (succ-ℕ n)) → + (n : ℕ) (x : type-Ring R) (f : fin-sequence-type-Ring R (succ-ℕ n)) → mul-Ring R x (binomial-sum-Ring R n f) = binomial-sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-binomial-sum-Ring = left-distributive-mul-binomial-sum-Semiring (semiring-Ring R) right-distributive-mul-binomial-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) (x : type-Ring R) → + (n : ℕ) (f : fin-sequence-type-Ring R (succ-ℕ n)) (x : type-Ring R) → mul-Ring R (binomial-sum-Ring R n f) x = binomial-sum-Ring R n (λ i → mul-Ring R (f i) x) right-distributive-mul-binomial-sum-Ring = diff --git a/src/ring-theory/binomial-theorem-semirings.lagda.md b/src/ring-theory/binomial-theorem-semirings.lagda.md index f7ec01d0ca..4d70400c96 100644 --- a/src/ring-theory/binomial-theorem-semirings.lagda.md +++ b/src/ring-theory/binomial-theorem-semirings.lagda.md @@ -52,7 +52,7 @@ The binomial theorem is the [44th](literature.100-theorems.md#44) theorem on ```agda binomial-sum-Semiring : {l : Level} (R : Semiring l) - (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Semiring R (succ-ℕ n)) → type-Semiring R binomial-sum-Semiring R n f = sum-Semiring R (succ-ℕ n) @@ -72,9 +72,9 @@ module _ where binomial-sum-one-element-Semiring : - (f : fin-sequence-Semiring R 1) → + (f : fin-sequence-type-Semiring R 1) → binomial-sum-Semiring R 0 f = - head-fin-sequence-Semiring R 0 f + head-fin-sequence-type-Semiring R 0 f binomial-sum-one-element-Semiring f = ( sum-one-element-Semiring R ( λ i → @@ -82,10 +82,10 @@ module _ ( binomial-coefficient-Fin 0 i) ( f i))) ∙ ( left-unit-law-mul-nat-scalar-Semiring R - ( head-fin-sequence-Semiring R 0 f)) + ( head-fin-sequence-type-Semiring R 0 f)) binomial-sum-two-elements-Semiring : - (f : fin-sequence-Semiring R 2) → + (f : fin-sequence-type-Semiring R 2) → binomial-sum-Semiring R 1 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) binomial-sum-two-elements-Semiring f = @@ -105,7 +105,7 @@ module _ where htpy-binomial-sum-Semiring : - (n : ℕ) {f g : fin-sequence-Semiring R (succ-ℕ n)} → + (n : ℕ) {f g : fin-sequence-type-Semiring R (succ-ℕ n)} → (f ~ g) → binomial-sum-Semiring R n f = binomial-sum-Semiring R n g htpy-binomial-sum-Semiring n H = @@ -126,7 +126,7 @@ module _ left-distributive-mul-binomial-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : fin-sequence-Semiring R (succ-ℕ n)) → + (f : fin-sequence-type-Semiring R (succ-ℕ n)) → mul-Semiring R x (binomial-sum-Semiring R n f) = binomial-sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-binomial-sum-Semiring n x f = @@ -144,7 +144,7 @@ module _ ( f i))) right-distributive-mul-binomial-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Semiring R (succ-ℕ n)) → (x : type-Semiring R) → mul-Semiring R (binomial-sum-Semiring R n f) x = binomial-sum-Semiring R n (λ i → mul-Semiring R (f i) x) diff --git a/src/ring-theory/sums-rings.lagda.md b/src/ring-theory/sums-rings.lagda.md index 6f7da3e8da..961716004b 100644 --- a/src/ring-theory/sums-rings.lagda.md +++ b/src/ring-theory/sums-rings.lagda.md @@ -37,7 +37,7 @@ The sum operation extends the binary addition operation on a ring `R` to any ```agda sum-Ring : - {l : Level} (R : Ring l) (n : ℕ) → fin-sequence-Ring R n → type-Ring R + {l : Level} (R : Ring l) (n : ℕ) → fin-sequence-type-Ring R n → type-Ring R sum-Ring R = sum-Semiring (semiring-Ring R) ``` @@ -51,11 +51,11 @@ module _ where sum-one-element-Ring : - (f : fin-sequence-Ring R 1) → sum-Ring R 1 f = head-fin-sequence 0 f + (f : fin-sequence-type-Ring R 1) → sum-Ring R 1 f = head-fin-sequence 0 f sum-one-element-Ring = sum-one-element-Semiring (semiring-Ring R) sum-two-elements-Ring : - (f : fin-sequence-Ring R 2) → + (f : fin-sequence-type-Ring R 2) → sum-Ring R 2 f = add-Ring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Ring = sum-two-elements-Semiring (semiring-Ring R) ``` @@ -68,7 +68,7 @@ module _ where htpy-sum-Ring : - (n : ℕ) {f g : fin-sequence-Ring R n} → + (n : ℕ) {f g : fin-sequence-type-Ring R n} → (f ~ g) → sum-Ring R n f = sum-Ring R n g htpy-sum-Ring = htpy-sum-Semiring (semiring-Ring R) ``` @@ -81,14 +81,14 @@ module _ where cons-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Ring R (succ-ℕ n)) → {x : type-Ring R} → head-fin-sequence n f = x → sum-Ring R (succ-ℕ n) f = add-Ring R (sum-Ring R n (tail-fin-sequence n f)) x cons-sum-Ring = cons-sum-Semiring (semiring-Ring R) snoc-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Ring R (succ-ℕ n)) → {x : type-Ring R} → f (zero-Fin n) = x → sum-Ring R (succ-ℕ n) f = add-Ring R @@ -106,14 +106,14 @@ module _ left-distributive-mul-sum-Ring : (n : ℕ) (x : type-Ring R) - (f : fin-sequence-Ring R n) → + (f : fin-sequence-type-Ring R n) → mul-Ring R x (sum-Ring R n f) = sum-Ring R n (λ i → mul-Ring R x (f i)) left-distributive-mul-sum-Ring = left-distributive-mul-sum-Semiring (semiring-Ring R) right-distributive-mul-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R n) + (n : ℕ) (f : fin-sequence-type-Ring R n) (x : type-Ring R) → mul-Ring R (sum-Ring R n f) x = sum-Ring R n (λ i → mul-Ring R (f i) x) @@ -129,12 +129,12 @@ module _ where interchange-add-sum-Ring : - (n : ℕ) (f g : fin-sequence-Ring R n) → + (n : ℕ) (f g : fin-sequence-type-Ring R n) → add-Ring R ( sum-Ring R n f) ( sum-Ring R n g) = sum-Ring R n - ( add-fin-sequence-Ring R n f g) + ( add-fin-sequence-type-Ring R n f g) interchange-add-sum-Ring = interchange-add-sum-Semiring (semiring-Ring R) ``` @@ -146,10 +146,10 @@ module _ where extend-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R n) → + (n : ℕ) (f : fin-sequence-type-Ring R n) → sum-Ring R ( succ-ℕ n) - ( cons-fin-sequence-Ring R n (zero-Ring R) f) = + ( cons-fin-sequence-type-Ring R n (zero-Ring R) f) = sum-Ring R n f extend-sum-Ring = extend-sum-Semiring (semiring-Ring R) ``` @@ -162,10 +162,10 @@ module _ where shift-sum-Ring : - (n : ℕ) (f : fin-sequence-Ring R n) → + (n : ℕ) (f : fin-sequence-type-Ring R n) → sum-Ring R ( succ-ℕ n) - ( snoc-fin-sequence-Ring R n f + ( snoc-fin-sequence-type-Ring R n f ( zero-Ring R)) = sum-Ring R n f shift-sum-Ring = shift-sum-Semiring (semiring-Ring R) @@ -179,7 +179,7 @@ module _ where sum-zero-Ring : - (n : ℕ) → sum-Ring R n (zero-fin-sequence-Ring R n) = zero-Ring R + (n : ℕ) → sum-Ring R n (zero-fin-sequence-type-Ring R n) = zero-Ring R sum-zero-Ring = sum-zero-Semiring (semiring-Ring R) ``` @@ -188,7 +188,7 @@ module _ ```agda split-sum-Ring : {l : Level} (R : Ring l) - (n m : ℕ) (f : fin-sequence-Ring R (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-type-Ring R (n +ℕ m)) → sum-Ring R (n +ℕ m) f = add-Ring R ( sum-Ring R n (f ∘ inl-coproduct-Fin n m)) diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index 25ad17c059..5966a05fc6 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -41,7 +41,7 @@ The sum operation extends the binary addition operation on a semiring `R` to any ```agda sum-Semiring : {l : Level} (R : Semiring l) (n : ℕ) → - (fin-sequence-Semiring R n) → type-Semiring R + (fin-sequence-type-Semiring R n) → type-Semiring R sum-Semiring R zero-ℕ f = zero-Semiring R sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -59,13 +59,13 @@ module _ where sum-one-element-Semiring : - (f : fin-sequence-Semiring R 1) → + (f : fin-sequence-type-Semiring R 1) → sum-Semiring R 1 f = head-fin-sequence 0 f sum-one-element-Semiring f = left-unit-law-add-Semiring R (f (inr star)) sum-two-elements-Semiring : - (f : fin-sequence-Semiring R 2) → + (f : fin-sequence-type-Semiring R 2) → sum-Semiring R 2 f = add-Semiring R (f (zero-Fin 1)) (f (one-Fin 1)) sum-two-elements-Semiring f = ( associative-add-Semiring R @@ -82,7 +82,7 @@ module _ where htpy-sum-Semiring : - (n : ℕ) {f g : fin-sequence-Semiring R n} → + (n : ℕ) {f g : fin-sequence-type-Semiring R n} → (f ~ g) → sum-Semiring R n f = sum-Semiring R n g htpy-sum-Semiring zero-ℕ H = refl htpy-sum-Semiring (succ-ℕ n) H = @@ -99,14 +99,14 @@ module _ where cons-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Semiring R (succ-ℕ n)) → {x : type-Semiring R} → head-fin-sequence n f = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R (sum-Semiring R n (f ∘ inl-Fin n)) x cons-sum-Semiring n f refl = refl snoc-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R (succ-ℕ n)) → + (n : ℕ) (f : fin-sequence-type-Semiring R (succ-ℕ n)) → {x : type-Semiring R} → f (zero-Fin n) = x → sum-Semiring R (succ-ℕ n) f = add-Semiring R @@ -134,7 +134,7 @@ module _ left-distributive-mul-sum-Semiring : (n : ℕ) (x : type-Semiring R) - (f : fin-sequence-Semiring R n) → + (f : fin-sequence-type-Semiring R n) → mul-Semiring R x (sum-Semiring R n f) = sum-Semiring R n (λ i → mul-Semiring R x (f i)) left-distributive-mul-sum-Semiring zero-ℕ x f = @@ -148,7 +148,7 @@ module _ ( left-distributive-mul-sum-Semiring n x (f ∘ inl-Fin n))) right-distributive-mul-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R n) + (n : ℕ) (f : fin-sequence-type-Semiring R n) (x : type-Semiring R) → mul-Semiring R (sum-Semiring R n f) x = sum-Semiring R n (λ i → mul-Semiring R (f i) x) @@ -172,12 +172,12 @@ module _ where interchange-add-sum-Semiring : - (n : ℕ) (f g : fin-sequence-Semiring R n) → + (n : ℕ) (f g : fin-sequence-type-Semiring R n) → add-Semiring R ( sum-Semiring R n f) ( sum-Semiring R n g) = sum-Semiring R n - ( add-fin-sequence-Semiring R n f g) + ( add-fin-sequence-type-Semiring R n f g) interchange-add-sum-Semiring zero-ℕ f g = left-unit-law-add-Semiring R (zero-Semiring R) interchange-add-sum-Semiring (succ-ℕ n) f g = @@ -202,10 +202,10 @@ module _ where extend-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R n) → + (n : ℕ) (f : fin-sequence-type-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( cons-fin-sequence-Semiring R n (zero-Semiring R) f) = + ( cons-fin-sequence-type-Semiring R n (zero-Semiring R) f) = sum-Semiring R n f extend-sum-Semiring n f = right-unit-law-add-Semiring R (sum-Semiring R n f) @@ -219,10 +219,10 @@ module _ where shift-sum-Semiring : - (n : ℕ) (f : fin-sequence-Semiring R n) → + (n : ℕ) (f : fin-sequence-type-Semiring R n) → sum-Semiring R ( succ-ℕ n) - ( snoc-fin-sequence-Semiring R n f + ( snoc-fin-sequence-type-Semiring R n f ( zero-Semiring R)) = sum-Semiring R n f shift-sum-Semiring zero-ℕ f = @@ -230,9 +230,9 @@ module _ shift-sum-Semiring (succ-ℕ n) f = ap ( add-Semiring' R - ( head-fin-sequence-Semiring R n f)) + ( head-fin-sequence-type-Semiring R n f)) ( shift-sum-Semiring n - ( tail-fin-sequence-Semiring R n f)) + ( tail-fin-sequence-type-Semiring R n f)) ``` ### A sum of zeroes is zero @@ -244,7 +244,7 @@ module _ sum-zero-Semiring : (n : ℕ) → - sum-Semiring R n (zero-fin-sequence-Semiring R n) = zero-Semiring R + sum-Semiring R n (zero-fin-sequence-type-Semiring R n) = zero-Semiring R sum-zero-Semiring zero-ℕ = refl sum-zero-Semiring (succ-ℕ n) = right-unit-law-add-Semiring R _ ∙ sum-zero-Semiring n @@ -255,7 +255,7 @@ module _ ```agda split-sum-Semiring : {l : Level} (R : Semiring l) - (n m : ℕ) (f : fin-sequence-Semiring R (n +ℕ m)) → + (n m : ℕ) (f : fin-sequence-type-Semiring R (n +ℕ m)) → sum-Semiring R (n +ℕ m) f = add-Semiring R ( sum-Semiring R n (f ∘ inl-coproduct-Fin n m)) From bdf98f67ea0c362310bc9b36835237b26347d978 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 3 May 2025 13:40:56 -0700 Subject: [PATCH 13/24] More corrections: --- src/foundation/finite-sequences-set-quotients.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/finite-sequences-set-quotients.lagda.md b/src/foundation/finite-sequences-set-quotients.lagda.md index 752d7dd2a4..29a5d6474e 100644 --- a/src/foundation/finite-sequences-set-quotients.lagda.md +++ b/src/foundation/finite-sequences-set-quotients.lagda.md @@ -55,7 +55,7 @@ quotient of this finite sequence is the finite sequence of the ## Definition -### The induced relation on the fin-sequence of types +### The induced relation on the finite sequence of types ```agda all-sim-equivalence-relation : @@ -73,7 +73,7 @@ all-sim-equivalence-relation (succ-ℕ n) A R = ( λ x → R (inl x))) ``` -### The set quotient of a fin-sequence of types +### The set quotient of a finite sequence of types ```agda set-quotient-fin-sequence : From 48d15436958723cf91e46c56e631b4c2ac1cf0cb Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 4 May 2025 12:27:31 -0700 Subject: [PATCH 14/24] Wording --- src/universal-algebra/models-of-signatures.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/universal-algebra/models-of-signatures.lagda.md b/src/universal-algebra/models-of-signatures.lagda.md index 1250006f7d..2c2a430037 100644 --- a/src/universal-algebra/models-of-signatures.lagda.md +++ b/src/universal-algebra/models-of-signatures.lagda.md @@ -21,7 +21,7 @@ open import universal-algebra.signatures ## Idea A model of a signature `Sig` in a type `A` is a dependent function that assigns -to each function symbol `f` of arity `n` and a tuple of `n` elements of `A` an +to each function symbol `f` of arity `n` and `n`-tuple of elements of `A` an element of `A`. ## Definitions From cb7a7578ddfbeaabfe792437ad1373416a7f0eae Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 4 May 2025 12:35:06 -0700 Subject: [PATCH 15/24] Wrapping --- ...inite-sequences-on-euclidean-domains.lagda.md | 3 ++- .../finite-sequences-on-rings.lagda.md | 7 +++++-- .../finite-sequences-on-semirings.lagda.md | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md index 3dee90c4d3..d0feb4e1bd 100644 --- a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md @@ -231,7 +231,8 @@ module _ monoid-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) - commutative-monoid-fin-sequence-type-Euclidean-Domain : ℕ → Commutative-Monoid l + commutative-monoid-fin-sequence-type-Euclidean-Domain : + ℕ → Commutative-Monoid l commutative-monoid-fin-sequence-type-Euclidean-Domain = commutative-monoid-fin-sequence-type-Commutative-Ring ( commutative-ring-Euclidean-Domain R) diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md index c435b4a903..1d87970899 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -113,7 +113,9 @@ module _ associative-add-fin-sequence-type-Ring : (n : ℕ) (v1 v2 v3 : fin-sequence-type-Ring R n) → - ( add-fin-sequence-type-Ring R n (add-fin-sequence-type-Ring R n v1 v2) v3) = + ( add-fin-sequence-type-Ring R n + ( add-fin-sequence-type-Ring R n v1 v2) + ( v3)) = ( add-fin-sequence-type-Ring R n v1 (add-fin-sequence-type-Ring R n v2 v3)) associative-add-fin-sequence-type-Ring = associative-add-fin-sequence-type-Semiring (semiring-Ring R) @@ -196,7 +198,8 @@ module _ is-unital-fin-sequence-type-Ring : (n : ℕ) → is-unital (add-fin-sequence-type-Ring R n) - is-unital-fin-sequence-type-Ring n = is-unital-Monoid (monoid-fin-sequence-type-Ring n) + is-unital-fin-sequence-type-Ring n = + is-unital-Monoid (monoid-fin-sequence-type-Ring n) is-group-fin-sequence-type-Ring : (n : ℕ) → is-group-Semigroup (semigroup-fin-sequence-type-Ring n) diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-semirings.lagda.md index d964cd46a4..a8b6a37b89 100644 --- a/src/linear-algebra/finite-sequences-on-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-semirings.lagda.md @@ -48,7 +48,8 @@ module _ head-fin-sequence-type-Semiring n v = head-fin-sequence n v tail-fin-sequence-type-Semiring : - (n : ℕ) → fin-sequence-type-Semiring (succ-ℕ n) → fin-sequence-type-Semiring n + (n : ℕ) → fin-sequence-type-Semiring (succ-ℕ n) → + fin-sequence-type-Semiring n tail-fin-sequence-type-Semiring = tail-fin-sequence cons-fin-sequence-type-Semiring : @@ -119,13 +120,19 @@ module _ left-unit-law-add-fin-sequence-type-Semiring : (n : ℕ) (v : fin-sequence-type-Semiring R n) → - add-fin-sequence-type-Semiring R n (zero-fin-sequence-type-Semiring R n) v = v + add-fin-sequence-type-Semiring R n + ( zero-fin-sequence-type-Semiring R n) + ( v) = + v left-unit-law-add-fin-sequence-type-Semiring n v = eq-htpy (λ i → left-unit-law-add-Semiring R (v i)) right-unit-law-add-fin-sequence-type-Semiring : (n : ℕ) (v : fin-sequence-type-Semiring R n) → - add-fin-sequence-type-Semiring R n v (zero-fin-sequence-type-Semiring R n) = v + add-fin-sequence-type-Semiring R n + ( v) + ( zero-fin-sequence-type-Semiring R n) = + v right-unit-law-add-fin-sequence-type-Semiring n v = eq-htpy (λ i → right-unit-law-add-Semiring R (v i)) ``` @@ -139,7 +146,8 @@ module _ commutative-add-fin-sequence-type-Semiring : (n : ℕ) (v w : fin-sequence-type-Semiring R n) → - add-fin-sequence-type-Semiring R n v w = add-fin-sequence-type-Semiring R n w v + add-fin-sequence-type-Semiring R n v w = + add-fin-sequence-type-Semiring R n w v commutative-add-fin-sequence-type-Semiring n v w = eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) ``` From 30c4a5163424863b29fafd34f6cc29f99a85a0b1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 5 May 2025 21:33:20 -0700 Subject: [PATCH 16/24] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../finite-sequences-on-commutative-rings.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md index 1a24482cac..f9ec60b73d 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md @@ -1,4 +1,4 @@ -# Finite sequences on commutative rings +# Finite sequences in commutative rings ```agda module linear-algebra.finite-sequences-on-commutative-rings where @@ -80,7 +80,7 @@ module _ zero-fin-sequence-type-Commutative-Ring n i = zero-Commutative-Ring R ``` -### Pointwise addition on a commutative ring +### Pointwise addition of finite sequences in a commutative ring ```agda module _ @@ -94,7 +94,7 @@ module _ add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Pointwise negation on a commutative ring +### Pointwise negation of finite sequences in a commutative ring ```agda module _ @@ -194,7 +194,7 @@ module _ right-inverse-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Abelian group of pointwise addition +### The abelian group of pointwise addition ```agda module _ From 010af9fadd91d138b4129c639746589d131d2d7a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 5 May 2025 21:33:45 -0700 Subject: [PATCH 17/24] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../finite-sequences-on-commutative-rings.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md index f9ec60b73d..baa189c09a 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md @@ -27,7 +27,7 @@ open import linear-algebra.finite-sequences-on-rings ## Idea -Finite sequences on a +Finite sequences in a [commutative ring](commutative-algebra.commutative-rings.md) `R` are [finite sequences](lists.finite-sequences.md) on the underlying type of `R`. @@ -68,7 +68,7 @@ module _ snoc-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Zero finite sequence on a commutative ring +### The zero finite sequence in a commutative ring ```agda module _ From 0615f383e6ed43caca0480bb5452f07bc6857a43 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 6 May 2025 18:17:03 -0700 Subject: [PATCH 18/24] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../finite-sequences-on-commutative-semirings.lagda.md | 8 ++++---- .../finite-sequences-on-euclidean-domains.lagda.md | 6 +++--- src/linear-algebra/finite-sequences-on-rings.lagda.md | 10 +++++----- .../finite-sequences-on-semirings.lagda.md | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md index 4b29907aa0..d154958c65 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md @@ -25,9 +25,9 @@ open import linear-algebra.finite-sequences-on-semirings ## Idea -Finite sequences on a +Finite sequences in a [commutative semiring](commutative-algebra.commutative-semirings.md) `R` are -[finite sequences](lists.finite-sequences.md) on the underlying type of `R`. +[finite sequences](lists.finite-sequences.md) in the underlying type of `R`. ## Definitions @@ -67,7 +67,7 @@ module _ snoc-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` -### Zero finite sequence on a commutative semiring +### Zero finite sequence in a commutative semiring ```agda module _ @@ -79,7 +79,7 @@ module _ zero-fin-sequence-type-Commutative-Semiring n i = zero-Commutative-Semiring R ``` -#### Pointwise addition of finite sequences on a commutative semiring +#### Pointwise addition of finite sequences in a commutative semiring ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md index d0feb4e1bd..5e2af0d1d1 100644 --- a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md @@ -1,4 +1,4 @@ -# Finite sequences on euclidean domains +# Finite sequences in euclidean domains ```agda module linear-algebra.finite-sequences-on-euclidean-domains where @@ -68,7 +68,7 @@ module _ snoc-fin-sequence-type-Euclidean-Domain = snoc-fin-sequence ``` -### Zero finite sequences on a euclidean domain +### Zero finite sequences in Euclidean domains ```agda module _ @@ -80,7 +80,7 @@ module _ zero-fin-sequence-type-Euclidean-Domain n i = zero-Euclidean-Domain R ``` -### Pointwise addition of finite sequences on a euclidean domain +### Pointwise addition of finite sequences in an Euclidean domain ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-on-rings.lagda.md index 1d87970899..84a372ddf2 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-rings.lagda.md @@ -1,4 +1,4 @@ -# Finite sequences on rings +# Finite sequences in rings ```agda module linear-algebra.finite-sequences-on-rings where @@ -35,7 +35,7 @@ open import ring-theory.rings ## Idea Given a [ring](ring-theory.rings.md) `R`, the type `fin-sequence n R` of -`R`-[finite sequences](lists.finite-sequences.md) is an +[finite sequences](lists.finite-sequences.md) in the underlying type of `R` of length `n` is an [abelian group](group-theory.abelian-groups.md). ## Definitions @@ -67,7 +67,7 @@ module _ snoc-fin-sequence-type-Ring = snoc-fin-sequence ``` -### Zero finite sequence on a ring +### Zero finite sequences in rings ```agda module _ @@ -78,7 +78,7 @@ module _ zero-fin-sequence-type-Ring n i = zero-Ring R ``` -### Pointwise addition of finite sequences on a ring +### Pointwise addition of finite sequences in a ring ```agda module _ @@ -90,7 +90,7 @@ module _ add-fin-sequence-type-Ring n = binary-map-fin-sequence n (add-Ring R) ``` -### Pointwise negation of finite sequences on a ring +### Pointwise negation of finite sequences in a ring ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-on-semirings.lagda.md index a8b6a37b89..e7e47ed658 100644 --- a/src/linear-algebra/finite-sequences-on-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-on-semirings.lagda.md @@ -1,4 +1,4 @@ -# Finite sequences on semirings +# Finite sequences in semirings ```agda module linear-algebra.finite-sequences-on-semirings where @@ -30,7 +30,7 @@ open import ring-theory.semirings Given a [semiring](ring-theory.semirings.md) `R`, the type `finite-sequence-Semiring R n` of -`R`-[finite sequences](lists.finite-sequences.md) is a +[finite sequences](lists.finite-sequences.md) of length `n` in the underlying type of `R` is a [commutative monoid](group-theory.commutative-monoids.md) under addition. ## Definitions @@ -63,7 +63,7 @@ module _ snoc-fin-sequence-type-Semiring = snoc-fin-sequence ``` -### Zero finite sequence on a ring +### The zero finite sequences in a semiring ```agda module _ @@ -74,7 +74,7 @@ module _ zero-fin-sequence-type-Semiring n i = zero-Semiring R ``` -### Pointwise addition on a ring +### Pointwise addition ```agda module _ From 4cd42179c0d963031667b496a2c03eaa45fd828b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 6 May 2025 18:30:12 -0700 Subject: [PATCH 19/24] Progress --- ...inomial-theorem-commutative-rings.lagda.md | 2 +- ...ial-theorem-commutative-semirings.lagda.md | 2 +- .../sums-commutative-rings.lagda.md | 2 +- .../sums-commutative-semirings.lagda.md | 2 +- src/linear-algebra.lagda.md | 10 ++++----- ...e-sequences-in-commutative-rings.lagda.md} | 12 +++++----- ...quences-in-commutative-semirings.lagda.md} | 14 ++++++------ ...e-sequences-in-euclidean-domains.lagda.md} | 22 +++++++++---------- ....md => finite-sequences-in-rings.lagda.md} | 12 +++++----- ...=> finite-sequences-in-semirings.lagda.md} | 14 ++++++------ .../tuples-on-commutative-rings.lagda.md | 16 +++++++------- .../tuples-on-commutative-semirings.lagda.md | 8 +++---- .../tuples-on-euclidean-domains.lagda.md | 20 ++++++++--------- src/linear-algebra/tuples-on-rings.lagda.md | 16 +++++++------- .../tuples-on-semirings.lagda.md | 12 +++++----- .../binomial-theorem-rings.lagda.md | 2 +- .../binomial-theorem-semirings.lagda.md | 2 +- src/ring-theory/sums-rings.lagda.md | 2 +- src/ring-theory/sums-semirings.lagda.md | 2 +- 19 files changed, 86 insertions(+), 86 deletions(-) rename src/linear-algebra/{finite-sequences-on-commutative-rings.lagda.md => finite-sequences-in-commutative-rings.lagda.md} (96%) rename src/linear-algebra/{finite-sequences-on-commutative-semirings.lagda.md => finite-sequences-in-commutative-semirings.lagda.md} (94%) rename src/linear-algebra/{finite-sequences-on-euclidean-domains.lagda.md => finite-sequences-in-euclidean-domains.lagda.md} (92%) rename src/linear-algebra/{finite-sequences-on-rings.lagda.md => finite-sequences-in-rings.lagda.md} (95%) rename src/linear-algebra/{finite-sequences-on-semirings.lagda.md => finite-sequences-in-semirings.lagda.md} (93%) diff --git a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md index 0224396d58..4b93893830 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md @@ -21,7 +21,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-commutative-rings +open import linear-algebra.finite-sequences-in-commutative-rings open import ring-theory.binomial-theorem-rings diff --git a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md index 3a6569cf53..86217c60aa 100644 --- a/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md +++ b/src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md @@ -20,7 +20,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-commutative-semirings +open import linear-algebra.finite-sequences-in-commutative-semirings open import ring-theory.binomial-theorem-semirings diff --git a/src/commutative-algebra/sums-commutative-rings.lagda.md b/src/commutative-algebra/sums-commutative-rings.lagda.md index b7115be292..54529d7bef 100644 --- a/src/commutative-algebra/sums-commutative-rings.lagda.md +++ b/src/commutative-algebra/sums-commutative-rings.lagda.md @@ -20,7 +20,7 @@ open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-commutative-rings +open import linear-algebra.finite-sequences-in-commutative-rings open import lists.finite-sequences diff --git a/src/commutative-algebra/sums-commutative-semirings.lagda.md b/src/commutative-algebra/sums-commutative-semirings.lagda.md index 7e013d937a..00247fd3e2 100644 --- a/src/commutative-algebra/sums-commutative-semirings.lagda.md +++ b/src/commutative-algebra/sums-commutative-semirings.lagda.md @@ -17,7 +17,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-commutative-semirings +open import linear-algebra.finite-sequences-in-commutative-semirings open import lists.finite-sequences diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index e068b70fba..229ce08d23 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -8,11 +8,11 @@ module linear-algebra where open import linear-algebra.constant-matrices public open import linear-algebra.constant-tuples public open import linear-algebra.diagonal-matrices-on-rings public -open import linear-algebra.finite-sequences-on-commutative-rings public -open import linear-algebra.finite-sequences-on-commutative-semirings public -open import linear-algebra.finite-sequences-on-euclidean-domains public -open import linear-algebra.finite-sequences-on-rings public -open import linear-algebra.finite-sequences-on-semirings public +open import linear-algebra.finite-sequences-in-commutative-rings public +open import linear-algebra.finite-sequences-in-commutative-semirings public +open import linear-algebra.finite-sequences-in-euclidean-domains public +open import linear-algebra.finite-sequences-in-rings public +open import linear-algebra.finite-sequences-in-semirings public open import linear-algebra.functoriality-matrices public open import linear-algebra.matrices public open import linear-algebra.matrices-on-rings public diff --git a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md similarity index 96% rename from src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md rename to src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md index baa189c09a..82fdf3a687 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md @@ -1,7 +1,7 @@ # Finite sequences in commutative rings ```agda -module linear-algebra.finite-sequences-on-commutative-rings where +module linear-algebra.finite-sequences-in-commutative-rings where ```
Imports @@ -20,7 +20,7 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences-on-rings +open import linear-algebra.finite-sequences-in-rings ```
@@ -110,7 +110,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -127,7 +127,7 @@ module _ associative-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -149,7 +149,7 @@ module _ right-unit-law-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -164,7 +164,7 @@ module _ commutative-add-fin-sequence-type-Ring (ring-Commutative-Ring R) ``` -### Inverse laws +### Inverse laws of pointwise addition ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md b/src/linear-algebra/finite-sequences-in-commutative-semirings.lagda.md similarity index 94% rename from src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md rename to src/linear-algebra/finite-sequences-in-commutative-semirings.lagda.md index d154958c65..5858b3dfa3 100644 --- a/src/linear-algebra/finite-sequences-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-in-commutative-semirings.lagda.md @@ -1,7 +1,7 @@ -# Finite sequences on commutative semirings +# Finite sequences in commutative semirings ```agda -module linear-algebra.finite-sequences-on-commutative-semirings where +module linear-algebra.finite-sequences-in-commutative-semirings where ```
Imports @@ -18,7 +18,7 @@ open import group-theory.commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences-on-semirings +open import linear-algebra.finite-sequences-in-semirings ```
@@ -67,7 +67,7 @@ module _ snoc-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` -### Zero finite sequence in a commutative semiring +### The zero finite sequence in a commutative semiring ```agda module _ @@ -95,7 +95,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -112,7 +112,7 @@ module _ associative-add-fin-sequence-type-Semiring (semiring-Commutative-Semiring R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -136,7 +136,7 @@ module _ ( semiring-Commutative-Semiring R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md b/src/linear-algebra/finite-sequences-in-euclidean-domains.lagda.md similarity index 92% rename from src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md rename to src/linear-algebra/finite-sequences-in-euclidean-domains.lagda.md index 5e2af0d1d1..955193ee9e 100644 --- a/src/linear-algebra/finite-sequences-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/finite-sequences-in-euclidean-domains.lagda.md @@ -1,7 +1,7 @@ # Finite sequences in euclidean domains ```agda -module linear-algebra.finite-sequences-on-euclidean-domains where +module linear-algebra.finite-sequences-in-euclidean-domains where ```
Imports @@ -20,7 +20,7 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences-on-commutative-rings +open import linear-algebra.finite-sequences-in-commutative-rings open import lists.finite-sequences open import lists.functoriality-finite-sequences @@ -30,7 +30,7 @@ open import lists.functoriality-finite-sequences ## Idea -Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the +Given a [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the type `fin-sequence n R` of `R`-[finite sequences](lists.finite-sequences.md) is an `R`-module. @@ -68,7 +68,7 @@ module _ snoc-fin-sequence-type-Euclidean-Domain = snoc-fin-sequence ``` -### Zero finite sequences in Euclidean domains +### The zero finite sequence in a Euclidean domain ```agda module _ @@ -80,7 +80,7 @@ module _ zero-fin-sequence-type-Euclidean-Domain n i = zero-Euclidean-Domain R ``` -### Pointwise addition of finite sequences in an Euclidean domain +### Pointwise addition of finite sequences in a Euclidean domain ```agda module _ @@ -94,7 +94,7 @@ module _ binary-map-fin-sequence n (add-Euclidean-Domain R) ``` -### Pointwise negation of finite sequences on a euclidean domain +### Pointwise negation of finite sequences on a Euclidean domain ```agda module _ @@ -111,7 +111,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -135,7 +135,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -167,7 +167,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -183,7 +183,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Inverse laws +### Inverse laws of pointwise addition ```agda module _ @@ -214,7 +214,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Abelian group of pointwise addition +### The abelian group of pointwise addition ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-rings.lagda.md b/src/linear-algebra/finite-sequences-in-rings.lagda.md similarity index 95% rename from src/linear-algebra/finite-sequences-on-rings.lagda.md rename to src/linear-algebra/finite-sequences-in-rings.lagda.md index 84a372ddf2..30d9300c9d 100644 --- a/src/linear-algebra/finite-sequences-on-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-in-rings.lagda.md @@ -1,7 +1,7 @@ # Finite sequences in rings ```agda -module linear-algebra.finite-sequences-on-rings where +module linear-algebra.finite-sequences-in-rings where ```
Imports @@ -22,7 +22,7 @@ open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups -open import linear-algebra.finite-sequences-on-semirings +open import linear-algebra.finite-sequences-in-semirings open import lists.finite-sequences open import lists.functoriality-finite-sequences @@ -35,8 +35,8 @@ open import ring-theory.rings ## Idea Given a [ring](ring-theory.rings.md) `R`, the type `fin-sequence n R` of -[finite sequences](lists.finite-sequences.md) in the underlying type of `R` of length `n` is an -[abelian group](group-theory.abelian-groups.md). +[finite sequences](lists.finite-sequences.md) in the underlying type of `R` of +length `n` is an [abelian group](group-theory.abelian-groups.md). ## Definitions @@ -67,7 +67,7 @@ module _ snoc-fin-sequence-type-Ring = snoc-fin-sequence ``` -### Zero finite sequences in rings +### The zero finite sequence in a ring ```agda module _ @@ -177,7 +177,7 @@ module _ eq-htpy (λ i → right-inverse-law-add-Ring R _) ``` -### Abelian group of pointwise addition +### The abelian group of pointwise addition ```agda module _ diff --git a/src/linear-algebra/finite-sequences-on-semirings.lagda.md b/src/linear-algebra/finite-sequences-in-semirings.lagda.md similarity index 93% rename from src/linear-algebra/finite-sequences-on-semirings.lagda.md rename to src/linear-algebra/finite-sequences-in-semirings.lagda.md index e7e47ed658..907b467bce 100644 --- a/src/linear-algebra/finite-sequences-on-semirings.lagda.md +++ b/src/linear-algebra/finite-sequences-in-semirings.lagda.md @@ -1,7 +1,7 @@ # Finite sequences in semirings ```agda -module linear-algebra.finite-sequences-on-semirings where +module linear-algebra.finite-sequences-in-semirings where ```
Imports @@ -29,8 +29,8 @@ open import ring-theory.semirings ## Idea Given a [semiring](ring-theory.semirings.md) `R`, the type -`finite-sequence-Semiring R n` of -[finite sequences](lists.finite-sequences.md) of length `n` in the underlying type of `R` is a +`finite-sequence-Semiring R n` of [finite sequences](lists.finite-sequences.md) +of length `n` in the underlying type of `R` is a [commutative monoid](group-theory.commutative-monoids.md) under addition. ## Definitions @@ -63,7 +63,7 @@ module _ snoc-fin-sequence-type-Semiring = snoc-fin-sequence ``` -### The zero finite sequences in a semiring +### The zero finite sequence in a semiring ```agda module _ @@ -74,7 +74,7 @@ module _ zero-fin-sequence-type-Semiring n i = zero-Semiring R ``` -### Pointwise addition +### Pointwise addition of finite sequences in a semiring ```agda module _ @@ -88,7 +88,7 @@ module _ binary-map-fin-sequence n (add-Semiring R) ``` -## Properties +## Properties of pointwise addition ### Associativity of pointwise addition @@ -152,7 +152,7 @@ module _ eq-htpy (λ i → commutative-add-Semiring R (v i) (w i)) ``` -### Commutative monoid of pointwise addition +### The commutative monoid of pointwise addition ```agda module _ diff --git a/src/linear-algebra/tuples-on-commutative-rings.lagda.md b/src/linear-algebra/tuples-on-commutative-rings.lagda.md index f433f6f797..49f4f5848e 100644 --- a/src/linear-algebra/tuples-on-commutative-rings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-rings.lagda.md @@ -56,7 +56,7 @@ module _ snoc-tuple-Commutative-Ring = snoc-tuple-Ring (ring-Commutative-Ring R) ``` -### Zero tuple on a commutative ring +### The zero tuple in a commutative ring ```agda module _ @@ -67,7 +67,7 @@ module _ zero-tuple-Commutative-Ring = constant-tuple (zero-Commutative-Ring R) ``` -### Pointwise addition of tuples on a commutative ring +### Pointwise addition of tuples in a commutative ring ```agda module _ @@ -81,7 +81,7 @@ module _ add-tuple-Ring (ring-Commutative-Ring R) ``` -### Pointwise negation of tuples on a commutative ring +### Pointwise negation of tuples in a commutative ring ```agda module _ @@ -95,7 +95,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -110,7 +110,7 @@ module _ associative-add-tuple-Ring (ring-Commutative-Ring R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -130,7 +130,7 @@ module _ right-unit-law-add-tuple-Ring (ring-Commutative-Ring R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -144,7 +144,7 @@ module _ commutative-add-tuple-Ring (ring-Commutative-Ring R) ``` -### Inverse laws +### Inverse laws of pointwise addition ```agda module _ @@ -172,7 +172,7 @@ module _ right-inverse-law-add-tuple-Ring (ring-Commutative-Ring R) ``` -### The Abelian group of pointwise addition +### The abelian group of pointwise addition ```agda module _ diff --git a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md index 8ef87f92b8..7b67985880 100644 --- a/src/linear-algebra/tuples-on-commutative-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-commutative-semirings.lagda.md @@ -61,7 +61,7 @@ module _ snoc-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Zero tuple on a commutative semiring +### The zero tuple in a commutative semiring ```agda module _ @@ -88,7 +88,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -104,7 +104,7 @@ module _ associative-add-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -124,7 +124,7 @@ module _ right-unit-law-add-tuple-Semiring (semiring-Commutative-Semiring R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ diff --git a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md index c76dd404da..8b68b65aba 100644 --- a/src/linear-algebra/tuples-on-euclidean-domains.lagda.md +++ b/src/linear-algebra/tuples-on-euclidean-domains.lagda.md @@ -31,12 +31,12 @@ open import lists.tuples ## Idea -Given an [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the +Given a [Euclidean domain](commutative-algebra.euclidean-domains.md) `R`, the type `tuple n R` of `R`-[tuples](lists.tuples.md) is an `R`-module. ## Definitions -### Listed tuples on euclidean domains +### Listed tuples on Euclidean domains ```agda module _ @@ -60,7 +60,7 @@ module _ snoc-tuple-Euclidean-Domain v r = snoc-tuple v r ``` -### Zero tuple on a euclidean domain +### The zero tuple in a Euclidean domain ```agda module _ @@ -71,7 +71,7 @@ module _ zero-tuple-Euclidean-Domain = constant-tuple (zero-Euclidean-Domain R) ``` -### Pointwise addition of tuples on a euclidean domain +### Pointwise addition of tuples on a Euclidean domain ```agda module _ @@ -86,7 +86,7 @@ module _ add-tuple-Euclidean-Domain = binary-map-tuple (add-Euclidean-Domain R) ``` -### Pointwise negation of tuples on a euclidean domain +### Pointwise negation of tuples on a Euclidean domain ```agda module _ @@ -100,7 +100,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -117,7 +117,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -139,7 +139,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -154,7 +154,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### Inverse laws +### Inverse laws of pointwise addition ```agda module _ @@ -180,7 +180,7 @@ module _ ( commutative-ring-Euclidean-Domain R) ``` -### The Abelian group of pointwise addition +### The abelian group of pointwise addition ```agda module _ diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index 26cb430743..5be6a2ca3f 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -57,7 +57,7 @@ module _ snoc-tuple-Ring v r = snoc-tuple v r ``` -### Zero tuple on a ring +### The zero tuple in a ring ```agda module _ @@ -68,7 +68,7 @@ module _ zero-tuple-Ring = constant-tuple (zero-Ring R) ``` -### Pointwise addition of tuples on a ring +### Pointwise addition of tuples in a ring ```agda module _ @@ -79,7 +79,7 @@ module _ add-tuple-Ring = binary-map-tuple (add-Ring R) ``` -### Pointwise negation +### Pointwise negation of tuples in a ring ```agda module _ @@ -92,7 +92,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -107,7 +107,7 @@ module _ associative-add-tuple-Ring = associative-add-tuple-Semiring (semiring-Ring R) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -125,7 +125,7 @@ module _ right-unit-law-add-tuple-Semiring (semiring-Ring R) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -142,7 +142,7 @@ module _ ( commutative-add-tuple-Ring v w) ``` -### Inverse laws +### Inverse laws of pointwise addition ```agda module _ @@ -168,7 +168,7 @@ module _ ( right-inverse-law-add-tuple-Ring v) ``` -### Abelian group of addition of tuples +### The abelian group of pointwise addition ```agda module _ diff --git a/src/linear-algebra/tuples-on-semirings.lagda.md b/src/linear-algebra/tuples-on-semirings.lagda.md index e1a8e773e6..00a0c28037 100644 --- a/src/linear-algebra/tuples-on-semirings.lagda.md +++ b/src/linear-algebra/tuples-on-semirings.lagda.md @@ -56,7 +56,7 @@ module _ snoc-tuple-Semiring v r = snoc-tuple v r ``` -### Zero tuple on a ring +### The zero tuple in a semiring ```agda module _ @@ -67,7 +67,7 @@ module _ zero-tuple-Semiring = constant-tuple (zero-Semiring R) ``` -### Pointwise addition of tuples on a ring +### Pointwise addition of tuples in a semiring ```agda module _ @@ -81,7 +81,7 @@ module _ ## Properties of pointwise addition -### Associativity +### Associativity of pointwise addition ```agda module _ @@ -99,7 +99,7 @@ module _ ( associative-add-tuple-Semiring v1 v2 v3) ``` -### Unit laws +### Unit laws of pointwise addition ```agda module _ @@ -125,7 +125,7 @@ module _ ( right-unit-law-add-tuple-Semiring v) ``` -### Commutativity +### Commutativity of pointwise addition ```agda module _ @@ -142,7 +142,7 @@ module _ ( commutative-add-tuple-Semiring v w) ``` -### The commutative monoid of addition +### The commutative monoid of pointwise addition ```agda module _ diff --git a/src/ring-theory/binomial-theorem-rings.lagda.md b/src/ring-theory/binomial-theorem-rings.lagda.md index 527d6082a9..331a96f738 100644 --- a/src/ring-theory/binomial-theorem-rings.lagda.md +++ b/src/ring-theory/binomial-theorem-rings.lagda.md @@ -16,7 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-rings +open import linear-algebra.finite-sequences-in-rings open import ring-theory.binomial-theorem-semirings open import ring-theory.powers-of-elements-rings diff --git a/src/ring-theory/binomial-theorem-semirings.lagda.md b/src/ring-theory/binomial-theorem-semirings.lagda.md index 4d70400c96..f72b784d97 100644 --- a/src/ring-theory/binomial-theorem-semirings.lagda.md +++ b/src/ring-theory/binomial-theorem-semirings.lagda.md @@ -19,7 +19,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-semirings +open import linear-algebra.finite-sequences-in-semirings open import ring-theory.powers-of-elements-semirings open import ring-theory.semirings diff --git a/src/ring-theory/sums-rings.lagda.md b/src/ring-theory/sums-rings.lagda.md index 961716004b..88031447fc 100644 --- a/src/ring-theory/sums-rings.lagda.md +++ b/src/ring-theory/sums-rings.lagda.md @@ -15,7 +15,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import linear-algebra.finite-sequences-on-rings +open import linear-algebra.finite-sequences-in-rings open import lists.finite-sequences diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index 5966a05fc6..fc185bc384 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -19,7 +19,7 @@ open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import linear-algebra.finite-sequences-on-semirings +open import linear-algebra.finite-sequences-in-semirings open import lists.finite-sequences From 9227d31b53e3c81c2f27218a74a077264f2ab9db Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Tue, 13 May 2025 20:07:42 +0100 Subject: [PATCH 20/24] Update src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md --- .../finite-sequences-in-commutative-rings.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md b/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md index 82fdf3a687..eb6dd679df 100644 --- a/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md +++ b/src/linear-algebra/finite-sequences-in-commutative-rings.lagda.md @@ -29,7 +29,7 @@ open import linear-algebra.finite-sequences-in-rings Finite sequences in a [commutative ring](commutative-algebra.commutative-rings.md) `R` are -[finite sequences](lists.finite-sequences.md) on the underlying type of `R`. +[finite sequences](lists.finite-sequences.md) in the underlying type of `R`. ## Definitions From c386e10d923ed523224866ed0df8b096296e1525 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Tue, 13 May 2025 20:11:18 +0100 Subject: [PATCH 21/24] Update src/linear-algebra/tuples-on-rings.lagda.md --- src/linear-algebra/tuples-on-rings.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linear-algebra/tuples-on-rings.lagda.md b/src/linear-algebra/tuples-on-rings.lagda.md index 5be6a2ca3f..4ef5d507ba 100644 --- a/src/linear-algebra/tuples-on-rings.lagda.md +++ b/src/linear-algebra/tuples-on-rings.lagda.md @@ -35,7 +35,7 @@ open import ring-theory.rings Given a [ring](ring-theory.rings.md) `R`, the type `tuple n R` of `R`-[tuples](lists.tuples.md) is an -[Abelian group](group-theory.abelian-groups.md). +[abelian group](group-theory.abelian-groups.md). ## Definitions From 47399d198d7d85aec54da84b17d27879bf08aa30 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 13 May 2025 19:19:39 -0700 Subject: [PATCH 22/24] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- src/lists/equivalence-tuples-finite-sequences.lagda.md | 2 +- src/lists/finite-sequences.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lists/equivalence-tuples-finite-sequences.lagda.md b/src/lists/equivalence-tuples-finite-sequences.lagda.md index 0b95aa1900..a39b75c3d5 100644 --- a/src/lists/equivalence-tuples-finite-sequences.lagda.md +++ b/src/lists/equivalence-tuples-finite-sequences.lagda.md @@ -26,7 +26,7 @@ open import lists.tuples
-### The types of listed tuples and functional tuples are equivalent +### Tuples on a type are equivalent to finite sequences in it ```agda module _ diff --git a/src/lists/finite-sequences.lagda.md b/src/lists/finite-sequences.lagda.md index 7f8a59cbef..1f986a5490 100644 --- a/src/lists/finite-sequences.lagda.md +++ b/src/lists/finite-sequences.lagda.md @@ -112,7 +112,7 @@ pr1 (fin-sequence-Set A n) = fin-sequence (type-Set A) n pr2 (fin-sequence-Set A n) = is-set-fin-sequence n (is-set-type-Set A) ``` -### Adding the tail to the head gives the same functional tuple +### Adding the tail to the head gives the same finite sequence ```agda module _ From be791012923219571f70aa703231e02022c63619 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 13 May 2025 21:08:39 -0700 Subject: [PATCH 23/24] Respond to review comments --- src/lists/finite-sequences.lagda.md | 5 ++++- src/lists/permutation-tuples.lagda.md | 10 ++++++---- src/lists/tuples.lagda.md | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lists/finite-sequences.lagda.md b/src/lists/finite-sequences.lagda.md index 1f986a5490..1a7dd850a0 100644 --- a/src/lists/finite-sequences.lagda.md +++ b/src/lists/finite-sequences.lagda.md @@ -31,7 +31,10 @@ open import univalent-combinatorics.standard-finite-types A {{#concept "finite sequence" Agda=fin-sequence}} of length `n` is a map from the [standard finite type](univalent-combinatorics.standard-finite-types.md) of -cardinality `n`, `Fin n`, to `A`. +cardinality `n`, `Fin n`, to `A`. These are +[equivalent](lists.equivalence-tuples-finite-sequences.md) to the related +concept of [tuples](lists.tuples.md), but are structured like +[arrays](lists.arrays.md) instead of [lists](lists.lists.md). ## Definition diff --git a/src/lists/permutation-tuples.lagda.md b/src/lists/permutation-tuples.lagda.md index 072d74319d..d2a9333e37 100644 --- a/src/lists/permutation-tuples.lagda.md +++ b/src/lists/permutation-tuples.lagda.md @@ -41,10 +41,12 @@ open import univalent-combinatorics.standard-finite-types ## Idea -Given an functional tuple `t` of length `n` and a automorphism `σ` of `Fin n`, -the permutation of `t` according to `σ` is the functional tuple where the index -are permuted by `σ`. Then, we can define what is a permutation of a tuple of -length `n` via the equivalence between functional tuples and tuples. +Given a [finite sequence](lists.finite-sequences.md) `t` of length `n` and an +[automorphism](finite-group-theory.permutations-standard-finite-types.md) `σ` of +`Fin n`, the permutation of `t` according to `σ` is the finite sequence where +the indices are permuted by `σ`. Then, we can define what is a permutation of a +[tuple](lists.tuples.md) of length `n` via the +[equivalence between finite sequences and tuples](lists.equivalence-tuples-finite-sequences.md). ## Definitions diff --git a/src/lists/tuples.lagda.md b/src/lists/tuples.lagda.md index d6f709f062..5663fcc5b1 100644 --- a/src/lists/tuples.lagda.md +++ b/src/lists/tuples.lagda.md @@ -34,10 +34,10 @@ open import univalent-combinatorics.standard-finite-types ## Idea -There are two equivalent definitions of -{{#concept "tuples" WD="n-tuple" WDID=Q600590}} of length `n`. First, a -{{#concept "listed tuple" Agda=tuple}} of length `n` is a list of `n` elements -of type `A`. +We define {{#concept "tuples" WD="n-tuple" WDID=Q600590}} of length `n`. These +are [equivalent](lists.equivalence-tuples-finite-sequences.md) to the related +concept of [finite sequences](lists.finite-sequences.md), but are structured +like [lists](lists.lists.md) instead of [arrays](lists.arrays.md). ## Definitions From ec0503b7d153e6bee2246d1b8de8e9869d4c25f0 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Wed, 14 May 2025 10:23:26 +0100 Subject: [PATCH 24/24] Update src/lists/finite-sequences.lagda.md --- src/lists/finite-sequences.lagda.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lists/finite-sequences.lagda.md b/src/lists/finite-sequences.lagda.md index 1a7dd850a0..876b6e4d1f 100644 --- a/src/lists/finite-sequences.lagda.md +++ b/src/lists/finite-sequences.lagda.md @@ -141,3 +141,7 @@ module _ cons-head-tail-fin-sequence n v = eq-htpy (htpy-cons-head-tail-fin-sequence n v) ``` + +## See also + +- [Sequences](foundation.sequences.md)