Documentation

FormalConjectures.Wikipedia.DedekindNumber

Dedekind Numbers #

A Dedekind number M(n) counts the number of monotone Boolean functions on n variables, or equivalently, the number of antichains (Sperner families) in the Boolean lattice 2^[n].

For example, $$M ( 0 ) = 2 , M ( 1 ) = 3 , M ( 2 ) = 6 , and M ( 3 ) = 20 .$$ The first few values grew slowly: $$M ( 4 ) = 168 , M ( 5 ) = 7581$$, but then rapidly: $$M ( 6 ) = 7828354 , M ( 7 ) = 2414682040998 , M ( 8 ) = 56130437228687557907788$$, and $$M ( 9 ) = 286386577668298411128469151667598498812366$$ (computed in 2023).

We formalize two definitions:

We prove their values for small n and show that the two definitions agree for all n.

The problem is to determine the exact values of $M(n)$ for $n ≥ 10$. In particular, the value of $M(10)$ is currently unknown.

References:

$M(n)$ is the number of monotone Boolean functions on $n$ variables.

Equations
Instances For

    A Sperner family (antichain) of subsets of Fin n: a family of sets such that no member is a subset of another.

    Equations
    Instances For

      $M'(n)$ is the number of antichains (Sperner families) of subsets of Fin n.

      Equations
      Instances For

        Values for small n

        def DedekindNumber.χ {n : } (s : Finset (Fin n)) :
        Fin nBool

        The indicator function of a finset: χ s i = true ↔ i ∈ s.

        Equations
        Instances For
          def DedekindNumber.supp {n : } (v : Fin nBool) :

          The support of a Boolean-valued function: supp v = {i | v i = true}.

          Equations
          Instances For
            def DedekindNumber.toSperner {n : } (f : (Fin nBool)Bool) :

            Forward map: monotone function → Sperner family (the minimal true sets).

            Equations
            Instances For
              def DedekindNumber.fromSperner {n : } (A : Finset (Finset (Fin n))) (v : Fin nBool) :

              Backward map: Sperner family → monotone Boolean function.

              Equations
              Instances For
                theorem DedekindNumber.χ_supp {n : } (v : Fin nBool) :
                χ (supp v) = v
                theorem DedekindNumber.supp_χ {n : } (s : Finset (Fin n)) :
                supp (χ s) = s
                theorem DedekindNumber.χ_le_iff {n : } (s t : Finset (Fin n)) :
                χ s χ t s t
                theorem DedekindNumber.mem_supp_iff {n : } (v : Fin nBool) (i : Fin n) :
                i supp v v i = true
                theorem DedekindNumber.exists_minimal_true_subset {n : } {f : (Fin nBool)Bool} :
                Monotone f∀ {s : Finset (Fin n)} (hs : f (χ s) = true), ts, f (χ t) = true ut, f (χ u) = truet u

                Every true set of a monotone Boolean function contains a minimal true set.

                theorem DedekindNumber.fromSperner_toSperner {n : } (f : (Fin nBool)Bool) (hf : Monotone f) :

                Converting a monotone function to a Sperner family and back yields the same function.

                Converting a Sperner family to a monotone function and back yields the same family.

                The set of monotone Boolean functions on n variables is in bijection with the set of Sperner families of subsets of Fin n.

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

                  A closed formula for the Dedekind numbers as found by Kisielewicz (1998): $$ M(n) = \sum_{k=0}^{2^{2^n}}\prod_{j = 1}^{2 ^ n - 1}\prod_{i = 0}^{j - 1} \left( 1 - b_i^kb_j^k \prod_{m = 0}^{\log_2 i} (1 - b_m^i + b_m^ib_m^j)\right), $$, where $b_i^k$ is the $i$-th bit of $k$.

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

                    Kisielewicz (1988) proved the following arithmetic formula for the Dedekind numbers: $$ M(n) = \sum_{k=0}^{2^{2^n}}\prod_{j = 1}^{2 ^ n - 1}\prod_{i = 0}^{j - 1} \left( 1 - b_i^kb_j^k \prod_{m = 0}^{\log_2 i} (1 - b_m^i + b_m^ib_m^j)\right), $$ where $b_i^k$ is the $i$-th bit of $k$. However, this formula is not computationally efficient for large $n$.

                    theorem DedekindNumber.M_eq :
                    M = sorry

                    No closed-form expression that allows efficient computation of Dedekind numbers is currently known.

                    theorem DedekindNumber.Dedekind_10 :
                    M 10 = sorry

                    In particular, the Dedekind number for n = 10 is currently unknown.