@[implicit_reducible]
@[csimp]
dcons is equal to cons. Marked as csimp to allow for switching to the cons
implementation during execution.
theorem
Fin.vcons_left_injective
{n : ℕ}
{α : Sort u}
(v : Fin n → α)
:
Function.Injective fun (a : α) => a ::ᵛ v
@[csimp]
dconcat is equal to snoc. Marked as csimp to allow for switching to the snoc
implementation during execution.
theorem
Fin.vconcat_left_injective
{α : Sort u}
{n : ℕ}
(a : α)
:
Function.Injective fun (v : Fin n → α) => v :+ᵛ a
@[csimp]
dappend is equal to addCases. Marked as csimp to allow for switching to the addCases
implementation during execution.
@[csimp]
vappend is equal to append. Marked as csimp to allow for switching to the append
implementation during execution.
Lemmas for functorial vectors (binary first, then unary) #
theorem
Fin.fcons_right_injective
{A : Sort u}
{F : A → Sort v}
{n : ℕ}
{α : A}
{β : Fin n → A}
(a : F α)
:
theorem
Fin.fcons_left_injective
{A : Sort u}
{F : A → Sort v}
{n : ℕ}
{α : A}
{β : Fin n → A}
(b : (i : Fin n) → F (β i))
:
Function.Injective fun (a : F α) => fcons a b
theorem
Fin.fconcat_left_injective
{A : Sort u}
{F : A → Sort v}
{n : ℕ}
{α : Fin n → A}
{β : A}
(a : F β)
:
Function.Injective fun (v : (i : Fin n) → F (α i)) => fconcat v a
Functorial append (unary F) lemmas
Lemmas for heterogeneous vectors #
theorem
Fin.hcons_left_injective
{n : ℕ}
{α : Sort u}
{β : Fin n → Sort u}
(b : (i : Fin n) → β i)
:
Function.Injective fun (a : α) => a ::ʰ b
theorem
Fin.hconcat_left_injective
{n : ℕ}
{α : Fin n → Sort u}
{β : Sort u}
(a : β)
:
Function.Injective fun (v : (i : Fin n) → α i) => v :+ʰ a