Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit bce1cb3

Browse files
committed
feat(linear_algebra/matrix): lemmas for reindex({_linear,_alg}_equiv)? (#6153)
This PR contains a couple of `simp` lemmas for `reindex` and its bundled equivs. Namely, it adds `reindex_refl` (reindexing along the identity map is the identity), and `reindex_apply` (the same as `coe_reindex`, but no `λ i j` on the RHS, which makes it more useful for `rw`'ing.) The previous `reindex_apply` is renamed `coe_reindex` for disambiguation.
1 parent eca4f38 commit bce1cb3

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

src/linear_algebra/matrix.lean

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,10 @@ rfl
688688
(reindex eₘ eₙ).symm M = λ i j, M (eₘ i) (eₙ j) :=
689689
rfl
690690

691+
@[simp] lemma reindex_refl_refl (A : matrix m n R) :
692+
(reindex (equiv.refl _) (equiv.refl _) A) = A :=
693+
by { ext, simp only [reindex_apply, equiv.refl_symm, equiv.refl_apply] }
694+
691695
/-- The natural map that reindexes a matrix's rows and columns with equivalent types is a linear
692696
equivalence. -/
693697
def reindex_linear_equiv [semiring R] (eₘ : m ≃ m') (eₙ : n ≃ n') :
@@ -696,16 +700,30 @@ def reindex_linear_equiv [semiring R] (eₘ : m ≃ m') (eₙ : n ≃ n') :
696700
map_smul' := λ M N, rfl,
697701
..(reindex eₘ eₙ)}
698702

699-
@[simp] lemma reindex_linear_equiv_apply [semiring R]
703+
@[simp] lemma coe_reindex_linear_equiv [semiring R]
700704
(eₘ : m ≃ m') (eₙ : n ≃ n') (M : matrix m n R) :
701705
reindex_linear_equiv eₘ eₙ M = λ i j, M (eₘ.symm i) (eₙ.symm j) :=
702706
rfl
703707

704-
@[simp] lemma reindex_linear_equiv_symm_apply [semiring R]
708+
lemma reindex_linear_equiv_apply [semiring R]
709+
(eₘ : m ≃ m') (eₙ : n ≃ n') (M : matrix m n R) (i j) :
710+
reindex_linear_equiv eₘ eₙ M i j = M (eₘ.symm i) (eₙ.symm j) :=
711+
rfl
712+
713+
@[simp] lemma coe_reindex_linear_equiv_symm [semiring R]
705714
(eₘ : m ≃ m') (eₙ : n ≃ n') (M : matrix m' n' R) :
706715
(reindex_linear_equiv eₘ eₙ).symm M = λ i j, M (eₘ i) (eₙ j) :=
707716
rfl
708717

718+
lemma reindex_linear_equiv_symm_apply [semiring R]
719+
(eₘ : m ≃ m') (eₙ : n ≃ n') (M : matrix m' n' R) (i j) :
720+
(reindex_linear_equiv eₘ eₙ).symm M i j = M (eₘ i) (eₙ j) :=
721+
rfl
722+
723+
@[simp] lemma reindex_linear_equiv_refl_refl [semiring R] (A : matrix m n R) :
724+
(reindex_linear_equiv (equiv.refl _) (equiv.refl _) A) = A :=
725+
reindex_refl_refl A
726+
709727
lemma reindex_mul [semiring R]
710728
(eₘ : m ≃ m') (eₙ : n ≃ n') (eₗ : l ≃ l') (M : matrix m n R) (N : matrix n l R) :
711729
(reindex_linear_equiv eₘ eₙ M) ⬝ (reindex_linear_equiv eₙ eₗ N) = reindex_linear_equiv eₘ eₗ (M ⬝ N) :=
@@ -724,16 +742,30 @@ def reindex_alg_equiv [comm_semiring R] [decidable_eq m] [decidable_eq n]
724742
commutes' := λ r, by { ext, simp [algebra_map, algebra.to_ring_hom], by_cases h : i = j; simp [h], },
725743
..(reindex_linear_equiv e e) }
726744

727-
@[simp] lemma reindex_alg_equiv_apply [comm_semiring R] [decidable_eq m] [decidable_eq n]
745+
@[simp] lemma coe_reindex_alg_equiv [comm_semiring R] [decidable_eq m] [decidable_eq n]
728746
(e : m ≃ n) (M : matrix m m R) :
729747
reindex_alg_equiv e M = λ i j, M (e.symm i) (e.symm j) :=
730748
rfl
731749

732-
@[simp] lemma reindex_alg_equiv_symm_apply [comm_semiring R] [decidable_eq m] [decidable_eq n]
750+
@[simp] lemma reindex_alg_equiv_apply [comm_semiring R] [decidable_eq m] [decidable_eq n]
751+
(e : m ≃ n) (M : matrix m m R) (i j) :
752+
reindex_alg_equiv e M i j = M (e.symm i) (e.symm j) :=
753+
rfl
754+
755+
@[simp] lemma coe_reindex_alg_equiv_symm [comm_semiring R] [decidable_eq m] [decidable_eq n]
733756
(e : m ≃ n) (M : matrix n n R) :
734757
(reindex_alg_equiv e).symm M = λ i j, M (e i) (e j) :=
735758
rfl
736759

760+
@[simp] lemma reindex_alg_equiv_symm_apply [comm_semiring R] [decidable_eq m] [decidable_eq n]
761+
(e : m ≃ n) (M : matrix n n R) (i j):
762+
(reindex_alg_equiv e).symm M i j = M (e i) (e j) :=
763+
rfl
764+
765+
@[simp] lemma reindex_alg_equiv_refl [comm_semiring R] [decidable_eq m]
766+
(A : matrix m m R) : (reindex_alg_equiv (equiv.refl m) A) = A :=
767+
reindex_linear_equiv_refl_refl A
768+
737769
lemma reindex_transpose (eₘ : m ≃ m') (eₙ : n ≃ n') (M : matrix m n R) :
738770
(reindex eₘ eₙ M)ᵀ = (reindex eₙ eₘ Mᵀ) :=
739771
rfl

0 commit comments

Comments
 (0)