Module docstring
{"# Matrix and vector notation
This file defines notation for vectors and matrices. Given a b c d : α,
the notation allows us to write ![a, b, c, d] : Fin 4 → α.
Nesting vectors gives coefficients of a matrix, so ![![a, b], ![c, d]] : Fin 2 → Fin 2 → α.
In later files we introduce !![a, b; c, d] as notation for Matrix.of ![![a, b], ![c, d]].
Main definitions
vecEmptyis the empty vector (or0bynmatrix)![]vecConsprepends an entry to a vector, so![a, b]isvecCons a (vecCons b vecEmpty)
Implementation notes
The simp lemmas require that one of the arguments is of the form vecCons _ _.
This ensures simp works with entries only when (some) entries are already given.
In other words, this notation will only appear in the output of simp if it
already appears in the input.
Notations
The main new notation is ![a, b], which gets expanded to vecCons a (vecCons b vecEmpty).
Examples
Examples of usage can be found in the MathlibTest/matrix.lean file.
","### bit0 and bit1 indices
The following definitions and simp lemmas are used to allow
numeral-indexed element of a vector given with matrix notation to
be extracted by simp in Lean 3 (even when the numeral is larger than the
number of elements in the vector, which is taken modulo that number
of elements by virtue of the semantics of bit0 and bit1 and of
addition on Fin n).
"}