Lemmas for tuples Fin m → α
#
This file contains alternative definitions of common operators on vectors which expand
definitionally to the expected expression when evaluated on ![]
notation.
This allows "proof by reflection", where we prove f = ![f 0, f 1]
by defining
FinVec.etaExpand f
to be equal to the RHS definitionally, and then prove that
f = etaExpand f
.
The definitions in this file should normally not be used directly; the intent is for the
corresponding *_eq
lemmas to be used in a place where they are definitionally unfolded.
Main definitions #
Evaluate FinVec.seq f v = ![(f 0) (v 0), (f 1) (v 1), ...]
Equations
- FinVec.seq x_3 x_4 = ![]
- FinVec.seq f v = Matrix.vecCons (f 0 (v 0)) (FinVec.seq (Matrix.vecTail f) (Matrix.vecTail v))
Instances For
FinVec.map f v = ![f (v 0), f (v 1), ...]
Equations
- FinVec.map f = FinVec.seq fun (x : Fin m) => f
Instances For
Expand v
to ![v 0, v 1, ...]
Equations
Instances For
∀
with better defeq for ∀ x : Fin m → α, P x
.
Equations
- FinVec.Forall P = P ![]
- FinVec.Forall P = ∀ (x : α), FinVec.Forall fun (v : Fin n → α) => P (Matrix.vecCons x v)
Instances For
∃
with better defeq for ∃ x : Fin m → α, P x
.
Equations
- FinVec.Exists P = P ![]
- FinVec.Exists P = ∃ (x : α), FinVec.Exists fun (v : Fin n → α) => P (Matrix.vecCons x v)
Instances For
Finset.univ.sum
with better defeq for Fin
.
Equations
- FinVec.sum x_2 = 0
- FinVec.sum v = v 0
- FinVec.sum v = (FinVec.sum fun (i : Fin (n + 1)) => v i.castSucc) + v (Fin.last (n + 1))