Documentation

Mathlib.LinearAlgebra.UnitaryGroup

The Unitary Group #

This file defines elements of the unitary group Matrix.unitaryGroup n α, where α is a StarRing. This consists of all n by n matrices with entries in α such that the star-transpose is its inverse. In addition, we define the group structure on Matrix.unitaryGroup n α, and the embedding into the general linear group LinearMap.GeneralLinearGroup α (n → α).

We also define the orthogonal group Matrix.orthogonalGroup n R, where R is a CommRing.

Main Definitions #

References #

Tags #

matrix group, group, unitary group, orthogonal group

@[reducible, inline]
abbrev Matrix.unitaryGroup (n : Type u) [DecidableEq n] [Fintype n] (α : Type v) [CommRing α] [StarRing α] :
Submonoid (Matrix n n α)

Matrix.unitaryGroup n is the group of n by n matrices where the star-transpose is the inverse.

Equations
    Instances For
      theorem Matrix.mem_unitaryGroup_iff {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] {A : Matrix n n α} :
      A unitaryGroup n α A * star A = 1
      theorem Matrix.mem_unitaryGroup_iff' {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] {A : Matrix n n α} :
      A unitaryGroup n α star A * A = 1
      theorem Matrix.det_of_mem_unitary {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] {A : Matrix n n α} (hA : A unitaryGroup n α) :
      instance Matrix.UnitaryGroup.coeMatrix {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] :
      Coe (↥(unitaryGroup n α)) (Matrix n n α)
      Equations
        instance Matrix.UnitaryGroup.coeFun {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] :
        CoeFun (unitaryGroup n α) fun (x : (unitaryGroup n α)) => nnα
        Equations
          def Matrix.UnitaryGroup.toLin' {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
          (nα) →ₗ[α] nα

          Matrix.UnitaryGroup.toLin' A is matrix multiplication of vectors by A, as a linear map.

          After the group structure on Matrix.unitaryGroup n is defined, we show in Matrix.UnitaryGroup.toLinearEquiv that this gives a linear equivalence.

          Equations
            Instances For
              theorem Matrix.UnitaryGroup.ext_iff {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
              A = B ∀ (i j : n), A i j = B i j
              theorem Matrix.UnitaryGroup.ext {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
              (∀ (i j : n), A i j = B i j)A = B
              theorem Matrix.UnitaryGroup.star_mul_self {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
              star A * A = 1
              @[simp]
              theorem Matrix.UnitaryGroup.det_isUnit {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
              IsUnit (↑A).det
              @[simp]
              theorem Matrix.UnitaryGroup.inv_val {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
              A⁻¹ = star A
              @[simp]
              theorem Matrix.UnitaryGroup.inv_apply {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
              A⁻¹ = star A
              @[simp]
              theorem Matrix.UnitaryGroup.mul_val {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
              ↑(A * B) = A * B
              @[simp]
              theorem Matrix.UnitaryGroup.mul_apply {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
              ↑(A * B) = A * B
              @[simp]
              theorem Matrix.UnitaryGroup.one_val {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] :
              1 = 1
              @[simp]
              theorem Matrix.UnitaryGroup.one_apply {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] :
              1 = 1
              @[simp]
              theorem Matrix.UnitaryGroup.toLin'_mul {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
              def Matrix.UnitaryGroup.toLinearEquiv {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
              (nα) ≃ₗ[α] nα

              Matrix.unitaryGroup.toLinearEquiv A is matrix multiplication of vectors by A, as a linear equivalence.

              Equations
                Instances For
                  def Matrix.UnitaryGroup.toGL {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :

                  Matrix.unitaryGroup.toGL is the map from the unitary group to the general linear group

                  Equations
                    Instances For
                      theorem Matrix.UnitaryGroup.coe_toGL {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (unitaryGroup n α)) :
                      (toGL A) = toLin' A
                      @[simp]
                      theorem Matrix.UnitaryGroup.toGL_one {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] :
                      toGL 1 = 1
                      @[simp]
                      theorem Matrix.UnitaryGroup.toGL_mul {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A B : (unitaryGroup n α)) :
                      toGL (A * B) = toGL A * toGL B

                      Matrix.unitaryGroup.embeddingGL is the embedding from Matrix.unitaryGroup n α to LinearMap.GeneralLinearGroup n α.

                      Equations
                        Instances For
                          def Matrix.specialUnitaryGroup (n : Type u) [DecidableEq n] [Fintype n] (α : Type v) [CommRing α] [StarRing α] :
                          Submonoid (Matrix n n α)

                          Matrix.specialUnitaryGroup is the group of unitary n by n matrices where the determinant is 1. (This definition is only correct if 2 is invertible.)

                          Equations
                            Instances For
                              theorem Matrix.mem_specialUnitaryGroup_iff {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] {A : Matrix n n α} :
                              @[simp]
                              theorem Matrix.specialUnitaryGroup.coe_star {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (specialUnitaryGroup n α)) :
                              (star A) = star A
                              theorem Matrix.star_eq_inv {n : Type u} [DecidableEq n] [Fintype n] {α : Type v} [CommRing α] [StarRing α] (A : (specialUnitaryGroup n α)) :
                              @[reducible, inline]
                              abbrev Matrix.orthogonalGroup (n : Type u) [DecidableEq n] [Fintype n] (R : Type v) [CommRing R] :

                              Matrix.orthogonalGroup n is the group of n by n matrices where the transpose is the inverse.

                              Equations
                                Instances For
                                  theorem Matrix.mem_orthogonalGroup_iff (n : Type u) [DecidableEq n] [Fintype n] (R : Type v) [CommRing R] {A : Matrix n n R} :
                                  theorem Matrix.mem_orthogonalGroup_iff' (n : Type u) [DecidableEq n] [Fintype n] (R : Type v) [CommRing R] {A : Matrix n n R} :
                                  @[reducible, inline]

                                  Matrix.specialOrthogonalGroup n is the group of orthogonal n by n where the determinant is one. (This definition is only correct if 2 is invertible.)

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem Matrix.of_mem_specialOrthogonalGroup_fin_two_iff {R : Type v} [CommRing R] {a b c d : R} :
                                      !![a, b; c, d] specialOrthogonalGroup (Fin 2) R a = d b = -c a ^ 2 + b ^ 2 = 1
                                      theorem Matrix.mem_specialOrthogonalGroup_fin_two_iff {R : Type v} [CommRing R] {M : Matrix (Fin 2) (Fin 2) R} :
                                      M specialOrthogonalGroup (Fin 2) R M 0 0 = M 1 1 M 0 1 = -M 1 0 M 0 0 ^ 2 + M 0 1 ^ 2 = 1