:: FILTER_1 semantic presentation

deffunc H1( LattStr ) -> set = the carrier of a1;

deffunc H2( LattStr ) -> M5([:the carrier of a1,the carrier of a1:],the carrier of a1) = the L_join of a1;

deffunc H3( LattStr ) -> M5([:the carrier of a1,the carrier of a1:],the carrier of a1) = the L_meet of a1;

theorem Th1: :: FILTER_1:1
for b1 being Lattice
for b2, b3 being Filter of b1 holds b2 /\ b3 is Filter of b1
proof end;

theorem Th2: :: FILTER_1:2
for b1 being Lattice
for b2, b3 being Element of b1 st <.b2.) = <.b3.) holds
b2 = b3
proof end;

definition
let c1 be Lattice;
let c2, c3 be Filter of c1;
redefine func /\ as c2 /\ c3 -> Filter of a1;
coherence
c2 /\ c3 is Filter of c1
by Th1;
end;

definition
let c1 be non empty set ;
let c2 be Relation;
mode UnOp of c1,c2 -> UnOp of a1 means :Def1: :: FILTER_1:def 1
for b1, b2 being Element of a1 st [b1,b2] in a2 holds
[(a3 . b1),(a3 . b2)] in a2;
existence
ex b1 being UnOp of c1 st
for b2, b3 being Element of c1 st [b2,b3] in c2 holds
[(b1 . b2),(b1 . b3)] in c2
proof end;
mode BinOp of c1,c2 -> BinOp of a1 means :Def2: :: FILTER_1:def 2
for b1, b2, b3, b4 being Element of a1 st [b1,b2] in a2 & [b3,b4] in a2 holds
[(a3 . b1,b3),(a3 . b2,b4)] in a2;
existence
ex b1 being BinOp of c1 st
for b2, b3, b4, b5 being Element of c1 st [b2,b3] in c2 & [b4,b5] in c2 holds
[(b1 . b2,b4),(b1 . b3,b5)] in c2
proof end;
end;

:: deftheorem Def1 defines UnOp FILTER_1:def 1 :
for b1 being non empty set
for b2 being Relation
for b3 being UnOp of b1 holds
( b3 is UnOp of b1,b2 iff for b4, b5 being Element of b1 st [b4,b5] in b2 holds
[(b3 . b4),(b3 . b5)] in b2 );

:: deftheorem Def2 defines BinOp FILTER_1:def 2 :
for b1 being non empty set
for b2 being Relation
for b3 being BinOp of b1 holds
( b3 is BinOp of b1,b2 iff for b4, b5, b6, b7 being Element of b1 st [b4,b5] in b2 & [b6,b7] in b2 holds
[(b3 . b4,b6),(b3 . b5,b7)] in b2 );

definition
let c1 be non empty set ;
let c2 be Equivalence_Relation of c1;
mode UnOp of a2 is UnOp of a1,a2;
mode BinOp of a2 is BinOp of a1,a2;
end;

registration
let c1 be non empty set ;
let c2 be Equivalence_Relation of c1;
cluster Class a2 -> non empty ;
coherence
not Class c2 is empty
proof end;
end;

definition
let c1 be non empty set ;
let c2 be Equivalence_Relation of c1;
let c3 be Element of c1;
redefine func Class as Class c2,c3 -> Element of Class a2;
coherence
Class c2,c3 is Element of Class c2
by EQREL_1:def 5;
end;

definition
let c1 be non empty set ;
let c2 be Equivalence_Relation of c1;
let c3 be UnOp of c1;
assume E4: c3 is UnOp of c1,c2 ;
func c3 /\/ c2 -> UnOp of Class a2 means :: FILTER_1:def 3
for b1, b2 being set st b1 in Class a2 & b2 in b1 holds
a4 . b1 = Class a2,(a3 . b2);
existence
ex b1 being UnOp of Class c2 st
for b2, b3 being set st b2 in Class c2 & b3 in b2 holds
b1 . b2 = Class c2,(c3 . b3)
proof end;
uniqueness
for b1, b2 being UnOp of Class c2 st ( for b3, b4 being set st b3 in Class c2 & b4 in b3 holds
b1 . b3 = Class c2,(c3 . b4) ) & ( for b3, b4 being set st b3 in Class c2 & b4 in b3 holds
b2 . b3 = Class c2,(c3 . b4) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines /\/ FILTER_1:def 3 :
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being UnOp of b1 st b3 is UnOp of b1,b2 holds
for b4 being UnOp of Class b2 holds
( b4 = b3 /\/ b2 iff for b5, b6 being set st b5 in Class b2 & b6 in b5 holds
b4 . b5 = Class b2,(b3 . b6) );

definition
let c1 be non empty set ;
let c2 be Equivalence_Relation of c1;
let c3 be BinOp of c1;
assume E4: c3 is BinOp of c1,c2 ;
func c3 /\/ c2 -> BinOp of Class a2 means :Def4: :: FILTER_1:def 4
for b1, b2, b3, b4 being set st b1 in Class a2 & b2 in Class a2 & b3 in b1 & b4 in b2 holds
a4 . b1,b2 = Class a2,(a3 . b3,b4);
existence
ex b1 being BinOp of Class c2 st
for b2, b3, b4, b5 being set st b2 in Class c2 & b3 in Class c2 & b4 in b2 & b5 in b3 holds
b1 . b2,b3 = Class c2,(c3 . b4,b5)
proof end;
uniqueness
for b1, b2 being BinOp of Class c2 st ( for b3, b4, b5, b6 being set st b3 in Class c2 & b4 in Class c2 & b5 in b3 & b6 in b4 holds
b1 . b3,b4 = Class c2,(c3 . b5,b6) ) & ( for b3, b4, b5, b6 being set st b3 in Class c2 & b4 in Class c2 & b5 in b3 & b6 in b4 holds
b2 . b3,b4 = Class c2,(c3 . b5,b6) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines /\/ FILTER_1:def 4 :
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being BinOp of b1 st b3 is BinOp of b1,b2 holds
for b4 being BinOp of Class b2 holds
( b4 = b3 /\/ b2 iff for b5, b6, b7, b8 being set st b5 in Class b2 & b6 in Class b2 & b7 in b5 & b8 in b6 holds
b4 . b5,b6 = Class b2,(b3 . b7,b8) );

theorem Th3: :: FILTER_1:3
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3, b4 being Element of b1
for b5 being BinOp of b1,b2 holds (b5 /\/ b2) . (Class b2,b3),(Class b2,b4) = Class b2,(b5 . b3,b4)
proof end;

scheme :: FILTER_1:sch 1
s1{ F1() -> non empty set , F2() -> Equivalence_Relation of F1(), P1[ set ] } :
for b1 being Element of Class F2() holds P1[b1]
provided
E6: for b1 being Element of F1() holds P1[ Class F2(),b1]
proof end;

scheme :: FILTER_1:sch 2
s2{ F1() -> non empty set , F2() -> Equivalence_Relation of F1(), P1[ set , set ] } :
for b1, b2 being Element of Class F2() holds P1[b1,b2]
provided
E6: for b1, b2 being Element of F1() holds P1[ Class F2(),b1, Class F2(),b2]
proof end;

scheme :: FILTER_1:sch 3
s3{ F1() -> non empty set , F2() -> Equivalence_Relation of F1(), P1[ set , set , set ] } :
for b1, b2, b3 being Element of Class F2() holds P1[b1,b2,b3]
provided
E6: for b1, b2, b3 being Element of F1() holds P1[ Class F2(),b1, Class F2(),b2, Class F2(),b3]
proof end;

theorem Th4: :: FILTER_1:4
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being BinOp of b1,b2 st b3 is commutative holds
b3 /\/ b2 is commutative
proof end;

theorem Th5: :: FILTER_1:5
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being BinOp of b1,b2 st b3 is associative holds
b3 /\/ b2 is associative
proof end;

theorem Th6: :: FILTER_1:6
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being Element of b1
for b4 being BinOp of b1,b2 st b3 is_a_left_unity_wrt b4 holds
Class b2,b3 is_a_left_unity_wrt b4 /\/ b2
proof end;

theorem Th7: :: FILTER_1:7
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being Element of b1
for b4 being BinOp of b1,b2 st b3 is_a_right_unity_wrt b4 holds
Class b2,b3 is_a_right_unity_wrt b4 /\/ b2
proof end;

theorem Th8: :: FILTER_1:8
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3 being Element of b1
for b4 being BinOp of b1,b2 st b3 is_a_unity_wrt b4 holds
Class b2,b3 is_a_unity_wrt b4 /\/ b2
proof end;

theorem Th9: :: FILTER_1:9
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3, b4 being BinOp of b1,b2 st b3 is_left_distributive_wrt b4 holds
b3 /\/ b2 is_left_distributive_wrt b4 /\/ b2
proof end;

theorem Th10: :: FILTER_1:10
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3, b4 being BinOp of b1,b2 st b3 is_right_distributive_wrt b4 holds
b3 /\/ b2 is_right_distributive_wrt b4 /\/ b2
proof end;

theorem Th11: :: FILTER_1:11
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3, b4 being BinOp of b1,b2 st b3 is_distributive_wrt b4 holds
b3 /\/ b2 is_distributive_wrt b4 /\/ b2
proof end;

theorem Th12: :: FILTER_1:12
for b1 being non empty set
for b2 being Equivalence_Relation of b1
for b3, b4 being BinOp of b1,b2 st b3 absorbs b4 holds
b3 /\/ b2 absorbs b4 /\/ b2
proof end;

theorem Th13: :: FILTER_1:13
for b1 being I_Lattice
for b2 being Filter of b1 holds the L_join of b1 is BinOp of the carrier of b1, equivalence_wrt b2
proof end;

theorem Th14: :: FILTER_1:14
for b1 being I_Lattice
for b2 being Filter of b1 holds the L_meet of b1 is BinOp of the carrier of b1, equivalence_wrt b2
proof end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
assume E15: c1 is I_Lattice ;
func c1 /\/ c2 -> strict Lattice means :Def5: :: FILTER_1:def 5
for b1 being Equivalence_Relation of the carrier of a1 st b1 = equivalence_wrt a2 holds
a3 = LattStr(# (Class b1),(the L_join of a1 /\/ b1),(the L_meet of a1 /\/ b1) #);
existence
ex b1 being strict Lattice st
for b2 being Equivalence_Relation of the carrier of c1 st b2 = equivalence_wrt c2 holds
b1 = LattStr(# (Class b2),(the L_join of c1 /\/ b2),(the L_meet of c1 /\/ b2) #)
proof end;
uniqueness
for b1, b2 being strict Lattice st ( for b3 being Equivalence_Relation of the carrier of c1 st b3 = equivalence_wrt c2 holds
b1 = LattStr(# (Class b3),(the L_join of c1 /\/ b3),(the L_meet of c1 /\/ b3) #) ) & ( for b3 being Equivalence_Relation of the carrier of c1 st b3 = equivalence_wrt c2 holds
b2 = LattStr(# (Class b3),(the L_join of c1 /\/ b3),(the L_meet of c1 /\/ b3) #) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines /\/ FILTER_1:def 5 :
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
for b3 being strict Lattice holds
( b3 = b1 /\/ b2 iff for b4 being Equivalence_Relation of the carrier of b1 st b4 = equivalence_wrt b2 holds
b3 = LattStr(# (Class b4),(the L_join of b1 /\/ b4),(the L_meet of b1 /\/ b4) #) );

definition
let c1 be Lattice;
let c2 be Filter of c1;
let c3 be Element of c1;
assume E16: c1 is I_Lattice ;
func c3 /\/ c2 -> Element of (a1 /\/ a2) means :Def6: :: FILTER_1:def 6
for b1 being Equivalence_Relation of the carrier of a1 st b1 = equivalence_wrt a2 holds
a4 = Class b1,a3;
existence
ex b1 being Element of (c1 /\/ c2) st
for b2 being Equivalence_Relation of the carrier of c1 st b2 = equivalence_wrt c2 holds
b1 = Class b2,c3
proof end;
uniqueness
for b1, b2 being Element of (c1 /\/ c2) st ( for b3 being Equivalence_Relation of the carrier of c1 st b3 = equivalence_wrt c2 holds
b1 = Class b3,c3 ) & ( for b3 being Equivalence_Relation of the carrier of c1 st b3 = equivalence_wrt c2 holds
b2 = Class b3,c3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines /\/ FILTER_1:def 6 :
for b1 being Lattice
for b2 being Filter of b1
for b3 being Element of b1 st b1 is I_Lattice holds
for b4 being Element of (b1 /\/ b2) holds
( b4 = b3 /\/ b2 iff for b5 being Equivalence_Relation of the carrier of b1 st b5 = equivalence_wrt b2 holds
b4 = Class b5,b3 );

theorem Th15: :: FILTER_1:15
for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4 being Element of b1 holds
( (b3 /\/ b2) "\/" (b4 /\/ b2) = (b3 "\/" b4) /\/ b2 & (b3 /\/ b2) "/\" (b4 /\/ b2) = (b3 "/\" b4) /\/ b2 )
proof end;

theorem Th16: :: FILTER_1:16
for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4 being Element of b1 holds
( b3 /\/ b2 [= b4 /\/ b2 iff b3 => b4 in b2 )
proof end;

theorem Th17: :: FILTER_1:17
for b1 being I_Lattice
for b2, b3, b4 being Element of b1 holds (b2 "/\" b3) => b4 = b2 => (b3 => b4)
proof end;

theorem Th18: :: FILTER_1:18
for b1 being I_Lattice
for b2 being Filter of b1 st b1 is lower-bounded holds
( b1 /\/ b2 is 0_Lattice & Bottom (b1 /\/ b2) = (Bottom b1) /\/ b2 )
proof end;

theorem Th19: :: FILTER_1:19
for b1 being I_Lattice
for b2 being Filter of b1 holds
( b1 /\/ b2 is 1_Lattice & Top (b1 /\/ b2) = (Top b1) /\/ b2 )
proof end;

theorem Th20: :: FILTER_1:20
for b1 being I_Lattice
for b2 being Filter of b1 holds b1 /\/ b2 is implicative
proof end;

theorem Th21: :: FILTER_1:21
for b1 being B_Lattice
for b2 being Filter of b1 holds b1 /\/ b2 is B_Lattice
proof end;

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

theorem Th22: :: FILTER_1:22
for b1, b2 being non empty set
for b3, b4 being Element of b1
for b5, b6 being Element of b2
for b7 being BinOp of b1
for b8 being BinOp of b2 holds |:b7,b8:| . [b3,b5],[b4,b6] = [(b7 . b3,b4),(b8 . b5,b6)]
proof end;

scheme :: FILTER_1:sch 4
s4{ F1() -> non empty set , F2() -> non empty set , P1[ set ] } :
for b1 being Element of [:F1(),F2():] holds P1[b1]
provided
E24: for b1 being Element of F1()
for b2 being Element of F2() holds P1[[b1,b2]]
proof end;

scheme :: FILTER_1:sch 5
s5{ F1() -> non empty set , F2() -> non empty set , P1[ set , set ] } :
for b1, b2 being Element of [:F1(),F2():] holds P1[b1,b2]
provided
E24: for b1, b2 being Element of F1()
for b3, b4 being Element of F2() holds P1[[b1,b3],[b2,b4]]
proof end;

scheme :: FILTER_1:sch 6
s6{ F1() -> non empty set , F2() -> non empty set , P1[ set , set , set ] } :
for b1, b2, b3 being Element of [:F1(),F2():] holds P1[b1,b2,b3]
provided
E24: for b1, b2, b3 being Element of F1()
for b4, b5, b6 being Element of F2() holds P1[[b1,b4],[b2,b5],[b3,b6]]
proof end;

theorem Th23: :: FILTER_1:23
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being BinOp of b2 holds
( ( b3 is commutative & b4 is commutative ) iff |:b3,b4:| is commutative )
proof end;

theorem Th24: :: FILTER_1:24
for b1, b2 being non empty set
for b3 being BinOp of b1
for b4 being BinOp of b2 holds
( ( b3 is associative & b4 is associative ) iff |:b3,b4:| is associative )
proof end;

theorem Th25: :: FILTER_1:25
for b1, b2 being non empty set
for b3 being Element of b1
for b4 being Element of b2
for b5 being BinOp of b1
for b6 being BinOp of b2 holds
( ( b3 is_a_left_unity_wrt b5 & b4 is_a_left_unity_wrt b6 ) iff [b3,b4] is_a_left_unity_wrt |:b5,b6:| )
proof end;

theorem Th26: :: FILTER_1:26
for b1, b2 being non empty set
for b3 being Element of b1
for b4 being Element of b2
for b5 being BinOp of b1
for b6 being BinOp of b2 holds
( ( b3 is_a_right_unity_wrt b5 & b4 is_a_right_unity_wrt b6 ) iff [b3,b4] is_a_right_unity_wrt |:b5,b6:| )
proof end;

theorem Th27: :: FILTER_1:27
for b1, b2 being non empty set
for b3 being Element of b1
for b4 being Element of b2
for b5 being BinOp of b1
for b6 being BinOp of b2 holds
( ( b3 is_a_unity_wrt b5 & b4 is_a_unity_wrt b6 ) iff [b3,b4] is_a_unity_wrt |:b5,b6:| )
proof end;

theorem Th28: :: FILTER_1:28
for b1, b2 being non empty set
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 holds
( ( b3 is_left_distributive_wrt b4 & b5 is_left_distributive_wrt b6 ) iff |:b3,b5:| is_left_distributive_wrt |:b4,b6:| )
proof end;

theorem Th29: :: FILTER_1:29
for b1, b2 being non empty set
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 holds
( ( b3 is_right_distributive_wrt b4 & b5 is_right_distributive_wrt b6 ) iff |:b3,b5:| is_right_distributive_wrt |:b4,b6:| )
proof end;

theorem Th30: :: FILTER_1:30
for b1, b2 being non empty set
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 holds
( ( b3 is_distributive_wrt b4 & b5 is_distributive_wrt b6 ) iff |:b3,b5:| is_distributive_wrt |:b4,b6:| )
proof end;

theorem Th31: :: FILTER_1:31
for b1, b2 being non empty set
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 holds
( ( b3 absorbs b4 & b5 absorbs b6 ) iff |:b3,b5:| absorbs |:b4,b6:| )
proof end;

definition
let c1, c2 be non empty LattStr ;
func [:c1,c2:] -> strict LattStr equals :: FILTER_1:def 7
LattStr(# [:the carrier of a1,the carrier of a2:],|:the L_join of a1,the L_join of a2:|,|:the L_meet of a1,the L_meet of a2:| #);
correctness
coherence
LattStr(# [:the carrier of c1,the carrier of c2:],|:the L_join of c1,the L_join of c2:|,|:the L_meet of c1,the L_meet of c2:| #) is strict LattStr
;
;
end;

:: deftheorem Def7 defines [: FILTER_1:def 7 :
for b1, b2 being non empty LattStr holds [:b1,b2:] = LattStr(# [:the carrier of b1,the carrier of b2:],|:the L_join of b1,the L_join of b2:|,|:the L_meet of b1,the L_meet of b2:| #);

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

definition
let c1 be Lattice;
func LattRel c1 -> Relation equals :: FILTER_1:def 8
{ [b1,b2] where B is Element of a1, B is Element of a1 : b1 [= b2 } ;
coherence
{ [b1,b2] where B is Element of c1, B is Element of c1 : b1 [= b2 } is Relation
proof end;
end;

:: deftheorem Def8 defines LattRel FILTER_1:def 8 :
for b1 being Lattice holds LattRel b1 = { [b2,b3] where B is Element of b1, B is Element of b1 : b2 [= b3 } ;

theorem Th32: :: FILTER_1:32
for b1 being Lattice
for b2, b3 being Element of b1 holds
( [b2,b3] in LattRel b1 iff b2 [= b3 )
proof end;

theorem Th33: :: FILTER_1:33
for b1 being Lattice holds
( dom (LattRel b1) = the carrier of b1 & rng (LattRel b1) = the carrier of b1 & field (LattRel b1) = the carrier of b1 )
proof end;

definition
let c1, c2 be Lattice;
pred c1,c2 are_isomorphic means :: FILTER_1:def 9
LattRel a1, LattRel a2 are_isomorphic ;
reflexivity
for b1 being Lattice holds LattRel b1, LattRel b1 are_isomorphic
by WELLORD1:48;
symmetry
for b1, b2 being Lattice st LattRel b1, LattRel b2 are_isomorphic holds
LattRel b2, LattRel b1 are_isomorphic
by WELLORD1:50;
end;

:: deftheorem Def9 defines are_isomorphic FILTER_1:def 9 :
for b1, b2 being Lattice holds
( b1,b2 are_isomorphic iff LattRel b1, LattRel b2 are_isomorphic );

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

theorem Th34: :: FILTER_1:34
for b1, b2, b3 being Lattice st b1,b2 are_isomorphic & b2,b3 are_isomorphic holds
b1,b3 are_isomorphic
proof end;

theorem Th35: :: FILTER_1:35
for b1, b2 being non empty LattStr st [:b1,b2:] is Lattice holds
( b1 is Lattice & b2 is Lattice )
proof end;

definition
let c1, c2 be Lattice;
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;

theorem Th36: :: FILTER_1:36
for b1, b2 being Lattice
for b3, b4 being Element of b1
for b5, b6 being Element of b2 holds
( [b3,b5] "\/" [b4,b6] = [(b3 "\/" b4),(b5 "\/" b6)] & [b3,b5] "/\" [b4,b6] = [(b3 "/\" b4),(b5 "/\" b6)] ) by Th22;

theorem Th37: :: FILTER_1:37
for b1, b2 being Lattice
for b3, b4 being Element of b1
for b5, b6 being Element of b2 holds
( [b3,b5] [= [b4,b6] iff ( b3 [= b4 & b5 [= b6 ) )
proof end;

theorem Th38: :: FILTER_1:38
for b1, b2 being Lattice holds
( ( b1 is modular & b2 is modular ) iff [:b1,b2:] is modular )
proof end;

theorem Th39: :: FILTER_1:39
for b1, b2 being Lattice holds
( ( b1 is D_Lattice & b2 is D_Lattice ) iff [:b1,b2:] is D_Lattice )
proof end;

theorem Th40: :: FILTER_1:40
for b1, b2 being Lattice holds
( ( b1 is lower-bounded & b2 is lower-bounded ) iff [:b1,b2:] is lower-bounded )
proof end;

theorem Th41: :: FILTER_1:41
for b1, b2 being Lattice holds
( ( b1 is upper-bounded & b2 is upper-bounded ) iff [:b1,b2:] is upper-bounded )
proof end;

theorem Th42: :: FILTER_1:42
for b1, b2 being Lattice holds
( ( b1 is bounded & b2 is bounded ) iff [:b1,b2:] is bounded )
proof end;

theorem Th43: :: FILTER_1:43
for b1, b2 being Lattice st b1 is 0_Lattice & b2 is 0_Lattice holds
Bottom [:b1,b2:] = [(Bottom b1),(Bottom b2)]
proof end;

theorem Th44: :: FILTER_1:44
for b1, b2 being Lattice st b1 is 1_Lattice & b2 is 1_Lattice holds
Top [:b1,b2:] = [(Top b1),(Top b2)]
proof end;

theorem Th45: :: FILTER_1:45
for b1, b2 being Lattice
for b3, b4 being Element of b1
for b5, b6 being Element of b2 st b1 is 01_Lattice & b2 is 01_Lattice holds
( ( b3 is_a_complement_of b4 & b5 is_a_complement_of b6 ) iff [b3,b5] is_a_complement_of [b4,b6] )
proof end;

theorem Th46: :: FILTER_1:46
for b1, b2 being Lattice holds
( ( b1 is C_Lattice & b2 is C_Lattice ) iff [:b1,b2:] is C_Lattice )
proof end;

theorem Th47: :: FILTER_1:47
for b1, b2 being Lattice holds
( ( b1 is B_Lattice & b2 is B_Lattice ) iff [:b1,b2:] is B_Lattice )
proof end;

theorem Th48: :: FILTER_1:48
for b1, b2 being Lattice holds
( ( b1 is implicative & b2 is implicative ) iff [:b1,b2:] is implicative )
proof end;

theorem Th49: :: FILTER_1:49
for b1, b2 being Lattice holds [:b1,b2:] .: = [:(b1 .: ),(b2 .: ):] ;

theorem Th50: :: FILTER_1:50
for b1, b2 being Lattice holds [:b1,b2:],[:b2,b1:] are_isomorphic
proof end;

theorem Th51: :: FILTER_1:51
for b1 being B_Lattice
for b2, b3 being Element of b1 holds b2 <=> b3 = (b2 "/\" b3) "\/" ((b2 ` ) "/\" (b3 ` ))
proof end;

theorem Th52: :: FILTER_1:52
for b1 being B_Lattice
for b2, b3 being Element of b1 holds
( (b2 => b3) ` = b2 "/\" (b3 ` ) & (b2 <=> b3) ` = (b2 "/\" (b3 ` )) "\/" ((b2 ` ) "/\" b3) & (b2 <=> b3) ` = b2 <=> (b3 ` ) & (b2 <=> b3) ` = (b2 ` ) <=> b3 )
proof end;

theorem Th53: :: FILTER_1:53
for b1 being B_Lattice
for b2, b3, b4 being Element of b1 st b2 <=> b3 = b2 <=> b4 holds
b3 = b4
proof end;

theorem Th54: :: FILTER_1:54
for b1 being B_Lattice
for b2, b3 being Element of b1 holds b2 <=> (b2 <=> b3) = b3
proof end;

theorem Th55: :: FILTER_1:55
for b1 being I_Lattice
for b2, b3 being Element of b1 holds
( (b2 "\/" b3) => b2 = b3 => b2 & b2 => (b2 "/\" b3) = b2 => b3 )
proof end;

theorem Th56: :: FILTER_1:56
for b1 being I_Lattice
for b2, b3, b4 being Element of b1 holds
( b2 => b3 [= b2 => (b3 "\/" b4) & b2 => b3 [= (b2 "/\" b4) => b3 & b2 => b3 [= b2 => (b4 "\/" b3) & b2 => b3 [= (b4 "/\" b2) => b3 )
proof end;

Lemma49: for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4, b5 being Element of b1 st b3 => b4 in b2 holds
( b3 => (b4 "\/" b5) in b2 & b3 => (b5 "\/" b4) in b2 & (b3 "/\" b5) => b4 in b2 & (b5 "/\" b3) => b4 in b2 )
proof end;

theorem Th57: :: FILTER_1:57
for b1 being I_Lattice
for b2, b3, b4 being Element of b1 holds (b2 => b3) "/\" (b4 => b3) [= (b2 "\/" b4) => b3
proof end;

Lemma51: for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4, b5 being Element of b1 st b3 => b4 in b2 & b5 => b4 in b2 holds
(b3 "\/" b5) => b4 in b2
proof end;

theorem Th58: :: FILTER_1:58
for b1 being I_Lattice
for b2, b3, b4 being Element of b1 holds (b2 => b3) "/\" (b2 => b4) [= b2 => (b3 "/\" b4)
proof end;

Lemma53: for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4, b5 being Element of b1 st b3 => b4 in b2 & b3 => b5 in b2 holds
b3 => (b4 "/\" b5) in b2
proof end;

theorem Th59: :: FILTER_1:59
for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4, b5, b6 being Element of b1 st b3 <=> b4 in b2 & b5 <=> b6 in b2 holds
( (b3 "\/" b5) <=> (b4 "\/" b6) in b2 & (b3 "/\" b5) <=> (b4 "/\" b6) in b2 )
proof end;

Lemma55: for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4 being Element of b1 holds
( b3 in Class (equivalence_wrt b2),b4 iff b3 <=> b4 in b2 )
proof end;

theorem Th60: :: FILTER_1:60
for b1 being I_Lattice
for b2 being Filter of b1
for b3, b4, b5 being Element of b1 st b3 in Class (equivalence_wrt b2),b4 & b5 in Class (equivalence_wrt b2),b4 holds
( b3 "\/" b5 in Class (equivalence_wrt b2),b4 & b3 "/\" b5 in Class (equivalence_wrt b2),b4 )
proof end;

theorem Th61: :: FILTER_1:61
for b1 being B_Lattice
for b2, b3 being Element of b1 holds
( b2 "\/" (b2 <=> b3) in Class (equivalence_wrt <.b3.)),b2 & ( for b4 being Element of b1 st b4 in Class (equivalence_wrt <.b3.)),b2 holds
b4 [= b2 "\/" (b2 <=> b3) ) )
proof end;

theorem Th62: :: FILTER_1:62
for b1 being B_Lattice
for b2 being Element of b1 holds b1,[:(b1 /\/ <.b2.)),(latt <.b2.)):] are_isomorphic
proof end;