Documentation

Atlas.AlgebraicCombinatorics.code.BooleanUpDown

Up/Down operators and Theorem 4.7 for the Boolean algebra #

This file formalizes Theorem 4.7 from Stanley's Algebraic Combinatorics.

Main results #

@[reducible, inline]
abbrev BooleanUpDown.Level (n i : ) :

The i-th level of the boolean algebra B_n: subsets of {0,…,n−1} of cardinality i.

Instances For
    def BooleanUpDown.up {n : } (i : ) (v : Level n i) :
    Level n (i + 1)

    The up operator Uᵢ: (up i v)(y) = ∑_{x ⊆ y, |x|=i} v(x).

    Instances For
      def BooleanUpDown.down {n : } (i : ) (w : Level n (i + 1)) :
      Level n i

      The down operator D_{i+1}: (down i w)(x) = ∑_{y ⊇ x, |y|=i+1} w(y).

      Instances For
        def BooleanUpDown.innerProd {α : Type u_1} [Fintype α] (f g : α) :

        Inner product on real-valued functions on a finite type.

        Instances For
          theorem BooleanUpDown.innerProd_comm {α : Type u_1} [Fintype α] (f g : α) :
          def BooleanUpDown.DU_form {n : } (i : ) (v w : Level n i) :

          Bilinear form from DU coefficients: ∑_x ∑_z DU_coeff(x,z) · v(x) · w(z).

          Instances For
            def BooleanUpDown.UD_form {n : } (i : ) (v w : Level n i) :

            Bilinear form from UD coefficients: ∑_x ∑_z UD_coeff(x,z) · v(x) · w(z).

            Instances For
              def BooleanUpDown.upLM {n : } (i : ) :
              (Level n i) →ₗ[] Level n (i + 1)

              The up operator as a linear map.

              Instances For
                def BooleanUpDown.downLM {n : } (i : ) :
                (Level n (i + 1)) →ₗ[] Level n i

                The down operator as a linear map.

                Instances For
                  def BooleanUpDown.upDownLM {n : } (i : ) :
                  (Level n (i + 1)) →ₗ[] Level n (i + 1)

                  The composition up ∘ down as a linear endomorphism on level i+1.

                  Instances For
                    theorem BooleanUpDown.adjointness {n : } (i : ) (v : Level n i) (w : Level n (i + 1)) :
                    innerProd (up i v) w = innerProd v (down i w)

                    Adjointness: ⟨up v, w⟩ = ⟨v, down w⟩.

                    theorem BooleanUpDown.level_filter_card_eq_DU {n : } (i : ) (x z : Level n i) :
                    {y : Level n (i + 1) | x y z y}.card = BooleanCommutator.DU_coeff i x z
                    theorem BooleanUpDown.down_up_apply {n : } (i : ) (v : Level n i) (x : Level n i) :
                    down i (up i v) x = z : Level n i, (BooleanCommutator.DU_coeff i x z) * v z
                    theorem BooleanUpDown.level_filter_card_eq_UD {n : } (k : ) (x z : Level n (k + 1)) :
                    {w : Level n k | w x w z}.card = BooleanCommutator.UD_coeff (k + 1) x z
                    theorem BooleanUpDown.up_down_apply {n : } (k : ) (v : Level n (k + 1)) (x : Level n (k + 1)) :
                    up k (down k v) x = z : Level n (k + 1), (BooleanCommutator.UD_coeff (k + 1) x z) * v z
                    theorem BooleanUpDown.DU_form_eq_inner_up {n : } (i : ) (v : Level n i) :
                    DU_form i v v = innerProd (up i v) (up i v)

                    DU_form(v,v) = ⟨up v, up v⟩, the squared norm of the up image.

                    theorem BooleanUpDown.DU_form_nonneg {n : } (i : ) (v : Level n i) :
                    0 DU_form i v v
                    theorem BooleanUpDown.UD_form_succ_eq_inner_down {n : } (k : ) (v : Level n (k + 1)) :
                    UD_form (k + 1) v v = innerProd (down k v) (down k v)

                    UD_form at level k+1 equals ⟨down k v, down k v⟩, via adjointness.

                    theorem BooleanUpDown.UD_form_nonneg {n : } (i : ) (v : Level n i) :
                    0 UD_form i v v
                    theorem BooleanUpDown.DU_minus_UD {n : } (i : ) (v : Level n i) (hi : i n) :
                    DU_form i v v - UD_form i v v = (n - 2 * i) * x : Level n i, v x * v x

                    Lemma 4.6 (bilinear form version). DU_form(v,v) − UD_form(v,v) = (n − 2i) · ∑_x v(x)².

                    theorem BooleanUpDown.up_ker_trivial {n : } (i : ) (hi : 2 * i < n) (v : Level n i) (hv : up i v = 0) :
                    v = 0
                    theorem BooleanUpDown.up_injective {n : } (i : ) (hi : 2 * i < n) :

                    Theorem 4.7 (injectivity). When 2i < n, the up operator Uᵢ is injective.

                    theorem BooleanUpDown.updown_ker_trivial {n : } (i : ) (hi : n 2 * i) (w : Level n (i + 1)) (hw : up i (down i w) = 0) :
                    w = 0
                    theorem BooleanUpDown.up_surjective {n : } (i : ) (hi : n 2 * i) :

                    Theorem 4.7 (surjectivity). When n ≤ 2i, the up operator Uᵢ is surjective.