:: YELLOW_3 semantic presentation

scheme :: YELLOW_3:sch 1
s1{ F1() -> non empty set , F2( set , set ) -> set , P1[ set , set ], P2[ set , set ] } :
{ F2(b1,b2) where B is Element of F1(), B is Element of F1() : P1[b1,b2] } is Subset of F1()
provided
E1: for b1, b2 being Element of F1() holds F2(b1,b2) in F1()
proof end;

scheme :: YELLOW_3:sch 2
s2{ F1() -> Relation, F2() -> Relation, P1[ set , set ] } :
F1() = F2()
provided
E1: for b1, b2 being set holds
( [b1,b2] in F1() iff P1[b1,b2] ) and
E2: for b1, b2 being set holds
( [b1,b2] in F2() iff P1[b1,b2] )
proof end;

registration
let c1 be empty set ;
cluster proj1 a1 -> empty ;
coherence
proj1 c1 is empty
by FUNCT_5:10;
cluster proj2 a1 -> empty ;
coherence
proj2 c1 is empty
by FUNCT_5:10;
end;

registration
let c1, c2 be non empty set ;
let c3 be non empty Subset of [:c1,c2:];
cluster proj1 a3 -> non empty ;
coherence
not proj1 c3 is empty
proof end;
cluster proj2 a3 -> non empty ;
coherence
not proj2 c3 is empty
proof end;
end;

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

theorem Th1: :: YELLOW_3:1
for b1, b2 being set
for b3 being Subset of [:b1,b2:] holds b3 c= [:(proj1 b3),(proj2 b3):]
proof end;

Lemma2: for b1, b2, b3, b4, b5 being set st b1 = [[b2,b3],[b4,b5]] holds
( (b1 `1 ) `1 = b2 & (b1 `1 ) `2 = b3 & (b1 `2 ) `1 = b4 & (b1 `2 ) `2 = b5 )
proof end;

theorem Th2: :: YELLOW_3:2
for b1 being transitive antisymmetric with_infima RelStr
for b2, b3, b4, b5 being Element of b1 st b2 <= b4 & b3 <= b5 holds
b2 "/\" b3 <= b4 "/\" b5
proof end;

theorem Th3: :: YELLOW_3:3
for b1 being transitive antisymmetric with_suprema RelStr
for b2, b3, b4, b5 being Element of b1 st b2 <= b4 & b3 <= b5 holds
b2 "\/" b3 <= b4 "\/" b5
proof end;

theorem Th4: :: YELLOW_3:4
for b1 being non empty reflexive antisymmetric complete RelStr
for b2 being Subset of b1
for b3 being Element of b1 st b3 in b2 holds
(sup b2) "/\" b3 = b3
proof end;

theorem Th5: :: YELLOW_3:5
for b1 being non empty reflexive antisymmetric complete RelStr
for b2 being Subset of b1
for b3 being Element of b1 st b3 in b2 holds
(inf b2) "\/" b3 = b3
proof end;

theorem Th6: :: YELLOW_3:6
for b1 being RelStr
for b2, b3 being Subset of b1 st b2 c= b3 holds
downarrow b2 c= downarrow b3
proof end;

theorem Th7: :: YELLOW_3:7
for b1 being RelStr
for b2, b3 being Subset of b1 st b2 c= b3 holds
uparrow b2 c= uparrow b3
proof end;

theorem Th8: :: YELLOW_3:8
for b1, b2 being with_infima Poset
for b3 being Function of b1,b2
for b4, b5 being Element of b1 holds
( b3 preserves_inf_of {b4,b5} iff b3 . (b4 "/\" b5) = (b3 . b4) "/\" (b3 . b5) )
proof end;

theorem Th9: :: YELLOW_3:9
for b1, b2 being with_suprema Poset
for b3 being Function of b1,b2
for b4, b5 being Element of b1 holds
( b3 preserves_sup_of {b4,b5} iff b3 . (b4 "\/" b5) = (b3 . b4) "\/" (b3 . b5) )
proof end;

scheme :: YELLOW_3:sch 3
s3{ F1() -> non empty antisymmetric complete RelStr , P1[ set ] } :
"/\" { ("/\" b1,F1()) where B is Subset of F1() : P1[b1] } ,F1() >= "/\" (union { b1 where B is Subset of F1() : P1[b1] } ),F1()
proof end;

scheme :: YELLOW_3:sch 4
s4{ F1() -> complete LATTICE, P1[ set ] } :
"/\" { ("/\" b1,F1()) where B is Subset of F1() : P1[b1] } ,F1() = "/\" (union { b1 where B is Subset of F1() : P1[b1] } ),F1()
proof end;

scheme :: YELLOW_3:sch 5
s5{ F1() -> non empty antisymmetric complete RelStr , P1[ set ] } :
"\/" { ("\/" b1,F1()) where B is Subset of F1() : P1[b1] } ,F1() <= "\/" (union { b1 where B is Subset of F1() : P1[b1] } ),F1()
proof end;

scheme :: YELLOW_3:sch 6
s6{ F1() -> complete LATTICE, P1[ set ] } :
"\/" { ("\/" b1,F1()) where B is Subset of F1() : P1[b1] } ,F1() = "\/" (union { b1 where B is Subset of F1() : P1[b1] } ),F1()
proof end;

definition
let c1, c2 be Relation;
func ["c1,c2"] -> Relation means :Def1: :: YELLOW_3:def 1
for b1, b2 being set holds
( [b1,b2] in a3 iff ex b3, b4, b5, b6 being set st
( b1 = [b3,b4] & b2 = [b5,b6] & [b3,b5] in a1 & [b4,b6] in a2 ) );
existence
ex b1 being Relation st
for b2, b3 being set holds
( [b2,b3] in b1 iff ex b4, b5, b6, b7 being set st
( b2 = [b4,b5] & b3 = [b6,b7] & [b4,b6] in c1 & [b5,b7] in c2 ) )
proof end;
uniqueness
for b1, b2 being Relation st ( for b3, b4 being set holds
( [b3,b4] in b1 iff ex b5, b6, b7, b8 being set st
( b3 = [b5,b6] & b4 = [b7,b8] & [b5,b7] in c1 & [b6,b8] in c2 ) ) ) & ( for b3, b4 being set holds
( [b3,b4] in b2 iff ex b5, b6, b7, b8 being set st
( b3 = [b5,b6] & b4 = [b7,b8] & [b5,b7] in c1 & [b6,b8] in c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines [" YELLOW_3:def 1 :
for b1, b2, b3 being Relation holds
( b3 = ["b1,b2"] iff for b4, b5 being set holds
( [b4,b5] in b3 iff ex b6, b7, b8, b9 being set st
( b4 = [b6,b7] & b5 = [b8,b9] & [b6,b8] in b1 & [b7,b9] in b2 ) ) );

theorem Th10: :: YELLOW_3:10
for b1, b2 being Relation
for b3 being set holds
( b3 in ["b1,b2"] iff ( [((b3 `1 ) `1 ),((b3 `2 ) `1 )] in b1 & [((b3 `1 ) `2 ),((b3 `2 ) `2 )] in b2 & ex b4, b5 being set st b3 = [b4,b5] & ex b4, b5 being set st b3 `1 = [b4,b5] & ex b4, b5 being set st b3 `2 = [b4,b5] ) )
proof end;

definition
let c1, c2, c3, c4 be set ;
let c5 be Relation of c1,c2;
let c6 be Relation of c3,c4;
redefine func [" as ["c5,c6"] -> Relation of [:a1,a3:],[:a2,a4:];
coherence
["c5,c6"] is Relation of [:c1,c3:],[:c2,c4:]
proof end;
end;

definition
let c1, c2 be RelStr ;
func [:c1,c2:] -> strict RelStr means :Def2: :: YELLOW_3:def 2
( the carrier of a3 = [:the carrier of a1,the carrier of a2:] & the InternalRel of a3 = ["the InternalRel of a1,the InternalRel of a2"] );
existence
ex b1 being strict RelStr st
( the carrier of b1 = [:the carrier of c1,the carrier of c2:] & the InternalRel of b1 = ["the InternalRel of c1,the InternalRel of c2"] )
proof end;
uniqueness
for b1, b2 being strict RelStr st the carrier of b1 = [:the carrier of c1,the carrier of c2:] & the InternalRel of b1 = ["the InternalRel of c1,the InternalRel of c2"] & the carrier of b2 = [:the carrier of c1,the carrier of c2:] & the InternalRel of b2 = ["the InternalRel of c1,the InternalRel of c2"] holds
b1 = b2
;
end;

:: deftheorem Def2 defines [: YELLOW_3:def 2 :
for b1, b2 being RelStr
for b3 being strict RelStr holds
( b3 = [:b1,b2:] iff ( the carrier of b3 = [:the carrier of b1,the carrier of b2:] & the InternalRel of b3 = ["the InternalRel of b1,the InternalRel of b2"] ) );

definition
let c1, c2 be RelStr ;
let c3 be Subset of [:c1,c2:];
redefine func proj1 as proj1 c3 -> Subset of a1;
coherence
proj1 c3 is Subset of c1
proof end;
redefine func proj2 as proj2 c3 -> Subset of a2;
coherence
proj2 c3 is Subset of c2
proof end;
end;

definition
let c1, c2 be RelStr ;
let c3 be Subset of c1;
let c4 be Subset of c2;
redefine func [: as [:c3,c4:] -> Subset of [:a1,a2:];
coherence
[:c3,c4:] is Subset of [:c1,c2:]
proof end;
end;

definition
let c1, c2 be non empty RelStr ;
let c3 be Element of c1;
let c4 be Element of c2;
redefine func [ as [c3,c4] -> Element of [:a1,a2:];
coherence
[c3,c4] is Element of [:c1,c2:]
proof end;
end;

definition
let c1, c2 be non empty RelStr ;
let c3 be Element of [:c1,c2:];
redefine func `1 as c3 `1 -> Element of a1;
coherence
c3 `1 is Element of c1
proof end;
redefine func `2 as c3 `2 -> Element of a2;
coherence
c3 `2 is Element of c2
proof end;
end;

theorem Th11: :: YELLOW_3:11
for b1, b2 being non empty RelStr
for b3, b4 being Element of b1
for b5, b6 being Element of b2 holds
( ( b3 <= b4 & b5 <= b6 ) iff [b3,b5] <= [b4,b6] )
proof end;

theorem Th12: :: YELLOW_3:12
for b1, b2 being non empty RelStr
for b3, b4 being Element of [:b1,b2:] holds
( b3 <= b4 iff ( b3 `1 <= b4 `1 & b3 `2 <= b4 `2 ) )
proof end;

theorem Th13: :: YELLOW_3:13
for b1, b2 being RelStr
for b3 being non empty RelStr
for b4, b5 being Function of [:b1,b2:],b3 st ( for b6 being Element of b1
for b7 being Element of b2 holds b4 . [b6,b7] = b5 . [b6,b7] ) holds
b4 = b5
proof end;

registration
let c1, c2 be non empty RelStr ;
cluster [:a1,a2:] -> non empty strict ;
coherence
not [:c1,c2:] is empty
proof end;
end;

registration
let c1, c2 be reflexive RelStr ;
cluster [:a1,a2:] -> strict reflexive ;
coherence
[:c1,c2:] is reflexive
proof end;
end;

registration
let c1, c2 be antisymmetric RelStr ;
cluster [:a1,a2:] -> strict antisymmetric ;
coherence
[:c1,c2:] is antisymmetric
proof end;
end;

registration
let c1, c2 be transitive RelStr ;
cluster [:a1,a2:] -> strict transitive ;
coherence
[:c1,c2:] is transitive
proof end;
end;

registration
let c1, c2 be with_suprema RelStr ;
cluster [:a1,a2:] -> non empty strict with_suprema ;
coherence
[:c1,c2:] is with_suprema
proof end;
end;

registration
let c1, c2 be with_infima RelStr ;
cluster [:a1,a2:] -> non empty strict with_infima ;
coherence
[:c1,c2:] is with_infima
proof end;
end;

theorem Th14: :: YELLOW_3:14
for b1, b2 being RelStr st not [:b1,b2:] is empty holds
( not b1 is empty & not b2 is empty )
proof end;

theorem Th15: :: YELLOW_3:15
for b1, b2 being non empty RelStr st [:b1,b2:] is reflexive holds
( b1 is reflexive & b2 is reflexive )
proof end;

theorem Th16: :: YELLOW_3:16
for b1, b2 being non empty reflexive RelStr st [:b1,b2:] is antisymmetric holds
( b1 is antisymmetric & b2 is antisymmetric )
proof end;

theorem Th17: :: YELLOW_3:17
for b1, b2 being non empty reflexive RelStr st [:b1,b2:] is transitive holds
( b1 is transitive & b2 is transitive )
proof end;

theorem Th18: :: YELLOW_3:18
for b1, b2 being non empty reflexive RelStr st [:b1,b2:] is with_suprema holds
( b1 is with_suprema & b2 is with_suprema )
proof end;

theorem Th19: :: YELLOW_3:19
for b1, b2 being non empty reflexive RelStr st [:b1,b2:] is with_infima holds
( b1 is with_infima & b2 is with_infima )
proof end;

definition
let c1, c2 be RelStr ;
let c3 be directed Subset of c1;
let c4 be directed Subset of c2;
redefine func [: as [:c3,c4:] -> directed Subset of [:a1,a2:];
coherence
[:c3,c4:] is directed Subset of [:c1,c2:]
proof end;
end;

theorem Th20: :: YELLOW_3:20
for b1, b2 being non empty RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st [:b3,b4:] is directed holds
( b3 is directed & b4 is directed )
proof end;

theorem Th21: :: YELLOW_3:21
for b1, b2 being non empty RelStr
for b3 being non empty Subset of [:b1,b2:] holds
( not proj1 b3 is empty & not proj2 b3 is empty )
proof end;

theorem Th22: :: YELLOW_3:22
for b1, b2 being non empty reflexive RelStr
for b3 being non empty directed Subset of [:b1,b2:] holds
( proj1 b3 is directed & proj2 b3 is directed )
proof end;

definition
let c1, c2 be RelStr ;
let c3 be filtered Subset of c1;
let c4 be filtered Subset of c2;
redefine func [: as [:c3,c4:] -> filtered Subset of [:a1,a2:];
coherence
[:c3,c4:] is filtered Subset of [:c1,c2:]
proof end;
end;

theorem Th23: :: YELLOW_3:23
for b1, b2 being non empty RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st [:b3,b4:] is filtered holds
( b3 is filtered & b4 is filtered )
proof end;

theorem Th24: :: YELLOW_3:24
for b1, b2 being non empty reflexive RelStr
for b3 being non empty filtered Subset of [:b1,b2:] holds
( proj1 b3 is filtered & proj2 b3 is filtered )
proof end;

definition
let c1, c2 be RelStr ;
let c3 be upper Subset of c1;
let c4 be upper Subset of c2;
redefine func [: as [:c3,c4:] -> upper Subset of [:a1,a2:];
coherence
[:c3,c4:] is upper Subset of [:c1,c2:]
proof end;
end;

theorem Th25: :: YELLOW_3:25
for b1, b2 being non empty reflexive RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st [:b3,b4:] is upper holds
( b3 is upper & b4 is upper )
proof end;

theorem Th26: :: YELLOW_3:26
for b1, b2 being non empty reflexive RelStr
for b3 being non empty upper Subset of [:b1,b2:] holds
( proj1 b3 is upper & proj2 b3 is upper )
proof end;

definition
let c1, c2 be RelStr ;
let c3 be lower Subset of c1;
let c4 be lower Subset of c2;
redefine func [: as [:c3,c4:] -> lower Subset of [:a1,a2:];
coherence
[:c3,c4:] is lower Subset of [:c1,c2:]
proof end;
end;

theorem Th27: :: YELLOW_3:27
for b1, b2 being non empty reflexive RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st [:b3,b4:] is lower holds
( b3 is lower & b4 is lower )
proof end;

theorem Th28: :: YELLOW_3:28
for b1, b2 being non empty reflexive RelStr
for b3 being non empty lower Subset of [:b1,b2:] holds
( proj1 b3 is lower & proj2 b3 is lower )
proof end;

definition
let c1 be RelStr ;
attr a1 is void means :Def3: :: YELLOW_3:def 3
the InternalRel of a1 is empty;
end;

:: deftheorem Def3 defines void YELLOW_3:def 3 :
for b1 being RelStr holds
( b1 is void iff the InternalRel of b1 is empty );

registration
cluster empty -> void RelStr ;
coherence
for b1 being RelStr st b1 is empty holds
b1 is void
proof end;
end;

registration
cluster non empty strict non void RelStr ;
existence
ex b1 being Poset st
( not b1 is void & not b1 is empty & b1 is strict )
proof end;
end;

registration
cluster non void -> non empty RelStr ;
coherence
for b1 being RelStr st not b1 is void holds
not b1 is empty
proof end;
end;

registration
cluster non empty reflexive -> non empty non void RelStr ;
coherence
for b1 being RelStr st not b1 is empty & b1 is reflexive holds
not b1 is void
proof end;
end;

registration
let c1 be non void RelStr ;
cluster the InternalRel of a1 -> non empty ;
coherence
not the InternalRel of c1 is empty
by Def3;
end;

theorem Th29: :: YELLOW_3:29
for b1, b2 being non empty RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st [b5,b6] is_>=_than [:b3,b4:] holds
( b5 is_>=_than b3 & b6 is_>=_than b4 )
proof end;

theorem Th30: :: YELLOW_3:30
for b1, b2 being non empty RelStr
for b3 being Subset of b1
for b4 being Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st b5 is_>=_than b3 & b6 is_>=_than b4 holds
[b5,b6] is_>=_than [:b3,b4:]
proof end;

theorem Th31: :: YELLOW_3:31
for b1, b2 being non empty RelStr
for b3 being Subset of [:b1,b2:]
for b4 being Element of b1
for b5 being Element of b2 holds
( [b4,b5] is_>=_than b3 iff ( b4 is_>=_than proj1 b3 & b5 is_>=_than proj2 b3 ) )
proof end;

theorem Th32: :: YELLOW_3:32
for b1, b2 being non empty RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st [b5,b6] is_<=_than [:b3,b4:] holds
( b5 is_<=_than b3 & b6 is_<=_than b4 )
proof end;

theorem Th33: :: YELLOW_3:33
for b1, b2 being non empty RelStr
for b3 being Subset of b1
for b4 being Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st b5 is_<=_than b3 & b6 is_<=_than b4 holds
[b5,b6] is_<=_than [:b3,b4:]
proof end;

theorem Th34: :: YELLOW_3:34
for b1, b2 being non empty RelStr
for b3 being Subset of [:b1,b2:]
for b4 being Element of b1
for b5 being Element of b2 holds
( [b4,b5] is_<=_than b3 iff ( b4 is_<=_than proj1 b3 & b5 is_<=_than proj2 b3 ) )
proof end;

theorem Th35: :: YELLOW_3:35
for b1, b2 being non empty antisymmetric RelStr
for b3 being Subset of b1
for b4 being Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st ex_sup_of b3,b1 & ex_sup_of b4,b2 & ( for b7 being Element of [:b1,b2:] st b7 is_>=_than [:b3,b4:] holds
[b5,b6] <= b7 ) holds
( ( for b7 being Element of b1 st b7 is_>=_than b3 holds
b5 <= b7 ) & ( for b7 being Element of b2 st b7 is_>=_than b4 holds
b6 <= b7 ) )
proof end;

theorem Th36: :: YELLOW_3:36
for b1, b2 being non empty antisymmetric RelStr
for b3 being Subset of b1
for b4 being Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st ex_inf_of b3,b1 & ex_inf_of b4,b2 & ( for b7 being Element of [:b1,b2:] st b7 is_<=_than [:b3,b4:] holds
[b5,b6] >= b7 ) holds
( ( for b7 being Element of b1 st b7 is_<=_than b3 holds
b5 >= b7 ) & ( for b7 being Element of b2 st b7 is_<=_than b4 holds
b6 >= b7 ) )
proof end;

theorem Th37: :: YELLOW_3:37
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st ( for b7 being Element of b1 st b7 is_>=_than b3 holds
b5 <= b7 ) & ( for b7 being Element of b2 st b7 is_>=_than b4 holds
b6 <= b7 ) holds
for b7 being Element of [:b1,b2:] st b7 is_>=_than [:b3,b4:] holds
[b5,b6] <= b7
proof end;

theorem Th38: :: YELLOW_3:38
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2
for b5 being Element of b1
for b6 being Element of b2 st ( for b7 being Element of b1 st b7 is_>=_than b3 holds
b5 >= b7 ) & ( for b7 being Element of b2 st b7 is_>=_than b4 holds
b6 >= b7 ) holds
for b7 being Element of [:b1,b2:] st b7 is_>=_than [:b3,b4:] holds
[b5,b6] >= b7
proof end;

theorem Th39: :: YELLOW_3:39
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 holds
( ( ex_sup_of b3,b1 & ex_sup_of b4,b2 ) iff ex_sup_of [:b3,b4:],[:b1,b2:] )
proof end;

theorem Th40: :: YELLOW_3:40
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 holds
( ( ex_inf_of b3,b1 & ex_inf_of b4,b2 ) iff ex_inf_of [:b3,b4:],[:b1,b2:] )
proof end;

theorem Th41: :: YELLOW_3:41
for b1, b2 being non empty antisymmetric RelStr
for b3 being Subset of [:b1,b2:] holds
( ( ex_sup_of proj1 b3,b1 & ex_sup_of proj2 b3,b2 ) iff ex_sup_of b3,[:b1,b2:] )
proof end;

theorem Th42: :: YELLOW_3:42
for b1, b2 being non empty antisymmetric RelStr
for b3 being Subset of [:b1,b2:] holds
( ( ex_inf_of proj1 b3,b1 & ex_inf_of proj2 b3,b2 ) iff ex_inf_of b3,[:b1,b2:] )
proof end;

theorem Th43: :: YELLOW_3:43
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st ex_sup_of b3,b1 & ex_sup_of b4,b2 holds
sup [:b3,b4:] = [(sup b3),(sup b4)]
proof end;

theorem Th44: :: YELLOW_3:44
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st ex_inf_of b3,b1 & ex_inf_of b4,b2 holds
inf [:b3,b4:] = [(inf b3),(inf b4)]
proof end;

registration
let c1, c2 be non empty antisymmetric complete RelStr ;
cluster [:a1,a2:] -> non empty strict antisymmetric with_suprema with_infima complete ;
coherence
[:c1,c2:] is complete
proof end;
end;

theorem Th45: :: YELLOW_3:45
for b1, b2 being non empty antisymmetric lower-bounded RelStr st [:b1,b2:] is complete holds
( b1 is complete & b2 is complete )
proof end;

theorem Th46: :: YELLOW_3:46
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of [:b1,b2:] st ( [:b1,b2:] is complete or ex_sup_of b3,[:b1,b2:] ) holds
sup b3 = [(sup (proj1 b3)),(sup (proj2 b3))]
proof end;

theorem Th47: :: YELLOW_3:47
for b1, b2 being non empty antisymmetric RelStr
for b3 being non empty Subset of [:b1,b2:] st ( [:b1,b2:] is complete or ex_inf_of b3,[:b1,b2:] ) holds
inf b3 = [(inf (proj1 b3)),(inf (proj2 b3))]
proof end;

theorem Th48: :: YELLOW_3:48
for b1, b2 being non empty reflexive RelStr
for b3 being non empty directed Subset of [:b1,b2:] holds [:(proj1 b3),(proj2 b3):] c= downarrow b3
proof end;

theorem Th49: :: YELLOW_3:49
for b1, b2 being non empty reflexive RelStr
for b3 being non empty filtered Subset of [:b1,b2:] holds [:(proj1 b3),(proj2 b3):] c= uparrow b3
proof end;

scheme :: YELLOW_3:sch 7
s7{ F1() -> non empty RelStr , F2() -> non empty RelStr , F3() -> non empty RelStr , F4( set , set ) -> set } :
ex b1 being Function of [:F1(),F2():],F3() st
for b2 being Element of F1()
for b3 being Element of F2() holds b1 . [b2,b3] = F4(b2,b3)
provided
E24: for b1 being Element of F1()
for b2 being Element of F2() holds F4(b1,b2) is Element of F3()
proof end;