:: KNASTER semantic presentation

theorem Th1: :: KNASTER:1
for b1, b2 being Function holds
( b1 is one-to-one & b2 is one-to-one & rng b1 misses rng b2 implies b1 +* b2 is one-to-one )
proof end;

theorem Th2: :: KNASTER:2
canceled;

theorem Th3: :: KNASTER:3
for b1, b2, b3 being Function holds
( b1 = b2 \/ b3 & dom b2 misses dom b3 implies ( b1 is one-to-one iff ( b2 is one-to-one & b3 is one-to-one & rng b2 misses rng b3 ) ) )
proof end;

theorem Th4: :: KNASTER:4
for b1, b2 being set
for b3 being Nat
for b4 being Function of b1,b1 holds
( b2 is_a_fixpoint_of iter b4,b3 implies b4 . b2 is_a_fixpoint_of iter b4,b3 )
proof end;

theorem Th5: :: KNASTER:5
for b1, b2 being set
for b3 being Function of b1,b1 holds
( ex b4 being Nat st
( b2 is_a_fixpoint_of iter b3,b4 & ( for b5 being set holds
( b5 is_a_fixpoint_of iter b3,b4 implies b2 = b5 ) ) ) implies b2 is_a_fixpoint_of b3 )
proof end;

definition
let c1, c2 be non empty set ;
let c3 be Function of c1,c2;
canceled;
canceled;
redefine attr c=-monotone as a3 is c=-monotone means :Def3: :: KNASTER:def 3
for b1, b2 being Element of a1 holds
( b1 c= b2 implies a3 . b1 c= a3 . b2 );
compatibility
( c3 is c=-monotone iff for b1, b2 being Element of c1 holds
( b1 c= b2 implies c3 . b1 c= c3 . b2 ) )
proof end;
end;

:: deftheorem Def1 KNASTER:def 1 :
canceled;

:: deftheorem Def2 KNASTER:def 2 :
canceled;

:: deftheorem Def3 defines c=-monotone KNASTER:def 3 :
for b1, b2 being non empty set
for b3 being Function of b1,b2 holds
( b3 is c=-monotone iff for b4, b5 being Element of b1 holds
( b4 c= b5 implies b3 . b4 c= b3 . b5 ) );

registration
let c1 be set ;
let c2 be non empty set ;
cluster c=-monotone Relation of a1,a2;
existence
ex b1 being Function of c1,c2 st b1 is c=-monotone
proof end;
end;

definition
let c1 be set ;
let c2 be V168 Function of bool c1, bool c1;
func lfp c1,c2 -> Subset of a1 equals :: KNASTER:def 4
meet { b1 where B is Subset of a1 : a2 . b1 c= b1 } ;
coherence
meet { b1 where B is Subset of c1 : c2 . b1 c= b1 } is Subset of c1
proof end;
func gfp c1,c2 -> Subset of a1 equals :: KNASTER:def 5
union { b1 where B is Subset of a1 : b1 c= a2 . b1 } ;
coherence
union { b1 where B is Subset of c1 : b1 c= c2 . b1 } is Subset of c1
proof end;
end;

:: deftheorem Def4 defines lfp KNASTER:def 4 :
for b1 being set
for b2 being V168 Function of bool b1, bool b1 holds lfp b1,b2 = meet { b3 where B is Subset of b1 : b2 . b3 c= b3 } ;

:: deftheorem Def5 defines gfp KNASTER:def 5 :
for b1 being set
for b2 being V168 Function of bool b1, bool b1 holds gfp b1,b2 = union { b3 where B is Subset of b1 : b3 c= b2 . b3 } ;

theorem Th6: :: KNASTER:6
for b1 being set
for b2 being V168 Function of bool b1, bool b1 holds lfp b1,b2 is_a_fixpoint_of b2
proof end;

theorem Th7: :: KNASTER:7
for b1 being set
for b2 being V168 Function of bool b1, bool b1 holds gfp b1,b2 is_a_fixpoint_of b2
proof end;

theorem Th8: :: KNASTER:8
for b1 being set
for b2 being V168 Function of bool b1, bool b1
for b3 being Subset of b1 holds
( b2 . b3 c= b3 implies lfp b1,b2 c= b3 )
proof end;

theorem Th9: :: KNASTER:9
for b1 being set
for b2 being V168 Function of bool b1, bool b1
for b3 being Subset of b1 holds
( b3 c= b2 . b3 implies b3 c= gfp b1,b2 )
proof end;

theorem Th10: :: KNASTER:10
for b1 being set
for b2 being V168 Function of bool b1, bool b1
for b3 being Subset of b1 holds
( b3 is_a_fixpoint_of b2 implies ( lfp b1,b2 c= b3 & b3 c= gfp b1,b2 ) )
proof end;

scheme :: KNASTER:sch 1
s1{ F1() -> set , F2( set ) -> set } :
ex b1 being set st
( F2(b1) = b1 & b1 c= F1() )
provided
E9: for b1, b2 being set holds
( b1 c= b2 implies F2(b1) c= F2(b2) ) and E10: F2(F1()) c= F1()
proof end;

theorem Th11: :: KNASTER:11
for b1, b2 being non empty set
for b3 being Function of b1,b2
for b4 being Function of b2,b1 holds
ex b5, b6, b7, b8 being set st
( b5 misses b6 & b7 misses b8 & b5 \/ b6 = b1 & b7 \/ b8 = b2 & b3 .: b5 = b7 & b4 .: b8 = b6 )
proof end;

theorem Th12: :: KNASTER:12
for b1, b2 being non empty set
for b3 being Function of b1,b2
for b4 being Function of b2,b1 holds
not ( b3 is one-to-one & b4 is one-to-one & ( for b5 being Function of b1,b2 holds
not b5 is bijective ) )
proof end;

theorem Th13: :: KNASTER:13
for b1, b2 being non empty set holds
( ex b3 being Function of b2,b1 st b3 is bijective implies b2,b1 are_equipotent )
proof end;

theorem Th14: :: KNASTER:14
for b1, b2 being non empty set
for b3 being Function of b1,b2
for b4 being Function of b2,b1 holds
( b3 is one-to-one & b4 is one-to-one implies b1,b2 are_equipotent )
proof end;

definition
let c1 be Lattice;
let c2 be Function of the carrier of c1,the carrier of c1;
let c3 be Element of c1;
let c4 be Ordinal;
func c2,c4 +. c3 -> set means :Def6: :: KNASTER:def 6
ex b1 being T-Sequence st
( a5 = last b1 & dom b1 = succ a4 & b1 . {} = a3 & ( for b2 being Ordinal holds
( succ b2 in succ a4 implies b1 . (succ b2) = a2 . (b1 . b2) ) ) & ( for b2 being Ordinal holds
( b2 in succ a4 & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = "\/" (rng (b1 | b2)),a1 ) ) );
correctness
existence
ex b1 being set ex b2 being T-Sequence st
( b1 = last b2 & dom b2 = succ c4 & b2 . {} = c3 & ( for b3 being Ordinal holds
( succ b3 in succ c4 implies b2 . (succ b3) = c2 . (b2 . b3) ) ) & ( for b3 being Ordinal holds
( b3 in succ c4 & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = "\/" (rng (b2 | b3)),c1 ) ) )
;
uniqueness
for b1, b2 being set holds
( ex b3 being T-Sequence st
( b1 = last b3 & dom b3 = succ c4 & b3 . {} = c3 & ( for b4 being Ordinal holds
( succ b4 in succ c4 implies b3 . (succ b4) = c2 . (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c4 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = "\/" (rng (b3 | b4)),c1 ) ) ) & ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ c4 & b3 . {} = c3 & ( for b4 being Ordinal holds
( succ b4 in succ c4 implies b3 . (succ b4) = c2 . (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c4 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = "\/" (rng (b3 | b4)),c1 ) ) ) implies b1 = b2 )
;
proof end;
func c2,c4 -. c3 -> set means :Def7: :: KNASTER:def 7
ex b1 being T-Sequence st
( a5 = last b1 & dom b1 = succ a4 & b1 . {} = a3 & ( for b2 being Ordinal holds
( succ b2 in succ a4 implies b1 . (succ b2) = a2 . (b1 . b2) ) ) & ( for b2 being Ordinal holds
( b2 in succ a4 & b2 <> {} & b2 is_limit_ordinal implies b1 . b2 = "/\" (rng (b1 | b2)),a1 ) ) );
correctness
existence
ex b1 being set ex b2 being T-Sequence st
( b1 = last b2 & dom b2 = succ c4 & b2 . {} = c3 & ( for b3 being Ordinal holds
( succ b3 in succ c4 implies b2 . (succ b3) = c2 . (b2 . b3) ) ) & ( for b3 being Ordinal holds
( b3 in succ c4 & b3 <> {} & b3 is_limit_ordinal implies b2 . b3 = "/\" (rng (b2 | b3)),c1 ) ) )
;
uniqueness
for b1, b2 being set holds
( ex b3 being T-Sequence st
( b1 = last b3 & dom b3 = succ c4 & b3 . {} = c3 & ( for b4 being Ordinal holds
( succ b4 in succ c4 implies b3 . (succ b4) = c2 . (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c4 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = "/\" (rng (b3 | b4)),c1 ) ) ) & ex b3 being T-Sequence st
( b2 = last b3 & dom b3 = succ c4 & b3 . {} = c3 & ( for b4 being Ordinal holds
( succ b4 in succ c4 implies b3 . (succ b4) = c2 . (b3 . b4) ) ) & ( for b4 being Ordinal holds
( b4 in succ c4 & b4 <> {} & b4 is_limit_ordinal implies b3 . b4 = "/\" (rng (b3 | b4)),c1 ) ) ) implies b1 = b2 )
;
proof end;
end;

:: deftheorem Def6 defines +. KNASTER:def 6 :
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal
for b5 being set holds
( b5 = b2,b4 +. b3 iff ex b6 being T-Sequence st
( b5 = last b6 & dom b6 = succ b4 & b6 . {} = b3 & ( for b7 being Ordinal holds
( succ b7 in succ b4 implies b6 . (succ b7) = b2 . (b6 . b7) ) ) & ( for b7 being Ordinal holds
( b7 in succ b4 & b7 <> {} & b7 is_limit_ordinal implies b6 . b7 = "\/" (rng (b6 | b7)),b1 ) ) ) );

:: deftheorem Def7 defines -. KNASTER:def 7 :
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal
for b5 being set holds
( b5 = b2,b4 -. b3 iff ex b6 being T-Sequence st
( b5 = last b6 & dom b6 = succ b4 & b6 . {} = b3 & ( for b7 being Ordinal holds
( succ b7 in succ b4 implies b6 . (succ b7) = b2 . (b6 . b7) ) ) & ( for b7 being Ordinal holds
( b7 in succ b4 & b7 <> {} & b7 is_limit_ordinal implies b6 . b7 = "/\" (rng (b6 | b7)),b1 ) ) ) );

theorem Th15: :: KNASTER:15
canceled;

theorem Th16: :: KNASTER:16
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1 holds b2,{} +. b3 = b3
proof end;

theorem Th17: :: KNASTER:17
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1 holds b2,{} -. b3 = b3
proof end;

theorem Th18: :: KNASTER:18
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal holds b2,(succ b4) +. b3 = b2 . (b2,b4 +. b3)
proof end;

theorem Th19: :: KNASTER:19
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal holds b2,(succ b4) -. b3 = b2 . (b2,b4 -. b3)
proof end;

theorem Th20: :: KNASTER:20
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal
for b5 being T-Sequence holds
( b4 <> {} & b4 is_limit_ordinal & dom b5 = b4 & ( for b6 being Ordinal holds
( b6 in b4 implies b5 . b6 = b2,b6 +. b3 ) ) implies b2,b4 +. b3 = "\/" (rng b5),b1 )
proof end;

theorem Th21: :: KNASTER:21
for b1 being Lattice
for b2 being Function of the carrier of b1,the carrier of b1
for b3 being Element of b1
for b4 being Ordinal
for b5 being T-Sequence holds
( b4 <> {} & b4 is_limit_ordinal & dom b5 = b4 & ( for b6 being Ordinal holds
( b6 in b4 implies b5 . b6 = b2,b6 -. b3 ) ) implies b2,b4 -. b3 = "/\" (rng b5),b1 )
proof end;

theorem Th22: :: KNASTER:22
for b1 being Nat
for b2 being Lattice
for b3 being Function of the carrier of b2,the carrier of b2
for b4 being Element of b2 holds (iter b3,b1) . b4 = b3,b1 +. b4
proof end;

theorem Th23: :: KNASTER:23
for b1 being Nat
for b2 being Lattice
for b3 being Function of the carrier of b2,the carrier of b2
for b4 being Element of b2 holds (iter b3,b1) . b4 = b3,b1 -. b4
proof end;

definition
let c1 be Lattice;
let c2 be UnOp of the carrier of c1;
let c3 be Element of c1;
let c4 be Ordinal;
redefine func +. as c2,c4 +. c3 -> Element of a1;
coherence
c2,c4 +. c3 is Element of c1
proof end;
end;

definition
let c1 be Lattice;
let c2 be UnOp of the carrier of c1;
let c3 be Element of c1;
let c4 be Ordinal;
redefine func -. as c2,c4 -. c3 -> Element of a1;
coherence
c2,c4 -. c3 is Element of c1
proof end;
end;

definition
let c1 be non empty LattStr ;
let c2 be Subset of c1;
attr a2 is with_suprema means :Def8: :: KNASTER:def 8
for b1, b2 being Element of a1 holds
not ( b1 in a2 & b2 in a2 & ( for b3 being Element of a1 holds
not ( b3 in a2 & b1 [= b3 & b2 [= b3 & ( for b4 being Element of a1 holds
( b4 in a2 & b1 [= b4 & b2 [= b4 implies b3 [= b4 ) ) ) ) );
attr a2 is with_infima means :Def9: :: KNASTER:def 9
for b1, b2 being Element of a1 holds
not ( b1 in a2 & b2 in a2 & ( for b3 being Element of a1 holds
not ( b3 in a2 & b3 [= b1 & b3 [= b2 & ( for b4 being Element of a1 holds
( b4 in a2 & b4 [= b1 & b4 [= b2 implies b4 [= b3 ) ) ) ) );
end;

:: deftheorem Def8 defines with_suprema KNASTER:def 8 :
for b1 being non empty LattStr
for b2 being Subset of b1 holds
( b2 is with_suprema iff for b3, b4 being Element of b1 holds
not ( b3 in b2 & b4 in b2 & ( for b5 being Element of b1 holds
not ( b5 in b2 & b3 [= b5 & b4 [= b5 & ( for b6 being Element of b1 holds
( b6 in b2 & b3 [= b6 & b4 [= b6 implies b5 [= b6 ) ) ) ) ) );

:: deftheorem Def9 defines with_infima KNASTER:def 9 :
for b1 being non empty LattStr
for b2 being Subset of b1 holds
( b2 is with_infima iff for b3, b4 being Element of b1 holds
not ( b3 in b2 & b4 in b2 & ( for b5 being Element of b1 holds
not ( b5 in b2 & b5 [= b3 & b5 [= b4 & ( for b6 being Element of b1 holds
( b6 in b2 & b6 [= b3 & b6 [= b4 implies b6 [= b5 ) ) ) ) ) );

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

definition
let c1 be Lattice;
let c2 be non empty with_suprema with_infima Subset of c1;
func latt c2 -> strict Lattice means :Def10: :: KNASTER:def 10
( the carrier of a3 = a2 & ( for b1, b2 being Element of a3 holds
ex b3, b4 being Element of a1 st
( b1 = b3 & b2 = b4 & ( b1 [= b2 implies b3 [= b4 ) & ( b3 [= b4 implies b1 [= b2 ) ) ) );
existence
ex b1 being strict Lattice st
( the carrier of b1 = c2 & ( for b2, b3 being Element of b1 holds
ex b4, b5 being Element of c1 st
( b2 = b4 & b3 = b5 & ( b2 [= b3 implies b4 [= b5 ) & ( b4 [= b5 implies b2 [= b3 ) ) ) )
proof end;
uniqueness
for b1, b2 being strict Lattice holds
( the carrier of b1 = c2 & ( for b3, b4 being Element of b1 holds
ex b5, b6 being Element of c1 st
( b3 = b5 & b4 = b6 & ( b3 [= b4 implies b5 [= b6 ) & ( b5 [= b6 implies b3 [= b4 ) ) ) & the carrier of b2 = c2 & ( for b3, b4 being Element of b2 holds
ex b5, b6 being Element of c1 st
( b3 = b5 & b4 = b6 & ( b3 [= b4 implies b5 [= b6 ) & ( b5 [= b6 implies b3 [= b4 ) ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def10 defines latt KNASTER:def 10 :
for b1 being Lattice
for b2 being non empty with_suprema with_infima Subset of b1
for b3 being strict Lattice holds
( b3 = latt b2 iff ( the carrier of b3 = b2 & ( for b4, b5 being Element of b3 holds
ex b6, b7 being Element of b1 st
( b4 = b6 & b5 = b7 & ( b4 [= b5 implies b6 [= b7 ) & ( b6 [= b7 implies b4 [= b5 ) ) ) ) );

registration
cluster complete -> bounded LattStr ;
coherence
for b1 being Lattice holds
( b1 is complete implies b1 is bounded )
proof end;
end;

theorem Th24: :: KNASTER:24
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds
ex b3 being Element of b1 st b3 is_a_fixpoint_of b2
proof end;

theorem Th25: :: KNASTER:25
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 [= b2 . b3 implies for b4 being Ordinal holds b3 [= b2,b4 +. b3 )
proof end;

theorem Th26: :: KNASTER:26
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b2 . b3 [= b3 implies for b4 being Ordinal holds b2,b4 -. b3 [= b3 )
proof end;

theorem Th27: :: KNASTER:27
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 [= b2 . b3 implies for b4, b5 being Ordinal holds
( b4 c= b5 implies b2,b4 +. b3 [= b2,b5 +. b3 ) )
proof end;

theorem Th28: :: KNASTER:28
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b2 . b3 [= b3 implies for b4, b5 being Ordinal holds
( b4 c= b5 implies b2,b5 -. b3 [= b2,b4 -. b3 ) )
proof end;

theorem Th29: :: KNASTER:29
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 [= b2 . b3 implies for b4, b5 being Ordinal holds
not ( b4 c< b5 & not b2,b5 +. b3 is_a_fixpoint_of b2 & not b2,b4 +. b3 <> b2,b5 +. b3 ) )
proof end;

theorem Th30: :: KNASTER:30
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b2 . b3 [= b3 implies for b4, b5 being Ordinal holds
not ( b4 c< b5 & not b2,b5 -. b3 is_a_fixpoint_of b2 & not b2,b4 -. b3 <> b2,b5 -. b3 ) )
proof end;

theorem Th31: :: KNASTER:31
for b1 being Ordinal
for b2 being complete Lattice
for b3 being monotone UnOp of b2
for b4 being Element of b2 holds
( b4 [= b3 . b4 & b3,b1 +. b4 is_a_fixpoint_of b3 implies for b5 being Ordinal holds
( b1 c= b5 implies b3,b1 +. b4 = b3,b5 +. b4 ) )
proof end;

theorem Th32: :: KNASTER:32
for b1 being Ordinal
for b2 being complete Lattice
for b3 being monotone UnOp of b2
for b4 being Element of b2 holds
( b3 . b4 [= b4 & b3,b1 -. b4 is_a_fixpoint_of b3 implies for b5 being Ordinal holds
( b1 c= b5 implies b3,b1 -. b4 = b3,b5 -. b4 ) )
proof end;

Lemma32: for b1, b2 being Ordinal holds
not ( not b1 c< b2 & not b1 = b2 & not b2 c< b1 )
proof end;

theorem Th33: :: KNASTER:33
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
not ( b3 [= b2 . b3 & ( for b4 being Ordinal holds
not ( Card b4 <=` Card the carrier of b1 & b2,b4 +. b3 is_a_fixpoint_of b2 ) ) )
proof end;

theorem Th34: :: KNASTER:34
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
not ( b2 . b3 [= b3 & ( for b4 being Ordinal holds
not ( Card b4 <=` Card the carrier of b1 & b2,b4 -. b3 is_a_fixpoint_of b2 ) ) )
proof end;

theorem Th35: :: KNASTER:35
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3, b4 being Element of b1 holds
not ( b3 is_a_fixpoint_of b2 & b4 is_a_fixpoint_of b2 & ( for b5 being Ordinal holds
not ( Card b5 <=` Card the carrier of b1 & b2,b5 +. (b3 "\/" b4) is_a_fixpoint_of b2 & b3 [= b2,b5 +. (b3 "\/" b4) & b4 [= b2,b5 +. (b3 "\/" b4) ) ) )
proof end;

theorem Th36: :: KNASTER:36
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3, b4 being Element of b1 holds
not ( b3 is_a_fixpoint_of b2 & b4 is_a_fixpoint_of b2 & ( for b5 being Ordinal holds
not ( Card b5 <=` Card the carrier of b1 & b2,b5 -. (b3 "/\" b4) is_a_fixpoint_of b2 & b2,b5 -. (b3 "/\" b4) [= b3 & b2,b5 -. (b3 "/\" b4) [= b4 ) ) )
proof end;

theorem Th37: :: KNASTER:37
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3, b4 being Element of b1 holds
( b3 [= b2 . b3 & b3 [= b4 & b4 is_a_fixpoint_of b2 implies for b5 being Ordinal holds b2,b5 +. b3 [= b4 )
proof end;

theorem Th38: :: KNASTER:38
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3, b4 being Element of b1 holds
( b2 . b3 [= b3 & b4 [= b3 & b4 is_a_fixpoint_of b2 implies for b5 being Ordinal holds b4 [= b2,b5 -. b3 )
proof end;

definition
let c1 be complete Lattice;
let c2 be UnOp of c1;
assume E39: c2 is monotone ;
func FixPoints c2 -> strict Lattice means :Def11: :: KNASTER:def 11
ex b1 being non empty with_suprema with_infima Subset of a1 st
( b1 = { b2 where B is Element of a1 : b2 is_a_fixpoint_of a2 } & a3 = latt b1 );
existence
ex b1 being strict Latticeex b2 being non empty with_suprema with_infima Subset of c1 st
( b2 = { b3 where B is Element of c1 : b3 is_a_fixpoint_of c2 } & b1 = latt b2 )
proof end;
uniqueness
for b1, b2 being strict Lattice holds
( ex b3 being non empty with_suprema with_infima Subset of c1 st
( b3 = { b4 where B is Element of c1 : b4 is_a_fixpoint_of c2 } & b1 = latt b3 ) & ex b3 being non empty with_suprema with_infima Subset of c1 st
( b3 = { b4 where B is Element of c1 : b4 is_a_fixpoint_of c2 } & b2 = latt b3 ) implies b1 = b2 )
;
end;

:: deftheorem Def11 defines FixPoints KNASTER:def 11 :
for b1 being complete Lattice
for b2 being UnOp of b1 holds
( b2 is monotone implies for b3 being strict Lattice holds
( b3 = FixPoints b2 iff ex b4 being non empty with_suprema with_infima Subset of b1 st
( b4 = { b5 where B is Element of b1 : b5 is_a_fixpoint_of b2 } & b3 = latt b4 ) ) );

theorem Th39: :: KNASTER:39
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds the carrier of (FixPoints b2) = { b3 where B is Element of b1 : b3 is_a_fixpoint_of b2 }
proof end;

theorem Th40: :: KNASTER:40
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds the carrier of (FixPoints b2) c= the carrier of b1
proof end;

theorem Th41: :: KNASTER:41
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 in the carrier of (FixPoints b2) iff b3 is_a_fixpoint_of b2 )
proof end;

theorem Th42: :: KNASTER:42
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3, b4 being Element of (FixPoints b2)
for b5, b6 being Element of b1 holds
( b3 = b5 & b4 = b6 implies ( b3 [= b4 iff b5 [= b6 ) )
proof end;

theorem Th43: :: KNASTER:43
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds FixPoints b2 is complete
proof end;

definition
let c1 be complete Lattice;
let c2 be monotone UnOp of c1;
func lfp c2 -> Element of a1 equals :: KNASTER:def 12
a2,(nextcard the carrier of a1) +. (Bottom a1);
coherence
c2,(nextcard the carrier of c1) +. (Bottom c1) is Element of c1
;
func gfp c2 -> Element of a1 equals :: KNASTER:def 13
a2,(nextcard the carrier of a1) -. (Top a1);
coherence
c2,(nextcard the carrier of c1) -. (Top c1) is Element of c1
;
end;

:: deftheorem Def12 defines lfp KNASTER:def 12 :
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds lfp b2 = b2,(nextcard the carrier of b1) +. (Bottom b1);

:: deftheorem Def13 defines gfp KNASTER:def 13 :
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds gfp b2 = b2,(nextcard the carrier of b1) -. (Top b1);

theorem Th44: :: KNASTER:44
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds
( lfp b2 is_a_fixpoint_of b2 & ex b3 being Ordinal st
( Card b3 <=` Card the carrier of b1 & b2,b3 +. (Bottom b1) = lfp b2 ) )
proof end;

theorem Th45: :: KNASTER:45
for b1 being complete Lattice
for b2 being monotone UnOp of b1 holds
( gfp b2 is_a_fixpoint_of b2 & ex b3 being Ordinal st
( Card b3 <=` Card the carrier of b1 & b2,b3 -. (Top b1) = gfp b2 ) )
proof end;

theorem Th46: :: KNASTER:46
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 is_a_fixpoint_of b2 implies ( lfp b2 [= b3 & b3 [= gfp b2 ) )
proof end;

theorem Th47: :: KNASTER:47
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b2 . b3 [= b3 implies lfp b2 [= b3 )
proof end;

theorem Th48: :: KNASTER:48
for b1 being complete Lattice
for b2 being monotone UnOp of b1
for b3 being Element of b1 holds
( b3 [= b2 . b3 implies b3 [= gfp b2 )
proof end;

theorem Th49: :: KNASTER:49
for b1 being non empty set
for b2 being UnOp of (BooleLatt b1) holds
( b2 is monotone iff b2 is c=-monotone )
proof end;

theorem Th50: :: KNASTER:50
for b1 being non empty set
for b2 being monotone UnOp of (BooleLatt b1) holds
ex b3 being V168 Function of bool b1, bool b1 st lfp b1,b3 = lfp b2
proof end;

theorem Th51: :: KNASTER:51
for b1 being non empty set
for b2 being monotone UnOp of (BooleLatt b1) holds
ex b3 being V168 Function of bool b1, bool b1 st gfp b1,b3 = gfp b2
proof end;