:: LATTICE3  semantic presentation
deffunc H1(   LattStr ) ->    set  = the carrier of a1;
deffunc H2(   LattStr ) ->    Relation of [:the carrier of a1,the carrier of a1:],the carrier of a1 = the L_join of a1;
deffunc H3(   LattStr ) ->    Relation of [:the carrier of a1,the carrier of a1:],the carrier of a1 = the L_meet of a1;
definition
let c1 be    
set ;
func  BooleLatt c1 ->  strict  LattStr  means :
Def1: 
:: LATTICE3:def 1
( the 
carrier of 
a2 =  bool a1 & ( for 
b1, 
b2 being  
Subset of 
a1 holds 
 ( the 
L_join of 
a2 . b1,
b2 = b1 \/ b2 & the 
L_meet of 
a2 . b1,
b2 = b1 /\ b2 ) ) );
existence 
ex b1 being strict  LattStr  st 
( the carrier of b1 =  bool c1 & ( for b2, b3 being  Subset of c1 holds 
 ( the L_join of b1 . b2,b3 = b2 \/ b3 & the L_meet of b1 . b2,b3 = b2 /\ b3 ) ) )
 
uniqueness 
for b1, b2 being strict  LattStr   st the carrier of b1 =  bool c1 & ( for b3, b4 being  Subset of c1 holds 
 ( the L_join of b1 . b3,b4 = b3 \/ b4 & the L_meet of b1 . b3,b4 = b3 /\ b4 ) ) & the carrier of b2 =  bool c1 & ( for b3, b4 being  Subset of c1 holds 
 ( the L_join of b2 . b3,b4 = b3 \/ b4 & the L_meet of b2 . b3,b4 = b3 /\ b4 ) ) holds 
b1 = b2
 
 
end;
 
:: deftheorem Def1   defines BooleLatt LATTICE3:def 1 : 
theorem Th1: :: LATTICE3:1
theorem Th2: :: LATTICE3:2
theorem Th3: :: LATTICE3:3
theorem Th4: :: LATTICE3:4
theorem Th5: :: LATTICE3:5
:: deftheorem Def2   defines LattPOSet LATTICE3:def 2 : 
theorem Th6: :: LATTICE3:6
:: deftheorem Def3   defines % LATTICE3:def 3 : 
:: deftheorem Def4   defines % LATTICE3:def 4 : 
theorem Th7: :: LATTICE3:7
:: deftheorem Def5   defines ~ LATTICE3:def 5 : 
theorem Th8: :: LATTICE3:8
:: deftheorem Def6   defines ~ LATTICE3:def 6 : 
:: deftheorem Def7   defines ~ LATTICE3:def 7 : 
theorem Th9: :: LATTICE3:9
:: deftheorem Def8   defines is_<=_than LATTICE3:def 8 : 
:: deftheorem Def9   defines is_<=_than LATTICE3:def 9 : 
:: deftheorem Def10   defines with_suprema LATTICE3:def 10 : 
:: deftheorem Def11   defines with_infima LATTICE3:def 11 : 
theorem Th10: :: LATTICE3:10
theorem Th11: :: LATTICE3:11
:: deftheorem Def12   defines complete LATTICE3:def 12 : 
theorem Th12: :: LATTICE3:12
:: deftheorem Def13   defines "\/" LATTICE3:def 13 : 
:: deftheorem Def14   defines "/\" LATTICE3:def 14 : 
theorem Th13: :: LATTICE3:13
theorem Th14: :: LATTICE3:14
theorem Th15: :: LATTICE3:15
theorem Th16: :: LATTICE3:16
theorem Th17: :: LATTICE3:17
theorem Th18: :: LATTICE3:18
theorem Th19: :: LATTICE3:19
:: deftheorem Def15   defines latt LATTICE3:def 15 : 
theorem Th20: :: LATTICE3:20
:: deftheorem Def16   defines is_less_than LATTICE3:def 16 : 
:: deftheorem Def17   defines is_less_than LATTICE3:def 17 : 
theorem Th21: :: LATTICE3:21
theorem Th22: :: LATTICE3:22
:: deftheorem Def18   defines complete LATTICE3:def 18 : 
:: deftheorem Def19   defines \/-distributive LATTICE3:def 19 : 
:: deftheorem Def20   defines /\-distributive LATTICE3:def 20 : 
theorem Th23: :: LATTICE3:23
theorem Th24: :: LATTICE3:24
theorem Th25: :: LATTICE3:25
theorem Th26: :: LATTICE3:26
theorem Th27: :: LATTICE3:27
theorem Th28: :: LATTICE3:28
theorem Th29: :: LATTICE3:29
theorem Th30: :: LATTICE3:30
theorem Th31: :: LATTICE3:31
:: deftheorem Def21   defines "\/" LATTICE3:def 21 : 
:: deftheorem Def22   defines "/\" LATTICE3:def 22 : 
theorem Th32: :: LATTICE3:32
theorem Th33: :: LATTICE3:33
theorem Th34: :: LATTICE3:34
theorem Th35: :: LATTICE3:35
theorem Th36: :: LATTICE3:36
theorem Th37: :: LATTICE3:37
theorem Th38: :: LATTICE3:38
theorem Th39: :: LATTICE3:39
canceled; 
theorem Th40: :: LATTICE3:40
theorem Th41: :: LATTICE3:41
theorem Th42: :: LATTICE3:42
theorem Th43: :: LATTICE3:43
theorem Th44: :: LATTICE3:44
theorem Th45: :: LATTICE3:45
theorem Th46: :: LATTICE3:46
theorem Th47: :: LATTICE3:47
theorem Th48: :: LATTICE3:48
theorem Th49: :: LATTICE3:49
theorem Th50: :: LATTICE3:50
theorem Th51: :: LATTICE3:51
theorem Th52: :: LATTICE3:52
theorem Th53: :: LATTICE3:53
theorem Th54: :: LATTICE3:54
theorem Th55: :: LATTICE3:55
E50: 
now 
let c1 be  non 
empty  set ;
let c2 be   
Function of  
bool c1,
c1;
assume that E51: 
for 
b1 being   
Element of 
c1 holds  
c2 . {b1} = b1
 and E52: 
for 
b1 being  
Subset-Family of 
c1 holds  
c2 . (c2 .: b1) = c2 . (union b1)
 ;
defpred S1[   
set ,   
set ] 
means c2 . {a1,a2} = a2;
consider c3 being   
Relation of 
c1 such that E53: 
for 
b1, 
b2 being   
set  holds 
 ( 
[b1,b2] in c3 iff ( 
b1 in c1 & 
b2 in c1 & 
S1[
b1,
b2] ) )
 
from RELSET_1:sch 1();
E54: 
 
dom c2 =  bool c1
 by FUNCT_2:def 1;
E56: 
for 
b1, 
b2 being   
Element of 
c1 for 
b3 being  
Subset of 
c1  st 
b2 in b3 holds 
c2 . (b3 \/ {b1}) = c2 . { (c2 . {b4,b1}) where B is    Element of c1 : b4 in b3 } 
 
E57: 
c3 is_reflexive_in c1
 
E58: 
c3 is_antisymmetric_in c1
 
E59: 
c3 is_transitive_in c1
 
proof 
let c4, 
c5, 
c6 be    
set ; 
:: according to RELAT_2:def 8
assume E60: 
( 
c4 in c1 & 
c5 in c1 & 
c6 in c1 & 
[c4,c5] in c3 & 
[c5,c6] in c3 )
 ;
then reconsider c7 = 
c4, 
c8 = 
c5, 
c9 = 
c6 as    
Element of 
c1 ;
E61: 
( 
c2 . {c4,c5} = c5 & 
c2 . {c5,c6} = c6 )
 
by E53, E60;
then c2 . {c7,c9} = 
c2 . {(c2 . {c7}),(c2 . {c8,c9})}
by E51
.= 
c2 . ({c7} \/ {c8,c9})
by E55
.= 
c2 . {c7,c8,c9}
by ENUMSET1:42
.= 
c2 . ({c7,c8} \/ {c9})
by ENUMSET1:43
.= 
c2 . {(c2 . {c7,c8}),(c2 . {c9})}
by E55
.= 
c9
by E51, E61
;
hence 
[c4,c6] in c3
 by E53;
 
end;
 
E60: 
 
dom c3 = c1
 by E57, ORDERS_1:98;
 field c3 = c1
 by E57, ORDERS_1:98;
then reconsider c4 = 
c3 as   
Order of 
c1 by E57, E58, E59, E60, PARTFUN1:def 4, RELAT_2:def 9, RELAT_2:def 12, RELAT_2:def 16;
set c5 =  
RelStr(# 
c1,
c4 #);
 RelStr(# 
c1,
c4 #) is 
complete
 
then reconsider c6 =  
RelStr(# 
c1,
c4 #) as  non 
empty strict complete Poset ;
take c7 =  
latt c6;
E61: 
( 
c6 is 
with_suprema & 
c6 is 
with_infima )
 
by Th12;
then E62: 
( 
c6 =  LattPOSet c7 &  
LattPOSet c7 =  RelStr(# 
H1(
c7),
(LattRel c7) #) )
 
by Def15;
hence 
H1(
c7) 
= c1
 ;
let c8 be   
Subset of 
c7;
reconsider c9 = 
c8 as   
Subset of 
c1 by E62;
reconsider c10 = 
c2 . c9 as   
Element of 
(LattPOSet c7) by E61, Def15;
set c11 =  
% c10;
c8 is_<=_than c10
 
then E63: 
c8 is_less_than  % c10
 by Th31;
hence  "\/" c8 = 
 
% c10
by E63, Def21
.= 
c2 . c8
;
 
end;
 
theorem Th56: :: LATTICE3:56