:: ROBBINS1 semantic presentation

definition
attr a1 is strict;
struct ComplStr -> 1-sorted ;
aggr ComplStr(# carrier, Compl #) -> ComplStr ;
sel Compl c1 -> UnOp of the carrier of a1;
end;

definition
attr a1 is strict;
struct ComplLattStr -> \/-SemiLattStr , ComplStr ;
aggr ComplLattStr(# carrier, L_join, Compl #) -> ComplLattStr ;
end;

definition
attr a1 is strict;
struct OrthoLattStr -> ComplLattStr , LattStr ;
aggr OrthoLattStr(# carrier, L_join, L_meet, Compl #) -> OrthoLattStr ;
end;

definition
func TrivComplLat -> strict ComplLattStr equals :: ROBBINS1:def 1
ComplLattStr(# {{} },op2 ,op1 #);
coherence
ComplLattStr(# {{} },op2 ,op1 #) is strict ComplLattStr
;
end;

:: deftheorem Def1 defines TrivComplLat ROBBINS1:def 1 :
TrivComplLat = ComplLattStr(# {{} },op2 ,op1 #);

definition
func TrivOrtLat -> strict OrthoLattStr equals :: ROBBINS1:def 2
OrthoLattStr(# {{} },op2 ,op2 ,op1 #);
coherence
OrthoLattStr(# {{} },op2 ,op2 ,op1 #) is strict OrthoLattStr
;
end;

:: deftheorem Def2 defines TrivOrtLat ROBBINS1:def 2 :
TrivOrtLat = OrthoLattStr(# {{} },op2 ,op2 ,op1 #);

registration
cluster TrivComplLat -> non empty trivial strict ;
coherence
( not TrivComplLat is empty & TrivComplLat is trivial )
by REALSET2:def 5, STRUCT_0:def 1;
cluster TrivOrtLat -> non empty trivial strict ;
coherence
( not TrivOrtLat is empty & TrivOrtLat is trivial )
by REALSET2:def 5, STRUCT_0:def 1;
end;

registration
cluster non empty trivial strict OrthoLattStr ;
existence
ex b1 being OrthoLattStr st
( b1 is strict & not b1 is empty & b1 is trivial )
proof end;
cluster non empty trivial strict ComplLattStr ;
existence
ex b1 being ComplLattStr st
( b1 is strict & not b1 is empty & b1 is trivial )
proof end;
end;

registration
let c1 be non empty trivial ComplLattStr ;
cluster ComplStr(# the carrier of a1,the Compl of a1 #) -> non empty trivial ;
coherence
( not ComplStr(# the carrier of c1,the Compl of c1 #) is empty & ComplStr(# the carrier of c1,the Compl of c1 #) is trivial )
proof end;
end;

registration
cluster non empty trivial strict ComplStr ;
existence
ex b1 being ComplStr st
( b1 is strict & not b1 is empty & b1 is trivial )
proof end;
end;

definition
let c1 be non empty ComplStr ;
let c2 be Element of c1;
func c2 ` -> Element of a1 equals :: ROBBINS1:def 3
the Compl of a1 . a2;
coherence
the Compl of c1 . c2 is Element of c1
;
end;

:: deftheorem Def3 defines ` ROBBINS1:def 3 :
for b1 being non empty ComplStr
for b2 being Element of b1 holds b2 ` = the Compl of b1 . b2;

notation
let c1 be non empty ComplLattStr ;
let c2, c3 be Element of c1;
synonym c2 + c3 for c2 "\/" c3;
end;

definition
let c1 be non empty ComplLattStr ;
let c2, c3 be Element of c1;
func c2 *' c3 -> Element of a1 equals :: ROBBINS1:def 4
((a2 ` ) "\/" (a3 ` )) ` ;
coherence
((c2 ` ) "\/" (c3 ` )) ` is Element of c1
;
end;

:: deftheorem Def4 defines *' ROBBINS1:def 4 :
for b1 being non empty ComplLattStr
for b2, b3 being Element of b1 holds b2 *' b3 = ((b2 ` ) "\/" (b3 ` )) ` ;

definition
let c1 be non empty ComplLattStr ;
attr a1 is Robbins means :Def5: :: ROBBINS1:def 5
for b1, b2 being Element of a1 holds (((b1 + b2) ` ) + ((b1 + (b2 ` )) ` )) ` = b1;
attr a1 is Huntington means :Def6: :: ROBBINS1:def 6
for b1, b2 being Element of a1 holds (((b1 ` ) + (b2 ` )) ` ) + (((b1 ` ) + b2) ` ) = b1;
end;

:: deftheorem Def5 defines Robbins ROBBINS1:def 5 :
for b1 being non empty ComplLattStr holds
( b1 is Robbins iff for b2, b3 being Element of b1 holds (((b2 + b3) ` ) + ((b2 + (b3 ` )) ` )) ` = b2 );

:: deftheorem Def6 defines Huntington ROBBINS1:def 6 :
for b1 being non empty ComplLattStr holds
( b1 is Huntington iff for b2, b3 being Element of b1 holds (((b2 ` ) + (b3 ` )) ` ) + (((b2 ` ) + b3) ` ) = b2 );

definition
let c1 be non empty \/-SemiLattStr ;
attr a1 is join-idempotent means :Def7: :: ROBBINS1:def 7
for b1 being Element of a1 holds b1 "\/" b1 = b1;
end;

:: deftheorem Def7 defines join-idempotent ROBBINS1:def 7 :
for b1 being non empty \/-SemiLattStr holds
( b1 is join-idempotent iff for b2 being Element of b1 holds b2 "\/" b2 = b2 );

registration
cluster TrivComplLat -> non empty join-commutative join-associative trivial strict Robbins Huntington join-idempotent ;
coherence
( TrivComplLat is join-commutative & TrivComplLat is join-associative & TrivComplLat is Robbins & TrivComplLat is Huntington & TrivComplLat is join-idempotent )
proof end;
cluster TrivOrtLat -> non empty join-commutative join-associative trivial strict Robbins Huntington ;
coherence
( TrivOrtLat is join-commutative & TrivOrtLat is join-associative & TrivOrtLat is Huntington & TrivOrtLat is Robbins )
proof end;
end;

registration
cluster TrivOrtLat -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing trivial strict Robbins Huntington ;
coherence
( TrivOrtLat is meet-commutative & TrivOrtLat is meet-associative & TrivOrtLat is meet-absorbing & TrivOrtLat is join-absorbing )
proof end;
end;

registration
cluster non empty join-commutative join-associative strict Robbins Huntington join-idempotent ComplLattStr ;
existence
ex b1 being non empty ComplLattStr st
( b1 is strict & b1 is join-associative & b1 is join-commutative & b1 is Robbins & b1 is join-idempotent & b1 is Huntington )
proof end;
end;

registration
cluster non empty Lattice-like strict Robbins Huntington OrthoLattStr ;
existence
ex b1 being non empty OrthoLattStr st
( b1 is strict & b1 is Lattice-like & b1 is Robbins & b1 is Huntington )
proof end;
end;

definition
let c1 be non empty join-commutative ComplLattStr ;
let c2, c3 be Element of c1;
redefine func + as c2 + c3 -> M2(the carrier of a1);
commutativity
for b1, b2 being Element of c1 holds b1 + b2 = b2 + b1
by LATTICES:def 4;
end;

theorem Th1: :: ROBBINS1:1
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds (b2 *' b3) + (b2 *' (b3 ` )) = b2 by Def6;

theorem Th2: :: ROBBINS1:2
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 + (b2 ` ) = (b2 ` ) + ((b2 ` ) ` )
proof end;

theorem Th3: :: ROBBINS1:3
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds (b2 ` ) ` = b2
proof end;

theorem Th4: :: ROBBINS1:4
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds b2 + (b2 ` ) = b3 + (b3 ` )
proof end;

theorem Th5: :: ROBBINS1:5
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr ex b2 being Element of b1 st
for b3 being Element of b1 holds
( b2 + b3 = b2 & b3 + (b3 ` ) = b2 )
proof end;

theorem Th6: :: ROBBINS1:6
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr holds b1 is upper-bounded
proof end;

registration
cluster non empty join-commutative join-associative Huntington join-idempotent -> non empty upper-bounded ComplLattStr ;
coherence
for b1 being non empty ComplLattStr st b1 is join-commutative & b1 is join-associative & b1 is join-idempotent & b1 is Huntington holds
b1 is upper-bounded
by Th6;
end;

definition
let c1 be non empty join-commutative join-associative Huntington join-idempotent ComplLattStr ;
redefine func Top c1 -> M2(the carrier of a1) means :Def8: :: ROBBINS1:def 8
ex b1 being Element of a1 st a2 = b1 + (b1 ` );
compatibility
for b1 being M2(the carrier of c1) holds
( b1 = Top c1 iff ex b2 being Element of c1 st b1 = b2 + (b2 ` ) )
proof end;
end;

:: deftheorem Def8 defines Top ROBBINS1:def 8 :
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr
for b2 being M2(the carrier of b1) holds
( b2 = Top b1 iff ex b3 being Element of b1 st b2 = b3 + (b3 ` ) );

theorem Th7: :: ROBBINS1:7
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr ex b2 being Element of b1 st
for b3 being Element of b1 holds
( b2 *' b3 = b2 & (b3 + (b3 ` )) ` = b2 )
proof end;

theorem Th8: :: ROBBINS1:8
for b1 being non empty join-commutative join-associative ComplLattStr
for b2, b3 being Element of b1 holds b2 *' b3 = b3 *' b2
proof end;

definition
let c1 be non empty join-commutative join-associative ComplLattStr ;
let c2, c3 be Element of c1;
redefine func *' as c2 *' c3 -> Element of a1;
commutativity
for b1, b2 being Element of c1 holds b1 *' b2 = b2 *' b1
by Th8;
end;

definition
let c1 be non empty join-commutative join-associative Huntington join-idempotent ComplLattStr ;
func Bot c1 -> Element of a1 means :Def9: :: ROBBINS1:def 9
for b1 being Element of a1 holds a2 *' b1 = a2;
existence
ex b1 being Element of c1 st
for b2 being Element of c1 holds b1 *' b2 = b1
proof end;
uniqueness
for b1, b2 being Element of c1 st ( for b3 being Element of c1 holds b1 *' b3 = b1 ) & ( for b3 being Element of c1 holds b2 *' b3 = b2 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines Bot ROBBINS1:def 9 :
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr
for b2 being Element of b1 holds
( b2 = Bot b1 iff for b3 being Element of b1 holds b2 *' b3 = b2 );

theorem Th9: :: ROBBINS1:9
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr
for b2 being Element of b1 holds Bot b1 = (b2 + (b2 ` )) `
proof end;

theorem Th10: :: ROBBINS1:10
for b1 being non empty join-commutative join-associative Huntington join-idempotent ComplLattStr holds
( (Top b1) ` = Bot b1 & Top b1 = (Bot b1) ` )
proof end;

theorem Th11: :: ROBBINS1:11
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 st b2 ` = b3 ` holds
b2 = b3
proof end;

theorem Th12: :: ROBBINS1:12
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds b2 + ((b3 + (b3 ` )) ` ) = b2
proof end;

theorem Th13: :: ROBBINS1:13
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 + b2 = b2
proof end;

registration
cluster non empty join-commutative join-associative Huntington -> non empty join-idempotent ComplLattStr ;
coherence
for b1 being non empty ComplLattStr st b1 is join-commutative & b1 is join-associative & b1 is Huntington holds
b1 is join-idempotent
proof end;
end;

theorem Th14: :: ROBBINS1:14
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 + (Bot b1) = b2
proof end;

theorem Th15: :: ROBBINS1:15
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 *' (Top b1) = b2
proof end;

theorem Th16: :: ROBBINS1:16
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 *' (b2 ` ) = Bot b1
proof end;

theorem Th17: :: ROBBINS1:17
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds b2 *' (b3 *' b4) = (b2 *' b3) *' b4
proof end;

theorem Th18: :: ROBBINS1:18
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds b2 + b3 = ((b2 ` ) *' (b3 ` )) `
proof end;

theorem Th19: :: ROBBINS1:19
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 *' b2 = b2
proof end;

theorem Th20: :: ROBBINS1:20
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2 being Element of b1 holds b2 + (Top b1) = Top b1
proof end;

theorem Th21: :: ROBBINS1:21
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds b2 + (b2 *' b3) = b2
proof end;

theorem Th22: :: ROBBINS1:22
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 holds b2 *' (b2 + b3) = b2
proof end;

theorem Th23: :: ROBBINS1:23
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 st (b2 ` ) + b3 = Top b1 & (b3 ` ) + b2 = Top b1 holds
b2 = b3
proof end;

theorem Th24: :: ROBBINS1:24
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3 being Element of b1 st b2 + b3 = Top b1 & b2 *' b3 = Bot b1 holds
b2 ` = b3
proof end;

theorem Th25: :: ROBBINS1:25
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds ((((((((b2 *' b3) *' b4) + ((b2 *' b3) *' (b4 ` ))) + ((b2 *' (b3 ` )) *' b4)) + ((b2 *' (b3 ` )) *' (b4 ` ))) + (((b2 ` ) *' b3) *' b4)) + (((b2 ` ) *' b3) *' (b4 ` ))) + (((b2 ` ) *' (b3 ` )) *' b4)) + (((b2 ` ) *' (b3 ` )) *' (b4 ` )) = Top b1
proof end;

theorem Th26: :: ROBBINS1:26
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds
( (b2 *' b4) *' (b3 *' (b4 ` )) = Bot b1 & ((b2 *' b3) *' b4) *' (((b2 ` ) *' b3) *' b4) = Bot b1 & ((b2 *' (b3 ` )) *' b4) *' (((b2 ` ) *' b3) *' b4) = Bot b1 & ((b2 *' b3) *' b4) *' (((b2 ` ) *' (b3 ` )) *' b4) = Bot b1 & ((b2 *' b3) *' (b4 ` )) *' (((b2 ` ) *' (b3 ` )) *' (b4 ` )) = Bot b1 & ((b2 *' (b3 ` )) *' b4) *' (((b2 ` ) *' b3) *' b4) = Bot b1 )
proof end;

theorem Th27: :: ROBBINS1:27
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds (b2 *' b3) + (b2 *' b4) = (((b2 *' b3) *' b4) + ((b2 *' b3) *' (b4 ` ))) + ((b2 *' (b3 ` )) *' b4)
proof end;

theorem Th28: :: ROBBINS1:28
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds (b2 *' (b3 + b4)) ` = (((((b2 *' (b3 ` )) *' (b4 ` )) + (((b2 ` ) *' b3) *' b4)) + (((b2 ` ) *' b3) *' (b4 ` ))) + (((b2 ` ) *' (b3 ` )) *' b4)) + (((b2 ` ) *' (b3 ` )) *' (b4 ` ))
proof end;

theorem Th29: :: ROBBINS1:29
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds ((b2 *' b3) + (b2 *' b4)) + ((b2 *' (b3 + b4)) ` ) = Top b1
proof end;

theorem Th30: :: ROBBINS1:30
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds ((b2 *' b3) + (b2 *' b4)) *' ((b2 *' (b3 + b4)) ` ) = Bot b1
proof end;

theorem Th31: :: ROBBINS1:31
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds b2 *' (b3 + b4) = (b2 *' b3) + (b2 *' b4)
proof end;

theorem Th32: :: ROBBINS1:32
for b1 being non empty join-commutative join-associative Huntington ComplLattStr
for b2, b3, b4 being Element of b1 holds b2 + (b3 *' b4) = (b2 + b3) *' (b2 + b4)
proof end;

definition
let c1 be non empty OrthoLattStr ;
attr a1 is well-complemented means :Def10: :: ROBBINS1:def 10
for b1 being Element of a1 holds b1 ` is_a_complement_of b1;
end;

:: deftheorem Def10 defines well-complemented ROBBINS1:def 10 :
for b1 being non empty OrthoLattStr holds
( b1 is well-complemented iff for b2 being Element of b1 holds b2 ` is_a_complement_of b2 );

registration
cluster TrivOrtLat -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing upper-bounded Boolean trivial strict Robbins Huntington join-idempotent well-complemented ;
coherence
( TrivOrtLat is Boolean & TrivOrtLat is well-complemented )
proof end;
end;

definition
mode preOrthoLattice is non empty Lattice-like OrthoLattStr ;
end;

registration
cluster Boolean strict well-complemented OrthoLattStr ;
existence
ex b1 being preOrthoLattice st
( b1 is strict & b1 is Boolean & b1 is well-complemented )
proof end;
end;

theorem Th33: :: ROBBINS1:33
for b1 being distributive well-complemented preOrthoLattice
for b2 being Element of b1 holds (b2 ` ) ` = b2
proof end;

theorem Th34: :: ROBBINS1:34
for b1 being distributive bounded well-complemented preOrthoLattice
for b2, b3 being Element of b1 holds b2 "/\" b3 = ((b2 ` ) "\/" (b3 ` )) `
proof end;

definition
let c1 be non empty ComplLattStr ;
func CLatt c1 -> strict OrthoLattStr means :Def11: :: ROBBINS1:def 11
( the carrier of a2 = the carrier of a1 & the L_join of a2 = the L_join of a1 & the Compl of a2 = the Compl of a1 & ( for b1, b2 being Element of a1 holds the L_meet of a2 . b1,b2 = b1 *' b2 ) );
existence
ex b1 being strict OrthoLattStr st
( the carrier of b1 = the carrier of c1 & the L_join of b1 = the L_join of c1 & the Compl of b1 = the Compl of c1 & ( for b2, b3 being Element of c1 holds the L_meet of b1 . b2,b3 = b2 *' b3 ) )
proof end;
uniqueness
for b1, b2 being strict OrthoLattStr st the carrier of b1 = the carrier of c1 & the L_join of b1 = the L_join of c1 & the Compl of b1 = the Compl of c1 & ( for b3, b4 being Element of c1 holds the L_meet of b1 . b3,b4 = b3 *' b4 ) & the carrier of b2 = the carrier of c1 & the L_join of b2 = the L_join of c1 & the Compl of b2 = the Compl of c1 & ( for b3, b4 being Element of c1 holds the L_meet of b2 . b3,b4 = b3 *' b4 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines CLatt ROBBINS1:def 11 :
for b1 being non empty ComplLattStr
for b2 being strict OrthoLattStr holds
( b2 = CLatt b1 iff ( the carrier of b2 = the carrier of b1 & the L_join of b2 = the L_join of b1 & the Compl of b2 = the Compl of b1 & ( for b3, b4 being Element of b1 holds the L_meet of b2 . b3,b4 = b3 *' b4 ) ) );

registration
let c1 be non empty ComplLattStr ;
cluster CLatt a1 -> non empty strict ;
coherence
not CLatt c1 is empty
proof end;
end;

registration
let c1 be non empty join-commutative ComplLattStr ;
cluster CLatt a1 -> non empty join-commutative strict ;
coherence
CLatt c1 is join-commutative
proof end;
end;

registration
let c1 be non empty join-associative ComplLattStr ;
cluster CLatt a1 -> non empty join-associative strict ;
coherence
CLatt c1 is join-associative
proof end;
end;

registration
let c1 be non empty join-commutative join-associative ComplLattStr ;
cluster CLatt a1 -> non empty join-commutative join-associative meet-commutative strict ;
coherence
CLatt c1 is meet-commutative
proof end;
end;

theorem Th35: :: ROBBINS1:35
for b1 being non empty ComplLattStr
for b2, b3 being Element of b1
for b4, b5 being Element of (CLatt b1) st b2 = b4 & b3 = b5 holds
( b2 *' b3 = b4 "/\" b5 & b2 + b3 = b4 "\/" b5 & b2 ` = b4 ` ) by Def11;

registration
let c1 be non empty join-commutative join-associative Huntington ComplLattStr ;
cluster CLatt a1 -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing strict ;
coherence
( CLatt c1 is meet-associative & CLatt c1 is join-absorbing & CLatt c1 is meet-absorbing )
proof end;
end;

registration
let c1 be non empty Huntington ComplLattStr ;
cluster CLatt a1 -> non empty strict Huntington ;
coherence
CLatt c1 is Huntington
proof end;
end;

registration
let c1 be non empty join-commutative join-associative Huntington ComplLattStr ;
cluster CLatt a1 -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing lower-bounded upper-bounded strict Huntington join-idempotent ;
coherence
CLatt c1 is lower-bounded
proof end;
end;

theorem Th36: :: ROBBINS1:36
for b1 being non empty join-commutative join-associative Huntington ComplLattStr holds Bot b1 = Bottom (CLatt b1)
proof end;

registration
let c1 be non empty join-commutative join-associative Huntington ComplLattStr ;
cluster CLatt a1 -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing distributive lower-bounded upper-bounded bounded complemented strict Huntington join-idempotent ;
coherence
( CLatt c1 is complemented & CLatt c1 is distributive & CLatt c1 is bounded )
proof end;
end;

notation
let c1 be non empty ComplLattStr ;
let c2 be Element of c1;
synonym - c2 for c2 ` ;
end;

definition
let c1 be non empty join-commutative ComplLattStr ;
redefine attr a1 is Huntington means :Def12: :: ROBBINS1:def 12
for b1, b2 being Element of a1 holds (- ((- b1) + (- b2))) + (- (b1 + (- b2))) = b2;
compatibility
( c1 is Huntington iff for b1, b2 being Element of c1 holds (- ((- b1) + (- b2))) + (- (b1 + (- b2))) = b2 )
proof end;
end;

:: deftheorem Def12 defines Huntington ROBBINS1:def 12 :
for b1 being non empty join-commutative ComplLattStr holds
( b1 is Huntington iff for b2, b3 being Element of b1 holds (- ((- b2) + (- b3))) + (- (b2 + (- b3))) = b3 );

definition
let c1 be non empty ComplLattStr ;
attr a1 is with_idempotent_element means :Def13: :: ROBBINS1:def 13
ex b1 being Element of a1 st b1 + b1 = b1;
correctness
;
end;

:: deftheorem Def13 defines with_idempotent_element ROBBINS1:def 13 :
for b1 being non empty ComplLattStr holds
( b1 is with_idempotent_element iff ex b2 being Element of b1 st b2 + b2 = b2 );

definition
let c1 be non empty ComplLattStr ;
let c2, c3 be Element of c1;
func \delta c2,c3 -> Element of a1 equals :: ROBBINS1:def 14
- ((- a2) + a3);
coherence
- ((- c2) + c3) is Element of c1
;
end;

:: deftheorem Def14 defines \delta ROBBINS1:def 14 :
for b1 being non empty ComplLattStr
for b2, b3 being Element of b1 holds \delta b2,b3 = - ((- b2) + b3);

definition
let c1 be non empty ComplLattStr ;
let c2, c3 be Element of c1;
func Expand c2,c3 -> Element of a1 equals :: ROBBINS1:def 15
\delta (a2 + a3),(\delta a2,a3);
coherence
\delta (c2 + c3),(\delta c2,c3) is Element of c1
;
end;

:: deftheorem Def15 defines Expand ROBBINS1:def 15 :
for b1 being non empty ComplLattStr
for b2, b3 being Element of b1 holds Expand b2,b3 = \delta (b2 + b3),(\delta b2,b3);

definition
let c1 be non empty ComplLattStr ;
let c2 be Element of c1;
func c2 _0 -> Element of a1 equals :: ROBBINS1:def 16
- ((- a2) + a2);
coherence
- ((- c2) + c2) is Element of c1
;
func Double c2 -> Element of a1 equals :: ROBBINS1:def 17
a2 + a2;
coherence
c2 + c2 is Element of c1
;
end;

:: deftheorem Def16 defines _0 ROBBINS1:def 16 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds b2 _0 = - ((- b2) + b2);

:: deftheorem Def17 defines Double ROBBINS1:def 17 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds Double b2 = b2 + b2;

definition
let c1 be non empty ComplLattStr ;
let c2 be Element of c1;
func c2 _1 -> Element of a1 equals :: ROBBINS1:def 18
(a2 _0 ) + a2;
coherence
(c2 _0 ) + c2 is Element of c1
;
func c2 _2 -> Element of a1 equals :: ROBBINS1:def 19
(a2 _0 ) + (Double a2);
coherence
(c2 _0 ) + (Double c2) is Element of c1
;
func c2 _3 -> Element of a1 equals :: ROBBINS1:def 20
(a2 _0 ) + ((Double a2) + a2);
coherence
(c2 _0 ) + ((Double c2) + c2) is Element of c1
;
func c2 _4 -> Element of a1 equals :: ROBBINS1:def 21
(a2 _0 ) + ((Double a2) + (Double a2));
coherence
(c2 _0 ) + ((Double c2) + (Double c2)) is Element of c1
;
end;

:: deftheorem Def18 defines _1 ROBBINS1:def 18 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds b2 _1 = (b2 _0 ) + b2;

:: deftheorem Def19 defines _2 ROBBINS1:def 19 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds b2 _2 = (b2 _0 ) + (Double b2);

:: deftheorem Def20 defines _3 ROBBINS1:def 20 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds b2 _3 = (b2 _0 ) + ((Double b2) + b2);

:: deftheorem Def21 defines _4 ROBBINS1:def 21 :
for b1 being non empty ComplLattStr
for b2 being Element of b1 holds b2 _4 = (b2 _0 ) + ((Double b2) + (Double b2));

theorem Th37: :: ROBBINS1:37
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2, b3 being Element of b1 holds \delta (b2 + b3),(\delta b2,b3) = b3
proof end;

theorem Th38: :: ROBBINS1:38
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2, b3 being Element of b1 holds Expand b2,b3 = b3 by Th37;

theorem Th39: :: ROBBINS1:39
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2, b3, b4 being Element of b1 holds \delta ((- b2) + b3),b4 = - ((\delta b2,b3) + b4) ;

theorem Th40: :: ROBBINS1:40
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta b2,b2 = b2 _0 ;

theorem Th41: :: ROBBINS1:41
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (Double b2),(b2 _0 ) = b2
proof end;

theorem Th42: :: ROBBINS1:42
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (b2 _2 ),b2 = b2 _0
proof end;

theorem Th43: :: ROBBINS1:43
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds (b2 _2 ) + b2 = b2 _3 by LATTICES:def 5;

theorem Th44: :: ROBBINS1:44
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds (b2 _4 ) + (b2 _0 ) = (b2 _3 ) + (b2 _1 )
proof end;

theorem Th45: :: ROBBINS1:45
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds (b2 _3 ) + (b2 _0 ) = (b2 _2 ) + (b2 _1 )
proof end;

theorem Th46: :: ROBBINS1:46
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds (b2 _3 ) + b2 = b2 _4
proof end;

theorem Th47: :: ROBBINS1:47
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (b2 _3 ),(b2 _0 ) = b2
proof end;

theorem Th48: :: ROBBINS1:48
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2, b3, b4 being Element of b1 st - b2 = - b3 holds
\delta b2,b4 = \delta b3,b4 ;

theorem Th49: :: ROBBINS1:49
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2, b3 being Element of b1 holds \delta b2,(- b3) = \delta b3,(- b2)
proof end;

theorem Th50: :: ROBBINS1:50
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (b2 _3 ),b2 = b2 _0
proof end;

theorem Th51: :: ROBBINS1:51
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta ((b2 _1 ) + (b2 _3 )),b2 = b2 _0
proof end;

theorem Th52: :: ROBBINS1:52
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta ((b2 _1 ) + (b2 _2 )),b2 = b2 _0
proof end;

theorem Th53: :: ROBBINS1:53
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta ((b2 _1 ) + (b2 _3 )),(b2 _0 ) = b2
proof end;

definition
let c1 be non empty join-commutative join-associative Robbins ComplLattStr ;
let c2 be Element of c1;
func \beta c2 -> Element of a1 equals :: ROBBINS1:def 22
((- ((a2 _1 ) + (a2 _3 ))) + a2) + (- (a2 _3 ));
coherence
((- ((c2 _1 ) + (c2 _3 ))) + c2) + (- (c2 _3 )) is Element of c1
;
end;

:: deftheorem Def22 defines \beta ROBBINS1:def 22 :
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \beta b2 = ((- ((b2 _1 ) + (b2 _3 ))) + b2) + (- (b2 _3 ));

theorem Th54: :: ROBBINS1:54
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (\beta b2),b2 = - (b2 _3 )
proof end;

theorem Th55: :: ROBBINS1:55
for b1 being non empty join-commutative join-associative Robbins ComplLattStr
for b2 being Element of b1 holds \delta (\beta b2),b2 = - ((b2 _1 ) + (b2 _3 ))
proof end;

theorem Th56: :: ROBBINS1:56
for b1 being non empty join-commutative join-associative Robbins ComplLattStr ex b2, b3 being Element of b1 st - (b2 + b3) = - b3
proof end;

theorem Th57: :: ROBBINS1:57
for b1 being non empty join-commutative join-associative Robbins ComplLattStr st ( for b2 being Element of b1 holds - (- b2) = b2 ) holds
b1 is Huntington
proof end;

theorem Th58: :: ROBBINS1:58
for b1 being non empty join-commutative join-associative Robbins ComplLattStr st b1 is with_idempotent_element holds
b1 is Huntington
proof end;

registration
cluster TrivComplLat -> non empty join-commutative join-associative upper-bounded trivial strict Robbins Huntington join-idempotent with_idempotent_element ;
coherence
TrivComplLat is with_idempotent_element
proof end;
end;

registration
cluster non empty join-commutative join-associative Robbins with_idempotent_element -> non empty join-commutative join-associative upper-bounded Robbins Huntington join-idempotent ComplLattStr ;
coherence
for b1 being non empty join-commutative join-associative Robbins ComplLattStr st b1 is with_idempotent_element holds
b1 is Huntington
by Th58;
end;

theorem Th59: :: ROBBINS1:59
for b1 being non empty join-commutative join-associative Robbins ComplLattStr st ex b2, b3 being Element of b1 st b2 + b3 = b2 holds
b1 is Huntington
proof end;

theorem Th60: :: ROBBINS1:60
for b1 being non empty join-commutative join-associative Robbins ComplLattStr ex b2, b3 being Element of b1 st b2 + b3 = b3
proof end;

registration
cluster non empty join-commutative join-associative Robbins -> non empty join-commutative join-associative upper-bounded Huntington join-idempotent ComplLattStr ;
coherence
for b1 being non empty join-commutative join-associative ComplLattStr st b1 is Robbins holds
b1 is Huntington
proof end;
end;

definition
let c1 be non empty OrthoLattStr ;
attr a1 is de_Morgan means :Def23: :: ROBBINS1:def 23
for b1, b2 being Element of a1 holds b1 "/\" b2 = ((b1 ` ) "\/" (b2 ` )) ` ;
end;

:: deftheorem Def23 defines de_Morgan ROBBINS1:def 23 :
for b1 being non empty OrthoLattStr holds
( b1 is de_Morgan iff for b2, b3 being Element of b1 holds b2 "/\" b3 = ((b2 ` ) "\/" (b3 ` )) ` );

registration
let c1 be non empty ComplLattStr ;
cluster CLatt a1 -> non empty strict de_Morgan ;
coherence
CLatt c1 is de_Morgan
proof end;
end;

theorem Th61: :: ROBBINS1:61
for b1 being non empty join-commutative meet-commutative well-complemented OrthoLattStr
for b2 being Element of b1 holds
( b2 + (b2 ` ) = Top b1 & b2 "/\" (b2 ` ) = Bottom b1 )
proof end;

theorem Th62: :: ROBBINS1:62
for b1 being distributive bounded well-complemented preOrthoLattice holds (Top b1) ` = Bottom b1
proof end;

registration
cluster TrivOrtLat -> non empty join-commutative join-associative meet-commutative meet-associative meet-absorbing join-absorbing upper-bounded Boolean trivial strict Robbins Huntington join-idempotent well-complemented de_Morgan ;
coherence
TrivOrtLat is de_Morgan
proof end;
end;

registration
cluster upper-bounded Boolean strict Robbins Huntington join-idempotent de_Morgan OrthoLattStr ;
existence
ex b1 being preOrthoLattice st
( b1 is strict & b1 is de_Morgan & b1 is Boolean & b1 is Robbins & b1 is Huntington )
proof end;
end;

Lemma64: for b1 being non empty de_Morgan OrthoLattStr
for b2, b3 being Element of b1 holds b2 *' b3 = b2 "/\" b3
by Def23;

registration
cluster non empty join-commutative join-associative de_Morgan -> non empty meet-commutative OrthoLattStr ;
coherence
for b1 being non empty OrthoLattStr st b1 is join-associative & b1 is join-commutative & b1 is de_Morgan holds
b1 is meet-commutative
proof end;
end;

theorem Th63: :: ROBBINS1:63
for b1 being Huntington de_Morgan preOrthoLattice holds Bot b1 = Bottom b1
proof end;

registration
cluster Boolean well-complemented -> upper-bounded Huntington join-idempotent well-complemented OrthoLattStr ;
coherence
for b1 being well-complemented preOrthoLattice st b1 is Boolean holds
b1 is Huntington
proof end;
end;

registration
cluster Huntington de_Morgan -> Boolean de_Morgan OrthoLattStr ;
coherence
for b1 being de_Morgan preOrthoLattice st b1 is Huntington holds
b1 is Boolean
proof end;
end;

registration
cluster Robbins de_Morgan -> Boolean OrthoLattStr ;
coherence
for b1 being preOrthoLattice st b1 is Robbins & b1 is de_Morgan holds
b1 is Boolean
proof end;
cluster Boolean well-complemented -> upper-bounded Robbins Huntington join-idempotent well-complemented OrthoLattStr ;
coherence
for b1 being well-complemented preOrthoLattice st b1 is Boolean holds
b1 is Robbins
proof end;
end;