Documentation

Archive.MinimalSheffer

Minimal Sheffer stroke axioms for Boolean algebra #

The Sheffer stroke a | b is (a ⊓ b)ᶜ, i.e. the NAND gate on Bool. All functions with Bool inputs and outputs can be expressed using only this operator.

This file shows that for non-empty magmas whose operator is the Sheffer stroke, satisfying either of two axiom sets is equivalent to being a Boolean algebra. The first set, with two axioms, was proven equivalent by Robert Veroff:

  1. | is commutative
  2. ∀ a b c, a | b | (a | (b | c)) = a

Instead of deriving Sheffer's 1913 axioms as done in the original paper, we derive a BooleanAlgebra instance directly: aᶜ := a | a, a ≤ b := aᶜ = a | b, a ⊔ b := aᶜ | bᶜ, a ⊓ b = (a | b)ᶜ, ⊤ = a | aᶜ and ⊥ = ⊤ᶜ.

The second set consists of just the single axiom ∀ a b c, a | (b | a | a) | (b | (c | a)) = b. Its equivalence was conjectured by Stephen Wolfram and proved by William McCune et al. shortly after Veroff's result. We reduce to Veroff's axioms rather than Sheffer's 1913 axioms, following the original paper's Otter derivation of commutativity closely (with certain steps condensed), after which the other axiom becomes very easy to derive.

Both axiom sets are minimal in the sense that for any set using fewer total Sheffer strokes, non-Boolean algebra models exist.

class VeroffAlgebra (α : Type u_1) extends Inhabited α :
Type u_1

Veroff's two axioms for Boolean algebra.

  • default : α
  • f : ααα

    The Sheffer stroke function

  • comm (a b : α) : f a b = f b a

    The Sheffer stroke is commutative

  • veroff (a b c : α) : f (f a b) (f a (f b c)) = a

    Veroff's axiom

Instances

    The Sheffer stroke function

    Equations
    Instances For

      Derive a Veroff algebra from a Boolean algebra.

      Equations
      Instances For
        @[implicit_reducible]
        instance VeroffAlgebra.instCompl {α : Type u_1} [VeroffAlgebra α] :
        Equations
        theorem VeroffAlgebra.compl_def {α : Type u_1} [VeroffAlgebra α] (a : α) :
        a = f a a
        theorem VeroffAlgebra.meredith {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        f (f a b) a = a
        theorem VeroffAlgebra.compl_compl {α : Type u_1} [VeroffAlgebra α] (a : α) :
        theorem VeroffAlgebra.ababc {α : Type u_1} [VeroffAlgebra α] (a b c : α) :
        f a (f b (f a (f b c))) = f a (f b c)
        theorem VeroffAlgebra.abba {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        f (f (f a b) b) a = a
        theorem VeroffAlgebra.aba_abb {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        f a (f b a) = f a b
        theorem VeroffAlgebra.sheffer {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        f a (f b b) = a
        @[implicit_reducible]
        Equations
        theorem VeroffAlgebra.le_def {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        a b a = f a b
        theorem VeroffAlgebra.le_sup_left {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        a f a b
        theorem VeroffAlgebra.inf_le_left {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        (f a b) a
        theorem VeroffAlgebra.sup_le {α : Type u_1} [VeroffAlgebra α] (a b c : α) (h₁ : a c) (h₂ : b c) :
        f a b c
        theorem VeroffAlgebra.compl_le_compl {α : Type u_1} [VeroffAlgebra α] (a b : α) (h : a b) :
        theorem VeroffAlgebra.compl_le_compl_iff_le {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        a b b a
        @[implicit_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        theorem VeroffAlgebra.sup_def {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        ab = f a b
        theorem VeroffAlgebra.inf_def {α : Type u_1} [VeroffAlgebra α] (a b : α) :
        ab = (f a b)
        def VeroffAlgebra.top {α : Type u_1} [VeroffAlgebra α] :
        α

        The top element, equal to a | aᶜ for any a.

        Equations
        Instances For
          theorem VeroffAlgebra.f_compl_const {α : Type u_1} [VeroffAlgebra α] (a b : α) :
          f a a = f b b
          theorem VeroffAlgebra.sup_compl_eq_top {α : Type u_1} [VeroffAlgebra α] (a : α) :
          aa = top
          theorem VeroffAlgebra.compl_inf {α : Type u_1} [VeroffAlgebra α] (a b : α) :
          (ab) = ab
          theorem VeroffAlgebra.le_iff_compl_sup {α : Type u_1} [VeroffAlgebra α] (a b : α) :
          a b ab = top
          @[implicit_reducible]

          Derive a Boolean algebra from a Veroff algebra.

          Equations
          • One or more equations did not get rendered due to their size.
          class SingleShefferAlgebra (α : Type u_2) extends Inhabited α :
          Type u_2

          The single-axiom algebra shown to be equivalent to Boolean algebra by McCune et al.

          • default : α
          • f : ααα

            The Sheffer stroke function

          • rule (a b c : α) : f (f a (f (f b a) a)) (f b (f c a)) = b

            The single axiom of this algebra

          Instances

            The Sheffer stroke function

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

              Derive a SingleShefferAlgebra from a Boolean algebra.

              Equations
              Instances For
                theorem SingleShefferAlgebra.eq74 {α : Type u_2} [SingleShefferAlgebra α] (a : α) :
                f a (f (f a a) a) = f a a
                theorem SingleShefferAlgebra.eq75 {α : Type u_2} [SingleShefferAlgebra α] (a : α) :
                f (f a (f (f a a) a)) (f a a) = a
                theorem SingleShefferAlgebra.eq76 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f (f a a) (f a (f b a)) = a
                theorem SingleShefferAlgebra.eq77 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f (f a (f (f (f b b) a) a)) b = f b b
                theorem SingleShefferAlgebra.eq79 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f a (f (f (f (f b a) (f b a)) a) a) = f b a
                theorem SingleShefferAlgebra.eq80 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f (f a a) (f b a) = a
                theorem SingleShefferAlgebra.eq84 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f (f (f a b) (f a b)) b = f a b
                theorem SingleShefferAlgebra.eq85 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f a (f (f b a) a) = f b a
                theorem SingleShefferAlgebra.eq89 {α : Type u_2} [SingleShefferAlgebra α] (a b c : α) :
                f a (f (f a b) (f c b)) = f a b
                theorem SingleShefferAlgebra.eq91 {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f a (f (f b a) a) = f a b
                theorem SingleShefferAlgebra.comm {α : Type u_2} [SingleShefferAlgebra α] (a b : α) :
                f a b = f b a
                @[implicit_reducible]

                Derive a Veroff (and hence Boolean) algebra from a SingleShefferAlgebra.

                Equations