:: FILTER_0 semantic presentation

theorem Th1: :: FILTER_0:1
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 holds
( b4 "\/" b2 [= b4 "\/" b3 & b2 "\/" b4 [= b3 "\/" b4 & b2 "\/" b4 [= b4 "\/" b3 & b4 "\/" b2 [= b3 "\/" b4 )
proof end;

theorem Th2: :: FILTER_0:2
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 holds
( b2 "/\" b4 [= b3 & b4 "/\" b2 [= b3 )
proof end;

theorem Th3: :: FILTER_0:3
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 holds
( b2 [= b4 "\/" b3 & b2 [= b3 "\/" b4 )
proof end;

theorem Th4: :: FILTER_0:4
for b1 being Lattice
for b2, b3, b4, b5 being Element of b1 st b2 [= b3 & b4 [= b5 holds
( b2 "\/" b4 [= b3 "\/" b5 & b2 "\/" b4 [= b5 "\/" b3 )
proof end;

theorem Th5: :: FILTER_0:5
for b1 being Lattice
for b2, b3, b4, b5 being Element of b1 st b2 [= b3 & b4 [= b5 holds
( b2 "/\" b4 [= b3 "/\" b5 & b2 "/\" b4 [= b5 "/\" b3 )
proof end;

theorem Th6: :: FILTER_0:6
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 & b4 [= b3 holds
b2 "\/" b4 [= b3
proof end;

theorem Th7: :: FILTER_0:7
for b1 being Lattice
for b2, b3, b4 being Element of b1 st b2 [= b3 & b2 [= b4 holds
b2 [= b3 "/\" b4
proof end;

definition
let c1 be Lattice;
mode Filter of c1 -> non empty Subset of a1 means :Def1: :: FILTER_0:def 1
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 Subset 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 Def1 defines Filter FILTER_0:def 1 :
for b1 being Lattice
for b2 being non empty Subset of b1 holds
( b2 is Filter of b1 iff for b3, b4 being Element of b1 holds
( ( b3 in b2 & b4 in b2 ) iff b3 "/\" b4 in b2 ) );

theorem Th8: :: FILTER_0:8
canceled;

theorem Th9: :: FILTER_0:9
for b1 being Lattice
for b2 being non empty Subset of b1 holds
( b2 is Filter 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 & b3 [= b4 holds
b4 in b2 ) ) )
proof end;

theorem Th10: :: FILTER_0:10
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1 st b2 in b4 holds
( b2 "\/" b3 in b4 & b3 "\/" b2 in b4 )
proof end;

theorem Th11: :: FILTER_0:11
for b1 being Lattice
for b2 being Filter of b1 ex b3 being Element of b1 st b3 in b2
proof end;

theorem Th12: :: FILTER_0:12
for b1 being Lattice
for b2 being Filter of b1 st b1 is 1_Lattice holds
Top b1 in b2
proof end;

theorem Th13: :: FILTER_0:13
for b1 being Lattice st b1 is 1_Lattice holds
{(Top b1)} is Filter of b1
proof end;

theorem Th14: :: FILTER_0:14
for b1 being Lattice
for b2 being Element of b1 st {b2} is Filter of b1 holds
b1 is upper-bounded
proof end;

theorem Th15: :: FILTER_0:15
for b1 being Lattice holds the carrier of b1 is Filter of b1
proof end;

definition
let c1 be Lattice;
func <.c1.) -> Filter of a1 equals :: FILTER_0:def 2
the carrier of a1;
coherence
the carrier of c1 is Filter of c1
by Th15;
end;

:: deftheorem Def2 defines <. FILTER_0:def 2 :
for b1 being Lattice holds <.b1.) = the carrier of b1;

definition
let c1 be Lattice;
let c2 be Element of c1;
func <.c2.) -> Filter of a1 equals :: FILTER_0:def 3
{ b1 where B is Element of a1 : a2 [= b1 } ;
coherence
{ b1 where B is Element of c1 : c2 [= b1 } is Filter of c1
proof end;
end;

:: deftheorem Def3 defines <. FILTER_0:def 3 :
for b1 being Lattice
for b2 being Element of b1 holds <.b2.) = { b3 where B is Element of b1 : b2 [= b3 } ;

theorem Th16: :: FILTER_0:16
canceled;

theorem Th17: :: FILTER_0:17
canceled;

theorem Th18: :: FILTER_0:18
for b1 being Lattice
for b2, b3 being Element of b1 holds
( b2 in <.b3.) iff b3 [= b2 )
proof end;

theorem Th19: :: FILTER_0:19
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 Th20: :: FILTER_0:20
for b1 being Lattice st b1 is 0_Lattice holds
<.b1.) = <.(Bottom b1).)
proof end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
attr a2 is being_ultrafilter means :Def4: :: FILTER_0:def 4
( a2 <> the carrier of a1 & ( for b1 being Filter of a1 st a2 c= b1 & b1 <> the carrier of a1 holds
a2 = b1 ) );
end;

:: deftheorem Def4 defines being_ultrafilter FILTER_0:def 4 :
for b1 being Lattice
for b2 being Filter of b1 holds
( b2 is being_ultrafilter iff ( b2 <> the carrier of b1 & ( for b3 being Filter of b1 st b2 c= b3 & b3 <> the carrier of b1 holds
b2 = b3 ) ) );

notation
let c1 be Lattice;
let c2 be Filter of c1;
synonym c2 is_ultrafilter for being_ultrafilter c2;
end;

theorem Th21: :: FILTER_0:21
canceled;

theorem Th22: :: FILTER_0:22
for b1 being Lattice st b1 is lower-bounded holds
for b2 being Filter of b1 st b2 <> the carrier of b1 holds
ex b3 being Filter of b1 st
( b2 c= b3 & b3 is_ultrafilter )
proof end;

theorem Th23: :: FILTER_0:23
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 Th24: :: FILTER_0:24
for b1 being Lattice
for b2 being Element of b1 st b1 is 0_Lattice & b2 <> Bottom b1 holds
ex b3 being Filter of b1 st
( b2 in b3 & b3 is_ultrafilter )
proof end;

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

:: deftheorem Def5 defines <. FILTER_0:def 5 :
for b1 being Lattice
for b2 being non empty Subset of b1
for b3 being Filter of b1 holds
( b3 = <.b2.) iff ( b2 c= b3 & ( for b4 being Filter of b1 st b2 c= b4 holds
b3 c= b4 ) ) );

theorem Th25: :: FILTER_0:25
canceled;

theorem Th26: :: FILTER_0:26
for b1 being Lattice
for b2 being Filter of b1 holds <.b2.) = b2
proof end;

theorem Th27: :: FILTER_0:27
for b1 being Lattice
for b2, b3 being non empty Subset of b1 st b2 c= b3 holds
<.b2.) c= <.b3.)
proof end;

theorem Th28: :: FILTER_0:28
canceled;

theorem Th29: :: FILTER_0:29
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 Th30: :: FILTER_0:30
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 Th31: :: FILTER_0:31
for b1 being Lattice
for b2 being non empty Subset of b1 st b1 is 0_Lattice & Bottom b1 in b2 holds
( <.b2.) = <.b1.) & <.b2.) = the carrier of b1 )
proof end;

theorem Th32: :: FILTER_0:32
for b1 being Lattice
for b2 being Filter of b1 st b1 is 0_Lattice & Bottom b1 in b2 holds
( b2 = <.b1.) & b2 = the carrier of b1 )
proof end;

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

:: deftheorem Def6 defines prime FILTER_0:def 6 :
for b1 being Lattice
for b2 being Filter 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 Th33: :: FILTER_0:33
canceled;

theorem Th34: :: FILTER_0:34
for b1 being Lattice st b1 is B_Lattice holds
for b2, b3 being Element of b1 holds
( b2 "/\" ((b2 ` ) "\/" b3) [= b3 & ( for b4 being Element of b1 st b2 "/\" b4 [= b3 holds
b4 [= (b2 ` ) "\/" b3 ) )
proof end;

definition
let c1 be non empty LattStr ;
attr a1 is implicative means :Def7: :: FILTER_0:def 7
for b1, b2 being Element of a1 ex b3 being Element of a1 st
( b1 "/\" b3 [= b2 & ( for b4 being Element of a1 st b1 "/\" b4 [= b2 holds
b4 [= b3 ) );
end;

:: deftheorem Def7 defines implicative FILTER_0:def 7 :
for b1 being non empty LattStr holds
( b1 is implicative iff for b2, b3 being Element of b1 ex b4 being Element of b1 st
( b2 "/\" b4 [= b3 & ( for b5 being Element of b1 st b2 "/\" b5 [= b3 holds
b5 [= b4 ) ) );

registration
cluster strict implicative LattStr ;
existence
ex b1 being Lattice st
( b1 is strict & b1 is implicative )
proof end;
end;

definition
mode I_Lattice is implicative Lattice;
end;

definition
let c1 be Lattice;
let c2, c3 be Element of c1;
assume E27: c1 is I_Lattice ;
func c2 => c3 -> Element of a1 means :Def8: :: FILTER_0:def 8
( a2 "/\" a4 [= a3 & ( for b1 being Element of a1 st a2 "/\" b1 [= a3 holds
b1 [= a4 ) );
existence
ex b1 being Element of c1 st
( c2 "/\" b1 [= c3 & ( for b2 being Element of c1 st c2 "/\" b2 [= c3 holds
b2 [= b1 ) )
by E27, Def7;
correctness
uniqueness
for b1, b2 being Element of c1 st c2 "/\" b1 [= c3 & ( for b3 being Element of c1 st c2 "/\" b3 [= c3 holds
b3 [= b1 ) & c2 "/\" b2 [= c3 & ( for b3 being Element of c1 st c2 "/\" b3 [= c3 holds
b3 [= b2 ) holds
b1 = b2
;
proof end;
end;

:: deftheorem Def8 defines => FILTER_0:def 8 :
for b1 being Lattice
for b2, b3 being Element of b1 st b1 is I_Lattice holds
for b4 being Element of b1 holds
( b4 = b2 => b3 iff ( b2 "/\" b4 [= b3 & ( for b5 being Element of b1 st b2 "/\" b5 [= b3 holds
b5 [= b4 ) ) );

theorem Th35: :: FILTER_0:35
canceled;

theorem Th36: :: FILTER_0:36
canceled;

theorem Th37: :: FILTER_0:37
for b1 being I_Lattice holds b1 is upper-bounded
proof end;

theorem Th38: :: FILTER_0:38
for b1 being I_Lattice
for b2 being Element of b1 holds b2 => b2 = Top b1
proof end;

theorem Th39: :: FILTER_0:39
for b1 being I_Lattice holds b1 is distributive
proof end;

theorem Th40: :: FILTER_0:40
for b1 being B_Lattice holds b1 is implicative
proof end;

registration
cluster implicative -> distributive LattStr ;
coherence
for b1 being Lattice st b1 is implicative holds
b1 is distributive
by Th39;
end;

theorem Th41: :: FILTER_0:41
for b1 being I_Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1 st b2 in b4 & b2 => b3 in b4 holds
b3 in b4
proof end;

theorem Th42: :: FILTER_0:42
for b1 being I_Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1 st b2 in b4 holds
b3 => b2 in b4
proof end;

definition
let c1 be Lattice;
let c2, c3 be non empty Subset of c1;
func c2 "/\" c3 -> Subset of a1 equals :: FILTER_0:def 9
{ (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 Def9 defines "/\" FILTER_0:def 9 :
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;

theorem Th43: :: FILTER_0:43
canceled;

theorem Th44: :: FILTER_0:44
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 Th45: :: FILTER_0:45
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 Th46: :: FILTER_0:46
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 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 B_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;

theorem Th47: :: FILTER_0:47
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 Th48: :: FILTER_0:48
for b1 being Lattice
for b2, b3 being Filter of b1 holds <.(b2 \/ b3).) = { b4 where B is Element of b1 : ex b1, b2 being Element of b1 st
( b5 "/\" b6 [= b4 & b5 in b2 & b6 in b3 )
}
proof end;

theorem Th49: :: FILTER_0:49
for b1 being Lattice
for b2, b3 being Filter of b1 holds
( b2 c= b2 "/\" b3 & b3 c= b2 "/\" b3 )
proof end;

theorem Th50: :: FILTER_0:50
for b1 being Lattice
for b2, b3 being Filter of b1 holds <.(b2 \/ b3).) = <.(b2 "/\" b3).)
proof end;

theorem Th51: :: FILTER_0:51
for b1 being I_Lattice
for b2, b3 being Filter of b1 holds <.(b2 \/ b3).) = b2 "/\" b3
proof end;

theorem Th52: :: FILTER_0:52
for b1 being B_Lattice
for b2, b3 being Filter of b1 holds <.(b2 \/ b3).) = b2 "/\" b3
proof end;

theorem Th53: :: FILTER_0:53
for b1 being I_Lattice
for b2, b3 being Element of b1
for b4 being non empty Subset of b1 st b2 in <.(b4 \/ {b3}).) holds
b3 => b2 in <.b4.)
proof end;

theorem Th54: :: FILTER_0:54
for b1 being I_Lattice
for b2, b3, b4 being Element of b1
for b5 being Filter of b1 st b2 => b3 in b5 & b3 => b4 in b5 holds
b2 => b4 in b5
proof end;

theorem Th55: :: FILTER_0:55
for b1 being B_Lattice
for b2, b3 being Element of b1 holds b2 => b3 = (b2 ` ) "\/" b3
proof end;

theorem Th56: :: FILTER_0:56
for b1 being B_Lattice
for b2, b3 being Element of b1 holds
( b2 [= b3 iff b2 "/\" (b3 ` ) = Bottom b1 )
proof end;

theorem Th57: :: FILTER_0:57
for b1 being B_Lattice
for b2 being Filter of b1 holds
( b2 is_ultrafilter 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_0:58
for b1 being B_Lattice
for b2 being Filter of b1 holds
( ( b2 <> <.b1.) & b2 is prime ) iff b2 is_ultrafilter )
proof end;

theorem Th59: :: FILTER_0:59
for b1 being B_Lattice
for b2 being Filter of b1 st b2 is_ultrafilter holds
for b3 being Element of b1 holds
( b3 in b2 iff not b3 ` in b2 )
proof end;

theorem Th60: :: FILTER_0:60
for b1 being B_Lattice
for b2, b3 being Element of b1 st b2 <> b3 holds
ex b4 being Filter of b1 st
( b4 is_ultrafilter & ( ( b2 in b4 & not b3 in b4 ) or ( not b2 in b4 & b3 in b4 ) ) )
proof end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
func latt c2 -> Lattice means :Def10: :: FILTER_0:def 10
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 #) );
uniqueness
for b1, b2 being Lattice 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
;
existence
ex b1 being Latticeex 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;
end;

:: deftheorem Def10 defines latt FILTER_0:def 10 :
for b1 being Lattice
for b2 being Filter of b1
for b3 being Lattice holds
( b3 = latt 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 Filter of c1;
cluster latt a2 -> strict ;
coherence
latt c2 is strict
proof end;
end;

theorem Th61: :: FILTER_0:61
canceled;

theorem Th62: :: FILTER_0:62
for b1 being strict Lattice holds latt <.b1.) = b1
proof end;

theorem Th63: :: FILTER_0:63
for b1 being Lattice
for b2 being Filter of b1 holds
( the carrier of (latt b2) = b2 & the L_join of (latt b2) = the L_join of b1 || b2 & the L_meet of (latt b2) = the L_meet of b1 || b2 )
proof end;

theorem Th64: :: FILTER_0:64
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1
for b5, b6 being Element of (latt b4) st b2 = b5 & b3 = b6 holds
( b2 "\/" b3 = b5 "\/" b6 & b2 "/\" b3 = b5 "/\" b6 )
proof end;

theorem Th65: :: FILTER_0:65
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1
for b5, b6 being Element of (latt b4) st b2 = b5 & b3 = b6 holds
( b2 [= b3 iff b5 [= b6 )
proof end;

theorem Th66: :: FILTER_0:66
for b1 being Lattice
for b2 being Filter of b1 st b1 is upper-bounded holds
latt b2 is upper-bounded
proof end;

theorem Th67: :: FILTER_0:67
for b1 being Lattice
for b2 being Filter of b1 st b1 is modular holds
latt b2 is modular
proof end;

theorem Th68: :: FILTER_0:68
for b1 being Lattice
for b2 being Filter of b1 st b1 is distributive holds
latt b2 is distributive
proof end;

theorem Th69: :: FILTER_0:69
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
latt b2 is implicative
proof end;

theorem Th70: :: FILTER_0:70
for b1 being Lattice
for b2 being Element of b1 holds latt <.b2.) is lower-bounded
proof end;

theorem Th71: :: FILTER_0:71
for b1 being Lattice
for b2 being Element of b1 holds Bottom (latt <.b2.)) = b2
proof end;

theorem Th72: :: FILTER_0:72
for b1 being Lattice
for b2 being Element of b1 st b1 is upper-bounded holds
Top (latt <.b2.)) = Top b1
proof end;

theorem Th73: :: FILTER_0:73
for b1 being Lattice
for b2 being Element of b1 st b1 is 1_Lattice holds
latt <.b2.) is bounded
proof end;

theorem Th74: :: FILTER_0:74
for b1 being Lattice
for b2 being Element of b1 st b1 is C_Lattice & b1 is M_Lattice holds
latt <.b2.) is C_Lattice
proof end;

theorem Th75: :: FILTER_0:75
for b1 being Lattice
for b2 being Element of b1 st b1 is B_Lattice holds
latt <.b2.) is B_Lattice
proof end;

definition
let c1 be Lattice;
let c2, c3 be Element of c1;
func c2 <=> c3 -> Element of a1 equals :: FILTER_0:def 11
(a2 => a3) "/\" (a3 => a2);
correctness
coherence
(c2 => c3) "/\" (c3 => c2) is Element of c1
;
;
end;

:: deftheorem Def11 defines <=> FILTER_0:def 11 :
for b1 being Lattice
for b2, b3 being Element of b1 holds b2 <=> b3 = (b2 => b3) "/\" (b3 => b2);

theorem Th76: :: FILTER_0:76
canceled;

theorem Th77: :: FILTER_0:77
for b1 being Lattice
for b2, b3 being Element of b1 holds b2 <=> b3 = b3 <=> b2 ;

theorem Th78: :: FILTER_0:78
for b1 being I_Lattice
for b2, b3, b4 being Element of b1
for b5 being Filter of b1 st b2 <=> b3 in b5 & b3 <=> b4 in b5 holds
b2 <=> b4 in b5
proof end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
func equivalence_wrt c2 -> Relation means :Def12: :: FILTER_0:def 12
( field a3 c= the carrier of a1 & ( for b1, b2 being Element of a1 holds
( [b1,b2] in a3 iff b1 <=> b2 in a2 ) ) );
existence
ex b1 being Relation st
( field b1 c= the carrier of c1 & ( for b2, b3 being Element of c1 holds
( [b2,b3] in b1 iff b2 <=> b3 in c2 ) ) )
proof end;
uniqueness
for b1, b2 being Relation st field b1 c= the carrier of c1 & ( for b3, b4 being Element of c1 holds
( [b3,b4] in b1 iff b3 <=> b4 in c2 ) ) & field b2 c= the carrier of c1 & ( for b3, b4 being Element of c1 holds
( [b3,b4] in b2 iff b3 <=> b4 in c2 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines equivalence_wrt FILTER_0:def 12 :
for b1 being Lattice
for b2 being Filter of b1
for b3 being Relation holds
( b3 = equivalence_wrt b2 iff ( field b3 c= the carrier of b1 & ( for b4, b5 being Element of b1 holds
( [b4,b5] in b3 iff b4 <=> b5 in b2 ) ) ) );

theorem Th79: :: FILTER_0:79
canceled;

theorem Th80: :: FILTER_0:80
for b1 being Lattice
for b2 being Filter of b1 holds equivalence_wrt b2 is Relation of the carrier of b1
proof end;

theorem Th81: :: FILTER_0:81
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
equivalence_wrt b2 is_reflexive_in the carrier of b1
proof end;

theorem Th82: :: FILTER_0:82
for b1 being Lattice
for b2 being Filter of b1 holds equivalence_wrt b2 is_symmetric_in the carrier of b1
proof end;

theorem Th83: :: FILTER_0:83
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
equivalence_wrt b2 is_transitive_in the carrier of b1
proof end;

theorem Th84: :: FILTER_0:84
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
equivalence_wrt b2 is Equivalence_Relation of the carrier of b1
proof end;

theorem Th85: :: FILTER_0:85
for b1 being Lattice
for b2 being Filter of b1 st b1 is I_Lattice holds
field (equivalence_wrt b2) = the carrier of b1
proof end;

definition
let c1 be I_Lattice;
let c2 be Filter of c1;
redefine func equivalence_wrt as equivalence_wrt c2 -> Equivalence_Relation of the carrier of a1;
coherence
equivalence_wrt c2 is Equivalence_Relation of the carrier of c1
by Th84;
end;

definition
let c1 be B_Lattice;
let c2 be Filter of c1;
redefine func equivalence_wrt as equivalence_wrt c2 -> Equivalence_Relation of the carrier of a1;
coherence
equivalence_wrt c2 is Equivalence_Relation of the carrier of c1
proof end;
end;

definition
let c1 be Lattice;
let c2 be Filter of c1;
let c3, c4 be Element of c1;
pred c3,c4 are_equivalence_wrt c2 means :Def13: :: FILTER_0:def 13
a3 <=> a4 in a2;
end;

:: deftheorem Def13 defines are_equivalence_wrt FILTER_0:def 13 :
for b1 being Lattice
for b2 being Filter of b1
for b3, b4 being Element of b1 holds
( b3,b4 are_equivalence_wrt b2 iff b3 <=> b4 in b2 );

theorem Th86: :: FILTER_0:86
canceled;

theorem Th87: :: FILTER_0:87
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1 holds
( b2,b3 are_equivalence_wrt b4 iff [b2,b3] in equivalence_wrt b4 )
proof end;

theorem Th88: :: FILTER_0:88
for b1 being B_Lattice
for b2 being Filter of b1
for b3 being I_Lattice
for b4 being Element of b3
for b5 being Filter of b3
for b6 being Element of b1 holds
( b4,b4 are_equivalence_wrt b5 & b6,b6 are_equivalence_wrt b2 )
proof end;

theorem Th89: :: FILTER_0:89
for b1 being Lattice
for b2, b3 being Element of b1
for b4 being Filter of b1 st b2,b3 are_equivalence_wrt b4 holds
b3,b2 are_equivalence_wrt b4
proof end;

theorem Th90: :: FILTER_0:90
for b1 being B_Lattice
for b2 being Filter of b1
for b3 being I_Lattice
for b4, b5, b6 being Element of b3
for b7 being Filter of b3
for b8, b9, b10 being Element of b1 holds
( ( b4,b5 are_equivalence_wrt b7 & b5,b6 are_equivalence_wrt b7 implies b4,b6 are_equivalence_wrt b7 ) & ( b8,b9 are_equivalence_wrt b2 & b9,b10 are_equivalence_wrt b2 implies b8,b10 are_equivalence_wrt b2 ) )
proof end;