@@ -200,6 +200,32 @@ theorem toGL_mul (A B : unitaryGroup n α) : toGL (A * B) = toGL A * toGL B := U
200200def embeddingGL : unitaryGroup n α →* GeneralLinearGroup α (n → α) :=
201201 ⟨⟨fun A => toGL A, toGL_one⟩, toGL_mul⟩
202202
203+ theorem _root_.Matrix.transpose_mem_unitaryGroup_iff {U : Matrix n n α} :
204+ Uᵀ ∈ unitaryGroup n α ↔ U ∈ unitaryGroup n α := by
205+ conv_rhs => rw [mem_unitaryGroup_iff']
206+ rw [mem_unitaryGroup_iff, show star Uᵀ = (star U)ᵀ by rfl, ← transpose_mul, ← transpose_inj]
207+ simp
208+
209+ theorem _root_.Matrix.map_star_mem_unitaryGroup_iff {U : Matrix n n α} :
210+ U.map star ∈ unitaryGroup n α ↔ U ∈ unitaryGroup n α := by
211+ simp [← conjTranspose_transpose, transpose_mem_unitaryGroup_iff, ← star_eq_conjTranspose]
212+
213+ /-- The transpose of a unitary matrix as a unitary matrix. -/
214+ @[simps] def transpose (U : unitaryGroup n α) : unitaryGroup n α :=
215+ ⟨Uᵀ, transpose_mem_unitaryGroup_iff.mpr (SetLike.coe_mem _)⟩
216+
217+ /-- The `Matrix.map star` of a unitary matrix (i.e., taking the `star` of
218+ each element in the matrix) as a unitary matrix. -/
219+ @[simps] def map_star (U : unitaryGroup n α) : unitaryGroup n α :=
220+ ⟨(U : Matrix n n α).map star, map_star_mem_unitaryGroup_iff.mpr (SetLike.coe_mem _)⟩
221+
222+ theorem map_star_inv_eq_transpose (U : unitaryGroup n α) :
223+ (map_star U)⁻¹ = UnitaryGroup.transpose U := by ext; simp
224+
225+ theorem transpose_inv_eq_map_star (U : unitaryGroup n α) :
226+ (UnitaryGroup.transpose U)⁻¹ = map_star U := by
227+ simp [← map_star_inv_eq_transpose]
228+
203229end UnitaryGroup
204230
205231section specialUnitaryGroup
0 commit comments