Documentation

Mathlib.LinearAlgebra.RootSystem.Base

Bases for root pairings / systems #

This file contains a theory of bases for root pairings / systems.

Implementation details #

For reduced root pairings RootSystem.Base is equivalent to the usual definition appearing in the informal literature (e.g., it follows from [Ser87](Ch. V, §8, Proposition 7) that RootSystem.Base is equivalent to both [Ser87](Ch. V, §8, Definition 5) and [Bou02](Ch. VI, §1.5) for reduced pairings). However for non-reduced root pairings, it is more restrictive because it includes axioms on coroots as well as on roots. For example by RootPairing.Base.eq_one_or_neg_one_of_mem_support_of_smul_mem it is clear that the 1-dimensional root system {-2, -1, 0, 1, 2} ⊆ ℝ has no base in the sense of RootSystem.Base.

It is also worth remembering that it is only for reduced root systems that one has the simply transitive action of the Weyl group on the set of bases, and that the Weyl group of a non-reduced root system is the same as that of the reduced root system obtained by passing to the indivisible roots.

For infinite root systems, RootSystem.Base is usually not the right notion: linear independence is too strong.

Main definitions / results: #

TODO #

structure RootPairing.Base {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (P : RootPairing ι R M N) :
Type u_1

A base of a root pairing.

For reduced root pairings this definition is equivalent to the usual definition appearing in the informal literature but not for non-reduced root pairings it is more restrictive. See the module doc string for further remarks.

Instances For
    def RootPairing.Base.flip {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :

    Interchanging roots and coroots, one still has a base of a root pairing.

    Equations
    • b.flip = { support := b.support, linearIndepOn_root := , linearIndepOn_coroot := , root_mem_or_neg_mem := , coroot_mem_or_neg_mem := }
    Instances For
      @[simp]
      theorem RootPairing.Base.flip_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :
      theorem RootPairing.Base.root_ne_neg_of_ne {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [Nontrivial R] {i j : ι} (hi : i b.support) (hj : j b.support) (hij : i j) :
      P.root i -P.root j
      theorem RootPairing.Base.linearIndependent_pair_of_ne {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) {i j : { x : ι // x b.support }} (hij : i j) :
      theorem RootPairing.Base.root_mem_span_int {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) (i : ι) :
      theorem RootPairing.Base.coroot_mem_span_int {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) (i : ι) :
      @[simp]
      theorem RootPairing.Base.span_int_root_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :
      @[simp]
      theorem RootPairing.Base.span_int_coroot_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :
      @[simp]
      theorem RootPairing.Base.span_root_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :
      @[simp]
      theorem RootPairing.Base.span_coroot_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) :
      theorem RootPairing.Base.eq_one_or_neg_one_of_mem_support_of_smul_mem_aux {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [Finite ι] [NoZeroSMulDivisors M] [NoZeroSMulDivisors N] (i : ι) (h : i b.support) (t : R) (ht : t P.root i Set.range P.root) :
      ∃ (z : ), z * t = 1
      theorem RootPairing.Base.eq_one_or_neg_one_of_mem_support_of_smul_mem {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] [Finite ι] [NoZeroSMulDivisors M] [NoZeroSMulDivisors N] (i : ι) (h : i b.support) (t : R) (ht : t P.root i Set.range P.root) :
      t = 1 t = -1
      theorem RootPairing.Base.pos_or_neg_of_sum_smul_root_mem {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (f : ι) (hf : jb.support, f j P.root j Set.range P.root) (hf₀ : Function.support f b.support) :
      0 < f f < 0
      theorem RootPairing.Base.not_nonpos_iff_pos_of_sum_mem_range_root {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (f : ι) (hf : jb.support, f j P.root j Set.range P.root) (hf₀ : Function.support f b.support) :
      ¬f 0 0 < f
      theorem RootPairing.Base.not_nonneg_iff_neg_of_sum_mem_range_root {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (f : ι) (hf : jb.support, f j P.root j Set.range P.root) (hf₀ : Function.support f b.support) :
      ¬0 f f < 0
      theorem RootPairing.Base.sub_notMem_range_root {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j : ι} (hi : i b.support) (hj : j b.support) :
      P.root i - P.root jSet.range P.root
      @[deprecated RootPairing.Base.sub_notMem_range_root (since := "2025-05-24")]
      theorem RootPairing.Base.sub_nmem_range_root {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j : ι} (hi : i b.support) (hj : j b.support) :
      P.root i - P.root jSet.range P.root

      Alias of RootPairing.Base.sub_notMem_range_root.

      theorem RootPairing.Base.sub_notMem_range_coroot {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j : ι} (hi : i b.support) (hj : j b.support) :
      P.coroot i - P.coroot jSet.range P.coroot
      @[deprecated RootPairing.Base.sub_notMem_range_coroot (since := "2025-05-24")]
      theorem RootPairing.Base.sub_nmem_range_coroot {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j : ι} (hi : i b.support) (hj : j b.support) :
      P.coroot i - P.coroot jSet.range P.coroot

      Alias of RootPairing.Base.sub_notMem_range_coroot.

      theorem RootPairing.Base.pairingIn_le_zero_of_ne {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] [IsDomain R] [P.IsCrystallographic] [Finite ι] {i j : ι} (hij : i j) (hi : i b.support) (hj : j b.support) :
      P.pairingIn i j 0
      @[simp]
      theorem RootPairing.Base.chainBotCoeff_eq_zero {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [IsDomain R] [P.IsCrystallographic] [Finite ι] {i j : { x : ι // x b.support }} :
      chainBotCoeff i j = 0
      theorem RootPairing.Base.chainTopCoeff_eq_of_ne {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [IsDomain R] [P.IsCrystallographic] [Finite ι] {i j : { x : ι // x b.support }} (hij : i j) :
      (chainTopCoeff i j) = -P.pairingIn j i
      def RootPairing.Base.toWeightBasis {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) :
      Basis { x : ι // x b.support } R M

      A base of a root system yields a basis of the root space.

      Equations
      Instances For
        @[simp]
        theorem RootPairing.Base.toWeightBasis_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) (i : { x : ι // x b.support }) :
        b.toWeightBasis i = P.root i
        @[simp]
        theorem RootPairing.Base.toWeightBasis_repr_root {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) (i : { x : ι // x b.support }) :
        def RootPairing.Base.toCoweightBasis {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) :
        Basis { x : ι // x b.support } R N

        A base of a root system yields a basis of the coroot space.

        Equations
        Instances For
          @[simp]
          theorem RootPairing.Base.toCoweightBasis_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) (i : { x : ι // x b.support }) :
          @[simp]
          theorem RootPairing.Base.toCoweightBasis_repr_coroot {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootSystem ι R M N} (b : P.Base) (i : { x : ι // x b.support }) :
          theorem RootPairing.Base.exists_root_eq_sum_nat_or_neg {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) (i : ι) :
          ∃ (f : ι), Function.support f b.support (P.root i = jb.support, f j P.root j P.root i = -jb.support, f j P.root j)
          theorem RootPairing.Base.exists_root_eq_sum_int {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :
          ∃ (f : ι), Function.support f b.support (0 < f f < 0) P.root i = jb.support, f j P.root j
          def RootPairing.Base.height {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :

          Given a base α₁, α₂, …, the height of a root ∑ zᵢαᵢ relative to this base is ∑ zᵢ.

          Equations
          Instances For
            theorem RootPairing.Base.height_eq_sum {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] {i : ι} {f : ι} (heq : P.root i = jb.support, f j P.root j) :
            b.height i = jb.support, f j
            theorem RootPairing.Base.height_ne_zero {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :
            b.height i 0
            theorem RootPairing.Base.height_reflectionPerm_self {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :
            b.height (-i) = -b.height i
            theorem RootPairing.Base.height_one_of_mem_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] {i : ι} (hi : i b.support) :
            b.height i = 1
            theorem RootPairing.Base.height_add {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j k : ι} (hk : P.root k = P.root i + P.root j) :
            b.height k = b.height i + b.height j
            theorem RootPairing.Base.height_sub {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j k : ι} (hk : P.root k = P.root i - P.root j) :
            b.height k = b.height i - b.height j
            theorem RootPairing.Base.height_add_zsmul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i j k : ι} {z : } (hk : P.root k = P.root i + z P.root j) :
            b.height k = b.height i + z b.height j
            def RootPairing.Base.IsPos {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :

            The predicate that a (co)root is positive with respect to a base.

            Equations
            Instances For
              theorem RootPairing.Base.isPos_iff {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i : ι} :
              b.IsPos i 0 < b.height i
              theorem RootPairing.Base.isPos_iff' {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] {i : ι} :
              b.IsPos i 0 b.height i
              theorem RootPairing.Base.IsPos.or_neg {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :
              b.IsPos i b.IsPos (-i)
              theorem RootPairing.Base.IsPos.neg_iff_not {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (b : P.Base) [CharZero R] (i : ι) :
              b.IsPos (-i) ¬b.IsPos i
              theorem RootPairing.Base.isPos_of_mem_support {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] {i : ι} (h : i b.support) :
              b.IsPos i
              theorem RootPairing.Base.IsPos.add {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] {i j k : ι} (hi : b.IsPos i) (hj : b.IsPos j) (hk : P.root k = P.root i + P.root j) :
              b.IsPos k
              theorem RootPairing.Base.IsPos.sub {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] {i j k : ι} (hi : b.IsPos i) (hj : j b.support) (hk : P.root k = P.root i - P.root j) :
              b.IsPos k
              theorem RootPairing.Base.IsPos.exists_mem_support_pos_pairingIn {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [P.IsCrystallographic] {i : ι} (h₀ : b.IsPos i) :
              jb.support, 0 < P.pairingIn j i
              theorem RootPairing.Base.IsPos.add_zsmul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] [P.IsReduced] {i j k : ι} {z : } (hij : i j) (hi : b.IsPos i) (hj : j b.support) (hk : P.root k = P.root i + z P.root j) :
              b.IsPos k
              theorem RootPairing.Base.IsPos.reflectionPerm {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] [P.IsReduced] {i j : ι} (hi : b.IsPos i) (hj : j b.support) (hij : i j) :
              b.IsPos ((P.reflectionPerm j) i)
              theorem RootPairing.Base.IsPos.induction_on_add {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] {i : ι} (h₀ : b.IsPos i) {p : ιProp} (h₁ : ib.support, p i) (h₂ : ∀ (i j k : ι), P.root k = P.root i + P.root jp ij b.supportp k) :
              p i
              theorem RootPairing.Base.exists_eq_sum_and_forall_sum_mem_of_isPos {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] {i : ι} (hi : b.IsPos i) :
              ∃ (n : ) (f : Fin nι), Set.range f b.support P.root i = m : Fin n, P.root (f m) ∀ (m : Fin n), m'Finset.Iic m, P.root (f m') Set.range P.root

              This lemma is included mostly for comparison with the informal literature. Usually RootPairing.Base.IsPos.induction_on_add will be more useful.

              theorem RootPairing.Base.induction_add {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] (i : ι) {p : ιProp} (h₀ : ∀ (i : ι), p ip ((P.reflectionPerm i) i)) (h₁ : ib.support, p i) (h₂ : ∀ (i j k : ι), P.root k = P.root i + P.root jp ij b.supportp k) :
              p i
              theorem RootPairing.Base.IsPos.induction_on_reflect {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] [P.IsReduced] {i : ι} (h₀ : b.IsPos i) {p : ιProp} (h₁ : ib.support, p i) (h₂ : ∀ (i j : ι), p ij b.supportp ((P.reflectionPerm j) i)) :
              p i
              theorem RootPairing.Base.induction_reflect {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] [P.IsReduced] (i : ι) {p : ιProp} (h₀ : ∀ (i : ι), p ip ((P.reflectionPerm i) i)) (h₁ : ib.support, p i) (h₂ : ∀ (i j : ι), p ij b.supportp ((P.reflectionPerm j) i)) :
              p i
              theorem RootPairing.Base.forall_mem_support_invtSubmodule_iff {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} {b : P.Base} [CharZero R] [Finite ι] [IsDomain R] [P.IsCrystallographic] [P.IsReduced] (q : Submodule R M) :
              (∀ ib.support, q Module.End.invtSubmodule (P.reflection i)) ∀ (i : ι), q Module.End.invtSubmodule (P.reflection i)