:: ARYTM_3 semantic presentation

Lemma1: one in omega
by ORDINAL1:41, ORDINAL2:19;

registration
let c1 be Ordinal;
cluster -> ordinal Element of a1;
coherence
for b1 being Element of c1 holds b1 is ordinal
proof end;
end;

registration
cluster empty -> natural set ;
coherence
for b1 being Ordinal st b1 is empty holds
b1 is natural
by ORDINAL2:19, ORDINAL2:def 21;
cluster one -> natural ;
coherence
( one is natural & not one is empty )
by Lemma1, ORDINAL2:def 21;
cluster -> ordinal natural Element of omega ;
coherence
for b1 being Element of omega holds b1 is natural
by ORDINAL2:def 21;
end;

registration
cluster non empty natural set ;
existence
ex b1 being Ordinal st
( not b1 is empty & b1 is natural )
proof end;
end;

registration
let c1 be natural Ordinal;
cluster succ a1 -> natural ;
coherence
succ c1 is natural
proof end;
end;

scheme :: ARYTM_3:sch 1
s1{ P1[ set ] } :
for b1 being natural Ordinal holds P1[b1]
provided
E2: P1[ {} ] and
E3: for b1 being natural Ordinal st P1[b1] holds
P1[ succ b1]
proof end;

registration
let c1, c2 be natural Ordinal;
cluster a1 +^ a2 -> natural ;
coherence
c1 +^ c2 is natural
proof end;
end;

theorem Th1: :: ARYTM_3:1
for b1, b2 being Ordinal st b1 +^ b2 is natural holds
( b1 in omega & b2 in omega )
proof end;

registration
let c1, c2 be natural Ordinal;
cluster a1 -^ a2 -> natural ;
coherence
c1 -^ c2 is natural
proof end;
cluster a1 *^ a2 -> natural ;
coherence
c1 *^ c2 is natural
proof end;
end;

theorem Th2: :: ARYTM_3:2
for b1, b2 being Ordinal st b1 *^ b2 is natural & not b1 *^ b2 is empty holds
( b1 in omega & b2 in omega )
proof end;

theorem Th3: :: ARYTM_3:3
for b1, b2 being natural Ordinal holds b1 +^ b2 = b2 +^ b1
proof end;

theorem Th4: :: ARYTM_3:4
for b1, b2 being natural Ordinal holds b1 *^ b2 = b2 *^ b1
proof end;

definition
let c1, c2 be natural Ordinal;
redefine func +^ as c1 +^ c2 -> set ;
commutativity
for b1, b2 being natural Ordinal holds b1 +^ b2 = b2 +^ b1
by Th3;
redefine func *^ as c1 *^ c2 -> set ;
commutativity
for b1, b2 being natural Ordinal holds b1 *^ b2 = b2 *^ b1
by Th4;
end;

definition
let c1, c2 be Ordinal;
pred c1,c2 are_relative_prime means :Def1: :: ARYTM_3:def 1
for b1, b2, b3 being Ordinal st a1 = b1 *^ b2 & a2 = b1 *^ b3 holds
b1 = one ;
symmetry
for b1, b2 being Ordinal st ( for b3, b4, b5 being Ordinal st b1 = b3 *^ b4 & b2 = b3 *^ b5 holds
b3 = one ) holds
for b3, b4, b5 being Ordinal st b2 = b3 *^ b4 & b1 = b3 *^ b5 holds
b3 = one
;
end;

:: deftheorem Def1 defines are_relative_prime ARYTM_3:def 1 :
for b1, b2 being Ordinal holds
( b1,b2 are_relative_prime iff for b3, b4, b5 being Ordinal st b1 = b3 *^ b4 & b2 = b3 *^ b5 holds
b3 = one );

theorem Th5: :: ARYTM_3:5
not {} , {} are_relative_prime
proof end;

theorem Th6: :: ARYTM_3:6
for b1 being Ordinal holds one ,b1 are_relative_prime
proof end;

theorem Th7: :: ARYTM_3:7
for b1 being Ordinal st {} ,b1 are_relative_prime holds
b1 = one
proof end;

defpred S1[ set ] means ex b1 being Ordinal st
( b1 c= a1 & a1 in omega & a1 <> {} & ( for b2, b3, b4 being natural Ordinal holds
( not b3,b4 are_relative_prime or not a1 = b2 *^ b3 or not b1 = b2 *^ b4 ) ) );

theorem Th8: :: ARYTM_3:8
for b1, b2 being natural Ordinal st ( b1 <> {} or b2 <> {} ) holds
ex b3, b4, b5 being natural Ordinal st
( b4,b5 are_relative_prime & b1 = b3 *^ b4 & b2 = b3 *^ b5 )
proof end;

registration
let c1, c2 be natural Ordinal;
cluster a1 div^ a2 -> natural ;
coherence
c1 div^ c2 is natural
proof end;
cluster a1 mod^ a2 -> natural ;
coherence
c1 mod^ c2 is natural
proof end;
end;

definition
let c1, c2 be Ordinal;
pred c1 divides c2 means :Def2: :: ARYTM_3:def 2
ex b1 being Ordinal st a2 = a1 *^ b1;
reflexivity
for b1 being Ordinal ex b2 being Ordinal st b1 = b1 *^ b2
proof end;
end;

:: deftheorem Def2 defines divides ARYTM_3:def 2 :
for b1, b2 being Ordinal holds
( b1 divides b2 iff ex b3 being Ordinal st b2 = b1 *^ b3 );

theorem Th9: :: ARYTM_3:9
for b1, b2 being natural Ordinal holds
( b1 divides b2 iff ex b3 being natural Ordinal st b2 = b1 *^ b3 )
proof end;

theorem Th10: :: ARYTM_3:10
for b1, b2 being natural Ordinal st {} in b1 holds
b2 mod^ b1 in b1
proof end;

theorem Th11: :: ARYTM_3:11
for b1, b2 being natural Ordinal holds
( b2 divides b1 iff b1 = b2 *^ (b1 div^ b2) )
proof end;

theorem Th12: :: ARYTM_3:12
canceled;

theorem Th13: :: ARYTM_3:13
for b1, b2 being natural Ordinal st b1 divides b2 & b2 divides b1 holds
b1 = b2
proof end;

theorem Th14: :: ARYTM_3:14
for b1 being natural Ordinal holds
( b1 divides {} & one divides b1 )
proof end;

theorem Th15: :: ARYTM_3:15
for b1, b2 being natural Ordinal st {} in b2 & b1 divides b2 holds
b1 c= b2
proof end;

theorem Th16: :: ARYTM_3:16
for b1, b2, b3 being natural Ordinal st b1 divides b2 & b1 divides b2 +^ b3 holds
b1 divides b3
proof end;

definition
let c1, c2 be natural Ordinal;
func c1 lcm c2 -> Element of omega means :Def3: :: ARYTM_3:def 3
( a1 divides a3 & a2 divides a3 & ( for b1 being natural Ordinal st a1 divides b1 & a2 divides b1 holds
a3 divides b1 ) );
existence
ex b1 being Element of omega st
( c1 divides b1 & c2 divides b1 & ( for b2 being natural Ordinal st c1 divides b2 & c2 divides b2 holds
b1 divides b2 ) )
proof end;
uniqueness
for b1, b2 being Element of omega st c1 divides b1 & c2 divides b1 & ( for b3 being natural Ordinal st c1 divides b3 & c2 divides b3 holds
b1 divides b3 ) & c1 divides b2 & c2 divides b2 & ( for b3 being natural Ordinal st c1 divides b3 & c2 divides b3 holds
b2 divides b3 ) holds
b1 = b2
proof end;
commutativity
for b1 being Element of omega
for b2, b3 being natural Ordinal st b2 divides b1 & b3 divides b1 & ( for b4 being natural Ordinal st b2 divides b4 & b3 divides b4 holds
b1 divides b4 ) holds
( b3 divides b1 & b2 divides b1 & ( for b4 being natural Ordinal st b3 divides b4 & b2 divides b4 holds
b1 divides b4 ) )
;
end;

:: deftheorem Def3 defines lcm ARYTM_3:def 3 :
for b1, b2 being natural Ordinal
for b3 being Element of omega holds
( b3 = b1 lcm b2 iff ( b1 divides b3 & b2 divides b3 & ( for b4 being natural Ordinal st b1 divides b4 & b2 divides b4 holds
b3 divides b4 ) ) );

theorem Th17: :: ARYTM_3:17
for b1, b2 being natural Ordinal holds b1 lcm b2 divides b1 *^ b2
proof end;

theorem Th18: :: ARYTM_3:18
for b1, b2 being natural Ordinal st b1 <> {} holds
(b2 *^ b1) div^ (b2 lcm b1) divides b2
proof end;

definition
let c1, c2 be natural Ordinal;
func c1 hcf c2 -> Element of omega means :Def4: :: ARYTM_3:def 4
( a3 divides a1 & a3 divides a2 & ( for b1 being natural Ordinal st b1 divides a1 & b1 divides a2 holds
b1 divides a3 ) );
existence
ex b1 being Element of omega st
( b1 divides c1 & b1 divides c2 & ( for b2 being natural Ordinal st b2 divides c1 & b2 divides c2 holds
b2 divides b1 ) )
proof end;
uniqueness
for b1, b2 being Element of omega st b1 divides c1 & b1 divides c2 & ( for b3 being natural Ordinal st b3 divides c1 & b3 divides c2 holds
b3 divides b1 ) & b2 divides c1 & b2 divides c2 & ( for b3 being natural Ordinal st b3 divides c1 & b3 divides c2 holds
b3 divides b2 ) holds
b1 = b2
proof end;
commutativity
for b1 being Element of omega
for b2, b3 being natural Ordinal st b1 divides b2 & b1 divides b3 & ( for b4 being natural Ordinal st b4 divides b2 & b4 divides b3 holds
b4 divides b1 ) holds
( b1 divides b3 & b1 divides b2 & ( for b4 being natural Ordinal st b4 divides b3 & b4 divides b2 holds
b4 divides b1 ) )
;
end;

:: deftheorem Def4 defines hcf ARYTM_3:def 4 :
for b1, b2 being natural Ordinal
for b3 being Element of omega holds
( b3 = b1 hcf b2 iff ( b3 divides b1 & b3 divides b2 & ( for b4 being natural Ordinal st b4 divides b1 & b4 divides b2 holds
b4 divides b3 ) ) );

theorem Th19: :: ARYTM_3:19
for b1 being natural Ordinal holds
( b1 hcf {} = b1 & b1 lcm {} = {} )
proof end;

theorem Th20: :: ARYTM_3:20
for b1, b2 being natural Ordinal st b1 hcf b2 = {} holds
b1 = {}
proof end;

theorem Th21: :: ARYTM_3:21
for b1 being natural Ordinal holds
( b1 hcf b1 = b1 & b1 lcm b1 = b1 )
proof end;

theorem Th22: :: ARYTM_3:22
for b1, b2, b3 being natural Ordinal holds (b1 *^ b2) hcf (b3 *^ b2) = (b1 hcf b3) *^ b2
proof end;

theorem Th23: :: ARYTM_3:23
for b1, b2 being natural Ordinal st b1 <> {} holds
( b2 hcf b1 <> {} & b1 div^ (b2 hcf b1) <> {} )
proof end;

theorem Th24: :: ARYTM_3:24
for b1, b2 being natural Ordinal st ( b1 <> {} or b2 <> {} ) holds
b1 div^ (b1 hcf b2),b2 div^ (b1 hcf b2) are_relative_prime
proof end;

theorem Th25: :: ARYTM_3:25
for b1, b2 being natural Ordinal holds
( b1,b2 are_relative_prime iff b1 hcf b2 = one )
proof end;

definition
let c1, c2 be natural Ordinal;
func RED c1,c2 -> Element of omega equals :: ARYTM_3:def 5
a1 div^ (a1 hcf a2);
coherence
c1 div^ (c1 hcf c2) is Element of omega
by ORDINAL2:def 21;
end;

:: deftheorem Def5 defines RED ARYTM_3:def 5 :
for b1, b2 being natural Ordinal holds RED b1,b2 = b1 div^ (b1 hcf b2);

theorem Th26: :: ARYTM_3:26
for b1, b2 being natural Ordinal holds (RED b1,b2) *^ (b1 hcf b2) = b1
proof end;

theorem Th27: :: ARYTM_3:27
for b1, b2 being natural Ordinal st ( b1 <> {} or b2 <> {} ) holds
RED b1,b2, RED b2,b1 are_relative_prime by Th24;

theorem Th28: :: ARYTM_3:28
for b1, b2 being natural Ordinal st b1,b2 are_relative_prime holds
RED b1,b2 = b1
proof end;

theorem Th29: :: ARYTM_3:29
for b1 being natural Ordinal holds
( RED b1,one = b1 & RED one ,b1 = one )
proof end;

theorem Th30: :: ARYTM_3:30
for b1, b2 being natural Ordinal st b1 <> {} holds
RED b1,b2 <> {} by Th23;

theorem Th31: :: ARYTM_3:31
for b1 being natural Ordinal holds
( RED {} ,b1 = {} & ( b1 <> {} implies RED b1,{} = one ) )
proof end;

theorem Th32: :: ARYTM_3:32
for b1 being natural Ordinal st b1 <> {} holds
RED b1,b1 = one
proof end;

theorem Th33: :: ARYTM_3:33
for b1, b2, b3 being natural Ordinal st b1 <> {} holds
RED (b2 *^ b1),(b3 *^ b1) = RED b2,b3
proof end;

set c1 = { [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } ;

reconsider c2 = one as Element of omega by ORDINAL2:def 21;

( c2 <> {} & c2,c2 are_relative_prime )
by Th6;

then [c2,c2] in { [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) }
;

then reconsider c3 = { [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } as non empty set ;

Lemma37: for b1, b2 being natural Ordinal st [b1,b2] in c3 holds
( b1,b2 are_relative_prime & b2 <> {} )
proof end;

definition
func RAT+ -> set equals :: ARYTM_3:def 6
({ [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } \ { [b1,one ] where B is Element of omega : verum } ) \/ omega ;
correctness
coherence
({ [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } \ { [b1,one ] where B is Element of omega : verum } ) \/ omega is set
;
;
end;

:: deftheorem Def6 defines RAT+ ARYTM_3:def 6 :
RAT+ = ({ [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } \ { [b1,one ] where B is Element of omega : verum } ) \/ omega ;

theorem Th34: :: ARYTM_3:34
omega c= RAT+ by XBOOLE_1:7;

registration
cluster RAT+ -> non empty ;
coherence
not RAT+ is empty
;
end;

registration
cluster non empty ordinal Element of RAT+ ;
existence
ex b1 being Element of RAT+ st
( not b1 is empty & b1 is ordinal )
by Lemma1, Th34;
end;

theorem Th35: :: ARYTM_3:35
for b1 being Element of RAT+ holds
( b1 in omega or ex b2, b3 being Element of omega st
( b1 = [b2,b3] & b2,b3 are_relative_prime & b3 <> {} & b3 <> one ) )
proof end;

theorem Th36: :: ARYTM_3:36
for b1, b2 being set holds [b1,b2] is not Ordinal
proof end;

theorem Th37: :: ARYTM_3:37
for b1 being Ordinal st b1 in RAT+ holds
b1 in omega
proof end;

registration
cluster ordinal -> ordinal natural Element of RAT+ ;
coherence
for b1 being ordinal Element of RAT+ holds b1 is natural
proof end;
end;

theorem Th38: :: ARYTM_3:38
for b1, b2 being set holds not [b1,b2] in omega
proof end;

theorem Th39: :: ARYTM_3:39
for b1, b2 being Element of omega holds
( [b1,b2] in RAT+ iff ( b1,b2 are_relative_prime & b2 <> {} & b2 <> one ) )
proof end;

definition
let c4 be Element of RAT+ ;
func numerator c1 -> Element of omega means :Def7: :: ARYTM_3:def 7
a2 = a1 if a1 in omega
otherwise ex b1 being natural Ordinal st a1 = [a2,b1];
existence
( ( c4 in omega implies ex b1 being Element of omega st b1 = c4 ) & ( not c4 in omega implies ex b1 being Element of omega ex b2 being natural Ordinal st c4 = [b1,b2] ) )
proof end;
correctness
consistency
for b1 being Element of omega holds verum
;
uniqueness
for b1, b2 being Element of omega holds
( ( c4 in omega & b1 = c4 & b2 = c4 implies b1 = b2 ) & ( not c4 in omega & ex b3 being natural Ordinal st c4 = [b1,b3] & ex b3 being natural Ordinal st c4 = [b2,b3] implies b1 = b2 ) )
;
by ZFMISC_1:33;
func denominator c1 -> Element of omega means :Def8: :: ARYTM_3:def 8
a2 = one if a1 in omega
otherwise ex b1 being natural Ordinal st a1 = [b1,a2];
existence
( ( c4 in omega implies ex b1 being Element of omega st b1 = one ) & ( not c4 in omega implies ex b1 being Element of omega ex b2 being natural Ordinal st c4 = [b2,b1] ) )
proof end;
correctness
consistency
for b1 being Element of omega holds verum
;
uniqueness
for b1, b2 being Element of omega holds
( ( c4 in omega & b1 = one & b2 = one implies b1 = b2 ) & ( not c4 in omega & ex b3 being natural Ordinal st c4 = [b3,b1] & ex b3 being natural Ordinal st c4 = [b3,b2] implies b1 = b2 ) )
;
by ZFMISC_1:33;
end;

:: deftheorem Def7 defines numerator ARYTM_3:def 7 :
for b1 being Element of RAT+
for b2 being Element of omega holds
( ( b1 in omega implies ( b2 = numerator b1 iff b2 = b1 ) ) & ( not b1 in omega implies ( b2 = numerator b1 iff ex b3 being natural Ordinal st b1 = [b2,b3] ) ) );

:: deftheorem Def8 defines denominator ARYTM_3:def 8 :
for b1 being Element of RAT+
for b2 being Element of omega holds
( ( b1 in omega implies ( b2 = denominator b1 iff b2 = one ) ) & ( not b1 in omega implies ( b2 = denominator b1 iff ex b3 being natural Ordinal st b1 = [b3,b2] ) ) );

theorem Th40: :: ARYTM_3:40
for b1 being Element of RAT+ holds numerator b1, denominator b1 are_relative_prime
proof end;

theorem Th41: :: ARYTM_3:41
for b1 being Element of RAT+ holds denominator b1 <> {}
proof end;

theorem Th42: :: ARYTM_3:42
for b1 being Element of RAT+ st not b1 in omega holds
( b1 = [(numerator b1),(denominator b1)] & denominator b1 <> one )
proof end;

theorem Th43: :: ARYTM_3:43
for b1 being Element of RAT+ holds
( b1 <> {} iff numerator b1 <> {} )
proof end;

theorem Th44: :: ARYTM_3:44
for b1 being Element of RAT+ holds
( b1 in omega iff denominator b1 = one ) by Def8, Th42;

definition
let c4, c5 be natural Ordinal;
func c1 / c2 -> Element of RAT+ equals :Def9: :: ARYTM_3:def 9
{} if a2 = {}
RED a1,a2 if RED a2,a1 = one
otherwise [(RED a1,a2),(RED a2,a1)];
coherence
( ( c5 = {} implies {} is Element of RAT+ ) & ( RED c5,c4 = one implies RED c4,c5 is Element of RAT+ ) & ( not c5 = {} & not RED c5,c4 = one implies [(RED c4,c5),(RED c5,c4)] is Element of RAT+ ) )
proof end;
consistency
for b1 being Element of RAT+ st c5 = {} & RED c5,c4 = one holds
( b1 = {} iff b1 = RED c4,c5 )
by Th31;
end;

:: deftheorem Def9 defines / ARYTM_3:def 9 :
for b1, b2 being natural Ordinal holds
( ( b2 = {} implies b1 / b2 = {} ) & ( RED b2,b1 = one implies b1 / b2 = RED b1,b2 ) & ( not b2 = {} & not RED b2,b1 = one implies b1 / b2 = [(RED b1,b2),(RED b2,b1)] ) );

notation
let c4, c5 be natural Ordinal;
synonym quotient c1,c2 for c1 / c2;
end;

theorem Th45: :: ARYTM_3:45
for b1 being Element of RAT+ holds (numerator b1) / (denominator b1) = b1
proof end;

theorem Th46: :: ARYTM_3:46
for b1, b2 being natural Ordinal holds
( {} / b1 = {} & b2 / one = b2 )
proof end;

theorem Th47: :: ARYTM_3:47
for b1 being natural Ordinal st b1 <> {} holds
b1 / b1 = one
proof end;

theorem Th48: :: ARYTM_3:48
for b1, b2 being natural Ordinal st b1 <> {} holds
( numerator (b2 / b1) = RED b2,b1 & denominator (b2 / b1) = RED b1,b2 )
proof end;

theorem Th49: :: ARYTM_3:49
for b1, b2 being Element of omega st b1,b2 are_relative_prime & b2 <> {} holds
( numerator (b1 / b2) = b1 & denominator (b1 / b2) = b2 )
proof end;

theorem Th50: :: ARYTM_3:50
for b1, b2, b3 being natural Ordinal st b1 <> {} holds
(b2 *^ b1) / (b3 *^ b1) = b2 / b3
proof end;

theorem Th51: :: ARYTM_3:51
for b1, b2, b3, b4 being natural Ordinal st b2 <> {} & b1 <> {} holds
( b3 / b2 = b4 / b1 iff b3 *^ b1 = b2 *^ b4 )
proof end;

definition
let c4, c5 be Element of RAT+ ;
func c1 + c2 -> Element of RAT+ equals :: ARYTM_3:def 10
(((numerator a1) *^ (denominator a2)) +^ ((numerator a2) *^ (denominator a1))) / ((denominator a1) *^ (denominator a2));
coherence
(((numerator c4) *^ (denominator c5)) +^ ((numerator c5) *^ (denominator c4))) / ((denominator c4) *^ (denominator c5)) is Element of RAT+
;
commutativity
for b1, b2, b3 being Element of RAT+ st b1 = (((numerator b2) *^ (denominator b3)) +^ ((numerator b3) *^ (denominator b2))) / ((denominator b2) *^ (denominator b3)) holds
b1 = (((numerator b3) *^ (denominator b2)) +^ ((numerator b2) *^ (denominator b3))) / ((denominator b3) *^ (denominator b2))
;
func c1 *' c2 -> Element of RAT+ equals :: ARYTM_3:def 11
((numerator a1) *^ (numerator a2)) / ((denominator a1) *^ (denominator a2));
coherence
((numerator c4) *^ (numerator c5)) / ((denominator c4) *^ (denominator c5)) is Element of RAT+
;
commutativity
for b1, b2, b3 being Element of RAT+ st b1 = ((numerator b2) *^ (numerator b3)) / ((denominator b2) *^ (denominator b3)) holds
b1 = ((numerator b3) *^ (numerator b2)) / ((denominator b3) *^ (denominator b2))
;
end;

:: deftheorem Def10 defines + ARYTM_3:def 10 :
for b1, b2 being Element of RAT+ holds b1 + b2 = (((numerator b1) *^ (denominator b2)) +^ ((numerator b2) *^ (denominator b1))) / ((denominator b1) *^ (denominator b2));

:: deftheorem Def11 defines *' ARYTM_3:def 11 :
for b1, b2 being Element of RAT+ holds b1 *' b2 = ((numerator b1) *^ (numerator b2)) / ((denominator b1) *^ (denominator b2));

theorem Th52: :: ARYTM_3:52
for b1, b2, b3, b4 being natural Ordinal st b2 <> {} & b1 <> {} holds
(b3 / b2) + (b4 / b1) = ((b3 *^ b1) +^ (b2 *^ b4)) / (b2 *^ b1)
proof end;

theorem Th53: :: ARYTM_3:53
for b1, b2, b3 being natural Ordinal st b1 <> {} holds
(b2 / b1) + (b3 / b1) = (b2 +^ b3) / b1
proof end;

registration
cluster empty natural Element of RAT+ ;
existence
ex b1 being Element of RAT+ st b1 is empty
by Th34, ORDINAL2:19;
end;

definition
redefine func {} as {} -> empty Element of RAT+ ;
coherence
{} is empty Element of RAT+
by Th34, ORDINAL2:19;
redefine func one as one -> non empty ordinal Element of RAT+ ;
coherence
one is non empty ordinal Element of RAT+
by Lemma1, Th34;
end;

theorem Th54: :: ARYTM_3:54
for b1 being Element of RAT+ holds b1 *' {} = {}
proof end;

theorem Th55: :: ARYTM_3:55
for b1, b2, b3, b4 being natural Ordinal holds (b2 / b3) *' (b4 / b1) = (b2 *^ b4) / (b3 *^ b1)
proof end;

theorem Th56: :: ARYTM_3:56
for b1 being Element of RAT+ holds b1 + {} = b1
proof end;

theorem Th57: :: ARYTM_3:57
for b1, b2, b3 being Element of RAT+ holds (b1 + b2) + b3 = b1 + (b2 + b3)
proof end;

theorem Th58: :: ARYTM_3:58
for b1, b2, b3 being Element of RAT+ holds (b1 *' b2) *' b3 = b1 *' (b2 *' b3)
proof end;

theorem Th59: :: ARYTM_3:59
for b1 being Element of RAT+ holds b1 *' one = b1
proof end;

theorem Th60: :: ARYTM_3:60
for b1 being Element of RAT+ st b1 <> {} holds
ex b2 being Element of RAT+ st b1 *' b2 = one
proof end;

theorem Th61: :: ARYTM_3:61
for b1, b2 being Element of RAT+ st b1 <> {} holds
ex b3 being Element of RAT+ st b2 = b1 *' b3
proof end;

theorem Th62: :: ARYTM_3:62
for b1, b2, b3 being Element of RAT+ st b1 <> {} & b1 *' b2 = b1 *' b3 holds
b2 = b3
proof end;

theorem Th63: :: ARYTM_3:63
for b1, b2, b3 being Element of RAT+ holds b1 *' (b2 + b3) = (b1 *' b2) + (b1 *' b3)
proof end;

theorem Th64: :: ARYTM_3:64
for b1, b2 being ordinal Element of RAT+ holds b1 + b2 = b1 +^ b2
proof end;

theorem Th65: :: ARYTM_3:65
for b1, b2 being ordinal Element of RAT+ holds b1 *' b2 = b1 *^ b2
proof end;

theorem Th66: :: ARYTM_3:66
for b1 being Element of RAT+ ex b2 being Element of RAT+ st b1 = b2 + b2
proof end;

definition
let c4, c5 be Element of RAT+ ;
pred c1 <=' c2 means :Def12: :: ARYTM_3:def 12
ex b1 being Element of RAT+ st a2 = a1 + b1;
connectedness
for b1, b2 being Element of RAT+ st ( for b3 being Element of RAT+ holds not b2 = b1 + b3 ) holds
ex b3 being Element of RAT+ st b1 = b2 + b3
proof end;
end;

:: deftheorem Def12 defines <=' ARYTM_3:def 12 :
for b1, b2 being Element of RAT+ holds
( b1 <=' b2 iff ex b3 being Element of RAT+ st b2 = b1 + b3 );

notation
let c4, c5 be Element of RAT+ ;
antonym c2 < c1 for c1 <=' c2;
end;

theorem Th67: :: ARYTM_3:67
canceled;

theorem Th68: :: ARYTM_3:68
for b1 being set holds not [{} ,b1] in RAT+
proof end;

theorem Th69: :: ARYTM_3:69
for b1, b2, b3 being Element of RAT+ st b1 + b2 = b3 + b2 holds
b1 = b3
proof end;

theorem Th70: :: ARYTM_3:70
for b1, b2 being Element of RAT+ st b1 + b2 = {} holds
b1 = {}
proof end;

theorem Th71: :: ARYTM_3:71
for b1 being Element of RAT+ holds {} <=' b1
proof end;

theorem Th72: :: ARYTM_3:72
for b1 being Element of RAT+ st b1 <=' {} holds
b1 = {}
proof end;

theorem Th73: :: ARYTM_3:73
for b1, b2 being Element of RAT+ st b1 <=' b2 & b2 <=' b1 holds
b1 = b2
proof end;

theorem Th74: :: ARYTM_3:74
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 & b2 <=' b3 holds
b1 <=' b3
proof end;

theorem Th75: :: ARYTM_3:75
for b1, b2 being Element of RAT+ holds
( b1 < b2 iff ( b1 <=' b2 & b1 <> b2 ) ) by Th73;

theorem Th76: :: ARYTM_3:76
for b1, b2, b3 being Element of RAT+ st ( ( b1 < b2 & b2 <=' b3 ) or ( b1 <=' b2 & b2 < b3 ) ) holds
b1 < b3 by Th74;

theorem Th77: :: ARYTM_3:77
for b1, b2, b3 being Element of RAT+ st b1 < b2 & b2 < b3 holds
b1 < b3 by Th74;

theorem Th78: :: ARYTM_3:78
for b1, b2 being Element of RAT+ st b1 in omega & b1 + b2 in omega holds
b2 in omega
proof end;

theorem Th79: :: ARYTM_3:79
for b1 being Element of RAT+
for b2 being ordinal Element of RAT+ st b2 < b1 & b1 < b2 + one holds
not b1 in omega
proof end;

theorem Th80: :: ARYTM_3:80
for b1 being Element of RAT+ st b1 <> {} holds
ex b2 being Element of RAT+ st
( b2 < b1 & not b2 in omega )
proof end;

theorem Th81: :: ARYTM_3:81
for b1 being Element of RAT+ holds
( { b2 where B is Element of RAT+ : b2 < b1 } in RAT+ iff b1 = {} )
proof end;

theorem Th82: :: ARYTM_3:82
for b1 being Subset of RAT+ st ex b2 being Element of RAT+ st
( b2 in b1 & b2 <> {} ) & ( for b2, b3 being Element of RAT+ st b2 in b1 & b3 <=' b2 holds
b3 in b1 ) holds
ex b2, b3, b4 being Element of RAT+ st
( b2 in b1 & b3 in b1 & b4 in b1 & b2 <> b3 & b3 <> b4 & b4 <> b2 )
proof end;

theorem Th83: :: ARYTM_3:83
for b1, b2, b3 being Element of RAT+ holds
( b1 + b2 <=' b3 + b2 iff b1 <=' b3 )
proof end;

theorem Th84: :: ARYTM_3:84
canceled;

theorem Th85: :: ARYTM_3:85
for b1, b2 being Element of RAT+ holds b1 <=' b1 + b2
proof end;

theorem Th86: :: ARYTM_3:86
for b1, b2 being Element of RAT+ holds
( not b1 *' b2 = {} or b1 = {} or b2 = {} )
proof end;

theorem Th87: :: ARYTM_3:87
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 *' b3 holds
ex b4 being Element of RAT+ st
( b1 = b2 *' b4 & b4 <=' b3 )
proof end;

theorem Th88: :: ARYTM_3:88
for b1, b2, b3 being Element of RAT+ st b1 <> {} & b2 *' b1 <=' b3 *' b1 holds
b2 <=' b3
proof end;

theorem Th89: :: ARYTM_3:89
for b1, b2, b3, b4 being Element of RAT+ holds
( not b1 + b2 = b3 + b4 or b1 <=' b3 or b2 <=' b4 )
proof end;

theorem Th90: :: ARYTM_3:90
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 holds
b1 *' b3 <=' b2 *' b3
proof end;

theorem Th91: :: ARYTM_3:91
for b1, b2, b3, b4 being Element of RAT+ holds
( not b1 *' b2 = b3 *' b4 or b1 <=' b3 or b2 <=' b4 )
proof end;

theorem Th92: :: ARYTM_3:92
for b1, b2 being Element of RAT+ holds
( b1 = {} iff b1 + b2 = b2 )
proof end;

theorem Th93: :: ARYTM_3:93
for b1, b2, b3, b4 being Element of RAT+ st b1 + b2 = b3 + b4 & b1 <=' b3 holds
b4 <=' b2
proof end;

theorem Th94: :: ARYTM_3:94
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 & b2 <=' b1 + b3 holds
ex b4 being Element of RAT+ st
( b2 = b1 + b4 & b4 <=' b3 )
proof end;

theorem Th95: :: ARYTM_3:95
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 + b3 holds
ex b4, b5 being Element of RAT+ st
( b1 = b4 + b5 & b4 <=' b2 & b5 <=' b3 )
proof end;

theorem Th96: :: ARYTM_3:96
for b1, b2, b3 being Element of RAT+ st b1 < b2 & b1 < b3 holds
ex b4 being Element of RAT+ st
( b4 <=' b2 & b4 <=' b3 & b1 < b4 )
proof end;

theorem Th97: :: ARYTM_3:97
for b1, b2, b3 being Element of RAT+ st b1 <=' b2 & b2 <=' b3 & b2 <> b3 holds
b1 <> b3 by Th73;

theorem Th98: :: ARYTM_3:98
for b1, b2, b3 being Element of RAT+ st b1 < b2 + b3 & b3 <> {} holds
ex b4, b5 being Element of RAT+ st
( b1 = b4 + b5 & b4 <=' b2 & b5 <=' b3 & b5 <> b3 )
proof end;

theorem Th99: :: ARYTM_3:99
for b1 being non empty Subset of RAT+ st b1 in RAT+ holds
ex b2 being Element of RAT+ st
( b2 in b1 & ( for b3 being Element of RAT+ st b3 in b1 holds
b3 <=' b2 ) )
proof end;

theorem Th100: :: ARYTM_3:100
for b1, b2 being Element of RAT+ ex b3 being Element of RAT+ st
( b1 + b3 = b2 or b2 + b3 = b1 )
proof end;

theorem Th101: :: ARYTM_3:101
for b1, b2 being Element of RAT+ st b1 < b2 holds
ex b3 being Element of RAT+ st
( b1 < b3 & b3 < b2 )
proof end;

theorem Th102: :: ARYTM_3:102
for b1 being Element of RAT+ ex b2 being Element of RAT+ st b1 < b2
proof end;

theorem Th103: :: ARYTM_3:103
for b1, b2 being Element of RAT+ st b1 <> {} holds
ex b3 being Element of RAT+ st
( b3 in omega & b2 <=' b3 *' b1 )
proof end;

scheme :: ARYTM_3:sch 2
s2{ F1() -> Element of RAT+ , F2() -> Element of RAT+ , F3() -> Element of RAT+ , P1[ set ] } :
ex b1 being Element of RAT+ st
( b1 in omega & P1[b1] & P1[b1 + F2()] )
provided
E86: F2() = one and
E87: F1() = {} and
E88: F3() in omega and
E89: P1[F1()] and
E90: P1[F3()]
proof end;