Documentation

Archive.Robbins

The Robbins conjecture #

Herbert Robbins asked in 1933 whether the following three axioms, with ⊔ and ᶜ as in BooleanAlgebra, yield an algebra equivalent to Boolean algebra:

This conjecture was only proved in 1997 by an early automated theorem prover under the direction of William McCune by deriving Huntington's equation:

With the axioms on ⊔ this had been shown by Edward Huntington to be equivalent to Boolean algebra, just before Robbins made his conjecture.

The formalisation in this file largely follows Matthew Wampler-Doty's Isabelle formalisation, which in turn follows Allen L. Mann's A Complete Proof of the Robbins Conjecture. Some differences include:

class RobbinsAlgebra (α : Type u_1) extends Inhabited α, AddCommSemigroup α, Neg α :
Type u_1

The type of Robbins algebras.

Instances
    @[instance_reducible]

    Derive a Robbins algebra from a Boolean algebra.

    Equations
    Instances For
      def RobbinsAlgebra.smul {α : Type u_1} [RobbinsAlgebra α] :
      ℕ → α → α

      Sum a number of copies of an element. Not intended to be used for 0 copies (although the ultimately correct value of -(a + -a) is included for completeness).

      Equations
      Instances For
        @[instance_reducible]
        Equations
        theorem RobbinsAlgebra.smul_succ {α : Type u_1} [RobbinsAlgebra α] {k : ℕ} {a : α} (hk : 1 ≤ k) :
        (k + 1) • a = k • a + a
        theorem RobbinsAlgebra.mann_44 {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
        -(-(-(a + b) + -a + b) + b) = -(a + b)
        theorem RobbinsAlgebra.mann_45 {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
        -(-(-(-a + b) + a + b) + b) = -(-a + b)
        theorem RobbinsAlgebra.mann_46 {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
        -(-(-(-a + b) + a + b + b) + -(-a + b)) = b
        theorem RobbinsAlgebra.mann_47 {α : Type u_1} [RobbinsAlgebra α] (a b c : α) :
        -(-(-(-(-a + b) + a + b + b) + -(-a + b) + c) + -(b + c)) = c
        theorem RobbinsAlgebra.mann_48 {α : Type u_1} [RobbinsAlgebra α] (a b c : α) :
        -(-(-(-(-a + b) + a + b + b) + -(-a + b) + -(b + c) + c) + c) = -(b + c)
        theorem RobbinsAlgebra.mann_49 {α : Type u_1} [RobbinsAlgebra α] (a b c d : α) :
        -(-(-(-(-(-a + b) + a + b + b) + -(-a + b) + -(b + c) + c) + c + d) + -(-(b + c) + d)) = d
        def RobbinsAlgebra.q {α : Type u_1} [RobbinsAlgebra α] (a : α) :
        α

        A common subexpression occurring in mann_50 to winker.

        Equations
        Instances For
          theorem RobbinsAlgebra.mann_50 {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          -(-(q a + -(3 • a)) + -(q a + 5 • a)) = q a
          theorem RobbinsAlgebra.mann_51 {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          -(q a + 5 • a) = -(3 • a)
          theorem RobbinsAlgebra.mann_52 {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          -(-(q a + -(3 • a) + 2 • a) + -(3 • a)) = q a + 2 • a
          theorem RobbinsAlgebra.mann_53 {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          -(q a + -(3 • a)) = a
          theorem RobbinsAlgebra.mann_54 {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
          -(-(q a + -(3 • a) + b) + -(a + b)) = b
          theorem RobbinsAlgebra.winker {α : Type u_1} [RobbinsAlgebra α] :
          ∃ (x : α), ∃ (y : α), x + y = y

          Winker's first condition, proved in 1997 by the automated theorem prover EQP to be derivable in Robbins algebras.

          theorem RobbinsAlgebra.mann_33 {α : Type u_1} [RobbinsAlgebra α] {a b c : α} (h : -(a + -(b + c)) = -(a + b + -c)) :
          a + b = a
          theorem RobbinsAlgebra.mann_34 {α : Type u_1} [RobbinsAlgebra α] {a b c : α} (h : -(a + -(b + c)) = -(b + -(a + c))) :
          a = b
          theorem RobbinsAlgebra.mann_35 {α : Type u_1} [RobbinsAlgebra α] {a b c : α} (h : -(a + -b) = c) :
          -(-(a + b) + c) = a
          theorem RobbinsAlgebra.mann_36 {α : Type u_1} [RobbinsAlgebra α] {a b c : α} {k : ℕ} (hk : 1 ≤ k) (h : -(a + -b) = c) :
          -(a + -(b + k • (a + c))) = c
          theorem RobbinsAlgebra.mann_37 {α : Type u_1} [RobbinsAlgebra α] {a b : α} {k : ℕ} (hk : 1 ≤ k) (h : -(-(a + -b) + -b) = a) :
          -(b + k • (a + -(a + -b))) = -b
          theorem RobbinsAlgebra.mann_38 {α : Type u_1} [RobbinsAlgebra α] {a b : α} {k : ℕ} (hk : 1 ≤ k) (h : -(a + b) = -b) :
          -(b + k • (a + -(a + -b))) = -b
          theorem RobbinsAlgebra.mann_39 {α : Type u_1} [RobbinsAlgebra α] {a b : α} (h₂ : -(2 • a + b) = -b) (h₃ : -(3 • a + b) = -b) :
          2 • a + b = 3 • a + b
          theorem RobbinsAlgebra.mann_40 {α : Type u_1} [RobbinsAlgebra α] {a b : α} (h : -(a + b) = -b ∨ -(-(a + -b) + -b) = a) :
          b + 2 • (a + -(a + -b)) = b + 3 • (a + -(a + -b))
          theorem RobbinsAlgebra.exists_zero {α : Type u_1} [RobbinsAlgebra α] :
          ∃ (z : α), ∀ (a : α), a + z = a
          theorem RobbinsAlgebra.neg_neg {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          - -a = a
          theorem RobbinsAlgebra.huntington {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
          -(-a + -b) + -(-a + b) = a
          @[instance_reducible]
          instance RobbinsAlgebra.instZero {α : Type u_1} [RobbinsAlgebra α] :
          Zero α
          Equations
          @[instance_reducible]
          instance RobbinsAlgebra.instOne {α : Type u_1} [RobbinsAlgebra α] :
          One α
          Equations
          theorem RobbinsAlgebra.add_neg_self_const {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
          a + -a = b + -b
          theorem RobbinsAlgebra.neg_zero {α : Type u_1} [RobbinsAlgebra α] :
          -0 = 1
          theorem RobbinsAlgebra.neg_one {α : Type u_1} [RobbinsAlgebra α] :
          -1 = 0
          theorem RobbinsAlgebra.add_neg_self {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          a + -a = 1
          theorem RobbinsAlgebra.add_zero {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          a + 0 = a
          theorem RobbinsAlgebra.add_self {α : Type u_1} [RobbinsAlgebra α] (a : α) :
          a + a = a
          theorem RobbinsAlgebra.min_add_left {α : Type u_1} [RobbinsAlgebra α] (a b : α) :
          -(-a + -b) + a = a
          theorem RobbinsAlgebra.min_add_distrib {α : Type u_1} [RobbinsAlgebra α] (a b c : α) :
          -(-a + -(b + c)) = -(-a + -b) + -(-a + -c)
          theorem RobbinsAlgebra.add_min_distrib {α : Type u_1} [RobbinsAlgebra α] (a b c : α) :
          a + -(-b + -c) = -(-(a + b) + -(a + c))
          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          @[instance_reducible]

          Derive a Boolean algebra from a Robbins algebra.

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