:: FILTER_2 semantic presentation

theorem Th1: :: FILTER_2:1
for b1 being non empty set
for b2 being non empty Subset of b1
for b3 being BinOp of b1
for b4 being BinOp of b2 st b4 = b3 || b2 holds
( ( b3 is commutative implies b4 is commutative ) & ( b3 is idempotent implies b4 is idempotent ) & ( b3 is associative implies b4 is associative ) )
proof end;

theorem Th2: :: FILTER_2:2
for b1 being non empty set
for b2 being non empty Subset of b1
for b3 being BinOp of b1
for b4 being BinOp of b2
for b5 being Element of b1
for b6 being Element of b2 st b4 = b3 || b2 & b6 = b5 holds
( ( b5 is_a_left_unity_wrt b3 implies b6 is_a_left_unity_wrt b4 ) & ( b5 is_a_right_unity_wrt b3 implies b6 is_a_right_unity_wrt b4 ) & ( b5 is_a_unity_wrt b3 implies b6 is_a_unity_wrt b4 ) )
proof end;

theorem Th3: :: FILTER_2:3
for b1 being non empty set
for b2 being non empty Subset of b1
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 st b5 = b3 || b2 & b6 = b4 || b2 holds
( ( b3 is_left_distributive_wrt b4 implies b5 is_left_distributive_wrt b6 ) & ( b3 is_right_distributive_wrt b4 implies b5 is_right_distributive_wrt b6 ) )
proof end;

theorem Th4: :: FILTER_2:4
for b1 being non empty set
for b2 being non empty Subset of b1
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 st b5 = b3 || b2 & b6 = b4 || b2 & b3 is_distributive_wrt b4 holds
b5 is_distributive_wrt b6
proof end;

theorem Th5: :: FILTER_2:5
for b1 being non empty set
for b2 being non empty Subset of b1
for b3, b4 being BinOp of b1
for b5, b6 being BinOp of b2 st b5 = b3 || b2 & b6 = b4 || b2 & b3 absorbs b4 holds
b5 absorbs b6
proof end;

definition
let c1 be non empty set ;
let c2, c3 be Subset of c1;
redefine pred = as c2 = c3 means :: FILTER_2:def 1
for b1 being Element of a1 holds
( b1 in a2 iff b1 in a3 );
compatibility
( c2 = c3 iff for b1 being Element of c1 holds
( b1 in c2 iff b1 in c3 ) )
by SUBSET_1:8;
end;

:: deftheorem Def1 defines = FILTER_2:def 1 :
for b1 being non empty set
for b2, b3 being Subset of b1 holds
( b2 = b3 iff for b4 being Element of b1 holds
( b4 in b2 iff b4 in b3 ) );

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;

theorem Th6: :: FILTER_2:6
for b1, b2 being LattStr st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
b1 .: = b2 .: ;

theorem Th7: :: FILTER_2:7
for b1 being Lattice holds (b1 .: ) .: = LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) ;

theorem Th8: :: FILTER_2:8
for b1, b2 being non empty LattStr st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
for b3, b4 being Element of b1
for b5, b6 being Element of b2 st b3 = b5 & b4 = b6 holds
( b3 "\/" b4 = b5 "\/" b6 & b3 "/\" b4 = b5 "/\" b6 & ( b3 [= b4 implies b5 [= b6 ) & ( b5 [= b6 implies b3 [= b4 ) )
proof end;

theorem Th9: :: FILTER_2:9
for b1, b2 being 0_Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
Bottom b1 = Bottom b2
proof end;

theorem Th10: :: FILTER_2:10
for b1, b2 being 1_Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
Top b1 = Top b2
proof end;

theorem Th11: :: FILTER_2:11
for b1, b2 being C_Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
for b3, b4 being Element of b1
for b5, b6 being Element of b2 st b3 = b5 & b4 = b6 & b3 is_a_complement_of b4 holds
b5 is_a_complement_of b6
proof end;

theorem Th12: :: FILTER_2:12
for b1, b2 being B_Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
for b3 being Element of b1
for b4 being Element of b2 st b3 = b4 holds
b3 ` = b4 `
proof end;

theorem Th13: :: FILTER_2:13
for b1 being Lattice
for b2 being Subset of b1 st ( for b3, b4 being Element of b1 holds
( ( b3 in b2 & b4 in b2 ) iff b3 "/\" b4 in b2 ) ) holds
b2 is ClosedSubset of b1
proof end;

theorem Th14: :: FILTER_2:14
for b1 being Lattice
for b2 being Subset of b1 st ( for b3, b4 being Element of b1 holds
( ( b3 in b2 & b4 in b2 ) iff b3 "\/" b4 in b2 ) ) holds
b2 is ClosedSubset of b1
proof end;

definition
let c1 be Lattice;
redefine mode Filter as Filter of c1 -> non empty ClosedSubset of a1;
coherence
for b1 being Filter of c1 holds b1 is non empty ClosedSubset of c1
by LATTICE4:11;
end;

definition
let c1 be Lattice;
redefine func <. as <.c1.) -> Filter of a1;
coherence
<.c1.) is Filter of c1
;
let c2 be Element of c1;
redefine func <. as <.c2.) -> Filter of a1;
coherence
<.c2.) is Filter of c1
;
end;

definition
let c1 be Lattice;
let c2 be non empty Subset of c1;
redefine func <. as <.c2.) -> Filter of a1;
coherence
<.c2.) is Filter of c1
;
end;

definition
let c1 be D_Lattice;
let c2, c3 be Filter of c1;
redefine func "/\" as c2 "/\" c3 -> Filter of a1;
coherence
c2 "/\" c3 is Filter of c1
proof end;
end;

definition
let c1 be Lattice;
canceled;
mode Ideal of c1 -> non empty ClosedSubset of a1 means :Def3: :: FILTER_2:def 3
for b1, b2 being Element of a1 holds
( ( b1 in a2 & b2 in a2 ) iff b1 "\/" b2 in a2 );
existence
ex b1 being non empty ClosedSubset of c1 st
for b2, b3 being Element of c1 holds
( ( b2 in b1 & b3 in b1 ) iff b2 "\/" b3 in b1 )
proof end;
end;

:: deftheorem Def2 FILTER_2:def 2 :
canceled;

:: deftheorem Def3 defines Ideal FILTER_2:def 3 :
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 holds
( b2 is Ideal of b1 iff for b3, b4 being Element of b1 holds
( ( b3 in b2 & b4 in b2 ) iff b3 "\/" b4 in b2 ) );

theorem Th15: :: FILTER_2:15
for b1 being Lattice
for b2 being non empty Subset of b1 st ( for b3, b4 being Element of b1 holds
( ( b3 in b2 & b4 in b2 ) iff b3 "\/" b4 in b2 ) ) holds
b2 is Ideal of b1
proof end;

theorem Th16: :: FILTER_2:16
for b1, b2 being Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
for b3 being set st b3 is Filter of b1 holds
b3 is Filter of b2
proof end;

theorem Th17: :: FILTER_2:17
for b1, b2 being Lattice st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) holds
for b3 being set st b3 is Ideal of b1 holds
b3 is Ideal of b2
proof end;

definition
let c1 be Lattice;
let c2 be Element of c1;
func c2 .: -> Element of (a1 .: ) equals :: FILTER_2:def 4
a2;
coherence
c2 is Element of (c1 .: )
;
end;

:: deftheorem Def4 defines .: FILTER_2:def 4 :
for b1 being Lattice
for b2 being Element of b1 holds b2 .: = b2;

definition
let c1 be Lattice;
let c2 be Element of (c1 .: );
func .: c2 -> Element of a1 equals :: FILTER_2:def 5
a2;
coherence
c2 is Element of c1
;
end;

:: deftheorem Def5 defines .: FILTER_2:def 5 :
for b1 being Lattice
for b2 being Element of (b1 .: ) holds .: b2 = b2;

theorem Th18: :: FILTER_2:18
for b1 being Lattice
for b2 being Element of b1
for b3 being Element of (b1 .: ) holds
( .: (b2 .: ) = b2 & (.: b3) .: = b3 ) ;

theorem Th19: :: FILTER_2:19
for b1 being Lattice
for b2, b3 being Element of b1
for b4, b5 being Element of (b1 .: ) holds
( b2 "/\" b3 = (b2 .: ) "\/" (b3 .: ) & b2 "\/" b3 = (b2 .: ) "/\" (b3 .: ) & b4 "/\" b5 = (.: b4) "\/" (.: b5) & b4 "\/" b5 = (.: b4) "/\" (.: b5) ) ;

theorem Th20: :: FILTER_2:20
for b1 being Lattice
for b2, b3 being Element of b1
for b4, b5 being Element of (b1 .: ) holds
( ( b2 [= b3 implies b3 .: [= b2 .: ) & ( b3 .: [= b2 .: implies b2 [= b3 ) & ( b4 [= b5 implies .: b5 [= .: b4 ) & ( .: b5 [= .: b4 implies b4 [= b5 ) ) by LATTICE2:53, LATTICE2:54;

theorem Th21: :: FILTER_2:21
for b1 being Lattice
for b2 being set holds
( b2 is Ideal of b1 iff b2 is Filter of b1 .: )
proof end;

definition
let c1 be Lattice;
let c2 be Subset of c1;
func c2 .: -> Subset of (a1 .: ) equals :: FILTER_2:def 6
a2;
coherence
c2 is Subset of (c1 .: )
;
end;

:: deftheorem Def6 defines .: FILTER_2:def 6 :
for b1 being Lattice
for b2 being Subset of b1 holds b2 .: = b2;

definition
let c1 be Lattice;
let c2 be Subset of (c1 .: );
func .: c2 -> Subset of a1 equals :: FILTER_2:def 7
a2;
coherence
c2 is Subset of c1
;
end;

:: deftheorem Def7 defines .: FILTER_2:def 7 :
for b1 being Lattice
for b2 being Subset of (b1 .: ) holds .: b2 = b2;

registration
let c1 be Lattice;
let c2 be non empty Subset of c1;
cluster a2 .: -> non empty ;
coherence
not c2 .: is empty
;
end;

registration
let c1 be Lattice;
let c2 be non empty Subset of (c1 .: );
cluster .: a2 -> non empty ;
coherence
not .: c2 is empty
;
end;

definition
let c1 be Lattice;
let c2 be ClosedSubset of c1;
redefine func .: as c2 .: -> ClosedSubset of a1 .: ;
coherence
c2 .: is ClosedSubset of c1 .:
proof end;
end;

definition
let c1 be Lattice;
let c2 be non empty ClosedSubset of c1;
redefine func .: as c2 .: -> non empty ClosedSubset of a1 .: ;
coherence
c2 .: is non empty ClosedSubset of c1 .:
proof end;
end;

definition
let c1 be Lattice;
let c2 be ClosedSubset of c1 .: ;
redefine func .: as .: c2 -> ClosedSubset of a1;
coherence
.: c2 is ClosedSubset of c1
proof end;
end;

definition
let c1 be Lattice;
let c2 be non empty ClosedSubset of c1 .: ;
redefine func .: as .: c2 -> non empty ClosedSubset of a1;
coherence
.: c2 is non empty ClosedSubset of c1
proof end;
end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
redefine func .: as c2 .: -> Ideal of a1 .: ;
coherence
c2 .: is Ideal of c1 .:
proof end;
end;

definition
let c1 be Lattice;
let c2 be Filter of c1 .: ;
redefine func .: as .: c2 -> Ideal of a1;
coherence
.: c2 is Ideal of c1
proof end;
end;

definition
let c1 be Lattice;
let c2 be Ideal of c1;
redefine func .: as c2 .: -> Filter of a1 .: ;
coherence
c2 .: is Filter of c1 .:
proof end;
end;

definition
let c1 be Lattice;
let c2 be Ideal of c1 .: ;
redefine func .: as .: c2 -> Filter of a1;
coherence
.: c2 is Filter of c1
proof end;
end;

theorem Th22: :: FILTER_2:22
for b1 being Lattice
for b2 being non empty Subset of b1 holds
( b2 is Ideal of b1 iff ( ( for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 "\/" b4 in b2 ) & ( for b3, b4 being Element of b1 st b3 in b2 & b4 [= b3 holds
b4 in b2 ) ) )
proof end;

theorem Th23: :: FILTER_2:23
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Ideal of b1 st b2 in b4 holds
( b2 "/\" b3 in b4 & b3 "/\" b2 in b4 )
proof end;

theorem Th24: :: FILTER_2:24
for b1 being Lattice
for b2 being Ideal of b1 ex b3 being Element of b1 st b3 in b2
proof end;

theorem Th25: :: FILTER_2:25
for b1 being Lattice
for b2 being Ideal of b1 st b1 is lower-bounded holds
Bottom b1 in b2
proof end;

theorem Th26: :: FILTER_2:26
for b1 being Lattice st b1 is lower-bounded holds
{(Bottom b1)} is Ideal of b1
proof end;

theorem Th27: :: FILTER_2:27
for b1 being Lattice
for b2 being Element of b1 st {b2} is Ideal of b1 holds
b1 is lower-bounded
proof end;

theorem Th28: :: FILTER_2:28
for b1 being Lattice holds the carrier of b1 is Ideal of b1
proof end;

definition
let c1 be Lattice;
func (.c1.> -> Ideal of a1 equals :: FILTER_2:def 8
the carrier of a1;
coherence
the carrier of c1 is Ideal of c1
by Th28;
end;

:: deftheorem Def8 defines (. FILTER_2:def 8 :
for b1 being Lattice holds (.b1.> = the carrier of b1;

definition
let c1 be Lattice;
let c2 be Element of c1;
func (.c2.> -> Ideal of a1 equals :: FILTER_2:def 9
{ b1 where B is Element of a1 : b1 [= a2 } ;
coherence
{ b1 where B is Element of c1 : b1 [= c2 } is Ideal of c1
proof end;
end;

:: deftheorem Def9 defines (. FILTER_2:def 9 :
for b1 being Lattice
for b2 being Element of b1 holds (.b2.> = { b3 where B is Element of b1 : b3 [= b2 } ;

theorem Th29: :: FILTER_2:29
for b1 being Lattice
for b2, b3 being Element of b1 holds
( b2 in (.b3.> iff b2 [= b3 )
proof end;

theorem Th30: :: FILTER_2:30
for b1 being Lattice
for b2 being Element of b1 holds
( (.b2.> = <.(b2 .: ).) & (.(b2 .: ).> = <.b2.) )
proof end;

theorem Th31: :: FILTER_2:31
for b1 being Lattice
for b2, b3 being Element of b1 holds
( b2 in (.b2.> & b2 "/\" b3 in (.b2.> & b3 "/\" b2 in (.b2.> )
proof end;

theorem Th32: :: FILTER_2:32
for b1 being Lattice st b1 is upper-bounded holds
(.b1.> = (.(Top b1).>
proof end;

definition
let c1 be Lattice;
let c2 be Ideal of c1;
pred c2 is_max-ideal means :: FILTER_2:def 10
( a2 <> the carrier of a1 & ( for b1 being Ideal of a1 st a2 c= b1 & b1 <> the carrier of a1 holds
a2 = b1 ) );
end;

:: deftheorem Def10 defines is_max-ideal FILTER_2:def 10 :
for b1 being Lattice
for b2 being Ideal of b1 holds
( b2 is_max-ideal iff ( b2 <> the carrier of b1 & ( for b3 being Ideal of b1 st b2 c= b3 & b3 <> the carrier of b1 holds
b2 = b3 ) ) );

theorem Th33: :: FILTER_2:33
for b1 being Lattice
for b2 being Ideal of b1 holds
( b2 is_max-ideal iff b2 .: is_ultrafilter )
proof end;

theorem Th34: :: FILTER_2:34
for b1 being Lattice st b1 is upper-bounded holds
for b2 being Ideal of b1 st b2 <> the carrier of b1 holds
ex b3 being Ideal of b1 st
( b2 c= b3 & b3 is_max-ideal )
proof end;

theorem Th35: :: FILTER_2:35
for b1 being Lattice
for b2 being Element of b1 st ex b3 being Element of b1 st b2 "\/" b3 <> b2 holds
(.b2.> <> the carrier of b1
proof end;

theorem Th36: :: FILTER_2:36
for b1 being Lattice
for b2 being Element of b1 st b1 is upper-bounded & b2 <> Top b1 holds
ex b3 being Ideal of b1 st
( b2 in b3 & b3 is_max-ideal )
proof end;

definition
let c1 be Lattice;
let c2 be non empty Subset of c1;
func (.c2.> -> Ideal of a1 means :Def11: :: FILTER_2:def 11
( a2 c= a3 & ( for b1 being Ideal of a1 st a2 c= b1 holds
a3 c= b1 ) );
existence
ex b1 being Ideal of c1 st
( c2 c= b1 & ( for b2 being Ideal of c1 st c2 c= b2 holds
b1 c= b2 ) )
proof end;
uniqueness
for b1, b2 being Ideal of c1 st c2 c= b1 & ( for b3 being Ideal of c1 st c2 c= b3 holds
b1 c= b3 ) & c2 c= b2 & ( for b3 being Ideal of c1 st c2 c= b3 holds
b2 c= b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines (. FILTER_2:def 11 :
for b1 being Lattice
for b2 being non empty Subset of b1
for b3 being Ideal of b1 holds
( b3 = (.b2.> iff ( b2 c= b3 & ( for b4 being Ideal of b1 st b2 c= b4 holds
b3 c= b4 ) ) );

Lemma21: for b1, b2 being Lattice
for b3 being non empty Subset of b1
for b4 being non empty Subset of b2 st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) & b3 = b4 holds
( <.b3.) = <.b4.) & (.b3.> = (.b4.> )
proof end;

theorem Th37: :: FILTER_2:37
for b1 being Lattice
for b2 being non empty Subset of b1
for b3 being non empty Subset of (b1 .: ) holds
( <.(b2 .: ).) = (.b2.> & <.b2.) = (.(b2 .: ).> & <.(.: b3).) = (.b3.> & <.b3.) = (.(.: b3).> )
proof end;

theorem Th38: :: FILTER_2:38
for b1 being Lattice
for b2 being Ideal of b1 holds (.b2.> = b2
proof end;

theorem Th39: :: FILTER_2:39
for b1 being Lattice
for b2, b3, b4 being non empty Subset of b1 holds
( ( b3 c= b4 implies (.b3.> c= (.b4.> ) & (.(.b2.>.> c= (.b2.> )
proof end;

theorem Th40: :: FILTER_2:40
for b1 being Lattice
for b2 being Element of b1
for b3 being non empty Subset of b1 st b2 in b3 holds
(.b2.> c= (.b3.>
proof end;

theorem Th41: :: FILTER_2:41
for b1 being Lattice
for b2 being Element of b1
for b3 being non empty Subset of b1 st b3 = {b2} holds
(.b3.> = (.b2.>
proof end;

theorem Th42: :: FILTER_2:42
for b1 being Lattice
for b2 being non empty Subset of b1 st b1 is upper-bounded & Top b1 in b2 holds
( (.b2.> = (.b1.> & (.b2.> = the carrier of b1 )
proof end;

theorem Th43: :: FILTER_2:43
for b1 being Lattice
for b2 being Ideal of b1 st b1 is upper-bounded & Top b1 in b2 holds
( b2 = (.b1.> & b2 = the carrier of b1 )
proof end;

definition
let c1 be Lattice;
let c2 be Ideal of c1;
attr a2 is prime means :: FILTER_2:def 12
for b1, b2 being Element of a1 holds
( b1 "/\" b2 in a2 iff ( b1 in a2 or b2 in a2 ) );
end;

:: deftheorem Def12 defines prime FILTER_2:def 12 :
for b1 being Lattice
for b2 being Ideal of b1 holds
( b2 is prime iff for b3, b4 being Element of b1 holds
( b3 "/\" b4 in b2 iff ( b3 in b2 or b4 in b2 ) ) );

theorem Th44: :: FILTER_2:44
for b1 being Lattice
for b2 being Ideal of b1 holds
( b2 is prime iff b2 .: is prime )
proof end;

definition
let c1 be Lattice;
let c2, c3 be non empty Subset of c1;
func c2 "\/" c3 -> Subset of a1 equals :: FILTER_2:def 13
{ (b1 "\/" b2) where B is Element of a1, B is Element of a1 : ( b1 in a2 & b2 in a3 ) } ;
coherence
{ (b1 "\/" b2) where B is Element of c1, B is Element of c1 : ( b1 in c2 & b2 in c3 ) } is Subset of c1
proof end;
end;

:: deftheorem Def13 defines "\/" FILTER_2:def 13 :
for b1 being Lattice
for b2, b3 being non empty Subset of b1 holds b2 "\/" b3 = { (b4 "\/" b5) where B is Element of b1, B is Element of b1 : ( b4 in b2 & b5 in b3 ) } ;

registration
let c1 be Lattice;
let c2, c3 be non empty Subset of c1;
cluster a2 "\/" a3 -> non empty ;
coherence
not c2 "\/" c3 is empty
proof end;
end;

Lemma26: for b1, b2 being Lattice
for b3, b4 being non empty Subset of b1
for b5, b6 being non empty Subset of b2 st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) & b3 = b5 & b4 = b6 holds
b3 "/\" b4 = b5 "/\" b6
proof end;

theorem Th45: :: FILTER_2:45
for b1 being Lattice
for b2, b3 being non empty Subset of b1
for b4, b5 being non empty Subset of (b1 .: ) holds
( b2 "\/" b3 = (b2 .: ) "/\" (b3 .: ) & (b2 .: ) "\/" (b3 .: ) = b2 "/\" b3 & b4 "\/" b5 = (.: b4) "/\" (.: b5) & (.: b4) "\/" (.: b5) = b4 "/\" b5 )
proof end;

theorem Th46: :: FILTER_2:46
for b1 being Lattice
for b2, b3 being Element of b1
for b4, b5 being non empty Subset of b1 st b2 in b4 & b3 in b5 holds
( b2 "\/" b3 in b4 "\/" b5 & b3 "\/" b2 in b4 "\/" b5 ) ;

theorem Th47: :: FILTER_2:47
for b1 being Lattice
for b2 being set
for b3, b4 being non empty Subset of b1 st b2 in b3 "\/" b4 holds
ex b5, b6 being Element of b1 st
( b2 = b5 "\/" b6 & b5 in b3 & b6 in b4 ) ;

theorem Th48: :: FILTER_2:48
for b1 being Lattice
for b2, b3 being non empty Subset of b1 holds b2 "\/" b3 = b3 "\/" b2
proof end;

definition
let c1 be D_Lattice;
let c2, c3 be Ideal of c1;
redefine func "\/" as c2 "\/" c3 -> Ideal of a1;
coherence
c2 "\/" c3 is Ideal of c1
proof end;
end;

theorem Th49: :: FILTER_2:49
for b1 being Lattice
for b2, b3 being non empty Subset of b1 holds
( (.(b2 \/ b3).> = (.((.b2.> \/ b3).> & (.(b2 \/ b3).> = (.(b2 \/ (.b3.>).> )
proof end;

theorem Th50: :: FILTER_2:50
for b1 being Lattice
for b2, b3 being Ideal of b1 holds (.(b2 \/ b3).> = { b4 where B is Element of b1 : ex b1, b2 being Element of b1 st
( b4 [= b5 "\/" b6 & b5 in b2 & b6 in b3 )
}
proof end;

theorem Th51: :: FILTER_2:51
for b1 being Lattice
for b2, b3 being Ideal of b1 holds
( b2 c= b2 "\/" b3 & b3 c= b2 "\/" b3 )
proof end;

theorem Th52: :: FILTER_2:52
for b1 being Lattice
for b2, b3 being Ideal of b1 holds (.(b2 \/ b3).> = (.(b2 "\/" b3).>
proof end;

theorem Th53: :: FILTER_2:53
for b1 being Lattice holds
( b1 is C_Lattice iff b1 .: is C_Lattice )
proof end;

theorem Th54: :: FILTER_2:54
for b1 being Lattice holds
( b1 is B_Lattice iff b1 .: is B_Lattice )
proof end;

registration
let c1 be B_Lattice;
cluster a1 .: -> Lattice-like Boolean ;
coherence
( c1 .: is Boolean & c1 .: is Lattice-like )
by Th54;
end;

Lemma30: for b1 being B_Lattice
for b2 being Element of b1 holds (b2 .: ) ` = b2 `
proof end;

theorem Th55: :: FILTER_2:55
for b1 being B_Lattice
for b2 being Element of b1
for b3 being Element of (b1 .: ) holds
( (b2 .: ) ` = b2 ` & (.: b3) ` = b3 ` )
proof end;

theorem Th56: :: FILTER_2:56
for b1 being B_Lattice
for b2, b3 being Ideal of b1 holds (.(b2 \/ b3).> = b2 "\/" b3
proof end;

theorem Th57: :: FILTER_2:57
for b1 being B_Lattice
for b2 being Ideal of b1 holds
( b2 is_max-ideal iff ( b2 <> the carrier of b1 & ( for b3 being Element of b1 holds
( b3 in b2 or b3 ` in b2 ) ) ) )
proof end;

theorem Th58: :: FILTER_2:58
for b1 being B_Lattice
for b2 being Ideal of b1 holds
( ( b2 <> (.b1.> & b2 is prime ) iff b2 is_max-ideal )
proof end;

theorem Th59: :: FILTER_2:59
for b1 being B_Lattice
for b2 being Ideal of b1 st b2 is_max-ideal holds
for b3 being Element of b1 holds
( b3 in b2 iff not b3 ` in b2 )
proof end;

theorem Th60: :: FILTER_2:60
for b1 being B_Lattice
for b2, b3 being Element of b1 st b2 <> b3 holds
ex b4 being Ideal of b1 st
( b4 is_max-ideal & ( ( b2 in b4 & not b3 in b4 ) or ( not b2 in b4 & b3 in b4 ) ) )
proof end;

theorem Th61: :: FILTER_2:61
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 holds
( the L_join of b1 || b2 is BinOp of b2 & the L_meet of b1 || b2 is BinOp of b2 )
proof end;

theorem Th62: :: FILTER_2:62
for b1 being Lattice
for b2 being non empty ClosedSubset of b1
for b3, b4 being BinOp of b2 st b3 = the L_join of b1 || b2 & b4 = the L_meet of b1 || b2 holds
( b3 is commutative & b3 is associative & b4 is commutative & b4 is associative & b3 absorbs b4 & b4 absorbs b3 )
proof end;

definition
let c1 be Lattice;
let c2, c3 be Element of c1;
assume E34: c2 [= c3 ;
func [#c2,c3#] -> non empty ClosedSubset of a1 equals :Def14: :: FILTER_2:def 14
{ b1 where B is Element of a1 : ( a2 [= b1 & b1 [= a3 ) } ;
coherence
{ b1 where B is Element of c1 : ( c2 [= b1 & b1 [= c3 ) } is non empty ClosedSubset of c1
proof end;
end;

:: deftheorem Def14 defines [# FILTER_2:def 14 :
for b1 being Lattice
for b2, b3 being Element of b1 st b2 [= b3 holds
[#b2,b3#] = { b4 where B is Element of b1 : ( b2 [= b4 & b4 [= b3 ) } ;

theorem Th63: :: FILTER_2:63
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 holds
( b4 in [#b2,b3#] iff ( b2 [= b4 & b4 [= b3 ) )
proof end;

theorem Th64: :: FILTER_2:64
for b1 being Lattice
for b2, b3 being Element of b1 st b2 [= b3 holds
( b2 in [#b2,b3#] & b3 in [#b2,b3#] ) by Th63;

theorem Th65: :: FILTER_2:65
for b1 being Lattice
for b2 being Element of b1 holds [#b2,b2#] = {b2}
proof end;

theorem Th66: :: FILTER_2:66
for b1 being Lattice
for b2 being Element of b1 st b1 is upper-bounded holds
<.b2.) = [#b2,(Top b1)#]
proof end;

theorem Th67: :: FILTER_2:67
for b1 being Lattice
for b2 being Element of b1 st b1 is lower-bounded holds
(.b2.> = [#(Bottom b1),b2#]
proof end;

theorem Th68: :: FILTER_2:68
for b1, b2 being Lattice
for b3 being Filter of b1
for b4 being Filter of b2 st LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) & b3 = b4 holds
latt b3 = latt b4
proof end;

notation
let c1 be Lattice;
synonym Sublattice of c1 for SubLattice of c1;
end;

definition
let c1 be Lattice;
redefine mode SubLattice of c1 -> LattStr means :Def15: :: FILTER_2:def 15
ex b1 being non empty ClosedSubset of a1ex b2, b3 being BinOp of b1 st
( b2 = the L_join of a1 || b1 & b3 = the L_meet of a1 || b1 & LattStr(# the carrier of a2,the L_join of a2,the L_meet of a2 #) = LattStr(# b1,b2,b3 #) );
compatibility
for b1 being LattStr holds
( b1 is Sublattice of c1 iff ex b2 being non empty ClosedSubset of c1ex b3, b4 being BinOp of b2 st
( b3 = the L_join of c1 || b2 & b4 = the L_meet of c1 || b2 & LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) = LattStr(# b2,b3,b4 #) ) )
proof end;
end;

:: deftheorem Def15 defines Sublattice FILTER_2:def 15 :
for b1 being Lattice
for b2 being LattStr holds
( b2 is Sublattice of b1 iff ex b3 being non empty ClosedSubset of b1ex b4, b5 being BinOp of b3 st
( b4 = the L_join of b1 || b3 & b5 = the L_meet of b1 || b3 & LattStr(# the carrier of b2,the L_join of b2,the L_meet of b2 #) = LattStr(# b3,b4,b5 #) ) );

theorem Th69: :: FILTER_2:69
for b1 being Lattice
for b2 being Sublattice of b1
for b3 being Element of b2 holds b3 is Element of b1
proof end;

definition
let c1 be Lattice;
let c2 be non empty ClosedSubset of c1;
func latt c1,c2 -> Sublattice of a1 means :Def16: :: FILTER_2:def 16
ex b1, b2 being BinOp of a2 st
( b1 = the L_join of a1 || a2 & b2 = the L_meet of a1 || a2 & a3 = LattStr(# a2,b1,b2 #) );
existence
ex b1 being Sublattice of c1ex b2, b3 being BinOp of c2 st
( b2 = the L_join of c1 || c2 & b3 = the L_meet of c1 || c2 & b1 = LattStr(# c2,b2,b3 #) )
proof end;
uniqueness
for b1, b2 being Sublattice of c1 st ex b3, b4 being BinOp of c2 st
( b3 = the L_join of c1 || c2 & b4 = the L_meet of c1 || c2 & b1 = LattStr(# c2,b3,b4 #) ) & ex b3, b4 being BinOp of c2 st
( b3 = the L_join of c1 || c2 & b4 = the L_meet of c1 || c2 & b2 = LattStr(# c2,b3,b4 #) ) holds
b1 = b2
;
end;

:: deftheorem Def16 defines latt FILTER_2:def 16 :
for b1 being Lattice
for b2 being non empty ClosedSubset of b1
for b3 being Sublattice of b1 holds
( b3 = latt b1,b2 iff ex b4, b5 being BinOp of b2 st
( b4 = the L_join of b1 || b2 & b5 = the L_meet of b1 || b2 & b3 = LattStr(# b2,b4,b5 #) ) );

registration
let c1 be Lattice;
let c2 be non empty ClosedSubset of c1;
cluster latt a1,a2 -> strict ;
coherence
latt c1,c2 is strict
proof end;
end;

definition
let c1 be Lattice;
let c2 be Sublattice of c1;
redefine func .: as c2 .: -> strict Sublattice of a1 .: ;
coherence
c2 .: is strict Sublattice of c1 .:
proof end;
end;

theorem Th70: :: FILTER_2:70
for b1 being Lattice
for b2 being Filter of b1 holds latt b2 = latt b1,b2
proof end;

theorem Th71: :: FILTER_2:71
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 holds latt b1,b2 = (latt (b1 .: ),(b2 .: )) .:
proof end;

theorem Th72: :: FILTER_2:72
for b1 being Lattice holds
( latt b1,(.b1.> = LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) & latt b1,<.b1.) = LattStr(# the carrier of b1,the L_join of b1,the L_meet of b1 #) )
proof end;

theorem Th73: :: FILTER_2:73
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 holds
( the carrier of (latt b1,b2) = b2 & the L_join of (latt b1,b2) = the L_join of b1 || b2 & the L_meet of (latt b1,b2) = the L_meet of b1 || b2 )
proof end;

theorem Th74: :: FILTER_2:74
for b1 being Lattice
for b2 being non empty ClosedSubset of b1
for b3, b4 being Element of b1
for b5, b6 being Element of (latt b1,b2) st b3 = b5 & b4 = b6 holds
( b3 "\/" b4 = b5 "\/" b6 & b3 "/\" b4 = b5 "/\" b6 )
proof end;

theorem Th75: :: FILTER_2:75
for b1 being Lattice
for b2 being non empty ClosedSubset of b1
for b3, b4 being Element of b1
for b5, b6 being Element of (latt b1,b2) st b3 = b5 & b4 = b6 holds
( b3 [= b4 iff b5 [= b6 )
proof end;

theorem Th76: :: FILTER_2:76
for b1 being Lattice
for b2 being Ideal of b1 st b1 is lower-bounded holds
latt b1,b2 is lower-bounded
proof end;

theorem Th77: :: FILTER_2:77
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 st b1 is modular holds
latt b1,b2 is modular
proof end;

theorem Th78: :: FILTER_2:78
for b1 being Lattice
for b2 being non empty ClosedSubset of b1 st b1 is distributive holds
latt b1,b2 is distributive
proof end;

theorem Th79: :: FILTER_2:79
for b1 being Lattice
for b2, b3 being Element of b1 st b1 is implicative & b2 [= b3 holds
latt b1,[#b2,b3#] is implicative
proof end;

theorem Th80: :: FILTER_2:80
for b1 being Lattice
for b2 being Element of b1 holds latt b1,(.b2.> is upper-bounded
proof end;

theorem Th81: :: FILTER_2:81
for b1 being Lattice
for b2 being Element of b1 holds Top (latt b1,(.b2.>) = b2
proof end;

theorem Th82: :: FILTER_2:82
for b1 being Lattice
for b2 being Element of b1 st b1 is lower-bounded holds
( latt b1,(.b2.> is lower-bounded & Bottom (latt b1,(.b2.>) = Bottom b1 )
proof end;

theorem Th83: :: FILTER_2:83
for b1 being Lattice
for b2 being Element of b1 st b1 is lower-bounded holds
latt b1,(.b2.> is bounded
proof end;

theorem Th84: :: FILTER_2:84
for b1 being Lattice
for b2, b3 being Element of b1 st b2 [= b3 holds
( latt b1,[#b2,b3#] is bounded & Top (latt b1,[#b2,b3#]) = b3 & Bottom (latt b1,[#b2,b3#]) = b2 )
proof end;

theorem Th85: :: FILTER_2:85
for b1 being Lattice
for b2 being Element of b1 st b1 is C_Lattice & b1 is modular holds
latt b1,(.b2.> is C_Lattice
proof end;

theorem Th86: :: FILTER_2:86
for b1 being Lattice
for b2, b3 being Element of b1 st b1 is C_Lattice & b1 is modular & b2 [= b3 holds
latt b1,[#b2,b3#] is C_Lattice
proof end;

theorem Th87: :: FILTER_2:87
for b1 being Lattice
for b2, b3 being Element of b1 st b1 is B_Lattice & b2 [= b3 holds
latt b1,[#b2,b3#] is B_Lattice
proof end;