SHEFFER1

index · ← NAGATA_1 · SHEFFER2 →
:: Axiomatization of {B}oolean Algebras Based on Sheffer Stroke
::  by Violetta Kozarkiewicz and Adam Grabowski
::
:: Received May 31, 2004
:: Copyright (c) 2004-2026 Association of Mizar Users
::           (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.

environ

 vocabularies LATTICES, ROBBINS1, XBOOLE_0, SUBSET_1, ARYTM_3, EQREL_1,
      STRUCT_0, BINOP_1, FUNCT_5, RELAT_1, FUNCT_1, SHEFFER1, CARD_1;
 notations TARSKI, XBOOLE_0, FUNCT_5, ORDINAL1, CARD_1, STRUCT_0, LATTICES,
      BINOP_1, ROBBINS1;
 constructors BINOP_1, ROBBINS1, FUNCT_5;
 registrations LATTICES, LATTICE6, ROBBINS1, CARD_1, STRUCT_0;
 definitions LATTICES, ROBBINS1, STRUCT_0;
 equalities ROBBINS1;
 expansions LATTICES, ROBBINS1, STRUCT_0;
 theorems STRUCT_0, ROBBINS1, LATTICES;

begin :: Preliminaries

theorem Th1:
  for L being join-commutative join-associative Huntington non
  empty ComplLLattStr, a, b being Element of L holds (a + b)` = a` *' b`
proof
  let L be join-commutative join-associative Huntington non empty
  ComplLLattStr;
  let a, b be Element of L;
  a + b = (a` *' b`)` by ROBBINS1:17;
  hence thesis by ROBBINS1:3;
end;

begin :: Huntington's First Axiomatization of Boolean Algebras

definition
  let IT be non empty LattStr;
  attr IT is upper-bounded' means

  ex c being Element of IT st for a
  being Element of IT holds c "/\" a = a & a "/\" c = a;
end;

definition
  let L be non empty LattStr;
  assume
A1: L is upper-bounded';
  func Top' L -> Element of L means
  :Def2:
  for a being Element of L holds it "/\" a = a & a "/\" it = a;
  existence by A1;
  uniqueness
  proof
    let c1,c2 be Element of L such that
A2: for a being Element of L holds c1"/\"a = a & a"/\"c1 = a and
A3: for a being Element of L holds c2"/\"a = a & a"/\"c2 = a;
    thus c1 = c2"/\"c1 by A3
      .= c2 by A2;
  end;
end;

definition
  let IT be non empty LattStr;
  attr IT is lower-bounded' means

  ex c being Element of IT st for a
  being Element of IT holds c "\/" a = a & a "\/" c = a;
end;

definition
  let L be non empty LattStr;
  assume
A1: L is lower-bounded';
  func Bot' L -> Element of L means
  :Def4:
  for a being Element of L holds it "\/" a = a & a "\/" it = a;
  existence by A1;
  uniqueness
  proof
    let c1,c2 be Element of L such that
A2: for a being Element of L holds c1"\/"a = a & a"\/"c1 = a and
A3: for a being Element of L holds c2"\/"a = a & a"\/"c2 = a;
    thus c1 = c2"\/"c1 by A3
      .= c2 by A2;
  end;
end;

definition
  let IT be non empty LattStr;
  attr IT is distributive' means
  :Def5:
  for a, b, c being Element of IT holds
  a "\/" (b "/\" c) = (a "\/" b) "/\" (a "\/" c);
end;

definition
  let L be non empty LattStr, a, b be Element of L;
  pred a is_a_complement'_of b means

  b "\/" a = Top' L & a "\/" b = Top' L &
  b "/\" a = Bot' L & a "/\" b = Bot' L;
end;

definition
  let IT be non empty LattStr;
  attr IT is complemented' means
  :Def7:
  for b being Element of IT ex a being
  Element of IT st a is_a_complement'_of b;
end;

definition
  let L be non empty LattStr, x be Element of L;
  assume
A1: L is complemented' distributive upper-bounded' meet-commutative;
  func x `# -> Element of L means
  :Def8:
  it is_a_complement'_of x;
  existence by A1;
  uniqueness
  proof
    let a,b be Element of L such that
A2: a is_a_complement'_of x and
A3: b is_a_complement'_of x;
    b = b "/\" Top' L by A1,Def2
      .= b "/\" (x "\/" a) by A2
      .= (b "/\" x) "\/" (b "/\" a) by A1
      .= (x "/\" b) "\/" (b "/\" a) by A1
      .= (x "/\" b) "\/" (a "/\" b) by A1
      .= (Bot' L) "\/" (a "/\" b) by A3
      .= (a "/\" x) "\/" (a "/\" b) by A2
      .= a "/\" (x "\/" b) by A1
      .= a "/\" Top' L by A3
      .= a by A1,Def2;
    hence thesis;
  end;
end;

registration
  cluster Boolean join-idempotent upper-bounded' complemented' distributive'
    lower-bounded' Lattice-like for 1-element LattStr;
  existence
  proof
    set L = the 1-element Lattice;
A1: L is lower-bounded
    proof
      set x = the Element of L;
      for y be Element of L holds x "/\" y = x & y "/\" x = x by
STRUCT_0:def 10;
      hence thesis;
    end;
A2: L is upper-bounded
    proof
      set x = the Element of L;
      for y be Element of L holds x "\/" y = x & y "\/" x = x by
STRUCT_0:def 10;
      hence thesis;
    end;
    for b being Element of L ex a being Element of L st a is_a_complement_of b
    proof
      let b be Element of L;
      take a = b;
      b "\/" a = Top L & b "/\" a = Bottom L by STRUCT_0:def 10;
      hence thesis;
    end;
    then
A3: L is complemented;
A4: L is join-idempotent;
    for b being Element of L ex a being Element of L st a is_a_complement'_of b
    proof
      let b be Element of L;
      take a = b;
      b "\/" a = Top' L & b "/\" a = Bot' L by STRUCT_0:def 10;
      hence thesis;
    end;
    then
A5: L is complemented';
    for a, b, c being Element of L holds a "/\" (b "\/" c) = (a "/\" b)
    "\/" (a "/\" c) by STRUCT_0:def 10;
    then
A6: L is distributive;
A7: L is lower-bounded'
    proof
      set x = the Element of L;
      for y be Element of L holds x "\/" y = y & y "\/" x = y by
STRUCT_0:def 10;
      hence thesis;
    end;
A8: L is upper-bounded'
    proof
      set x = the Element of L;
      for y be Element of L holds x "/\" y = y & y "/\" x = y by
STRUCT_0:def 10;
      hence thesis;
    end;
    for a, b, c being Element of L holds a "\/" (b "/\" c) = (a "\/" b)
    "/\" (a "\/" c) by STRUCT_0:def 10;
    then L is distributive';
    hence thesis by A3,A6,A1,A2,A4,A8,A5,A7;
  end;
end;

theorem Th2:
  for L being complemented' join-commutative meet-commutative
distributive upper-bounded' distributive' non empty LattStr for x be Element
  of L holds x "\/" x `# = Top' L
proof
  let L be complemented' join-commutative meet-commutative distributive
  upper-bounded' distributive' non empty LattStr;
  let x be Element of L;
  x `# is_a_complement'_of x by Def8;
  hence thesis;
end;

theorem Th3:
  for L being complemented' join-commutative meet-commutative
  distributive upper-bounded' distributive' non empty LattStr for x being
  Element of L holds x "/\" x `# = Bot' L
proof
  let L be complemented' join-commutative meet-commutative distributive
  upper-bounded' distributive' non empty LattStr;
  let x be Element of L;
  x `# is_a_complement'_of x by Def8;
  hence thesis;
end;

theorem Th4:
  for L being complemented' join-commutative meet-commutative
  join-idempotent distributive upper-bounded' distributive' non empty LattStr
  for x being Element of L holds x "\/" Top' L = Top' L
proof
  let L be complemented' join-commutative meet-commutative join-idempotent
  distributive upper-bounded' distributive' non empty LattStr;
  let x be Element of L;
  x "\/" Top' L = (x "\/" Top' L) "/\" Top' L by Def2
    .= (x "\/" Top' L) "/\" (x "\/" (x `# )) by Th2
    .= x "\/" (Top' L "/\" x`# ) by Def5
    .= x "\/" x `# by Def2
    .= Top' L by Th2;
  hence thesis;
end;

theorem Th5:
  for L being complemented' join-commutative meet-commutative
  join-idempotent distributive upper-bounded' lower-bounded' distributive' non
  empty LattStr for x being Element of L holds x "/\" Bot' L = Bot' L
proof
  let L be complemented' join-commutative meet-commutative join-idempotent
  distributive upper-bounded' lower-bounded' distributive' non empty LattStr;
  let x be Element of L;
  x "/\" Bot' L = (x "/\" Bot' L) "\/" Bot' L by Def4
    .= (x "/\" Bot' L) "\/" (x "/\" x`# ) by Th3
    .= x "/\" (Bot' L "\/" x`# ) by LATTICES:def 11
    .= x "/\" x`# by Def4
    .= Bot' L by Th3;
  hence thesis;
end;

theorem Th6:
  for L being join-commutative meet-absorbing meet-commutative
  join-absorbing join-idempotent distributive non empty LattStr for x, y, z
  being Element of L holds ((x "\/" y) "\/" z) "/\" x = x
proof
  let L be join-commutative meet-absorbing meet-commutative join-absorbing
  join-idempotent distributive non empty LattStr;
  let x, y, z be Element of L;
  ((x "\/" y) "\/" z) "/\" x = (x "/\" (x "\/" y)) "\/" (x "/\" z) by
LATTICES:def 11
    .= (x "/\" x) "\/" (x "/\" y) "\/" (x "/\" z) by LATTICES:def 11
    .= x "\/" (x "/\" y) "\/" (x "/\" z)
    .= x "\/" (x "/\" z) by LATTICES:def 8
    .= x by LATTICES:def 8;
  hence thesis;
end;

theorem Th7:
  for L being join-commutative meet-absorbing meet-commutative
  join-absorbing join-idempotent distributive' non empty LattStr for x, y, z
  being Element of L holds ((x "/\" y) "/\" z) "\/" x = x
proof
  let L be join-commutative meet-absorbing meet-commutative join-absorbing
  join-idempotent distributive' non empty LattStr;
  let x, y, z be Element of L;
  ((x "/\" y) "/\" z) "\/" x = (x "\/" (x "/\" y)) "/\" (x "\/" z) by Def5
    .= (x "\/" x) "/\" (x "\/" y) "/\" (x "\/" z) by Def5
    .= x "/\" (x "\/" y) "/\" (x "\/" z)
    .= x "/\" (x "\/" z) by LATTICES:def 9
    .= x by LATTICES:def 9;
  hence thesis;
end;

definition
  let G be non empty /\-SemiLattStr;
  attr G is meet-idempotent means

  for x being Element of G holds x "/\" x = x;
end;

theorem Th8:
  for L being complemented' join-commutative meet-commutative
  distributive upper-bounded' lower-bounded' distributive' non empty LattStr
  holds L is meet-idempotent
proof
  let L be complemented' join-commutative meet-commutative distributive
  upper-bounded' lower-bounded' distributive' non empty LattStr;
  now
    let x be Element of L;
    thus x "/\" x = (x "/\" x) "\/" Bot' L by Def4
      .= (x "/\" x) "\/" (x "/\" x`# ) by Th3
      .= x "/\" (x "\/" x`# ) by LATTICES:def 11
      .= x "/\" Top' L by Th2
      .= x by Def2;
  end;
  hence thesis;
end;

theorem Th9:
  for L being complemented' join-commutative meet-commutative
  distributive upper-bounded' lower-bounded' distributive' non empty LattStr
  holds L is join-idempotent
proof
  let L be complemented' join-commutative meet-commutative distributive
  upper-bounded' lower-bounded' distributive' non empty LattStr;
  let x be Element of L;
  thus x "\/" x = (x "\/" x) "/\" Top' L by Def2
    .= (x "\/" x) "/\" (x "\/" x`# ) by Th2
    .= x "\/" (x "/\" x`# ) by Def5
    .= x "\/" Bot' L by Th3
    .= x by Def4;
end;

theorem Th10:
  for L being complemented' join-commutative meet-commutative
  join-idempotent distributive upper-bounded' distributive' non empty LattStr
  holds L is meet-absorbing
proof
  let L be complemented' join-commutative meet-commutative join-idempotent
  distributive upper-bounded' distributive' non empty LattStr;
  let y, x be Element of L;
  x "\/" (x "/\" y) = (Top' L "/\" x) "\/" (x "/\" y) by Def2
    .= x "/\" (Top' L "\/" y) by LATTICES:def 11
    .= x "/\" Top' L by Th4
    .= x by Def2;
  hence thesis;
end;

theorem Th11:
  for L being complemented' join-commutative upper-bounded'
meet-commutative join-idempotent distributive distributive' lower-bounded' non
  empty LattStr holds L is join-absorbing
proof
  let L be complemented' join-commutative upper-bounded' meet-commutative
join-idempotent distributive distributive' lower-bounded' non empty LattStr;
  let x, y be Element of L;
A1: L is meet-idempotent by Th8;
A2: L is meet-absorbing by Th10;
  x "/\" (x "\/" y) = (x "/\" x) "\/" (x "/\" y) by LATTICES:def 11
    .= x "\/" (x "/\" y) by A1
    .= x by A2;
  hence thesis;
end;

theorem Th12:
  for L being complemented' join-commutative meet-commutative
  upper-bounded' lower-bounded' join-idempotent distributive distributive' non
  empty LattStr holds L is upper-bounded
proof
  let L be complemented' join-commutative meet-commutative upper-bounded'
lower-bounded' join-idempotent distributive distributive' non empty LattStr;
  ex c being Element of L st for a being Element of L holds c"\/"a = c & a
  "\/"c = c
  proof
    take Top' L;
    let a be Element of L;
    thus thesis by Th4;
  end;
  hence thesis;
end;

theorem Th13:
  for L being Boolean Lattice-like non empty LattStr holds L is
  upper-bounded'
proof
  let L be Boolean Lattice-like non empty LattStr;
  ex c being Element of L st for a being Element of L holds c "/\" a = a &
  a "/\" c = a
  proof
    take c = Top L;
    let a be Element of L;
    thus thesis;
  end;
  hence thesis;
end;

theorem Th14:
  for L being complemented' join-commutative meet-commutative
  upper-bounded' lower-bounded' join-idempotent distributive distributive' non
  empty LattStr holds L is lower-bounded
proof
  let L be complemented' join-commutative meet-commutative upper-bounded'
lower-bounded' join-idempotent distributive distributive' non empty LattStr;
  ex c being Element of L st for a being Element of L holds c"/\"a = c & a
  "/\"c = c
  proof
    take Bot' L;
    let a be Element of L;
    thus thesis by Th5;
  end;
  hence thesis;
end;

theorem Th15:
  for L being Boolean Lattice-like non empty LattStr holds L is
  lower-bounded'
proof
  let L be Boolean Lattice-like non empty LattStr;
  ex c being Element of L st for a being Element of L holds c "\/" a = a &
  a "\/" c = a
  proof
    take c = Bottom L;
    let a be Element of L;
    thus thesis;
  end;
  hence thesis;
end;

theorem Th16:
  for L being join-commutative meet-commutative meet-absorbing
  join-absorbing join-idempotent distributive non empty LattStr holds L is
  join-associative
proof
  let L be join-commutative meet-commutative meet-absorbing join-absorbing
  join-idempotent distributive non empty LattStr;
  let x, y, z be Element of L;
A1: ((y "\/" z) "\/" x) "/\" y = (y "/\" (y "\/" z)) "\/" (y "/\" x) by
LATTICES:def 11
    .= (y "/\" y) "\/" (y "/\" z) "\/" (y "/\" x) by LATTICES:def 11
    .= y "\/" (y "/\" z) "\/" (y "/\" x)
    .= y "\/" (y "/\" x) by LATTICES:def 8
    .= y by LATTICES:def 8;
A2: ((x "\/" y) "\/" z) "/\" x = x by Th6;
  x "\/" (y "\/" z) = (x "\/" y) "\/" z
  proof
    set A = ((x "\/" y) "\/" z) "/\" (x "\/" (y "\/" z));
A3: A = ((x "\/" y) "/\" (x "\/" (y "\/" z))) "\/" (z "/\" (x "\/" (y "\/"
    z))) by LATTICES:def 11
      .= ((x "\/" y) "/\" (x "\/" (y "\/" z))) "\/" z by Th6
      .= ((x "/\" (x "\/" (y "\/" z))) "\/" (y "/\" (x "\/" (y "\/" z))))
    "\/" z by LATTICES:def 11
      .= (x "\/" y) "\/" z by A1,LATTICES:def 9;
    A = (((x "\/" y) "\/" z) "/\" x) "\/" (((x "\/" y) "\/" z) "/\" (y
    "\/" z)) by LATTICES:def 11
      .= x "\/" ((((x "\/" y) "\/" z) "/\" y) "\/" (((x "\/" y) "\/" z) "/\"
    z)) by A2,LATTICES:def 11
      .= x "\/" (y "\/" (((x "\/" y) "\/" z) "/\" z)) by Th6
      .= x "\/" (y "\/" (((x "\/" y ) "/\" z) "\/" (z "/\" z))) by
LATTICES:def 11
      .= x "\/" (y "\/" (((x "\/" y ) "/\" z) "\/" z))
      .= x "\/" (y "\/" z) by LATTICES:def 8;
    hence thesis by A3;
  end;
  hence thesis;
end;

theorem Th17:
  for L being join-commutative meet-commutative meet-absorbing
  join-absorbing join-idempotent distributive' non empty LattStr holds L is
  meet-associative
proof
  let L be join-commutative meet-commutative meet-absorbing join-absorbing
  join-idempotent distributive' non empty LattStr;
  let x, y, z be Element of L;
A1: ((x "/\" y) "/\" z) "\/" x = x by Th7;
A2: ((y "/\" z) "/\" x) "\/" y = (y "\/" (y "/\" z)) "/\" (y "\/" x) by Def5
    .= (y "\/" y) "/\" (y "\/" z) "/\" (y "\/" x) by Def5
    .= y "/\" (y "\/" z) "/\" (y "\/" x)
    .= y "/\" (y "\/" x) by LATTICES:def 9
    .= y by LATTICES:def 9;
  x "/\" (y "/\" z) = (x "/\" y) "/\" z
  proof
    set A = ((x "/\" y) "/\" z) "\/" (x "/\" (y "/\" z));
A3: A = ((x "/\" y) "\/" (x "/\" (y "/\" z))) "/\" (z "\/" (x "/\" (y "/\"
    z))) by Def5
      .= ((x "/\" y) "\/" (x "/\" (y "/\" z))) "/\" z by Th7
      .= ((x "\/" (x "/\" (y "/\" z))) "/\" (y "\/" (x "/\" (y "/\" z))))
    "/\" z by Def5
      .= (x "/\" y) "/\" z by A2,LATTICES:def 8;
    A = (((x "/\" y) "/\" z) "\/" x) "/\" (((x "/\" y) "/\" z) "\/" (y
    "/\" z)) by Def5
      .= x "/\" ((((x "/\" y) "/\" z) "\/" y) "/\" (((x "/\" y) "/\" z) "\/"
    z)) by A1,Def5
      .= x "/\" (y "/\" (((x "/\" y) "/\" z) "\/" z)) by Th7
      .= x "/\" (y "/\" (((x "/\" y ) "\/" z) "/\" (z "\/" z))) by Def5
      .= x "/\" (y "/\" (((x "/\" y ) "\/" z) "/\" z))
      .= x "/\" (y "/\" z) by LATTICES:def 9;
    hence thesis by A3;
  end;
  hence thesis;
end;

theorem Th18:
  for L being complemented' join-commutative meet-commutative
  lower-bounded' upper-bounded' join-idempotent distributive distributive' non
  empty LattStr holds Top L = Top' L
proof
  let L be complemented' join-commutative meet-commutative lower-bounded'
upper-bounded' join-idempotent distributive distributive' non empty LattStr;
  set Y = Top' L;
  L is upper-bounded & for a being Element of L holds Y "\/" a = Y & a
  "\/" Y = Y by Th4,Th12;
  hence thesis by LATTICES:def 17;
end;

theorem Th19:
  for L being complemented' join-commutative meet-commutative
  lower-bounded' upper-bounded' join-idempotent distributive distributive' non
  empty LattStr holds Bottom L = Bot' L
proof
  let L be complemented' join-commutative meet-commutative lower-bounded'
upper-bounded' join-idempotent distributive distributive' non empty LattStr;
  set Y = Bot' L;
  L is lower-bounded & for a being Element of L holds Y "/\" a = Y & a
  "/\" Y = Y by Th5,Th14;
  hence thesis by LATTICES:def 16;
end;

theorem Th20:
  for L being Boolean distributive' Lattice-like non empty
  LattStr holds Top L = Top' L
proof
  let L be Boolean distributive' Lattice-like non empty LattStr;
  set Y = Top L;
  L is upper-bounded' & for a being Element of L holds Y "/\" a = a & a
  "/\" Y = a by Th13;
  hence thesis by Def2;
end;

theorem Th21:
  for L being Boolean complemented lower-bounded upper-bounded
  distributive distributive' Lattice-like non empty LattStr holds Bottom L =
  Bot' L
proof
  let L be Boolean complemented lower-bounded upper-bounded distributive
  distributive' Lattice-like non empty LattStr;
  set Y = Bottom L;
  L is lower-bounded' & for a being Element of L holds Y "\/" a = a & a
  "\/" Y = a by Th15;
  hence thesis by Def4;
end;

theorem
  for L being complemented' lower-bounded' upper-bounded'
  join-commutative meet-commutative join-idempotent distributive distributive'
  non empty LattStr, x, y being Element of L holds
  x is_a_complement'_of y iff x is_a_complement_of y
by Th19,Th18;

theorem Th23:
  for L being complemented' join-commutative meet-commutative
  lower-bounded' upper-bounded' join-idempotent distributive distributive' non
  empty LattStr holds L is complemented
proof
  let L be complemented' join-commutative meet-commutative lower-bounded'
upper-bounded' join-idempotent distributive distributive' non empty LattStr;
  for b being Element of L ex a being Element of L st a is_a_complement_of b
  proof
    let b be Element of L;
    consider a being Element of L such that
A1: a is_a_complement'_of b by Def7;
    take a;
A2: b "/\" a = Bot' L by A1;
    b "\/" a = Top' L by A1;
    hence a"\/"b = Top L & b"\/"a = Top L &
    a"/\"b = Bottom L & b"/\"a = Bottom L by A2,Th18,Th19;
  end;
  hence thesis;
end;

theorem Th24:
  for L being Boolean lower-bounded' upper-bounded' distributive'
  Lattice-like non empty LattStr holds L is complemented'
proof
  let L be Boolean lower-bounded' upper-bounded' distributive' Lattice-like
  non empty LattStr;
  for b being Element of L ex a being Element of L st a is_a_complement'_of b
  proof
    let b be Element of L;
    consider a being Element of L such that
A1: a is_a_complement_of b by LATTICES:def 19;
    take a;
A2: b "/\" a = Bottom L by A1;
    b "\/" a = Top L by A1;
    hence b "\/" a = Top' L & a "\/" b = Top' L &
    b "/\" a = Bot' L & a "/\" b = Bot' L by A2,Th20,Th21;
  end;
  hence thesis;
end;

theorem Th25:
  for L being non empty LattStr holds L is Boolean Lattice iff L
is lower-bounded' upper-bounded' join-commutative meet-commutative distributive
  distributive' complemented'
proof
  let L be non empty LattStr;
  thus L is Boolean Lattice implies L is lower-bounded' upper-bounded'
  join-commutative meet-commutative distributive distributive' complemented'
  proof
    assume
A1: L is Boolean Lattice;
    then reconsider L9 = L as Boolean Lattice;
    ex c being Element of L9 st for a being Element of L9 holds c "\/" a =
    a & a "\/" c = a
    proof
      take Bottom L9;
      thus thesis;
    end;
    hence
A2: L is lower-bounded';
    ex c being Element of L9 st for a being Element of L9 holds c "/\" a =
    a & a "/\" c = a
    proof
      take Top L9;
      thus thesis;
    end;
    hence
A3: L is upper-bounded';
    thus L is join-commutative meet-commutative by A1;
    for a,b,c being Element of L9 holds a "/\" (b "\/" c) = (a "/\" b)
    "\/" (a "/\" c) by LATTICES:def 11;
    then for a, b, c being Element of L9 holds a "\/" (b "/\" c) = (a "\/" b)
    "/\" (a "\/" c) by LATTICES:3;
    hence L is distributive distributive';
    hence thesis by A1,A2,A3,Th24;
  end;
  thus L is lower-bounded' upper-bounded' join-commutative meet-commutative
  distributive distributive' complemented' implies L is Boolean Lattice
  proof
    assume L is lower-bounded' upper-bounded' join-commutative
    meet-commutative distributive distributive' complemented';
    then reconsider L9 = L as lower-bounded' upper-bounded' complemented'
join-commutative meet-commutative join-idempotent distributive distributive'
    non empty LattStr by Th9;
A4: L9 is complemented by Th23;
A5: L9 is lower-bounded & L9 is upper-bounded by Th12,Th14;
A6: L9 is meet-absorbing join-absorbing by Th10,Th11;
    then L9 is join-associative & L9 is meet-associative by Th16,Th17;
    hence thesis by A5,A4,A6;
  end;
end;

registration
  cluster Boolean Lattice-like -> lower-bounded' upper-bounded' complemented'
join-commutative meet-commutative distributive distributive' for
non empty LattStr;
  coherence by Th25;
  cluster lower-bounded' upper-bounded' complemented' join-commutative
meet-commutative distributive distributive' -> Boolean Lattice-like for
non empty
    LattStr;
  coherence by Th25;
end;

begin :: Axiomatization Based on Sheffer Stroke

definition
  struct (1-sorted) ShefferStr (# carrier -> set, stroke -> BinOp of the
    carrier #);
end;

definition
  struct (ShefferStr,LattStr) ShefferLattStr (# carrier -> set, L_join ->
BinOp of the carrier, L_meet -> BinOp of the carrier, stroke -> BinOp of the
    carrier #);
end;

definition
  struct (ShefferStr,OrthoLattStr) ShefferOrthoLattStr (# carrier -> set,
L_join -> BinOp of the carrier, L_meet -> BinOp of the carrier, Compl -> UnOp
    of the carrier, stroke -> BinOp of the carrier #);
end;

definition
  func TrivShefferOrthoLattStr -> ShefferOrthoLattStr equals
  ShefferOrthoLattStr (# {0}, op2, op2, op1, op2 #);
  coherence;
end;

registration
  cluster 1-element for ShefferStr;
  existence
  proof
    set S = {{}};
    set B = the BinOp of S;
    take ShefferStr (#S, B#);
    thus the carrier of ShefferStr (#S, B#) is 1-element;
  end;
  cluster 1-element for ShefferLattStr;
  existence
  proof
    set S = {{}};
    set B = the BinOp of S;
    take ShefferLattStr (#S, B, B, B#);
    thus the carrier of ShefferLattStr (#S, B, B, B#) is 1-element;
  end;
  cluster 1-element for ShefferOrthoLattStr;
  existence
  proof
    set S = {{}};
    set B = the BinOp of S;
    set A = the UnOp of S;
    take ShefferOrthoLattStr (#S, B, B, A, B#);
    thus the carrier of ShefferOrthoLattStr (#S, B, B, A, B#) is 1-element;
  end;
end;

definition
  let L be non empty ShefferStr;
  let x, y be Element of L;
  func x | y -> Element of L equals
  (the stroke of L).(x,y);
  coherence;
end;

definition
  let L be non empty ShefferOrthoLattStr;
  attr L is properly_defined means
  :Def12:
  (for x being Element of L holds x |
x = x`) & (for x, y being Element of L holds x "\/" y = (x | x) | (y | y)) & (
  for x, y being Element of L holds x "/\" y = (x | y) | (x | y)) & for x, y
  being Element of L holds x | y = x` + y`;
end;

definition
  let L be non empty ShefferStr;
  attr L is satisfying_Sheffer_1 means
  :Def13:
  for x being Element of L holds (x | x) | (x | x) = x;
  attr L is satisfying_Sheffer_2 means
  :Def14:
  for x, y being Element of L holds x | (y | (y | y)) = x | x;
  attr L is satisfying_Sheffer_3 means
  :Def15:
  for x, y, z being Element of L
  holds (x | (y | z)) | (x | (y | z)) = ((y | y) | x) | ((z | z) | x);
end;

registration
  cluster -> satisfying_Sheffer_1 satisfying_Sheffer_2
    satisfying_Sheffer_3 for 1-element ShefferStr;
  coherence
  by STRUCT_0:def 10;
end;

registration
  cluster  -> join-commutative join-associative
   for 1-element \/-SemiLattStr;
  coherence
  by STRUCT_0:def 10;
  cluster  -> meet-commutative meet-associative
        for 1-element /\-SemiLattStr;
  coherence
  by STRUCT_0:def 10;
end;

registration
  cluster -> join-absorbing meet-absorbing Boolean for 1-element LattStr;
  coherence
  proof
    let L be 1-element LattStr;
    thus L is join-absorbing
    by STRUCT_0:def 10;
A1: L is upper-bounded
    proof
      set c = the Element of L;
      take c;
      let a be Element of L;
      thus thesis by STRUCT_0:def 10;
    end;
    thus L is meet-absorbing
    by STRUCT_0:def 10;
A2: L is lower-bounded
    proof
      set c = the Element of L;
      take c;
      let a be Element of L;
      thus thesis by STRUCT_0:def 10;
    end;
A3: L is complemented
    proof
      set a = the Element of L;
      let b be Element of L;
      take a;
A4:   a "/\" b = Bottom L & b "/\" a = Bottom L by STRUCT_0:def 10;
      a "\/" b = Top L & b "\/" a = Top L by STRUCT_0:def 10;
      hence thesis by A4;
    end;
    L is distributive
    by STRUCT_0:def 10;
    hence thesis by A2,A1,A3;
  end;
end;

registration
  cluster TrivShefferOrthoLattStr -> 1-element;
  coherence;
  cluster TrivShefferOrthoLattStr -> properly_defined well-complemented;
  coherence
  proof
    set L = TrivShefferOrthoLattStr;
A1: ( for x, y being Element of L holds x "/\" y = (x | y) | (x | y))& for
    x, y being Element of L holds x | y = x` + y` by STRUCT_0:def 10;
    ( for x being Element of L holds x | x = x`)& for x, y being Element
    of L holds x "\/" y = (x | x) | (y | y) by STRUCT_0:def 10;
    hence L is properly_defined by A1;
    L is well-complemented
    proof
      let a be Element of L;
      thus a` "\/" a = Top L & a "\/" a` = Top L &
      a` "/\" a = Bottom L & a "/\" a` = Bottom L by STRUCT_0:def 10;
    end;
    hence thesis;
  end;
end;

registration
  cluster properly_defined Boolean well-complemented Lattice-like
    satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3 for
    non empty ShefferOrthoLattStr;
  existence
  proof
    take TrivShefferOrthoLattStr;
    thus thesis;
  end;
end;

theorem
  for L being properly_defined Boolean well-complemented Lattice-like
  non empty ShefferOrthoLattStr holds L is satisfying_Sheffer_1
proof
  let L be properly_defined Boolean well-complemented Lattice-like non empty
  ShefferOrthoLattStr;
  let x be Element of L;
  x`` = x by ROBBINS1:3;
  then (x | x)` = x by Def12;
  hence thesis by Def12;
end;

theorem
  for L being properly_defined Boolean well-complemented Lattice-like
  non empty ShefferOrthoLattStr holds L is satisfying_Sheffer_2
proof
  let L be properly_defined Boolean well-complemented Lattice-like non empty
  ShefferOrthoLattStr;
  let x, y be Element of L;
  x` + Bot L = x` by ROBBINS1:13;
  then x` + (y`` *' y`) = x` by ROBBINS1:15;
  then x` + (y` + y)` = x` by Th1;
  then x | (y` + y) = x` by Def12;
  then x | (y` + y``) = x` by ROBBINS1:3;
  then x | (y | (y`)) = x` by Def12;
  then x | (y | (y | y)) = x` by Def12
    .= x | x by Def12;
  hence thesis;
end;

theorem
  for L being properly_defined Boolean well-complemented Lattice-like
  non empty ShefferOrthoLattStr holds L is satisfying_Sheffer_3
proof
  let L be properly_defined Boolean well-complemented Lattice-like non empty
  ShefferOrthoLattStr;
  let x, y, z be Element of L;
  x *' (y` + z`) = (y` *' x) + (z` *' x) by ROBBINS1:30;
  then (x` + (y | z)`)` = (y` *' x) + (z` *' x) by Def12;
  then (x | (y | z))` = (y` *' x) + (z` *' x) by Def12;
  then (x | (y | z)) | (x | (y | z)) = (y` *' x) + (z` *' x) by Def12
    .= (y` *' x``) + (z` *' x) by ROBBINS1:3
    .= (y` *' x``) + (z` *' x``) by ROBBINS1:3
    .= (y + x`)` + (z` *' x``) by Th1
    .= (y + x`)` + (z + x`)` by Th1
    .= (y + x`) | (z + x`) by Def12
    .= (y`` + x`) | (z + x`) by ROBBINS1:3
    .= (y`` + x`) | (z`` + x`) by ROBBINS1:3
    .= (y` | x) | (z`` + x`) by Def12
    .= (y` | x) | (z` | x) by Def12
    .= ((y | y) | x) | (z` | x) by Def12
    .= ((y | y) | x) | ((z | z) | x) by Def12;
  hence thesis;
end;

definition
  let L be non empty ShefferStr;
  let a be Element of L;
  func a" -> Element of L equals
  a | a;
  coherence;
end;

theorem
  for L being satisfying_Sheffer_3 non empty ShefferOrthoLattStr, x, y
  , z being Element of L holds (x | (y | z))" = (y" | x) | (z" | x) by Def15;

theorem
  for L being satisfying_Sheffer_1 non empty ShefferOrthoLattStr, x
  being Element of L holds x = (x")" by Def13;

theorem Th31:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr, x, y
  being Element of L holds x | y = y | x
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y be Element of L;
  x | y = ((x | y)")" by Def13
    .= ((x | (y")")")" by Def13
    .= (((y")" |x)")" by Def15
    .= ((y | x)")" by Def13
    .= y | x by Def13;
  hence thesis;
end;

theorem Th32:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr, x, y
  being Element of L holds x | (x | x) = y | (y | y)
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y be Element of L;
  x | (x | x) = ((x | x") | (x | x"))" by Def13
    .= ((x | x") | (y | y"))" by Def14
    .= ((y | y") | (x | (x | x)))" by Th31
    .= ((y | y")")" by Def14
    .= y | (y | y) by Def13;
  hence thesis;
end;

theorem Th33:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr holds L
  is join-commutative
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y be Element of L;
  x "\/" y = x" | (y | y) by Def12
    .= (y | y) | (x | x) by Th31
    .= y "\/" x by Def12;
  hence thesis;
end;

theorem Th34:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr holds L
  is meet-commutative
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y be Element of L;
  x "/\" y = (x | y) | (x | y) by Def12
    .= (y | x) | (x | y) by Th31
    .= (y | x) | (y | x) by Th31
    .= y "/\" x by Def12;
  hence thesis;
end;

theorem Th35:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr holds L
  is distributive
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y, z be Element of L;
  set Y = y";
  set Z = z";
  x "/\" (y "\/" z) = x "/\" ((y | y) | (z | z)) by Def12
    .= (x | (Y | Z))" by Def12
    .= (Y" | x) | (Z" | x) by Def15
    .= (y | x) | (Z" | x) by Def13
    .= (y | x) | (z | x) by Def13
    .= (x | y) | (z | x) by Th31
    .= (x | y) | (x | z) by Th31
    .= ((x | y)")" | (x | z) by Def13
    .= ((x | y) | (x | y))" | ((x | z)")" by Def13
    .= ((x "/\" y) | ((x | y) | (x | y))) | (((x | z) | (x | z)) | ((x | z)
  | (x | z))) by Def12
    .= ((x "/\" y) | (x "/\" y)) | (((x | z) | (x | z)) | ((x | z) | (x | z)
  )) by Def12
    .= ((x "/\" y) | (x "/\" y)) | ((x "/\" z) | ((x | z) | (x | z))) by Def12
    .= ((x "/\" y) | (x "/\" y)) | ((x "/\" z) | (x "/\" z)) by Def12
    .= (x "/\" y) "\/" (x "/\" z) by Def12;
  hence thesis;
end;

theorem Th36:
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr holds L
  is distributive'
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
  let x, y, z be Element of L;
  set X = (x | x);
  x "\/" (y "/\" z) = x "\/" ((y | z) | (y | z)) by Def12
    .= X | ((y | z)")" by Def12
    .= X | (y | z) by Def13
    .= ((X |(y | z))")" by Def13
    .= ((y" | X) | (z" | X))" by Def15
    .= ((X | y") | (z" | X))" by Th31
    .= ((X | (y | y)) | (X | z"))" by Th31
    .= (((x "\/" y) | (X | (z | z))) | ((X | (y | y)) | (X | (z | z)))) by
Def12
    .= (((x "\/" y) | (x "\/" z)) | ((X | (y | y)) | (X | (z | z)))) by Def12
    .= (((x "\/" y) | (x "\/" z)) | ((x "\/" y) | (X | (z | z)))) by Def12
    .= (((x "\/" y) | (x "\/" z)) | ((x "\/" y) | (x "\/" z))) by Def12
    .= (x "\/" y) "/\" (x "\/" z) by Def12;
  hence thesis;
end;

theorem
  for L being satisfying_Sheffer_1 satisfying_Sheffer_2
  satisfying_Sheffer_3 properly_defined non empty ShefferOrthoLattStr holds L
  is Boolean Lattice
proof
  let L be satisfying_Sheffer_1 satisfying_Sheffer_2 satisfying_Sheffer_3
  properly_defined non empty ShefferOrthoLattStr;
A1: L is distributive & L is distributive' by Th35,Th36;
  ex c being Element of L st for a being Element of L holds c "/\" a = a &
  a "/\" c = a
  proof
    set b = the Element of L;
    take c = (b|b) | ((b|b)|(b|b));
    let a be Element of L;
    thus c "/\" a = a
    proof
      set X = b";
      c "/\" a = (((b | b) | (X | X)) | a)" by Def12
        .= (a | (X | (X | X)))" by Th31
        .= (a | a)" by Def14
        .= a by Def13;
      hence thesis;
    end;
    thus a "/\" c = a
    proof
      set X = b";
      a "/\" c = (a | ((b | b) | (X | X)))" by Def12
        .= (a | a)" by Def14
        .= a by Def13;
      hence thesis;
    end;
  end;
  then
A2: L is upper-bounded';
  ex c being Element of L st for a being Element of L holds c "\/" a = a &
  a "\/" c = a
  proof
    set b = the Element of L;
    take c = (b | (b | b)) | (b | (b | b));
    let a be Element of L;
    c "\/" a = ((b | (b | b))")" | (a | a) by Def12
      .= ((a | (a | a))")" | (a | a) by Th32
      .= (a | (a | a)) | (a | a) by Def13
      .= (a | a) | (a | (a | a)) by Th31
      .= (a | a) | (a | a) by Def14
      .= a by Def13;
    hence c "\/" a = a;
    a "\/" c = (a | a) | ((b | (b | b))")" by Def12
      .= (a | a) | ((a | (a | a))")" by Th32
      .= (a | a) | (a | (a | a)) by Def13
      .= (a | a) | (a | a) by Def14
      .= a by Def13;
    hence a "\/" c = a;
  end;
  then
A3: L is lower-bounded';
  for b being Element of L ex a being Element of L st a is_a_complement'_of b
  proof
    let b be Element of L;
    set a = b | b;
    take a;
A4: Top' L = (b | b) | ((b | b)|(b | b))
    proof
      set X = (b | b) | ((b | b)|(b | b));
      for a being Element of L holds X "/\" a = a & a "/\" X = a
      proof
        let a be Element of L;
        set Y = b";
        thus X "/\" a = (((b | b) | (Y | Y)) | a)" by Def12
        .= (a | (Y | (Y | Y)))" by Th31
        .= (a | a)" by Def14
        .= a by Def13;
        thus a "/\" X = (a | ((b | b) | (Y | Y)))" by Def12
        .= (a | a)" by Def14
        .= a by Def13;
      end;
      hence thesis by A2,Def2;
    end;
    then
A5: b "\/" a = Top' L by Def12;
A6: Bot' L = (b | (b | b)) | (b | (b | b))
    proof
      set X = (b | (b | b)) | (b | (b | b));
      for a being Element of L holds X "\/" a = a & a "\/" X = a
      proof
        let a be Element of L;
        thus X "\/" a = ((b | (b | b))")" | (a | a) by Def12
          .= ((a | (a | a))")" | (a | a) by Th32
          .= (a | (a | a)) | (a | a) by Def13
          .= (a | a) | (a | (a | a)) by Th31
          .= (a | a) | (a | a) by Def14
          .= a by Def13;
        thus a "\/" X = (a | a) | ((b | (b | b))")" by Def12
          .= (a | a) | ((a | (a | a))")" by Th32
          .= (a | a) | (a | (a | a)) by Def13
          .= (a | a) | (a | a) by Def14
          .= a by Def13;
      end;
      hence thesis by A3,Def4;
    end;
    then
A7: b "/\" a = Bot' L by Def12;
A8: a "\/" b = ((b | b) | (b | b)) | (b | b) by Def12
      .= Top' L by A4,Th31;
    a "/\" b = ((b | b) | b) | ((b | b) | b) by Def12
      .= (b | (b | b)) | ((b | b) | b) by Th31
      .= Bot' L by A6,Th31;
    hence thesis by A8,A5,A7;
  end;
  then
A9: L is complemented';
  L is join-commutative & L is meet-commutative by Th33,Th34;
  hence thesis by A3,A2,A9,A1;
end;