@@ -1369,6 +1369,8 @@ by ext i j; refl
13691369lemma transpose_map {f : α → β} {M : matrix m n α} : Mᵀ.map f = (M.map f)ᵀ :=
13701370by { ext, refl }
13711371
1372+ variables (m n α)
1373+
13721374/-- `matrix.transpose` as an `add_equiv` -/
13731375@[simps apply]
13741376def transpose_add_equiv [has_add α] : matrix m n α ≃+ matrix n m α :=
@@ -1379,19 +1381,33 @@ def transpose_add_equiv [has_add α] : matrix m n α ≃+ matrix n m α :=
13791381 map_add' := transpose_add }
13801382
13811383@[simp] lemma transpose_add_equiv_symm [has_add α] :
1382- (transpose_add_equiv : matrix m n α ≃+ matrix n m α).symm = transpose_add_equiv := rfl
1384+ (transpose_add_equiv m n α).symm = transpose_add_equiv n m α := rfl
1385+
1386+ variables {m n α}
13831387
13841388lemma transpose_list_sum [add_monoid α] (l : list (matrix m n α)) :
13851389 l.sumᵀ = (l.map transpose).sum :=
1386- (transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_list_sum l
1390+ (transpose_add_equiv m n α).to_add_monoid_hom.map_list_sum l
13871391
13881392lemma transpose_multiset_sum [add_comm_monoid α] (s : multiset (matrix m n α)) :
13891393 s.sumᵀ = (s.map transpose).sum :=
1390- (transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_multiset_sum s
1394+ (transpose_add_equiv m n α).to_add_monoid_hom.map_multiset_sum s
13911395
13921396lemma transpose_sum [add_comm_monoid α] {ι : Type *} (s : finset ι) (M : ι → matrix m n α) :
13931397 (∑ i in s, M i)ᵀ = ∑ i in s, (M i)ᵀ :=
1394- (transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_sum _ s
1398+ (transpose_add_equiv m n α).to_add_monoid_hom.map_sum _ s
1399+
1400+ variables (m n R α)
1401+
1402+ /-- `matrix.transpose` as a `linear_map` -/
1403+ @[simps apply]
1404+ def transpose_linear_equiv [semiring R] [add_comm_monoid α] [module R α] :
1405+ matrix m n α ≃ₗ[R] matrix n m α := { map_smul' := transpose_smul, ..transpose_add_equiv m n α}
1406+
1407+ @[simp] lemma transpose_linear_equiv_symm [semiring R] [add_comm_monoid α] [module R α] :
1408+ (transpose_linear_equiv m n R α).symm = transpose_linear_equiv n m R α := rfl
1409+
1410+ variables {m n R α}
13951411
13961412variables (m α)
13971413
@@ -1403,7 +1419,7 @@ def transpose_ring_equiv [add_comm_monoid α] [comm_semigroup α] [fintype m] :
14031419 inv_fun := λ M, M.unopᵀ,
14041420 map_mul' := λ M N, (congr_arg mul_opposite.op (transpose_mul M N)).trans
14051421 (mul_opposite.op_mul _ _),
1406- ..transpose_add_equiv.trans mul_opposite.op_add_equiv }
1422+ ..( transpose_add_equiv m m α) .trans mul_opposite.op_add_equiv }
14071423
14081424variables {m α}
14091425
@@ -1415,6 +1431,20 @@ lemma transpose_list_prod [comm_semiring α] [fintype m] [decidable_eq m] (l : l
14151431 l.prodᵀ = (l.map transpose).reverse.prod :=
14161432(transpose_ring_equiv m α).unop_map_list_prod l
14171433
1434+ variables (R m α)
1435+
1436+ /-- `matrix.transpose` as an `alg_equiv` to the opposite ring -/
1437+ @[simps]
1438+ def transpose_alg_equiv [comm_semiring R] [comm_semiring α] [fintype m] [decidable_eq m]
1439+ [algebra R α] : matrix m m α ≃ₐ[R] (matrix m m α)ᵐᵒᵖ :=
1440+ { to_fun := λ M, mul_opposite.op (Mᵀ),
1441+ commutes' := λ r, by simp only [algebra_map_eq_diagonal, diagonal_transpose,
1442+ mul_opposite.algebra_map_apply],
1443+ ..(transpose_add_equiv m m α).trans mul_opposite.op_add_equiv,
1444+ ..transpose_ring_equiv m α }
1445+
1446+ variables {R m α}
1447+
14181448end transpose
14191449
14201450section conj_transpose
@@ -1520,6 +1550,8 @@ lemma conj_transpose_map [has_star α] [has_star β] {A : matrix m n α} (f : α
15201550 Aᴴ.map f = (A.map f)ᴴ :=
15211551matrix.ext $ λ i j, hf _
15221552
1553+ variables (m n α)
1554+
15231555/-- `matrix.conj_transpose` as an `add_equiv` -/
15241556@[simps apply]
15251557def conj_transpose_add_equiv [add_monoid α] [star_add_monoid α] : matrix m n α ≃+ matrix n m α :=
@@ -1530,21 +1562,37 @@ def conj_transpose_add_equiv [add_monoid α] [star_add_monoid α] : matrix m n
15301562 map_add' := conj_transpose_add }
15311563
15321564@[simp] lemma conj_transpose_add_equiv_symm [add_monoid α] [star_add_monoid α] :
1533- (conj_transpose_add_equiv : matrix m n α ≃+ matrix n m α).symm = conj_transpose_add_equiv := rfl
1565+ (conj_transpose_add_equiv m n α).symm = conj_transpose_add_equiv n m α := rfl
1566+
1567+ variables {m n α}
15341568
15351569lemma conj_transpose_list_sum [add_monoid α] [star_add_monoid α] (l : list (matrix m n α)) :
15361570 l.sumᴴ = (l.map conj_transpose).sum :=
1537- (conj_transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_list_sum l
1571+ (conj_transpose_add_equiv m n α).to_add_monoid_hom.map_list_sum l
15381572
15391573lemma conj_transpose_multiset_sum [add_comm_monoid α] [star_add_monoid α]
15401574 (s : multiset (matrix m n α)) :
15411575 s.sumᴴ = (s.map conj_transpose).sum :=
1542- (conj_transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_multiset_sum s
1576+ (conj_transpose_add_equiv m n α).to_add_monoid_hom.map_multiset_sum s
15431577
15441578lemma conj_transpose_sum [add_comm_monoid α] [star_add_monoid α] {ι : Type *} (s : finset ι)
15451579 (M : ι → matrix m n α) :
15461580 (∑ i in s, M i)ᴴ = ∑ i in s, (M i)ᴴ :=
1547- (conj_transpose_add_equiv : matrix m n α ≃+ matrix n m α).to_add_monoid_hom.map_sum _ s
1581+ (conj_transpose_add_equiv m n α).to_add_monoid_hom.map_sum _ s
1582+
1583+ variables (m n R α)
1584+
1585+ /-- `matrix.conj_transpose` as a `linear_map` -/
1586+ @[simps apply]
1587+ def conj_transpose_linear_equiv [comm_semiring R] [star_ring R] [add_comm_monoid α]
1588+ [star_add_monoid α] [module R α] [star_module R α] : matrix m n α ≃ₗ⋆[R] matrix n m α :=
1589+ { map_smul' := conj_transpose_smul, ..conj_transpose_add_equiv m n α}
1590+
1591+ @[simp] lemma conj_transpose_linear_equiv_symm [comm_semiring R] [star_ring R] [add_comm_monoid α]
1592+ [star_add_monoid α] [module R α] [star_module R α] :
1593+ (conj_transpose_linear_equiv m n R α).symm = conj_transpose_linear_equiv n m R α := rfl
1594+
1595+ variables {m n R α}
15481596
15491597variables (m α)
15501598
@@ -1556,7 +1604,7 @@ def conj_transpose_ring_equiv [semiring α] [star_ring α] [fintype m] :
15561604 inv_fun := λ M, M.unopᴴ,
15571605 map_mul' := λ M N, (congr_arg mul_opposite.op (conj_transpose_mul M N)).trans
15581606 (mul_opposite.op_mul _ _),
1559- ..conj_transpose_add_equiv.trans mul_opposite.op_add_equiv }
1607+ ..( conj_transpose_add_equiv m m α) .trans mul_opposite.op_add_equiv }
15601608
15611609variables {m α}
15621610
0 commit comments