This pull request adds a set of combinators for equational reasoning about vector equality of the form cast eq xs ≡ ys
and a few properties demonstrating its application. In particular, the new combinators deal with the threading of index equality proofs, greatly reducing the boilerplate that manipulates cast
s to make writing equational proofs about vectors more or less feasible.
(Sorry for the piles of PR and the mess of the commit history. I promise this is the last one I have in hand. The first commit is the content of #2041 and #2045. After these two PRs get in, I'll rebase to remove the first commit. To see the code of this PR, please check https://github.com/agda/agda-stdlib/commit/f8971193dce2620cdabf4c7f1d8319c2aa8fb0ed.)
Index arithmetic is notably troublesome when it comes to proving vector properties (#942). Existing solutions include stating and proving cast
-equality by induction, proving [pointwise equality](https://github.com/agda/agda-stdlib/blob/104125c62d88ebe91274ebd