Reference · Finite types, distributions and Markov chains
rainbow.math.finite.vector
Finite vectors over signed rationals: lists of signed-rational components with elementwise addition, negation, subtraction, and scalar scaling. This is the first genuinely n-dimensional state in the corpus, the foundation for multi-dimensional optimization and filtering. Scaling and negation reuse the list map; elementwise addition is a zip of the two component lists via the list recursor.
vector/scale
vector/scale : (x₁ : ℚ≥0) (x₂ : List ℚ) → List ℚ
List = data/Listℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational
vector/negate
vector/negate : (x₁ : List ℚ) → List ℚ
List = data/Listℚ = signed/SignedRational
vector/add
vector/add : (x₁ x₂ : List ℚ) → List ℚ
List = data/Listℚ = signed/SignedRational
vector/subtract
vector/subtract : (x₁ x₂ : List ℚ) → List ℚ
List = data/Listℚ = signed/SignedRational
vector/add-nil
vector/add-nil : (right : List ℚ) → vector/add [] right = []
= = equality/EqList = data/Listℚ = signed/SignedRational
vector/subtract-unfold
vector/subtract-unfold : (left right : List ℚ) → vector/subtract left right = vector/add left (vector/negate right)
= = equality/EqList = data/Listℚ = signed/SignedRational
vector/add-example
vector/add-example : → vector/add [signed/from-nnrat 1, signed/from-nnrat 2] [signed/from-nnrat 3, signed/from-nnrat 4] = [signed/from-nnrat 4, signed/from-nnrat 6]
= = equality/Eq
vector/scale-example
vector/scale-example : → vector/scale 2 [signed/from-nnrat 1, signed/from-nnrat 2] = [signed/from-nnrat 2, signed/from-nnrat 4]
= = equality/Eq
vector/add-example-3d
vector/add-example-3d : → vector/add [signed/from-nnrat 1, signed/from-nnrat 2, signed/from-nnrat 3] [signed/from-nnrat 3, signed/from-nnrat 4, signed/from-nnrat 5] = [signed/from-nnrat 4, signed/from-nnrat 6, signed/from-nnrat 8]
= = equality/Eq