:: ARYTM_3 semantic presentation

Lemma1: 1 in omega
;

definition
func one -> set equals :: ARYTM_3:def 1
1;
correctness
coherence
1 is set
;
;
end;

:: deftheorem Def1 defines one ARYTM_3:def 1 :
one = 1;

registration
cluster empty -> natural set ;
coherence
for b1 being Ordinal holds
( b1 is empty implies b1 is natural )
by ORDINAL2:19, ORDINAL1:def 13;
cluster one -> non empty natural ;
coherence
( one is natural & not one is empty )
by ORDINAL1:def 13;
cluster -> natural Element of omega ;
coherence
for b1 being Element of omega holds b1 is natural
by ORDINAL1:def 13;
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 holds
( P1[b1] implies 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 holds
( b1 +^ b2 is natural implies ( 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 holds
( b1 *^ b2 is natural & not b1 *^ b2 is empty implies ( 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 :Def2: :: ARYTM_3:def 2
for b1, b2, b3 being Ordinal holds
( a1 = b1 *^ b2 & a2 = b1 *^ b3 implies b1 = 1 );
symmetry
for b1, b2 being Ordinal holds
( ( for b3, b4, b5 being Ordinal holds
( b1 = b3 *^ b4 & b2 = b3 *^ b5 implies b3 = 1 ) ) implies for b3, b4, b5 being Ordinal holds
( b2 = b3 *^ b4 & b1 = b3 *^ b5 implies b3 = 1 ) )
;
end;

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

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

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

theorem Th7: :: ARYTM_3:7
for b1 being Ordinal holds
( {} ,b1 are_relative_prime implies b1 = 1 )
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 & a1 = b2 *^ b3 & b1 = b2 *^ b4 ) ) );

theorem Th8: :: ARYTM_3:8
for b1, b2 being natural Ordinal holds
not ( not ( not b1 <> {} & not b2 <> {} ) & ( for b3, b4, b5 being natural Ordinal holds
not ( 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 :Def3: :: ARYTM_3:def 3
ex b1 being Ordinal st a2 = a1 *^ b1;
reflexivity
for b1 being Ordinal holds
ex b2 being Ordinal st b1 = b1 *^ b2
proof end;
end;

:: deftheorem Def3 defines divides ARYTM_3:def 3 :
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 holds
( {} in b1 implies 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 holds
( b1 divides b2 & b2 divides b1 implies b1 = b2 )
proof end;

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

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

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

Lemma18: 1 = succ 0
;

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

:: deftheorem Def4 defines lcm ARYTM_3:def 4 :
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 holds
( b1 divides b4 & b2 divides b4 implies 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 holds
( b1 <> {} implies (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 :Def5: :: ARYTM_3:def 5
( a3 divides a1 & a3 divides a2 & ( for b1 being natural Ordinal holds
( b1 divides a1 & b1 divides a2 implies b1 divides a3 ) ) );
existence
ex b1 being Element of omega st
( b1 divides c1 & b1 divides c2 & ( for b2 being natural Ordinal holds
( b2 divides c1 & b2 divides c2 implies b2 divides b1 ) ) )
proof end;
uniqueness
for b1, b2 being Element of omega holds
( b1 divides c1 & b1 divides c2 & ( for b3 being natural Ordinal holds
( b3 divides c1 & b3 divides c2 implies b3 divides b1 ) ) & b2 divides c1 & b2 divides c2 & ( for b3 being natural Ordinal holds
( b3 divides c1 & b3 divides c2 implies b3 divides b2 ) ) implies b1 = b2 )
proof end;
commutativity
for b1 being Element of omega
for b2, b3 being natural Ordinal holds
( b1 divides b2 & b1 divides b3 & ( for b4 being natural Ordinal holds
( b4 divides b2 & b4 divides b3 implies b4 divides b1 ) ) implies ( b1 divides b3 & b1 divides b2 & ( for b4 being natural Ordinal holds
( b4 divides b3 & b4 divides b2 implies b4 divides b1 ) ) ) )
;
end;

:: deftheorem Def5 defines hcf ARYTM_3:def 5 :
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 holds
( b4 divides b1 & b4 divides b2 implies 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 holds
( b1 hcf b2 = {} implies 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 holds
( b1 <> {} implies ( b2 hcf b1 <> {} & b1 div^ (b2 hcf b1) <> {} ) )
proof end;

theorem Th24: :: ARYTM_3:24
for b1, b2 being natural Ordinal holds
( not ( not b1 <> {} & not b2 <> {} ) implies 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 = 1 )
proof end;

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

:: deftheorem Def6 defines RED ARYTM_3:def 6 :
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 holds
( not ( not b1 <> {} & not b2 <> {} ) implies RED b1,b2, RED b2,b1 are_relative_prime ) by Th24;

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

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

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

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

theorem Th32: :: ARYTM_3:32
for b1 being natural Ordinal holds
( b1 <> {} implies RED b1,b1 = 1 )
proof end;

theorem Th33: :: ARYTM_3:33
for b1, b2, b3 being natural Ordinal holds
( b1 <> {} implies 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 <> {} ) } ;

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

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

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

Lemma38: for b1, b2 being natural Ordinal holds
( [b1,b2] in c2 implies ( b1,b2 are_relative_prime & b2 <> {} ) )
proof end;

definition
func RAT+ -> set equals :: ARYTM_3:def 7
({ [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } \ { [b1,1] 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,1] where B is Element of omega : verum } ) \/ omega is set
;
;
end;

:: deftheorem Def7 defines RAT+ ARYTM_3:def 7 :
RAT+ = ({ [b1,b2] where B is Element of omega , B is Element of omega : ( b1,b2 are_relative_prime & b2 <> {} ) } \ { [b1,1] 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
not ( not b1 in omega & ( for b2, b3 being Element of omega holds
not ( b1 = [b2,b3] & b2,b3 are_relative_prime & b3 <> {} & b3 <> 1 ) ) )
proof end;

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

theorem Th37: :: ARYTM_3:37
for b1 being Ordinal holds
( b1 in RAT+ implies 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 <> 1 ) )
proof end;

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

:: deftheorem Def8 defines numerator ARYTM_3:def 8 :
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 Def9 defines denominator ARYTM_3:def 9 :
for b1 being Element of RAT+
for b2 being Element of omega holds
( ( b1 in omega implies ( b2 = denominator b1 iff b2 = 1 ) ) & ( 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+ holds
( not b1 in omega implies ( b1 = [(numerator b1),(denominator b1)] & denominator b1 <> 1 ) )
proof end;

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

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

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

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

notation
let c3, c4 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 / 1 = b2 )
proof end;

theorem Th47: :: ARYTM_3:47
for b1 being natural Ordinal holds
( b1 <> {} implies b1 / b1 = 1 )
proof end;

theorem Th48: :: ARYTM_3:48
for b1, b2 being natural Ordinal holds
( b1 <> {} implies ( 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 holds
( b1,b2 are_relative_prime & b2 <> {} implies ( numerator (b1 / b2) = b1 & denominator (b1 / b2) = b2 ) )
proof end;

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

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

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

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

:: deftheorem Def12 defines *' ARYTM_3:def 12 :
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 holds
( b2 <> {} & b1 <> {} implies (b3 / b2) + (b4 / b1) = ((b3 *^ b1) +^ (b2 *^ b4)) / (b2 *^ b1) )
proof end;

theorem Th53: :: ARYTM_3:53
for b1, b2, b3 being natural Ordinal holds
( b1 <> {} implies (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 {} -> Element of RAT+ ;
coherence
{} is 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+ holds
not ( b1 <> {} & ( for b2 being Element of RAT+ holds
not b1 *' b2 = 1 ) )
proof end;

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

theorem Th62: :: ARYTM_3:62
for b1, b2, b3 being Element of RAT+ holds
( b1 <> {} & b1 *' b2 = b1 *' b3 implies 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+ holds
ex b2 being Element of RAT+ st b1 = b2 + b2
proof end;

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

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

notation
let c3, c4 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+ holds
( b1 + b2 = b3 + b2 implies b1 = b3 )
proof end;

theorem Th70: :: ARYTM_3:70
for b1, b2 being Element of RAT+ holds
( b1 + b2 = {} implies 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+ holds
( b1 <=' {} implies b1 = {} )
proof end;

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

theorem Th74: :: ARYTM_3:74
for b1, b2, b3 being Element of RAT+ holds
( b1 <=' b2 & b2 <=' b3 implies 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+ holds
not ( ( ( b1 < b2 & b2 <=' b3 ) or ( b1 <=' b2 & b2 < b3 ) ) & not b1 < b3 ) by Th74;

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

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

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

theorem Th80: :: ARYTM_3:80
for b1 being Element of RAT+ holds
not ( b1 <> {} & ( for b2 being Element of RAT+ holds
not ( 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+ holds
not ( ex b2 being Element of RAT+ st
( b2 in b1 & b2 <> {} ) & ( for b2, b3 being Element of RAT+ holds
( b2 in b1 & b3 <=' b2 implies b3 in b1 ) ) & ( for b2, b3, b4 being Element of RAT+ holds
not ( 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 = {} & not b1 = {} & not b2 = {} )
proof end;

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

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

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

theorem Th90: :: ARYTM_3:90
for b1, b2, b3 being Element of RAT+ holds
( b1 <=' b2 implies 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 & not b1 <=' b3 & not 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+ holds
( b1 + b2 = b3 + b4 & b1 <=' b3 implies b4 <=' b2 )
proof end;

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

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

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

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

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

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

theorem Th100: :: ARYTM_3:100
for b1, b2 being Element of RAT+ holds
not for b3 being Element of RAT+ holds
( not b1 + b3 = b2 & not b2 + b3 = b1 )
proof end;

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

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

theorem Th103: :: ARYTM_3:103
for b1, b2 being Element of RAT+ holds
not ( b1 <> {} & ( for b3 being Element of RAT+ holds
not ( 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] & not P1[b1 + F2()] )
provided
E87: F2() = 1 and E88: F1() = {} and E89: F3() in omega and E90: P1[F1()] and E91: not P1[F3()]
proof end;