:: ABIAN semantic presentation

definition
let c1 be number ;
attr a1 is even means :Def1: :: ABIAN:def 1
ex b1 being Integer st a1 = 2 * b1;
end;

:: deftheorem Def1 defines even ABIAN:def 1 :
for b1 being number holds
( b1 is even iff ex b2 being Integer st b1 = 2 * b2 );

notation
let c1 be number ;
antonym odd c1 for even c1;
end;

notation
let c1 be Nat;
antonym odd c1 for even c1;
end;

definition
let c1 be Nat;
redefine attr a1 is even means :: ABIAN:def 2
ex b1 being Nat st a1 = 2 * b1;
compatibility
( c1 is even iff ex b1 being Nat st c1 = 2 * b1 )
proof end;
end;

:: deftheorem Def2 defines even ABIAN:def 2 :
for b1 being Nat holds
( b1 is even iff ex b2 being Nat st b1 = 2 * b2 );

registration
cluster even Element of NAT ;
existence
ex b1 being Nat st b1 is even
proof end;
cluster odd Element of NAT ;
existence
not for b1 being Nat holds b1 is even
proof end;
cluster even set ;
existence
ex b1 being Integer st b1 is even
proof end;
cluster odd set ;
existence
not for b1 being Integer holds b1 is even
proof end;
end;

theorem Th1: :: ABIAN:1
for b1 being Integer holds
( not b1 is even iff ex b2 being Integer st b1 = (2 * b2) + 1 )
proof end;

registration
let c1 be Integer;
cluster 2 * a1 -> even ;
coherence
2 * c1 is even
by Def1;
end;

registration
let c1 be even Integer;
cluster a1 + 1 -> odd ;
coherence
not c1 + 1 is even
proof end;
end;

registration
let c1 be odd Integer;
cluster a1 + 1 -> even ;
coherence
c1 + 1 is even
proof end;
end;

registration
let c1 be even Integer;
cluster a1 - 1 -> odd ;
coherence
not c1 - 1 is even
proof end;
end;

registration
let c1 be odd Integer;
cluster a1 - 1 -> even ;
coherence
c1 - 1 is even
proof end;
end;

registration
let c1 be even Integer;
let c2 be Integer;
cluster a1 * a2 -> even ;
coherence
c1 * c2 is even
proof end;
cluster a2 * a1 -> even ;
coherence
c2 * c1 is even
;
end;

registration
let c1, c2 be odd Integer;
cluster a1 * a2 -> odd ;
coherence
not c1 * c2 is even
proof end;
end;

registration
let c1, c2 be even Integer;
cluster a1 + a2 -> even ;
coherence
c1 + c2 is even
proof end;
end;

registration
let c1 be even Integer;
let c2 be odd Integer;
cluster a1 + a2 -> odd ;
coherence
not c1 + c2 is even
proof end;
cluster a2 + a1 -> odd ;
coherence
not c2 + c1 is even
;
end;

registration
let c1, c2 be odd Integer;
cluster a1 + a2 -> even ;
coherence
c1 + c2 is even
proof end;
end;

registration
let c1 be even Integer;
let c2 be odd Integer;
cluster a1 - a2 -> odd ;
coherence
not c1 - c2 is even
proof end;
cluster a2 - a1 -> odd ;
coherence
not c2 - c1 is even
proof end;
end;

registration
let c1, c2 be odd Integer;
cluster a1 - a2 -> even ;
coherence
c1 - c2 is even
proof end;
end;

definition
let c1 be set ;
let c2 be Function of c1,c1;
let c3 be Nat;
redefine func iter as iter c2,c3 -> Function of a1,a1;
coherence
iter c2,c3 is Function of c1,c1
by FUNCT_7:85;
end;

theorem Th2: :: ABIAN:2
for b1 being non empty Subset of NAT st 0 in b1 holds
min b1 = 0
proof end;

theorem Th3: :: ABIAN:3
for b1 being non empty set
for b2 being Function of b1,b1
for b3 being Element of b1 holds (iter b2,0) . b3 = b3
proof end;

definition
let c1 be set ;
let c2 be Function;
pred c1 is_a_fixpoint_of c2 means :Def3: :: ABIAN:def 3
( a1 in dom a2 & a1 = a2 . a1 );
end;

:: deftheorem Def3 defines is_a_fixpoint_of ABIAN:def 3 :
for b1 being set
for b2 being Function holds
( b1 is_a_fixpoint_of b2 iff ( b1 in dom b2 & b1 = b2 . b1 ) );

definition
let c1 be non empty set ;
let c2 be Element of c1;
let c3 be Function of c1,c1;
redefine pred is_a_fixpoint_of as c2 is_a_fixpoint_of c3 means :Def4: :: ABIAN:def 4
a2 = a3 . a2;
compatibility
( c2 is_a_fixpoint_of c3 iff c2 = c3 . c2 )
proof end;
end;

:: deftheorem Def4 defines is_a_fixpoint_of ABIAN:def 4 :
for b1 being non empty set
for b2 being Element of b1
for b3 being Function of b1,b1 holds
( b2 is_a_fixpoint_of b3 iff b2 = b3 . b2 );

definition
let c1 be Function;
pred c1 has_a_fixpoint means :Def5: :: ABIAN:def 5
ex b1 being set st b1 is_a_fixpoint_of a1;
end;

:: deftheorem Def5 defines has_a_fixpoint ABIAN:def 5 :
for b1 being Function holds
( b1 has_a_fixpoint iff ex b2 being set st b2 is_a_fixpoint_of b1 );

notation
let c1 be Function;
antonym c1 has_no_fixpoint for c1 has_a_fixpoint ;
end;

definition
let c1 be set ;
let c2 be Element of c1;
attr a2 is covering means :Def6: :: ABIAN:def 6
union a2 = union (union a1);
end;

:: deftheorem Def6 defines covering ABIAN:def 6 :
for b1 being set
for b2 being Element of b1 holds
( b2 is covering iff union b2 = union (union b1) );

theorem Th4: :: ABIAN:4
for b1 being set
for b2 being Subset-Family of b1 holds
( b2 is covering iff union b2 = b1 )
proof end;

registration
let c1 be set ;
cluster non empty finite covering Element of bool (bool a1);
existence
ex b1 being Subset-Family of c1 st
( not b1 is empty & b1 is finite & b1 is covering )
proof end;
end;

theorem Th5: :: ABIAN:5
for b1 being set
for b2 being Function of b1,b1
for b3 being non empty covering Subset-Family of b1 st ( for b4 being Element of b3 holds b4 misses b2 .: b4 ) holds
b2 has_no_fixpoint
proof end;

definition
let c1 be set ;
let c2 be Function of c1,c1;
func =_ c2 -> Equivalence_Relation of a1 means :Def7: :: ABIAN:def 7
for b1, b2 being set st b1 in a1 & b2 in a1 holds
( [b1,b2] in a3 iff ex b3, b4 being Nat st (iter a2,b3) . b1 = (iter a2,b4) . b2 );
existence
ex b1 being Equivalence_Relation of c1 st
for b2, b3 being set st b2 in c1 & b3 in c1 holds
( [b2,b3] in b1 iff ex b4, b5 being Nat st (iter c2,b4) . b2 = (iter c2,b5) . b3 )
proof end;
uniqueness
for b1, b2 being Equivalence_Relation of c1 st ( for b3, b4 being set st b3 in c1 & b4 in c1 holds
( [b3,b4] in b1 iff ex b5, b6 being Nat st (iter c2,b5) . b3 = (iter c2,b6) . b4 ) ) & ( for b3, b4 being set st b3 in c1 & b4 in c1 holds
( [b3,b4] in b2 iff ex b5, b6 being Nat st (iter c2,b5) . b3 = (iter c2,b6) . b4 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines =_ ABIAN:def 7 :
for b1 being set
for b2 being Function of b1,b1
for b3 being Equivalence_Relation of b1 holds
( b3 = =_ b2 iff for b4, b5 being set st b4 in b1 & b5 in b1 holds
( [b4,b5] in b3 iff ex b6, b7 being Nat st (iter b2,b6) . b4 = (iter b2,b7) . b5 ) );

theorem Th6: :: ABIAN:6
for b1 being non empty set
for b2 being Function of b1,b1
for b3 being Element of Class (=_ b2)
for b4 being Element of b3 holds b2 . b4 in b3
proof end;

theorem Th7: :: ABIAN:7
for b1 being non empty set
for b2 being Function of b1,b1
for b3 being Element of Class (=_ b2)
for b4 being Element of b3
for b5 being Nat holds (iter b2,b5) . b4 in b3
proof end;

registration
cluster empty-membered -> trivial set ;
coherence
for b1 being set st b1 is empty-membered holds
b1 is trivial
proof end;
end;

registration
let c1 be set ;
let c2 be with_non-empty_element set ;
cluster non-empty M4(a1,a2);
existence
ex b1 being Function of c1,c2 st b1 is non-empty
proof end;
end;

registration
let c1 be non empty set ;
let c2 be with_non-empty_element set ;
let c3 be non-empty Function of c1,c2;
let c4 be Element of c1;
cluster a3 . a4 -> non empty ;
coherence
not c3 . c4 is empty
proof end;
end;

registration
let c1 be non empty set ;
cluster bool a1 -> with_non-empty_element ;
coherence
not bool c1 is empty-membered
proof end;
end;

theorem Th8: :: ABIAN:8
for b1 being non empty set
for b2 being Function of b1,b1 st b2 has_no_fixpoint holds
ex b3, b4, b5 being set st
( (b3 \/ b4) \/ b5 = b1 & b2 .: b3 misses b3 & b2 .: b4 misses b4 & b2 .: b5 misses b5 )
proof end;