:: WAYBEL_0 semantic presentation

definition
let c1 be RelStr ;
let c2 be Subset of c1;
attr a2 is directed means :Def1: :: WAYBEL_0:def 1
for b1, b2 being Element of a1 st b1 in a2 & b2 in a2 holds
ex b3 being Element of a1 st
( b3 in a2 & b1 <= b3 & b2 <= b3 );
attr a2 is filtered means :Def2: :: WAYBEL_0:def 2
for b1, b2 being Element of a1 st b1 in a2 & b2 in a2 holds
ex b3 being Element of a1 st
( b3 in a2 & b3 <= b1 & b3 <= b2 );
end;

:: deftheorem Def1 defines directed WAYBEL_0:def 1 :
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is directed iff for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
ex b5 being Element of b1 st
( b5 in b2 & b3 <= b5 & b4 <= b5 ) );

:: deftheorem Def2 defines filtered WAYBEL_0:def 2 :
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is filtered iff for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
ex b5 being Element of b1 st
( b5 in b2 & b5 <= b3 & b5 <= b4 ) );

theorem Th1: :: WAYBEL_0:1
for b1 being non empty transitive RelStr
for b2 being Subset of b1 holds
( ( not b2 is empty & b2 is directed ) iff for b3 being finite Subset of b2 ex b4 being Element of b1 st
( b4 in b2 & b4 is_>=_than b3 ) )
proof end;

theorem Th2: :: WAYBEL_0:2
for b1 being non empty transitive RelStr
for b2 being Subset of b1 holds
( ( not b2 is empty & b2 is filtered ) iff for b3 being finite Subset of b2 ex b4 being Element of b1 st
( b4 in b2 & b4 is_<=_than b3 ) )
proof end;

registration
let c1 be RelStr ;
cluster {} a1 -> directed filtered ;
coherence
( {} c1 is directed & {} c1 is filtered )
proof end;
end;

registration
let c1 be RelStr ;
cluster directed filtered Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( b1 is directed & b1 is filtered )
proof end;
end;

theorem Th3: :: WAYBEL_0:3
for b1, b2 being RelStr st RelStr(# the carrier of b1,the InternalRel of b1 #) = RelStr(# the carrier of b2,the InternalRel of b2 #) holds
for b3 being Subset of b1
for b4 being Subset of b2 st b3 = b4 & b3 is directed holds
b4 is directed
proof end;

theorem Th4: :: WAYBEL_0:4
for b1, b2 being RelStr st RelStr(# the carrier of b1,the InternalRel of b1 #) = RelStr(# the carrier of b2,the InternalRel of b2 #) holds
for b3 being Subset of b1
for b4 being Subset of b2 st b3 = b4 & b3 is filtered holds
b4 is filtered
proof end;

theorem Th5: :: WAYBEL_0:5
for b1 being non empty reflexive RelStr
for b2 being Element of b1 holds
( {b2} is directed & {b2} is filtered )
proof end;

registration
let c1 be non empty reflexive RelStr ;
cluster non empty finite directed filtered Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( b1 is directed & b1 is filtered & not b1 is empty & b1 is finite )
proof end;
end;

registration
let c1 be with_suprema RelStr ;
cluster [#] a1 -> directed ;
coherence
[#] c1 is directed
proof end;
end;

registration
let c1 be non empty upper-bounded RelStr ;
cluster [#] a1 -> directed ;
coherence
[#] c1 is directed
proof end;
end;

registration
let c1 be with_infima RelStr ;
cluster [#] a1 -> filtered ;
coherence
[#] c1 is filtered
proof end;
end;

registration
let c1 be non empty lower-bounded RelStr ;
cluster [#] a1 -> filtered ;
coherence
[#] c1 is filtered
proof end;
end;

definition
let c1 be non empty RelStr ;
let c2 be SubRelStr of c1;
attr a2 is filtered-infs-inheriting means :Def3: :: WAYBEL_0:def 3
for b1 being filtered Subset of a2 st b1 <> {} & ex_inf_of b1,a1 holds
"/\" b1,a1 in the carrier of a2;
attr a2 is directed-sups-inheriting means :Def4: :: WAYBEL_0:def 4
for b1 being directed Subset of a2 st b1 <> {} & ex_sup_of b1,a1 holds
"\/" b1,a1 in the carrier of a2;
end;

:: deftheorem Def3 defines filtered-infs-inheriting WAYBEL_0:def 3 :
for b1 being non empty RelStr
for b2 being SubRelStr of b1 holds
( b2 is filtered-infs-inheriting iff for b3 being filtered Subset of b2 st b3 <> {} & ex_inf_of b3,b1 holds
"/\" b3,b1 in the carrier of b2 );

:: deftheorem Def4 defines directed-sups-inheriting WAYBEL_0:def 4 :
for b1 being non empty RelStr
for b2 being SubRelStr of b1 holds
( b2 is directed-sups-inheriting iff for b3 being directed Subset of b2 st b3 <> {} & ex_sup_of b3,b1 holds
"\/" b3,b1 in the carrier of b2 );

registration
let c1 be non empty RelStr ;
cluster infs-inheriting -> filtered-infs-inheriting SubRelStr of a1;
coherence
for b1 being SubRelStr of c1 st b1 is infs-inheriting holds
b1 is filtered-infs-inheriting
proof end;
cluster sups-inheriting -> directed-sups-inheriting SubRelStr of a1;
coherence
for b1 being SubRelStr of c1 st b1 is sups-inheriting holds
b1 is directed-sups-inheriting
proof end;
end;

registration
let c1 be non empty RelStr ;
cluster non empty strict full infs-inheriting sups-inheriting filtered-infs-inheriting directed-sups-inheriting SubRelStr of a1;
existence
ex b1 being SubRelStr of c1 st
( b1 is infs-inheriting & b1 is sups-inheriting & not b1 is empty & b1 is full & b1 is strict )
proof end;
end;

theorem Th6: :: WAYBEL_0:6
for b1 being non empty transitive RelStr
for b2 being non empty full filtered-infs-inheriting SubRelStr of b1
for b3 being filtered Subset of b2 st b3 <> {} & ex_inf_of b3,b1 holds
( ex_inf_of b3,b2 & "/\" b3,b2 = "/\" b3,b1 )
proof end;

theorem Th7: :: WAYBEL_0:7
for b1 being non empty transitive RelStr
for b2 being non empty full directed-sups-inheriting SubRelStr of b1
for b3 being directed Subset of b2 st b3 <> {} & ex_sup_of b3,b1 holds
( ex_sup_of b3,b2 & "\/" b3,b2 = "\/" b3,b1 )
proof end;

definition
let c1, c2 be non empty 1-sorted ;
let c3 be Function of c1,c2;
let c4 be Element of c1;
redefine func . as c3 . c4 -> Element of a2;
coherence
c3 . c4 is Element of c2
proof end;
end;

definition
let c1, c2 be RelStr ;
let c3 be Function of c1,c2;
attr a3 is antitone means :: WAYBEL_0:def 5
for b1, b2 being Element of a1 st b1 <= b2 holds
for b3, b4 being Element of a2 st b3 = a3 . b1 & b4 = a3 . b2 holds
b3 >= b4;
end;

:: deftheorem Def5 defines antitone WAYBEL_0:def 5 :
for b1, b2 being RelStr
for b3 being Function of b1,b2 holds
( b3 is antitone iff for b4, b5 being Element of b1 st b4 <= b5 holds
for b6, b7 being Element of b2 st b6 = b3 . b4 & b7 = b3 . b5 holds
b6 >= b7 );

definition
let c1 be 1-sorted ;
attr a2 is strict;
struct NetStr of c1 -> RelStr ;
aggr NetStr(# carrier, InternalRel, mapping #) -> NetStr of a1;
sel mapping c2 -> Function of the carrier of a2,the carrier of a1;
end;

registration
let c1 be 1-sorted ;
let c2 be non empty set ;
let c3 be Relation of c2;
let c4 be Function of c2,the carrier of c1;
cluster NetStr(# a2,a3,a4 #) -> non empty ;
coherence
not NetStr(# c2,c3,c4 #) is empty
proof end;
end;

definition
let c1 be RelStr ;
attr a1 is directed means :Def6: :: WAYBEL_0:def 6
[#] a1 is directed;
end;

:: deftheorem Def6 defines directed WAYBEL_0:def 6 :
for b1 being RelStr holds
( b1 is directed iff [#] b1 is directed );

registration
let c1 be 1-sorted ;
cluster non empty reflexive transitive antisymmetric strict directed NetStr of a1;
existence
ex b1 being strict NetStr of c1 st
( not b1 is empty & b1 is reflexive & b1 is transitive & b1 is antisymmetric & b1 is directed )
proof end;
end;

definition
let c1 be 1-sorted ;
mode prenet of a1 is non empty directed NetStr of a1;
end;

definition
let c1 be 1-sorted ;
mode net of a1 is transitive prenet of a1;
end;

definition
let c1 be non empty 1-sorted ;
let c2 be non empty NetStr of c1;
func netmap c2,c1 -> Function of a2,a1 equals :: WAYBEL_0:def 7
the mapping of a2;
coherence
the mapping of c2 is Function of c2,c1
;
let c3 be Element of c2;
func c2 . c3 -> Element of a1 equals :: WAYBEL_0:def 8
the mapping of a2 . a3;
correctness
coherence
the mapping of c2 . c3 is Element of c1
;
;
end;

:: deftheorem Def7 defines netmap WAYBEL_0:def 7 :
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1 holds netmap b2,b1 = the mapping of b2;

:: deftheorem Def8 defines . WAYBEL_0:def 8 :
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3 being Element of b2 holds b2 . b3 = the mapping of b2 . b3;

definition
let c1 be non empty RelStr ;
let c2 be non empty NetStr of c1;
attr a2 is monotone means :: WAYBEL_0:def 9
netmap a2,a1 is monotone;
attr a2 is antitone means :: WAYBEL_0:def 10
netmap a2,a1 is antitone;
end;

:: deftheorem Def9 defines monotone WAYBEL_0:def 9 :
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is monotone iff netmap b2,b1 is monotone );

:: deftheorem Def10 defines antitone WAYBEL_0:def 10 :
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is antitone iff netmap b2,b1 is antitone );

definition
let c1 be non empty 1-sorted ;
let c2 be non empty NetStr of c1;
let c3 be set ;
pred c2 is_eventually_in c3 means :Def11: :: WAYBEL_0:def 11
ex b1 being Element of a2 st
for b2 being Element of a2 st b1 <= b2 holds
a2 . b2 in a3;
pred c2 is_often_in c3 means :: WAYBEL_0:def 12
for b1 being Element of a2 ex b2 being Element of a2 st
( b1 <= b2 & a2 . b2 in a3 );
end;

:: deftheorem Def11 defines is_eventually_in WAYBEL_0:def 11 :
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3 being set holds
( b2 is_eventually_in b3 iff ex b4 being Element of b2 st
for b5 being Element of b2 st b4 <= b5 holds
b2 . b5 in b3 );

:: deftheorem Def12 defines is_often_in WAYBEL_0:def 12 :
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3 being set holds
( b2 is_often_in b3 iff for b4 being Element of b2 ex b5 being Element of b2 st
( b4 <= b5 & b2 . b5 in b3 ) );

theorem Th8: :: WAYBEL_0:8
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3, b4 being set st b3 c= b4 holds
( ( b2 is_eventually_in b3 implies b2 is_eventually_in b4 ) & ( b2 is_often_in b3 implies b2 is_often_in b4 ) )
proof end;

theorem Th9: :: WAYBEL_0:9
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3 being set holds
( b2 is_eventually_in b3 iff not b2 is_often_in the carrier of b1 \ b3 )
proof end;

theorem Th10: :: WAYBEL_0:10
for b1 being non empty 1-sorted
for b2 being non empty NetStr of b1
for b3 being set holds
( b2 is_often_in b3 iff not b2 is_eventually_in the carrier of b1 \ b3 )
proof end;

scheme :: WAYBEL_0:sch 1
s1{ F1() -> non empty RelStr , F2() -> non empty NetStr of F1(), P1[ set ] } :
( F2() is_eventually_in { (F2() . b1) where B is Element of F2() : P1[F2() . b1] } iff ex b1 being Element of F2() st
for b2 being Element of F2() st b1 <= b2 holds
P1[F2() . b2] )
proof end;

definition
let c1 be non empty RelStr ;
let c2 be non empty NetStr of c1;
attr a2 is eventually-directed means :Def13: :: WAYBEL_0:def 13
for b1 being Element of a2 holds a2 is_eventually_in { (a2 . b2) where B is Element of a2 : a2 . b1 <= a2 . b2 } ;
attr a2 is eventually-filtered means :Def14: :: WAYBEL_0:def 14
for b1 being Element of a2 holds a2 is_eventually_in { (a2 . b2) where B is Element of a2 : a2 . b1 >= a2 . b2 } ;
end;

:: deftheorem Def13 defines eventually-directed WAYBEL_0:def 13 :
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is eventually-directed iff for b3 being Element of b2 holds b2 is_eventually_in { (b2 . b4) where B is Element of b2 : b2 . b3 <= b2 . b4 } );

:: deftheorem Def14 defines eventually-filtered WAYBEL_0:def 14 :
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is eventually-filtered iff for b3 being Element of b2 holds b2 is_eventually_in { (b2 . b4) where B is Element of b2 : b2 . b3 >= b2 . b4 } );

theorem Th11: :: WAYBEL_0:11
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is eventually-directed iff for b3 being Element of b2 ex b4 being Element of b2 st
for b5 being Element of b2 st b4 <= b5 holds
b2 . b3 <= b2 . b5 )
proof end;

theorem Th12: :: WAYBEL_0:12
for b1 being non empty RelStr
for b2 being non empty NetStr of b1 holds
( b2 is eventually-filtered iff for b3 being Element of b2 ex b4 being Element of b2 st
for b5 being Element of b2 st b4 <= b5 holds
b2 . b3 >= b2 . b5 )
proof end;

registration
let c1 be non empty RelStr ;
cluster monotone -> eventually-directed NetStr of a1;
coherence
for b1 being prenet of c1 st b1 is monotone holds
b1 is eventually-directed
proof end;
cluster antitone -> eventually-filtered NetStr of a1;
coherence
for b1 being prenet of c1 st b1 is antitone holds
b1 is eventually-filtered
proof end;
end;

registration
let c1 be non empty reflexive RelStr ;
cluster strict monotone antitone eventually-directed eventually-filtered NetStr of a1;
existence
ex b1 being prenet of c1 st
( b1 is monotone & b1 is antitone & b1 is strict )
proof end;
end;

definition
let c1 be RelStr ;
let c2 be Subset of c1;
func downarrow c2 -> Subset of a1 means :Def15: :: WAYBEL_0:def 15
for b1 being Element of a1 holds
( b1 in a3 iff ex b2 being Element of a1 st
( b2 >= b1 & b2 in a2 ) );
existence
ex b1 being Subset of c1 st
for b2 being Element of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st
( b3 >= b2 & b3 in c2 ) )
proof end;
uniqueness
for b1, b2 being Subset of c1 st ( for b3 being Element of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st
( b4 >= b3 & b4 in c2 ) ) ) & ( for b3 being Element of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st
( b4 >= b3 & b4 in c2 ) ) ) holds
b1 = b2
proof end;
func uparrow c2 -> Subset of a1 means :Def16: :: WAYBEL_0:def 16
for b1 being Element of a1 holds
( b1 in a3 iff ex b2 being Element of a1 st
( b2 <= b1 & b2 in a2 ) );
existence
ex b1 being Subset of c1 st
for b2 being Element of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st
( b3 <= b2 & b3 in c2 ) )
proof end;
correctness
uniqueness
for b1, b2 being Subset of c1 st ( for b3 being Element of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st
( b4 <= b3 & b4 in c2 ) ) ) & ( for b3 being Element of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st
( b4 <= b3 & b4 in c2 ) ) ) holds
b1 = b2
;
proof end;
end;

:: deftheorem Def15 defines downarrow WAYBEL_0:def 15 :
for b1 being RelStr
for b2, b3 being Subset of b1 holds
( b3 = downarrow b2 iff for b4 being Element of b1 holds
( b4 in b3 iff ex b5 being Element of b1 st
( b5 >= b4 & b5 in b2 ) ) );

:: deftheorem Def16 defines uparrow WAYBEL_0:def 16 :
for b1 being RelStr
for b2, b3 being Subset of b1 holds
( b3 = uparrow b2 iff for b4 being Element of b1 holds
( b4 in b3 iff ex b5 being Element of b1 st
( b5 <= b4 & b5 in b2 ) ) );

theorem Th13: :: WAYBEL_0:13
for b1, b2 being RelStr st RelStr(# the carrier of b1,the InternalRel of b1 #) = RelStr(# the carrier of b2,the InternalRel of b2 #) holds
for b3 being Subset of b1
for b4 being Subset of b2 st b3 = b4 holds
( downarrow b3 = downarrow b4 & uparrow b3 = uparrow b4 )
proof end;

theorem Th14: :: WAYBEL_0:14
for b1 being non empty RelStr
for b2 being Subset of b1 holds downarrow b2 = { b3 where B is Element of b1 : ex b1 being Element of b1 st
( b3 <= b4 & b4 in b2 )
}
proof end;

theorem Th15: :: WAYBEL_0:15
for b1 being non empty RelStr
for b2 being Subset of b1 holds uparrow b2 = { b3 where B is Element of b1 : ex b1 being Element of b1 st
( b3 >= b4 & b4 in b2 )
}
proof end;

registration
let c1 be non empty reflexive RelStr ;
let c2 be non empty Subset of c1;
cluster downarrow a2 -> non empty ;
coherence
not downarrow c2 is empty
proof end;
cluster uparrow a2 -> non empty ;
coherence
not uparrow c2 is empty
proof end;
end;

theorem Th16: :: WAYBEL_0:16
for b1 being reflexive RelStr
for b2 being Subset of b1 holds
( b2 c= downarrow b2 & b2 c= uparrow b2 )
proof end;

definition
let c1 be non empty RelStr ;
let c2 be Element of c1;
func downarrow c2 -> Subset of a1 equals :: WAYBEL_0:def 17
downarrow {a2};
correctness
coherence
downarrow {c2} is Subset of c1
;
;
func uparrow c2 -> Subset of a1 equals :: WAYBEL_0:def 18
uparrow {a2};
correctness
coherence
uparrow {c2} is Subset of c1
;
;
end;

:: deftheorem Def17 defines downarrow WAYBEL_0:def 17 :
for b1 being non empty RelStr
for b2 being Element of b1 holds downarrow b2 = downarrow {b2};

:: deftheorem Def18 defines uparrow WAYBEL_0:def 18 :
for b1 being non empty RelStr
for b2 being Element of b1 holds uparrow b2 = uparrow {b2};

theorem Th17: :: WAYBEL_0:17
for b1 being non empty RelStr
for b2, b3 being Element of b1 holds
( b3 in downarrow b2 iff b3 <= b2 )
proof end;

theorem Th18: :: WAYBEL_0:18
for b1 being non empty RelStr
for b2, b3 being Element of b1 holds
( b3 in uparrow b2 iff b2 <= b3 )
proof end;

theorem Th19: :: WAYBEL_0:19
for b1 being non empty reflexive antisymmetric RelStr
for b2, b3 being Element of b1 st downarrow b2 = downarrow b3 holds
b2 = b3
proof end;

theorem Th20: :: WAYBEL_0:20
for b1 being non empty reflexive antisymmetric RelStr
for b2, b3 being Element of b1 st uparrow b2 = uparrow b3 holds
b2 = b3
proof end;

theorem Th21: :: WAYBEL_0:21
for b1 being non empty transitive RelStr
for b2, b3 being Element of b1 st b2 <= b3 holds
downarrow b2 c= downarrow b3
proof end;

theorem Th22: :: WAYBEL_0:22
for b1 being non empty transitive RelStr
for b2, b3 being Element of b1 st b2 <= b3 holds
uparrow b3 c= uparrow b2
proof end;

registration
let c1 be non empty reflexive RelStr ;
let c2 be Element of c1;
cluster downarrow a2 -> non empty directed ;
coherence
( not downarrow c2 is empty & downarrow c2 is directed )
proof end;
cluster uparrow a2 -> non empty filtered ;
coherence
( not uparrow c2 is empty & uparrow c2 is filtered )
proof end;
end;

definition
let c1 be RelStr ;
let c2 be Subset of c1;
attr a2 is lower means :Def19: :: WAYBEL_0:def 19
for b1, b2 being Element of a1 st b1 in a2 & b2 <= b1 holds
b2 in a2;
attr a2 is upper means :Def20: :: WAYBEL_0:def 20
for b1, b2 being Element of a1 st b1 in a2 & b1 <= b2 holds
b2 in a2;
end;

:: deftheorem Def19 defines lower WAYBEL_0:def 19 :
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is lower iff for b3, b4 being Element of b1 st b3 in b2 & b4 <= b3 holds
b4 in b2 );

:: deftheorem Def20 defines upper WAYBEL_0:def 20 :
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is upper iff for b3, b4 being Element of b1 st b3 in b2 & b3 <= b4 holds
b4 in b2 );

registration
let c1 be RelStr ;
cluster lower upper Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( b1 is lower & b1 is upper )
proof end;
end;

theorem Th23: :: WAYBEL_0:23
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is lower iff downarrow b2 c= b2 )
proof end;

theorem Th24: :: WAYBEL_0:24
for b1 being RelStr
for b2 being Subset of b1 holds
( b2 is upper iff uparrow b2 c= b2 )
proof end;

theorem Th25: :: WAYBEL_0:25
for b1, b2 being RelStr st RelStr(# the carrier of b1,the InternalRel of b1 #) = RelStr(# the carrier of b2,the InternalRel of b2 #) holds
for b3 being Subset of b1
for b4 being Subset of b2 st b3 = b4 holds
( ( b3 is lower implies b4 is lower ) & ( b3 is upper implies b4 is upper ) )
proof end;

theorem Th26: :: WAYBEL_0:26
for b1 being RelStr
for b2 being Subset-Family of b1 st ( for b3 being Subset of b1 st b3 in b2 holds
b3 is lower ) holds
union b2 is lower Subset of b1
proof end;

theorem Th27: :: WAYBEL_0:27
for b1 being RelStr
for b2, b3 being Subset of b1 st b2 is lower & b3 is lower holds
( b2 /\ b3 is lower & b2 \/ b3 is lower )
proof end;

theorem Th28: :: WAYBEL_0:28
for b1 being RelStr
for b2 being Subset-Family of b1 st ( for b3 being Subset of b1 st b3 in b2 holds
b3 is upper ) holds
union b2 is upper Subset of b1
proof end;

theorem Th29: :: WAYBEL_0:29
for b1 being RelStr
for b2, b3 being Subset of b1 st b2 is upper & b3 is upper holds
( b2 /\ b3 is upper & b2 \/ b3 is upper )
proof end;

registration
let c1 be non empty transitive RelStr ;
let c2 be Subset of c1;
cluster downarrow a2 -> lower ;
coherence
downarrow c2 is lower
proof end;
cluster uparrow a2 -> upper ;
coherence
uparrow c2 is upper
proof end;
end;

registration
let c1 be non empty transitive RelStr ;
let c2 be Element of c1;
cluster downarrow a2 -> lower ;
coherence
downarrow c2 is lower
;
cluster uparrow a2 -> upper ;
coherence
uparrow c2 is upper
;
end;

registration
let c1 be non empty RelStr ;
cluster [#] a1 -> lower upper ;
coherence
( [#] c1 is lower & [#] c1 is upper )
proof end;
end;

registration
let c1 be non empty RelStr ;
cluster non empty lower upper Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( not b1 is empty & b1 is lower & b1 is upper )
proof end;
end;

registration
let c1 be non empty reflexive transitive RelStr ;
cluster non empty directed lower Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( not b1 is empty & b1 is lower & b1 is directed )
proof end;
cluster non empty filtered upper Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( not b1 is empty & b1 is upper & b1 is filtered )
proof end;
end;

registration
let c1 be with_suprema with_infima Poset;
cluster non empty directed filtered lower upper Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( not b1 is empty & b1 is directed & b1 is filtered & b1 is lower & b1 is upper )
proof end;
end;

theorem Th30: :: WAYBEL_0:30
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 holds
( b2 is directed iff downarrow b2 is directed )
proof end;

registration
let c1 be non empty reflexive transitive RelStr ;
let c2 be directed Subset of c1;
cluster downarrow a2 -> directed lower ;
coherence
downarrow c2 is directed
by Th30;
end;

theorem Th31: :: WAYBEL_0:31
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1
for b3 being Element of b1 holds
( b3 is_>=_than b2 iff b3 is_>=_than downarrow b2 )
proof end;

theorem Th32: :: WAYBEL_0:32
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 holds
( ex_sup_of b2,b1 iff ex_sup_of downarrow b2,b1 )
proof end;

theorem Th33: :: WAYBEL_0:33
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 st ex_sup_of b2,b1 holds
sup b2 = sup (downarrow b2)
proof end;

theorem Th34: :: WAYBEL_0:34
for b1 being non empty Poset
for b2 being Element of b1 holds
( ex_sup_of downarrow b2,b1 & sup (downarrow b2) = b2 )
proof end;

theorem Th35: :: WAYBEL_0:35
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 holds
( b2 is filtered iff uparrow b2 is filtered )
proof end;

registration
let c1 be non empty reflexive transitive RelStr ;
let c2 be filtered Subset of c1;
cluster uparrow a2 -> filtered upper ;
coherence
uparrow c2 is filtered
by Th35;
end;

theorem Th36: :: WAYBEL_0:36
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1
for b3 being Element of b1 holds
( b3 is_<=_than b2 iff b3 is_<=_than uparrow b2 )
proof end;

theorem Th37: :: WAYBEL_0:37
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 holds
( ex_inf_of b2,b1 iff ex_inf_of uparrow b2,b1 )
proof end;

theorem Th38: :: WAYBEL_0:38
for b1 being non empty reflexive transitive RelStr
for b2 being Subset of b1 st ex_inf_of b2,b1 holds
inf b2 = inf (uparrow b2)
proof end;

theorem Th39: :: WAYBEL_0:39
for b1 being non empty Poset
for b2 being Element of b1 holds
( ex_inf_of uparrow b2,b1 & inf (uparrow b2) = b2 )
proof end;

definition
let c1 be non empty reflexive transitive RelStr ;
mode Ideal of a1 is non empty directed lower Subset of a1;
mode Filter of a1 is non empty filtered upper Subset of a1;
end;

theorem Th40: :: WAYBEL_0:40
for b1 being antisymmetric with_suprema RelStr
for b2 being lower Subset of b1 holds
( b2 is directed iff for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 "\/" b4 in b2 )
proof end;

theorem Th41: :: WAYBEL_0:41
for b1 being antisymmetric with_infima RelStr
for b2 being upper Subset of b1 holds
( b2 is filtered iff for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 "/\" b4 in b2 )
proof end;

theorem Th42: :: WAYBEL_0:42
for b1 being with_suprema Poset
for b2 being non empty lower Subset of b1 holds
( b2 is directed iff for b3 being finite Subset of b2 st b3 <> {} holds
"\/" b3,b1 in b2 )
proof end;

theorem Th43: :: WAYBEL_0:43
for b1 being with_infima Poset
for b2 being non empty upper Subset of b1 holds
( b2 is filtered iff for b3 being finite Subset of b2 st b3 <> {} holds
"/\" b3,b1 in b2 )
proof end;

theorem Th44: :: WAYBEL_0:44
for b1 being non empty antisymmetric RelStr st ( b1 is with_suprema or b1 is with_infima ) holds
for b2, b3 being Subset of b1 st b2 is lower & b2 is directed & b3 is lower & b3 is directed holds
b2 /\ b3 is directed
proof end;

theorem Th45: :: WAYBEL_0:45
for b1 being non empty antisymmetric RelStr st ( b1 is with_suprema or b1 is with_infima ) holds
for b2, b3 being Subset of b1 st b2 is upper & b2 is filtered & b3 is upper & b3 is filtered holds
b2 /\ b3 is filtered
proof end;

theorem Th46: :: WAYBEL_0:46
for b1 being RelStr
for b2 being Subset-Family of b1 st ( for b3 being Subset of b1 st b3 in b2 holds
b3 is directed ) & ( for b3, b4 being Subset of b1 st b3 in b2 & b4 in b2 holds
ex b5 being Subset of b1 st
( b5 in b2 & b3 \/ b4 c= b5 ) ) holds
for b3 being Subset of b1 st b3 = union b2 holds
b3 is directed
proof end;

theorem Th47: :: WAYBEL_0:47
for b1 being RelStr
for b2 being Subset-Family of b1 st ( for b3 being Subset of b1 st b3 in b2 holds
b3 is filtered ) & ( for b3, b4 being Subset of b1 st b3 in b2 & b4 in b2 holds
ex b5 being Subset of b1 st
( b5 in b2 & b3 \/ b4 c= b5 ) ) holds
for b3 being Subset of b1 st b3 = union b2 holds
b3 is filtered
proof end;

definition
let c1 be non empty reflexive transitive RelStr ;
let c2 be Ideal of c1;
attr a2 is principal means :: WAYBEL_0:def 21
ex b1 being Element of a1 st
( b1 in a2 & b1 is_>=_than a2 );
end;

:: deftheorem Def21 defines principal WAYBEL_0:def 21 :
for b1 being non empty reflexive transitive RelStr
for b2 being Ideal of b1 holds
( b2 is principal iff ex b3 being Element of b1 st
( b3 in b2 & b3 is_>=_than b2 ) );

definition
let c1 be non empty reflexive transitive RelStr ;
let c2 be Filter of c1;
attr a2 is principal means :: WAYBEL_0:def 22
ex b1 being Element of a1 st
( b1 in a2 & b1 is_<=_than a2 );
end;

:: deftheorem Def22 defines principal WAYBEL_0:def 22 :
for b1 being non empty reflexive transitive RelStr
for b2 being Filter of b1 holds
( b2 is principal iff ex b3 being Element of b1 st
( b3 in b2 & b3 is_<=_than b2 ) );

theorem Th48: :: WAYBEL_0:48
for b1 being non empty reflexive transitive RelStr
for b2 being Ideal of b1 holds
( b2 is principal iff ex b3 being Element of b1 st b2 = downarrow b3 )
proof end;

theorem Th49: :: WAYBEL_0:49
for b1 being non empty reflexive transitive RelStr
for b2 being Filter of b1 holds
( b2 is principal iff ex b3 being Element of b1 st b2 = uparrow b3 )
proof end;

definition
let c1 be non empty reflexive transitive RelStr ;
func Ids c1 -> set equals :: WAYBEL_0:def 23
{ b1 where B is Ideal of a1 : verum } ;
correctness
coherence
{ b1 where B is Ideal of c1 : verum } is set
;
;
func Filt c1 -> set equals :: WAYBEL_0:def 24
{ b1 where B is Filter of a1 : verum } ;
correctness
coherence
{ b1 where B is Filter of c1 : verum } is set
;
;
end;

:: deftheorem Def23 defines Ids WAYBEL_0:def 23 :
for b1 being non empty reflexive transitive RelStr holds Ids b1 = { b2 where B is Ideal of b1 : verum } ;

:: deftheorem Def24 defines Filt WAYBEL_0:def 24 :
for b1 being non empty reflexive transitive RelStr holds Filt b1 = { b2 where B is Filter of b1 : verum } ;

definition
let c1 be non empty reflexive transitive RelStr ;
func Ids_0 c1 -> set equals :: WAYBEL_0:def 25
(Ids a1) \/ {{} };
correctness
coherence
(Ids c1) \/ {{} } is set
;
;
func Filt_0 c1 -> set equals :: WAYBEL_0:def 26
(Filt a1) \/ {{} };
correctness
coherence
(Filt c1) \/ {{} } is set
;
;
end;

:: deftheorem Def25 defines Ids_0 WAYBEL_0:def 25 :
for b1 being non empty reflexive transitive RelStr holds Ids_0 b1 = (Ids b1) \/ {{} };

:: deftheorem Def26 defines Filt_0 WAYBEL_0:def 26 :
for b1 being non empty reflexive transitive RelStr holds Filt_0 b1 = (Filt b1) \/ {{} };

definition
let c1 be non empty RelStr ;
let c2 be Subset of c1;
set c3 = { ("\/" b1,c1) where B is finite Subset of c2 : ex_sup_of b1,c1 } ;
E43: { ("\/" b1,c1) where B is finite Subset of c2 : ex_sup_of b1,c1 } c= the carrier of c1
proof end;
func finsups c2 -> Subset of a1 equals :: WAYBEL_0:def 27
{ ("\/" b1,a1) where B is finite Subset of a2 : ex_sup_of b1,a1 } ;
correctness
coherence
{ ("\/" b1,c1) where B is finite Subset of c2 : ex_sup_of b1,c1 } is Subset of c1
;
by E43;
set c4 = { ("/\" b1,c1) where B is finite Subset of c2 : ex_inf_of b1,c1 } ;
E44: { ("/\" b1,c1) where B is finite Subset of c2 : ex_inf_of b1,c1 } c= the carrier of c1
proof end;
func fininfs c2 -> Subset of a1 equals :: WAYBEL_0:def 28
{ ("/\" b1,a1) where B is finite Subset of a2 : ex_inf_of b1,a1 } ;
correctness
coherence
{ ("/\" b1,c1) where B is finite Subset of c2 : ex_inf_of b1,c1 } is Subset of c1
;
by E44;
end;

:: deftheorem Def27 defines finsups WAYBEL_0:def 27 :
for b1 being non empty RelStr
for b2 being Subset of b1 holds finsups b2 = { ("\/" b3,b1) where B is finite Subset of b2 : ex_sup_of b3,b1 } ;

:: deftheorem Def28 defines fininfs WAYBEL_0:def 28 :
for b1 being non empty RelStr
for b2 being Subset of b1 holds fininfs b2 = { ("/\" b3,b1) where B is finite Subset of b2 : ex_inf_of b3,b1 } ;

registration
let c1 be non empty antisymmetric lower-bounded RelStr ;
let c2 be Subset of c1;
cluster finsups a2 -> non empty ;
coherence
not finsups c2 is empty
proof end;
end;

registration
let c1 be non empty antisymmetric upper-bounded RelStr ;
let c2 be Subset of c1;
cluster fininfs a2 -> non empty ;
coherence
not fininfs c2 is empty
proof end;
end;

registration
let c1 be non empty reflexive antisymmetric RelStr ;
let c2 be non empty Subset of c1;
cluster finsups a2 -> non empty ;
coherence
not finsups c2 is empty
proof end;
cluster fininfs a2 -> non empty ;
coherence
not fininfs c2 is empty
proof end;
end;

theorem Th50: :: WAYBEL_0:50
for b1 being non empty reflexive antisymmetric RelStr
for b2 being Subset of b1 holds
( b2 c= finsups b2 & b2 c= fininfs b2 )
proof end;

theorem Th51: :: WAYBEL_0:51
for b1 being non empty transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_sup_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_sup_of b5,b1 & b4 = "\/" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"\/" b4,b1 in b3 ) holds
b3 is directed
proof end;

registration
let c1 be with_suprema Poset;
let c2 be Subset of c1;
cluster finsups a2 -> directed ;
coherence
finsups c2 is directed
proof end;
end;

theorem Th52: :: WAYBEL_0:52
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_sup_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_sup_of b5,b1 & b4 = "\/" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"\/" b4,b1 in b3 ) holds
for b4 being Element of b1 holds
( b4 is_>=_than b2 iff b4 is_>=_than b3 )
proof end;

theorem Th53: :: WAYBEL_0:53
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_sup_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_sup_of b5,b1 & b4 = "\/" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"\/" b4,b1 in b3 ) holds
( ex_sup_of b2,b1 iff ex_sup_of b3,b1 )
proof end;

theorem Th54: :: WAYBEL_0:54
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_sup_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_sup_of b5,b1 & b4 = "\/" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"\/" b4,b1 in b3 ) & ex_sup_of b2,b1 holds
sup b3 = sup b2
proof end;

theorem Th55: :: WAYBEL_0:55
for b1 being with_suprema Poset
for b2 being Subset of b1 st ( ex_sup_of b2,b1 or b1 is complete ) holds
sup b2 = sup (finsups b2)
proof end;

theorem Th56: :: WAYBEL_0:56
for b1 being non empty transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_inf_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_inf_of b5,b1 & b4 = "/\" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"/\" b4,b1 in b3 ) holds
b3 is filtered
proof end;

registration
let c1 be with_infima Poset;
let c2 be Subset of c1;
cluster fininfs a2 -> filtered ;
coherence
fininfs c2 is filtered
proof end;
end;

theorem Th57: :: WAYBEL_0:57
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_inf_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_inf_of b5,b1 & b4 = "/\" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"/\" b4,b1 in b3 ) holds
for b4 being Element of b1 holds
( b4 is_<=_than b2 iff b4 is_<=_than b3 )
proof end;

theorem Th58: :: WAYBEL_0:58
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_inf_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_inf_of b5,b1 & b4 = "/\" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"/\" b4,b1 in b3 ) holds
( ex_inf_of b2,b1 iff ex_inf_of b3,b1 )
proof end;

theorem Th59: :: WAYBEL_0:59
for b1 being non empty reflexive transitive RelStr
for b2, b3 being Subset of b1 st ( for b4 being finite Subset of b2 st b4 <> {} holds
ex_inf_of b4,b1 ) & ( for b4 being Element of b1 st b4 in b3 holds
ex b5 being finite Subset of b2 st
( ex_inf_of b5,b1 & b4 = "/\" b5,b1 ) ) & ( for b4 being finite Subset of b2 st b4 <> {} holds
"/\" b4,b1 in b3 ) & ex_inf_of b2,b1 holds
inf b3 = inf b2
proof end;

theorem Th60: :: WAYBEL_0:60
for b1 being with_infima Poset
for b2 being Subset of b1 st ( ex_inf_of b2,b1 or b1 is complete ) holds
inf b2 = inf (fininfs b2)
proof end;

theorem Th61: :: WAYBEL_0:61
for b1 being with_suprema Poset
for b2 being Subset of b1 holds
( b2 c= downarrow (finsups b2) & ( for b3 being Ideal of b1 st b2 c= b3 holds
downarrow (finsups b2) c= b3 ) )
proof end;

theorem Th62: :: WAYBEL_0:62
for b1 being with_infima Poset
for b2 being Subset of b1 holds
( b2 c= uparrow (fininfs b2) & ( for b3 being Filter of b1 st b2 c= b3 holds
uparrow (fininfs b2) c= b3 ) )
proof end;

definition
let c1 be non empty RelStr ;
attr a1 is connected means :Def29: :: WAYBEL_0:def 29
for b1, b2 being Element of a1 holds
( b1 <= b2 or b2 <= b1 );
end;

:: deftheorem Def29 defines connected WAYBEL_0:def 29 :
for b1 being non empty RelStr holds
( b1 is connected iff for b2, b3 being Element of b1 holds
( b2 <= b3 or b3 <= b2 ) );

registration
cluster non empty reflexive trivial -> non empty reflexive connected RelStr ;
coherence
for b1 being non empty reflexive RelStr st b1 is trivial holds
b1 is connected
proof end;
end;

registration
cluster non empty connected RelStr ;
existence
ex b1 being non empty Poset st b1 is connected
proof end;
end;

definition
mode Chain is non empty connected Poset;
end;

registration
let c1 be Chain;
cluster a1 ~ -> connected ;
coherence
c1 ~ is connected
proof end;
end;

definition
mode Semilattice is with_infima Poset;
mode sup-Semilattice is with_suprema Poset;
mode LATTICE is with_suprema with_infima Poset;
end;

theorem Th63: :: WAYBEL_0:63
for b1 being Semilattice
for b2 being non empty upper Subset of b1 holds
( b2 is Filter of b1 iff subrelstr b2 is meet-inheriting )
proof end;

theorem Th64: :: WAYBEL_0:64
for b1 being sup-Semilattice
for b2 being non empty lower Subset of b1 holds
( b2 is Ideal of b1 iff subrelstr b2 is join-inheriting )
proof end;

definition
let c1, c2 be non empty RelStr ;
let c3 be Function of c1,c2;
let c4 be Subset of c1;
pred c3 preserves_inf_of c4 means :Def30: :: WAYBEL_0:def 30
( ex_inf_of a4,a1 implies ( ex_inf_of a3 .: a4,a2 & inf (a3 .: a4) = a3 . (inf a4) ) );
pred c3 preserves_sup_of c4 means :Def31: :: WAYBEL_0:def 31
( ex_sup_of a4,a1 implies ( ex_sup_of a3 .: a4,a2 & sup (a3 .: a4) = a3 . (sup a4) ) );
end;

:: deftheorem Def30 defines preserves_inf_of WAYBEL_0:def 30 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2
for b4 being Subset of b1 holds
( b3 preserves_inf_of b4 iff ( ex_inf_of b4,b1 implies ( ex_inf_of b3 .: b4,b2 & inf (b3 .: b4) = b3 . (inf b4) ) ) );

:: deftheorem Def31 defines preserves_sup_of WAYBEL_0:def 31 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2
for b4 being Subset of b1 holds
( b3 preserves_sup_of b4 iff ( ex_sup_of b4,b1 implies ( ex_sup_of b3 .: b4,b2 & sup (b3 .: b4) = b3 . (sup b4) ) ) );

theorem Th65: :: WAYBEL_0:65
for b1, b2, b3, b4 being non empty RelStr st RelStr(# the carrier of b1,the InternalRel of b1 #) = RelStr(# the carrier of b3,the InternalRel of b3 #) & RelStr(# the carrier of b2,the InternalRel of b2 #) = RelStr(# the carrier of b4,the InternalRel of b4 #) holds
for b5 being Function of b1,b2
for b6 being Function of b3,b4 st b5 = b6 holds
for b7 being Subset of b1
for b8 being Subset of b3 st b7 = b8 holds
( ( b5 preserves_sup_of b7 implies b6 preserves_sup_of b8 ) & ( b5 preserves_inf_of b7 implies b6 preserves_inf_of b8 ) )
proof end;

definition
let c1, c2 be non empty RelStr ;
let c3 be Function of c1,c2;
attr a3 is infs-preserving means :: WAYBEL_0:def 32
for b1 being Subset of a1 holds a3 preserves_inf_of b1;
attr a3 is sups-preserving means :: WAYBEL_0:def 33
for b1 being Subset of a1 holds a3 preserves_sup_of b1;
attr a3 is meet-preserving means :: WAYBEL_0:def 34
for b1, b2 being Element of a1 holds a3 preserves_inf_of {b1,b2};
attr a3 is join-preserving means :: WAYBEL_0:def 35
for b1, b2 being Element of a1 holds a3 preserves_sup_of {b1,b2};
attr a3 is filtered-infs-preserving means :: WAYBEL_0:def 36
for b1 being Subset of a1 st not b1 is empty & b1 is filtered holds
a3 preserves_inf_of b1;
attr a3 is directed-sups-preserving means :: WAYBEL_0:def 37
for b1 being Subset of a1 st not b1 is empty & b1 is directed holds
a3 preserves_sup_of b1;
end;

:: deftheorem Def32 defines infs-preserving WAYBEL_0:def 32 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is infs-preserving iff for b4 being Subset of b1 holds b3 preserves_inf_of b4 );

:: deftheorem Def33 defines sups-preserving WAYBEL_0:def 33 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is sups-preserving iff for b4 being Subset of b1 holds b3 preserves_sup_of b4 );

:: deftheorem Def34 defines meet-preserving WAYBEL_0:def 34 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is meet-preserving iff for b4, b5 being Element of b1 holds b3 preserves_inf_of {b4,b5} );

:: deftheorem Def35 defines join-preserving WAYBEL_0:def 35 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is join-preserving iff for b4, b5 being Element of b1 holds b3 preserves_sup_of {b4,b5} );

:: deftheorem Def36 defines filtered-infs-preserving WAYBEL_0:def 36 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is filtered-infs-preserving iff for b4 being Subset of b1 st not b4 is empty & b4 is filtered holds
b3 preserves_inf_of b4 );

:: deftheorem Def37 defines directed-sups-preserving WAYBEL_0:def 37 :
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is directed-sups-preserving iff for b4 being Subset of b1 st not b4 is empty & b4 is directed holds
b3 preserves_sup_of b4 );

registration
let c1, c2 be non empty RelStr ;
cluster infs-preserving -> meet-preserving filtered-infs-preserving Relation of the carrier of a1,the carrier of a2;
coherence
for b1 being Function of c1,c2 st b1 is infs-preserving holds
( b1 is filtered-infs-preserving & b1 is meet-preserving )
proof end;
cluster sups-preserving -> join-preserving directed-sups-preserving Relation of the carrier of a1,the carrier of a2;
coherence
for b1 being Function of c1,c2 st b1 is sups-preserving holds
( b1 is directed-sups-preserving & b1 is join-preserving )
proof end;
end;

definition
let c1, c2 be RelStr ;
let c3 be Function of c1,c2;
attr a3 is isomorphic means :Def38: :: WAYBEL_0:def 38
( a3 is one-to-one & a3 is monotone & ex b1 being Function of a2,a1 st
( b1 = a3 " & b1 is monotone ) ) if ( not a1 is empty & not a2 is empty )
otherwise ( a1 is empty & a2 is empty );
correctness
consistency
verum
;
;
end;

:: deftheorem Def38 defines isomorphic WAYBEL_0:def 38 :
for b1, b2 being RelStr
for b3 being Function of b1,b2 holds
( ( not b1 is empty & not b2 is empty implies ( b3 is isomorphic iff ( b3 is one-to-one & b3 is monotone & ex b4 being Function of b2,b1 st
( b4 = b3 " & b4 is monotone ) ) ) ) & ( ( b1 is empty or b2 is empty ) implies ( b3 is isomorphic iff ( b1 is empty & b2 is empty ) ) ) );

theorem Th66: :: WAYBEL_0:66
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 holds
( b3 is isomorphic iff ( b3 is one-to-one & rng b3 = the carrier of b2 & ( for b4, b5 being Element of b1 holds
( b4 <= b5 iff b3 . b4 <= b3 . b5 ) ) ) )
proof end;

registration
let c1, c2 be non empty RelStr ;
cluster isomorphic -> one-to-one monotone Relation of the carrier of a1,the carrier of a2;
coherence
for b1 being Function of c1,c2 st b1 is isomorphic holds
( b1 is one-to-one & b1 is monotone )
by Def38;
end;

theorem Th67: :: WAYBEL_0:67
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 st b3 is isomorphic holds
( b3 " is Function of b2,b1 & rng (b3 " ) = the carrier of b1 )
proof end;

theorem Th68: :: WAYBEL_0:68
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 st b3 is isomorphic holds
for b4 being Function of b2,b1 st b4 = b3 " holds
b4 is isomorphic
proof end;

theorem Th69: :: WAYBEL_0:69
for b1, b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being Filter of b1 holds b3 preserves_inf_of b4 ) holds
b3 is monotone
proof end;

theorem Th70: :: WAYBEL_0:70
for b1, b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being Filter of b1 holds b3 preserves_inf_of b4 ) holds
b3 is filtered-infs-preserving
proof end;

theorem Th71: :: WAYBEL_0:71
for b1 being Semilattice
for b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being finite Subset of b1 holds b3 preserves_inf_of b4 ) & ( for b4 being non empty filtered Subset of b1 holds b3 preserves_inf_of b4 ) holds
b3 is infs-preserving
proof end;

theorem Th72: :: WAYBEL_0:72
for b1, b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being Ideal of b1 holds b3 preserves_sup_of b4 ) holds
b3 is monotone
proof end;

theorem Th73: :: WAYBEL_0:73
for b1, b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being Ideal of b1 holds b3 preserves_sup_of b4 ) holds
b3 is directed-sups-preserving
proof end;

theorem Th74: :: WAYBEL_0:74
for b1 being sup-Semilattice
for b2 being non empty Poset
for b3 being Function of b1,b2 st ( for b4 being finite Subset of b1 holds b3 preserves_sup_of b4 ) & ( for b4 being non empty directed Subset of b1 holds b3 preserves_sup_of b4 ) holds
b3 is sups-preserving
proof end;

definition
let c1 be non empty reflexive RelStr ;
attr a1 is up-complete means :Def39: :: WAYBEL_0:def 39
for b1 being non empty directed Subset of a1 ex b2 being Element of a1 st
( b2 is_>=_than b1 & ( for b3 being Element of a1 st b3 is_>=_than b1 holds
b2 <= b3 ) );
end;

:: deftheorem Def39 defines up-complete WAYBEL_0:def 39 :
for b1 being non empty reflexive RelStr holds
( b1 is up-complete iff for b2 being non empty directed Subset of b1 ex b3 being Element of b1 st
( b3 is_>=_than b2 & ( for b4 being Element of b1 st b4 is_>=_than b2 holds
b3 <= b4 ) ) );

registration
cluster reflexive with_suprema up-complete -> reflexive with_suprema upper-bounded RelStr ;
coherence
for b1 being reflexive with_suprema RelStr st b1 is up-complete holds
b1 is upper-bounded
proof end;
end;

theorem Th75: :: WAYBEL_0:75
for b1 being non empty reflexive antisymmetric RelStr holds
( b1 is up-complete iff for b2 being non empty directed Subset of b1 holds ex_sup_of b2,b1 )
proof end;

definition
let c1 be non empty reflexive RelStr ;
attr a1 is /\-complete means :Def40: :: WAYBEL_0:def 40
for b1 being non empty Subset of a1 ex b2 being Element of a1 st
( b2 is_<=_than b1 & ( for b3 being Element of a1 st b3 is_<=_than b1 holds
b2 >= b3 ) );
end;

:: deftheorem Def40 defines /\-complete WAYBEL_0:def 40 :
for b1 being non empty reflexive RelStr holds
( b1 is /\-complete iff for b2 being non empty Subset of b1 ex b3 being Element of b1 st
( b3 is_<=_than b2 & ( for b4 being Element of b1 st b4 is_<=_than b2 holds
b3 >= b4 ) ) );

theorem Th76: :: WAYBEL_0:76
for b1 being non empty reflexive antisymmetric RelStr holds
( b1 is /\-complete iff for b2 being non empty Subset of b1 holds ex_inf_of b2,b1 )
proof end;

registration
cluster non empty reflexive complete -> non empty reflexive up-complete /\-complete RelStr ;
coherence
for b1 being non empty reflexive RelStr st b1 is complete holds
( b1 is up-complete & b1 is /\-complete )
proof end;
cluster non empty reflexive /\-complete -> non empty reflexive lower-bounded RelStr ;
coherence
for b1 being non empty reflexive RelStr st b1 is /\-complete holds
b1 is lower-bounded
proof end;
cluster non empty with_suprema lower-bounded up-complete -> non empty complete RelStr ;
coherence
for b1 being non empty Poset st b1 is up-complete & b1 is with_suprema & b1 is lower-bounded holds
b1 is complete
proof end;
end;

registration
cluster non empty reflexive antisymmetric /\-complete -> non empty reflexive antisymmetric with_infima RelStr ;
coherence
for b1 being non empty reflexive antisymmetric RelStr st b1 is /\-complete holds
b1 is with_infima
proof end;
end;

registration
cluster non empty reflexive antisymmetric upper-bounded /\-complete -> non empty reflexive antisymmetric with_suprema upper-bounded RelStr ;
coherence
for b1 being non empty reflexive antisymmetric upper-bounded RelStr st b1 is /\-complete holds
b1 is with_suprema
proof end;
end;

registration
cluster strict complete lower-bounded up-complete /\-complete RelStr ;
existence
ex b1 being LATTICE st
( b1 is complete & b1 is strict )
proof end;
end;