Documentation

MIPRE.Tailored.SignedPerm

Signed permutations #

Paper II, §2.2 (II:1008–1069): the signed permutations of a finite set Ω, as combinatorial data and as matrices.

(-1)^b #

Signed permutation matrices #

theorem MIPRE.Tailored.signedPermMatrix_apply {Ω : Type u_1} [DecidableEq Ω] (σ : Equiv.Perm Ω) (s : Ω → Bool) (i j : Ω) :
signedPermMatrix σ s i j = if σ j = i then bitSign (s j) else 0
theorem MIPRE.Tailored.signedPermMatrix_apply_self {Ω : Type u_1} [DecidableEq Ω] (σ : Equiv.Perm Ω) (s : Ω → Bool) (j : Ω) :
signedPermMatrix σ s (σ j) j = bitSign (s j)

The entry of column j in row σ j, its only nonzero entry.

theorem MIPRE.Tailored.signedPermMatrix_one {Ω : Type u_1} [DecidableEq Ω] (s : Ω → Bool) :
signedPermMatrix 1 s = Matrix.diagonal fun (i : Ω) => bitSign (s i)

A signed permutation with trivial permutation is a ±1 diagonal.

theorem MIPRE.Tailored.neg_signedPermMatrix {Ω : Type u_1} [DecidableEq Ω] (σ : Equiv.Perm Ω) (s : Ω → Bool) :
-signedPermMatrix σ s = signedPermMatrix σ fun (j : Ω) => !s j
theorem MIPRE.Tailored.signedPermMatrix_conjTranspose {Ω : Type u_1} [DecidableEq Ω] (σ : Equiv.Perm Ω) (s : Ω → Bool) :
(signedPermMatrix σ s).conjTranspose = signedPermMatrix σ⁻¹ fun (i : Ω) => s (σ⁻¹ i)

Signed permutation matrices have real entries, so their adjoint is their transpose.

theorem MIPRE.Tailored.signedPermMatrix_mul {Ω : Type u_1} [DecidableEq Ω] [Fintype Ω] (σ τ : Equiv.Perm Ω) (s t : Ω → Bool) :
signedPermMatrix σ s * signedPermMatrix τ t = signedPermMatrix (σ * τ) fun (j : Ω) => s (τ j) ^^ t j
theorem MIPRE.Tailored.signedPermMatrix_kronecker {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] (σ : Equiv.Perm Ω) (s : Ω → Bool) (τ : Equiv.Perm Ω') (t : Ω' → Bool) :
Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) (signedPermMatrix σ s) (signedPermMatrix τ t) = signedPermMatrix (Equiv.prodCongr σ τ) fun (p : Ω × Ω') => s p.1 ^^ t p.2
theorem MIPRE.Tailored.signedPermMatrix_reindex {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] (e : Ω ≃ Ω') (σ : Equiv.Perm Ω) (s : Ω → Bool) :
theorem MIPRE.Tailored.isDiag_signedPermMatrix_iff {Ω : Type u_1} [DecidableEq Ω] (σ : Equiv.Perm Ω) (s : Ω → Bool) :

The diagonal signed permutation matrices are those with trivial permutation.

Signed permutations as combinatorial data #

structure MIPRE.Tailored.SignedPerm (Ω : Type u_1) :
Type u_1

A signed permutation of Ω (II:1043): a permutation perm of Ω and a sign (-1)^{sign j} at each point, the permutation ±j ↦ ±(-1)^{sign j} perm j of Ω_± = {±} × Ω.

  • perm : Equiv.Perm Ω

    The underlying permutation of Ω.

  • sign : Ω → Bool

    The signs, true for -1.

Instances For
    theorem MIPRE.Tailored.SignedPerm.ext_iff {Ω : Type u_1} {x y : SignedPerm Ω} :
    x = y ↔ x.perm = y.perm ∧ x.sign = y.sign
    theorem MIPRE.Tailored.SignedPerm.ext {Ω : Type u_1} {x y : SignedPerm Ω} (perm : x.perm = y.perm) (sign : x.sign = y.sign) :
    x = y
    @[instance_reducible]
    Equations
    @[instance_reducible]
    Equations
    @[instance_reducible]
    Equations
    @[simp]
    theorem MIPRE.Tailored.SignedPerm.mul_perm {Ω : Type u_1} (g h : SignedPerm Ω) :
    (g * h).perm = g.perm * h.perm
    @[simp]
    theorem MIPRE.Tailored.SignedPerm.mul_sign {Ω : Type u_1} (g h : SignedPerm Ω) (j : Ω) :
    (g * h).sign j = (g.sign (h.perm j) ^^ h.sign j)
    @[simp]
    @[simp]
    theorem MIPRE.Tailored.SignedPerm.one_sign {Ω : Type u_1} (j : Ω) :
    @[simp]
    theorem MIPRE.Tailored.SignedPerm.inv_sign {Ω : Type u_1} (g : SignedPerm Ω) (i : Ω) :
    @[instance_reducible]

    The signed permutations form a group, Sym(Ω) ⋉ F₂^Ω (II:1057).

    Equations
    • One or more equations did not get rendered due to their size.

    The signed permutations of Ω as pairs.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The sign flip -Id (II:1029).

      Equations
      Instances For
        def MIPRE.Tailored.SignedPerm.diag {Ω : Type u_1} (s : Ω → Bool) :

        The ±1 diagonal with signs s.

        Equations
        Instances For
          def MIPRE.Tailored.SignedPerm.prod {Ω : Type u_1} {Ω' : Type u_2} (g : SignedPerm Ω) (h : SignedPerm Ω') :
          SignedPerm (Ω × Ω')

          The action on a product of signed sets (II:3062–3069), whose matrix is the Kronecker product.

          Equations
          Instances For
            def MIPRE.Tailored.SignedPerm.map {Ω : Type u_1} {Ω' : Type u_2} (e : Ω ≃ Ω') (g : SignedPerm Ω) :

            Transport along a bijection of the underlying sets.

            Equations
            Instances For
              theorem MIPRE.Tailored.SignedPerm.negOne_mul {Ω : Type u_1} (g : SignedPerm Ω) :
              negOne * g = { perm := g.perm, sign := fun (j : Ω) => !g.sign j }

              The sign flip is central.

              The matrix of a signed permutation: of its action on the anti-symmetric functions, in the basis B^- (II:1049).

              Equations
              Instances For
                theorem MIPRE.Tailored.SignedPerm.toMatrix_apply {Ω : Type u_1} [DecidableEq Ω] (g : SignedPerm Ω) (i j : Ω) :
                g.toMatrix i j = if g.perm j = i then bitSign (g.sign j) else 0

                The matrix interpretation, a monoid homomorphism (II:1043–1053).

                Equations
                Instances For

                  A signed permutation is determined by its matrix.

                  theorem MIPRE.Tailored.SignedPerm.toMatrix_diag {Ω : Type u_1} [DecidableEq Ω] (s : Ω → Bool) :
                  (diag s).toMatrix = Matrix.diagonal fun (i : Ω) => bitSign (s i)
                  theorem MIPRE.Tailored.SignedPerm.toMatrix_prod {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] (g : SignedPerm Ω) (h : SignedPerm Ω') :
                  (g.prod h).toMatrix = Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) g.toMatrix h.toMatrix
                  theorem MIPRE.Tailored.SignedPerm.toMatrix_map {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] (e : Ω ≃ Ω') (g : SignedPerm Ω) :

                  Signed permutation matrices, as a property #

                  theorem MIPRE.Tailored.isSignedPerm_iff {Ω : Type u_1} [DecidableEq Ω] {M : Matrix Ω Ω ℂ} :
                  IsSignedPerm M ↔ ∃ (g : SignedPerm Ω), g.toMatrix = M
                  theorem MIPRE.Tailored.IsSignedPerm.mul {Ω : Type u_1} [DecidableEq Ω] {M N : Matrix Ω Ω ℂ} [Fintype Ω] (hM : IsSignedPerm M) (hN : IsSignedPerm N) :
                  theorem MIPRE.Tailored.IsSignedPerm.diagonal {Ω : Type u_1} [DecidableEq Ω] (s : Ω → Bool) :
                  IsSignedPerm (Matrix.diagonal fun (i : Ω) => bitSign (s i))
                  theorem MIPRE.Tailored.IsSignedPerm.kronecker {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] {M : Matrix Ω Ω ℂ} {M' : Matrix Ω' Ω' ℂ} (hM : IsSignedPerm M) (hM' : IsSignedPerm M') :
                  IsSignedPerm (Matrix.kroneckerMap (fun (x1 x2 : ℂ) => x1 * x2) M M')
                  theorem MIPRE.Tailored.IsSignedPerm.reindex {Ω : Type u_1} {Ω' : Type u_2} [DecidableEq Ω] [DecidableEq Ω'] {M : Matrix Ω Ω ℂ} (e : Ω ≃ Ω') (hM : IsSignedPerm M) :
                  theorem MIPRE.Tailored.IsSignedPerm.isHermitian {Ω : Type u_1} [DecidableEq Ω] {M : Matrix Ω Ω ℂ} [Fintype Ω] (hM : IsSignedPerm M) (h : M * M = 1) :

                  An involutive signed permutation matrix is self-adjoint: it is unitary and its own inverse.

                  theorem MIPRE.Tailored.IsSignedPerm.isDiag_iff {Ω : Type u_1} [DecidableEq Ω] {M : Matrix Ω Ω ℂ} (hM : IsSignedPerm M) :
                  M.IsDiag ↔ ∃ (s : Ω → Bool), M = Matrix.diagonal fun (i : Ω) => bitSign (s i)

                  A diagonal signed permutation matrix is a ±1 diagonal.