HepLean Documentation

Mathlib.Algebra.Group.Fin.Tuple

Algebraic properties of tuples #

@[simp]
theorem Fin.insertNth_one_right {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → One (α j)] (i : Fin (n + 1)) (x : α i) :
i.insertNth x 1 = Pi.mulSingle i x
@[simp]
theorem Fin.insertNth_zero_right {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Zero (α j)] (i : Fin (n + 1)) (x : α i) :
i.insertNth x 0 = Pi.single i x
@[simp]
theorem Fin.insertNth_mul {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Mul (α j)] (i : Fin (n + 1)) (x y : α i) (p q : (j : Fin n) → α (i.succAbove j)) :
i.insertNth (x * y) (p * q) = i.insertNth x p * i.insertNth y q
@[simp]
theorem Fin.insertNth_add {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Add (α j)] (i : Fin (n + 1)) (x y : α i) (p q : (j : Fin n) → α (i.succAbove j)) :
i.insertNth (x + y) (p + q) = i.insertNth x p + i.insertNth y q
@[simp]
theorem Fin.insertNth_div {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Div (α j)] (i : Fin (n + 1)) (x y : α i) (p q : (j : Fin n) → α (i.succAbove j)) :
i.insertNth (x / y) (p / q) = i.insertNth x p / i.insertNth y q
@[simp]
theorem Fin.insertNth_sub {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Sub (α j)] (i : Fin (n + 1)) (x y : α i) (p q : (j : Fin n) → α (i.succAbove j)) :
i.insertNth (x - y) (p - q) = i.insertNth x p - i.insertNth y q
@[simp]
theorem Fin.insertNth_div_same {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → Group (α j)] (i : Fin (n + 1)) (x y : α i) (p : (j : Fin n) → α (i.succAbove j)) :
i.insertNth x p / i.insertNth y p = Pi.mulSingle i (x / y)
@[simp]
theorem Fin.insertNth_sub_same {n : } {α : Fin (n + 1)Type u_1} [(j : Fin (n + 1)) → AddGroup (α j)] (i : Fin (n + 1)) (x y : α i) (p : (j : Fin n) → α (i.succAbove j)) :
i.insertNth x p - i.insertNth y p = Pi.single i (x - y)
@[simp]
theorem Matrix.smul_empty {α : Type u_1} {M : Type u_2} [SMul M α] (x : M) (v : Fin 0α) :
x v = ![]
@[simp]
theorem Matrix.smul_cons {α : Type u_1} {M : Type u_2} {n : } [SMul M α] (x : M) (y : α) (v : Fin nα) :
@[simp]
theorem Matrix.empty_add_empty {α : Type u_1} [Add α] (v w : Fin 0α) :
v + w = ![]
@[simp]
theorem Matrix.cons_add {α : Type u_1} {n : } [Add α] (x : α) (v : Fin nα) (w : Fin n.succα) :
@[simp]
theorem Matrix.add_cons {α : Type u_1} {n : } [Add α] (v : Fin n.succα) (y : α) (w : Fin nα) :
theorem Matrix.cons_add_cons {α : Type u_1} {n : } [Add α] (x : α) (v : Fin nα) (y : α) (w : Fin nα) :
@[simp]
theorem Matrix.head_add {α : Type u_1} {n : } [Add α] (a b : Fin n.succα) :
@[simp]
theorem Matrix.tail_add {α : Type u_1} {n : } [Add α] (a b : Fin n.succα) :
@[simp]
theorem Matrix.empty_sub_empty {α : Type u_1} [Sub α] (v w : Fin 0α) :
v - w = ![]
@[simp]
theorem Matrix.cons_sub {α : Type u_1} {n : } [Sub α] (x : α) (v : Fin nα) (w : Fin n.succα) :
@[simp]
theorem Matrix.sub_cons {α : Type u_1} {n : } [Sub α] (v : Fin n.succα) (y : α) (w : Fin nα) :
theorem Matrix.cons_sub_cons {α : Type u_1} {n : } [Sub α] (x : α) (v : Fin nα) (y : α) (w : Fin nα) :
@[simp]
theorem Matrix.head_sub {α : Type u_1} {n : } [Sub α] (a b : Fin n.succα) :
@[simp]
theorem Matrix.tail_sub {α : Type u_1} {n : } [Sub α] (a b : Fin n.succα) :
@[simp]
theorem Matrix.zero_empty {α : Type u_1} [Zero α] :
0 = ![]
@[simp]
theorem Matrix.cons_zero_zero {α : Type u_1} {n : } [Zero α] :
@[simp]
theorem Matrix.head_zero {α : Type u_1} {n : } [Zero α] :
@[simp]
theorem Matrix.tail_zero {α : Type u_1} {n : } [Zero α] :
@[simp]
theorem Matrix.cons_eq_zero_iff {α : Type u_1} {n : } [Zero α] {v : Fin nα} {x : α} :
Matrix.vecCons x v = 0 x = 0 v = 0
theorem Matrix.cons_nonzero_iff {α : Type u_1} {n : } [Zero α] {v : Fin nα} {x : α} :
@[simp]
theorem Matrix.neg_empty {α : Type u_1} [Neg α] (v : Fin 0α) :
-v = ![]
@[simp]
theorem Matrix.neg_cons {α : Type u_1} {n : } [Neg α] (x : α) (v : Fin nα) :
@[simp]
theorem Matrix.head_neg {α : Type u_1} {n : } [Neg α] (a : Fin n.succα) :
@[simp]
theorem Matrix.tail_neg {α : Type u_1} {n : } [Neg α] (a : Fin n.succα) :