Documentation

Atlas.Buildings.code.GeometricAlgebra.FlagsParabolics

@[reducible, inline]
abbrev GeometricAlgebra.GLV (k : Type u_1) [Field k] (V : Type u_2) [AddCommGroup V] [Module k V] :
Type u_2

Abbreviation for the general linear group GL(V) of a k-module V.

Instances For
    noncomputable def GeometricAlgebra.linearEquivToGLV {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (e : V ≃ₗ[k] V) :
    GLV k V

    Convert a linear equivalence V ≃ₗ[k] V to an element of the general linear group GLV k V.

    Instances For
      @[simp]
      theorem GeometricAlgebra.linearEquivToGLV_val {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (e : V ≃ₗ[k] V) :
      ↑(linearEquivToGLV e) = ↑e

      The underlying linear map of linearEquivToGLV e is e.toLinearMap.

      noncomputable def GeometricAlgebra.glvToLinearEquiv {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g : GLV k V) :

      Convert an element of the general linear group GLV k V back to a linear equivalence V ≃ₗ[k] V.

      Instances For
        @[simp]
        theorem GeometricAlgebra.glvToLinearEquiv_toLinearMap {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g : GLV k V) :
        ↑(glvToLinearEquiv g) = ↑g

        The linear map underlying glvToLinearEquiv g is the underlying map of g.

        Round-trip lemma: converting g : GLV k V to a linear equivalence and back recovers g.

        theorem GeometricAlgebra.linearEquivToGLV_mul_val {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (d u : V ≃ₗ[k] V) :

        The product linearEquivToGLV d * linearEquivToGLV u in GLV k V has underlying linear map equal to the composition d ∘ u.

        theorem GeometricAlgebra.map_inv_of_map_eq {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (e : V ≃ₗ[k] V) (W : Submodule k V) (h : Submodule.map (↑e) W = W) :
        Submodule.map (↑e.symm) W = W

        If a linear equivalence e preserves a submodule W, then so does its inverse e.symm.

        theorem GeometricAlgebra.map_inv_of_map_to {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g : GLV k V) (W₁ W₂ : Submodule k V) (h : Submodule.map (↑g) W₁ = W₂) :
        Submodule.map (↑g⁻¹) W₂ = W₁

        If g ∈ GLV k V sends a submodule W₁ to W₂, then g⁻¹ sends W₂ back to W₁.

        structure GeometricAlgebra.Flag (k : Type u_3) [Field k] (V : Type u_4) [AddCommGroup V] [Module k V] :
        Type u_4

        A flag in a k-vector space V is a strictly increasing sequence of submodules spaces : Fin len → Submodule k V.

        Instances For
          noncomputable def GeometricAlgebra.Flag.type {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) :
          Fin F.len → ℕ

          The type of a flag F is the sequence of dimensions of its constituent submodules.

          Instances For
            def GeometricAlgebra.Flag.sameType {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F₁ F₂ : Flag k V) :

            Two flags have the same type when they have the same length and the same sequence of dimensions.

            Instances For
              theorem GeometricAlgebra.Flag.submodule_map_mul_eq {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (a b : GLV k V) (W : Submodule k V) :
              Submodule.map (↑(a * b)) W = Submodule.map (↑a) (Submodule.map (↑b) W)

              The image of a submodule under the product of two GL elements equals the iterated image: W.map (a * b) = (W.map b).map a.

              def GeometricAlgebra.Flag.parabolicSubgroup {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) :

              The parabolic subgroup of GL(V) stabilizing a flag F: the elements preserving every space in the flag.

              Instances For
                def GeometricAlgebra.Flag.unipotentRadical {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) :
                Set (GLV k V)

                The unipotent radical of the parabolic subgroup of F: elements in the parabolic that act as the identity on each successive quotient F.spaces i / F.spaces (i-1) (and as the identity on F.spaces 0).

                Instances For
                  theorem GeometricAlgebra.Flag.parabolic_mem_preserves {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] {F : Flag k V} {g : GLV k V} (hg : g ∈ F.parabolicSubgroup) (i : Fin F.len) {v : V} (hv : v ∈ F.spaces i) :
                  ↑g v ∈ F.spaces i

                  An element of the parabolic subgroup of F maps each flag level into itself pointwise.

                  theorem GeometricAlgebra.Flag.gl_mul_inv_cancel {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g : GLV k V) (v : V) :
                  ↑g (↑g⁻¹ v) = v

                  Multiplication by g then g⁻¹ (as linear maps) cancels: g (g⁻¹ v) = v.

                  theorem GeometricAlgebra.Flag.gl_conj_apply {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g u : GLV k V) (v : V) :
                  ↑(g * u * g⁻¹) v = ↑g (↑u (↑g⁻¹ v))

                  Conjugation in GLV k V translates to threefold application of underlying linear maps: (g u g⁻¹) v = g (u (g⁻¹ v)).

                  theorem GeometricAlgebra.Flag.conj_minus_eq {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (g u : GLV k V) (v : V) :
                  ↑(g * u * g⁻¹) v - v = ↑g (↑u (↑g⁻¹ v) - ↑g⁻¹ v)

                  Difference identity for conjugation: (g u g⁻¹) v - v = g (u (g⁻¹ v) - g⁻¹ v).

                  theorem GeometricAlgebra.Flag.parabolic_conj {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F₁ F₂ : Flag k V) (g : GLV k V) (hlen : F₁.len = F₂.len) (hg : ∀ (i : Fin F₁.len), Submodule.map (↑g) (F₁.spaces i) = F₂.spaces (Fin.cast hlen i)) :

                  If g ∈ GL(V) maps the flag F₁ to F₂ (level-wise), then the parabolic subgroup of F₂ is the g-conjugate of the parabolic subgroup of F₁.

                  For g ∈ H, conjugation by g preserves H and distributes over intersections: (H ⊓ K)^g = H ⊓ K^g.

                  Conjugation in GLV k V distributes over intersection of subgroups.

                  def GeometricAlgebra.Flag.isOppositeFlag {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) :

                  Two flags are opposite if they have the same length and type, and each matched pair of levels (F.spaces i, F'.spaces (F'.len - 1 - i)) is complementary.

                  Instances For
                    def GeometricAlgebra.Flag.oppositeParabolic {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F' : Flag k V) :

                    The parabolic subgroup attached to the opposite flag F'.

                    Instances For
                      def GeometricAlgebra.Flag.leviComponent {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) :
                      F.isOppositeFlag F' → Subgroup (GLV k V)

                      The Levi component associated with an opposite pair of flags (F, F'): the intersection of their parabolic subgroups.

                      Instances For
                        def GeometricAlgebra.Flag.ParabolicsSemidirectProduct {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) (h : F.isOppositeFlag F') :

                        The parabolic subgroup of F is a semidirect product of its Levi component (with respect to the opposite flag F') and its unipotent radical: every element of the parabolic factors uniquely as a Levi times unipotent.

                        Instances For
                          def GeometricAlgebra.Flag.truncate {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) :
                          Flag k V

                          Drop the top space from a flag, keeping the first F.len - 1 levels.

                          Instances For
                            def GeometricAlgebra.Flag.truncateStart {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) :
                            Flag k V

                            Drop the bottom space from a flag, keeping levels from index 1 onwards.

                            Instances For
                              @[simp]
                              theorem GeometricAlgebra.Flag.truncate_len {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) :
                              (F.truncate h).len = F.len - 1

                              The length of F.truncate h is F.len - 1.

                              @[simp]
                              theorem GeometricAlgebra.Flag.truncateStart_len {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) :
                              (F.truncateStart h).len = F.len - 1

                              The length of F.truncateStart h is F.len - 1.

                              theorem GeometricAlgebra.Flag.truncate_spaces {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) (i : Fin (F.len - 1)) :
                              (F.truncate h).spaces i = F.spaces ⟨↑i, ⋯⟩

                              The spaces of F.truncate h agree with those of F at the same indices.

                              theorem GeometricAlgebra.Flag.truncateStart_spaces {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F : Flag k V) (h : 1 ≤ F.len) (i : Fin (F.len - 1)) :
                              (F.truncateStart h).spaces i = F.spaces ⟨↑i + 1, ⋯⟩

                              The spaces of F.truncateStart h are F.spaces ⟨i + 1, …⟩.

                              def GeometricAlgebra.Flag.IsCoveringOppositePair {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) :

                              A pair of opposite flags is a "covering" pair when F is nonempty and its top space is all of V.

                              Instances For

                                Existence property: for every covering opposite pair (F, F') and every flag stabilizer p of F, there exists a Levi-unipotent factorization p = d ∘ u.

                                Instances
                                  theorem GeometricAlgebra.Flag.unipotent_levi_is_id {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) (hopp : F.isOppositeFlag F') (hlen : 0 < F.len) (hcov : F.spaces ⟨F.len - 1, ⋯⟩ = ⊤) (e : V ≃ₗ[k] V) (he_F' : ∀ (i : Fin F'.len), Submodule.map (↑e) (F'.spaces i) = F'.spaces i) (hunip : ∀ (i : Fin F.len), ∀ v ∈ F.spaces i, ↑e v - v ∈ if _hh : ↑i = 0 then ⊥ else F.spaces ⟨↑i - 1, ⋯⟩) :

                                  Uniqueness in M ∩ U = {1}: a linear equivalence that simultaneously preserves the opposite flag F' levelwise and is unipotent along F must be the identity.

                                  theorem GeometricAlgebra.Flag.unique_decomp_linear_proof {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] (F F' : Flag k V) (hopp : F.isOppositeFlag F') (hlen : 0 < F.len) (hcov : F.spaces ⟨F.len - 1, ⋯⟩ = ⊤) (d₁ d₂ u₁ u₂ : V ≃ₗ[k] V) (_hd₁_F : ∀ (i : Fin F.len), Submodule.map (↑d₁) (F.spaces i) = F.spaces i) (hd₁_F' : ∀ (i : Fin F'.len), Submodule.map (↑d₁) (F'.spaces i) = F'.spaces i) (_hd₂_F : ∀ (i : Fin F.len), Submodule.map (↑d₂) (F.spaces i) = F.spaces i) (hd₂_F' : ∀ (i : Fin F'.len), Submodule.map (↑d₂) (F'.spaces i) = F'.spaces i) (hu₁_F : ∀ (i : Fin F.len), Submodule.map (↑u₁) (F.spaces i) = F.spaces i) (hu₁_unip : ∀ (i : Fin F.len), ∀ v ∈ F.spaces i, ↑u₁ v - v ∈ if _hh : ↑i = 0 then ⊥ else F.spaces ⟨↑i - 1, ⋯⟩) (_hu₂_F : ∀ (i : Fin F.len), Submodule.map (↑u₂) (F.spaces i) = F.spaces i) (hu₂_unip : ∀ (i : Fin F.len), ∀ v ∈ F.spaces i, ↑u₂ v - v ∈ if _hh : ↑i = 0 then ⊥ else F.spaces ⟨↑i - 1, ⋯⟩) (hcomp : ↑d₁ ∘ₗ ↑u₁ = ↑d₂ ∘ₗ ↑u₂) :
                                  d₁ = d₂ ∧ u₁ = u₂

                                  Uniqueness of the Levi-unipotent factorization at the linear-equivalence level: if d₁ ∘ u₁ = d₂ ∘ u₂ with both factors lying in the appropriate Levi and unipotent subspaces, then d₁ = d₂ and u₁ = u₂.

                                  Combined property packaging both existence and uniqueness of the Levi-unipotent decomposition of the flag stabilizer.

                                  Instances

                                    Two flags of the same type are linearly equivalent: there exists a linear automorphism of V mapping one to the other levelwise.

                                    Instances
                                      theorem GeometricAlgebra.FlagsOfSameTypeAreGLEquivalent (k : Type u_3) [Field k] (V : Type u_4) [AddCommGroup V] [Module k V] [FlagEquivalenceProperty k V] (F₁ F₂ : Flag k V) :
                                      F₁.sameType F₂ → ∃ (g : GLV k V) (hlen : F₁.len = F₂.len), ∀ (i : Fin F₁.len), Submodule.map (↑g) (F₁.spaces i) = F₂.spaces (Fin.cast hlen i)

                                      Group-level corollary of FlagEquivalenceProperty: same-type flags are conjugate under some element of GLV k V.

                                      For any flag F, any two flags opposite to F are conjugate via a linear automorphism that preserves F levelwise.

                                      Instances
                                        theorem GeometricAlgebra.OppositeSystemsAreConjugate (k : Type u_3) [Field k] (V : Type u_4) [AddCommGroup V] [Module k V] [OppositeSystemsConjugacyProperty k V] (F F'₁ F'₂ : Flag k V) (_h₁ : F.isOppositeFlag F'₁) (_h₂ : F.isOppositeFlag F'₂) :
                                        ∃ (p : GLV k V) (_ : p ∈ F.parabolicSubgroup) (hlen : F'₁.len = F'₂.len), ∀ (i : Fin F'₁.len), Submodule.map (↑p) (F'₁.spaces i) = F'₂.spaces (Fin.cast hlen i)

                                        Group-level corollary of OppositeSystemsConjugacyProperty: opposite flags to a fixed F are conjugate by an element of the parabolic subgroup of F.

                                        theorem GeometricAlgebra.SemidirectDecompositionExists {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] [SemidirectDecompositionProperty k V] (F F' : Flag k V) (h : F.isOppositeFlag F') (hlen : 0 < F.len) (_hcov : F.spaces ⟨F.len - 1, ⋯⟩ = ⊤) (p : GLV k V) :
                                        p ∈ F.parabolicSubgroup → ∃ (m : GLV k V) (u : GLV k V), m ∈ F.leviComponent F' h ∧ u ∈ F.unipotentRadical ∧ p = m * u

                                        Group-level form of the semidirect existence: under SemidirectDecompositionProperty, any element of the parabolic subgroup of F factors as a Levi component times a unipotent radical element.

                                        theorem GeometricAlgebra.SemidirectDecompositionUnique {k : Type u_1} [Field k] {V : Type u_2} [AddCommGroup V] [Module k V] [SemidirectDecompositionProperty k V] (F F' : Flag k V) (h : F.isOppositeFlag F') (hlen : 0 < F.len) (_hcov : F.spaces ⟨F.len - 1, ⋯⟩ = ⊤) (m₁ m₂ u₁ u₂ : GLV k V) :
                                        m₁ ∈ F.leviComponent F' h → m₂ ∈ F.leviComponent F' h → u₁ ∈ F.unipotentRadical → u₂ ∈ F.unipotentRadical → m₁ * u₁ = m₂ * u₂ → m₁ = m₂ ∧ u₁ = u₂

                                        Group-level uniqueness for the semidirect decomposition: the Levi-unipotent factorization of an element of the parabolic subgroup is unique.

                                        Any two same-type pairs of opposite flags (F₁, F'₁) and (F₂, F'₂) are linearly equivalent: one linear automorphism of V carries both F₁ ↦ F₂ and F'₁ ↦ F'₂ levelwise.

                                        Instances
                                          theorem GeometricAlgebra.CompleteFlagPairsAreGLEquivalent (k : Type u_3) [Field k] (V : Type u_4) [AddCommGroup V] [Module k V] [CompleteFlagPairEquivalenceProperty k V] (F₁ F₂ F'₁ F'₂ : Flag k V) :
                                          F₁.isOppositeFlag F'₁ → F₂.isOppositeFlag F'₂ → F₁.sameType F₂ → ∃ (g : GLV k V) (hlen : F₁.len = F₂.len) (hlen' : F'₁.len = F'₂.len), (∀ (i : Fin F₁.len), Submodule.map (↑g) (F₁.spaces i) = F₂.spaces (Fin.cast hlen i)) ∧ ∀ (i : Fin F'₁.len), Submodule.map (↑g) (F'₁.spaces i) = F'₂.spaces (Fin.cast hlen' i)

                                          Group-level corollary of CompleteFlagPairEquivalenceProperty: same-type opposite flag pairs are conjugate via an element of GLV k V.