:: NEWTON semantic presentation

theorem Th1: :: NEWTON:1
canceled;

theorem Th2: :: NEWTON:2
canceled;

theorem Th3: :: NEWTON:3
for b1, b2 being FinSequence st len b1 = len b2 & ( for b3 being Nat st b3 in dom b1 holds
b1 . b3 = b2 . b3 ) holds
b1 = b2
proof end;

theorem Th4: :: NEWTON:4
canceled;

theorem Th5: :: NEWTON:5
for b1 being Nat st b1 >= 1 holds
Seg b1 = ({1} \/ { b2 where B is Nat : ( 1 < b2 & b2 < b1 ) } ) \/ {b1}
proof end;

theorem Th6: :: NEWTON:6
for b1 being real number
for b2 being FinSequence of REAL holds len (b1 * b2) = len b2
proof end;

theorem Th7: :: NEWTON:7
for b1 being Nat
for b2 being real number
for b3 being FinSequence of REAL holds
( b1 in dom b3 iff b1 in dom (b2 * b3) )
proof end;

definition
let c1 be natural number ;
let c2 be real number ;
redefine func |-> as c1 |-> c2 -> FinSequence of REAL ;
coherence
c1 |-> c2 is FinSequence of REAL
proof end;
end;

definition
let c1 be real number ;
let c2 be natural number ;
func c1 |^ c2 -> set equals :: NEWTON:def 1
Product (a2 |-> a1);
coherence
Product (c2 |-> c1) is set
;
end;

:: deftheorem Def1 defines |^ NEWTON:def 1 :
for b1 being real number
for b2 being natural number holds b1 |^ b2 = Product (b2 |-> b1);

registration
let c1 be real number ;
let c2 be natural number ;
cluster a1 |^ a2 -> real ;
coherence
c1 |^ c2 is real
;
end;

definition
let c1 be Real;
let c2 be natural number ;
redefine func |^ as c1 |^ c2 -> Real;
coherence
c1 |^ c2 is Real
;
end;

theorem Th8: :: NEWTON:8
canceled;

theorem Th9: :: NEWTON:9
for b1 being real number holds b1 |^ 0 = 1 by FINSEQ_2:72, RVSUM_1:124;

theorem Th10: :: NEWTON:10
for b1 being real number holds b1 |^ 1 = b1
proof end;

theorem Th11: :: NEWTON:11
for b1 being natural number
for b2 being real number holds b2 |^ (b1 + 1) = (b2 |^ b1) * b2
proof end;

registration
let c1, c2 be natural number ;
cluster a1 |^ a2 -> natural real ;
coherence
c1 |^ c2 is natural
proof end;
end;

theorem Th12: :: NEWTON:12
for b1 being natural number
for b2, b3 being real number holds (b2 * b3) |^ b1 = (b2 |^ b1) * (b3 |^ b1)
proof end;

theorem Th13: :: NEWTON:13
for b1, b2 being natural number
for b3 being real number holds b3 |^ (b1 + b2) = (b3 |^ b1) * (b3 |^ b2)
proof end;

theorem Th14: :: NEWTON:14
for b1, b2 being natural number
for b3 being real number holds (b3 |^ b1) |^ b2 = b3 |^ (b1 * b2)
proof end;

theorem Th15: :: NEWTON:15
for b1 being natural number holds 1 |^ b1 = 1
proof end;

theorem Th16: :: NEWTON:16
for b1 being natural number st b1 >= 1 holds
0 |^ b1 = 0
proof end;

definition
let c1 be natural number ;
redefine func idseq as idseq c1 -> FinSequence of REAL ;
coherence
idseq c1 is FinSequence of REAL
proof end;
end;

definition
let c1 be natural number ;
func c1 ! -> set equals :: NEWTON:def 2
Product (idseq a1);
coherence
Product (idseq c1) is set
;
end;

:: deftheorem Def2 defines ! NEWTON:def 2 :
for b1 being natural number holds b1 ! = Product (idseq b1);

registration
let c1 be natural number ;
cluster a1 ! -> real ;
coherence
c1 ! is real
;
end;

definition
let c1 be natural number ;
redefine func ! as c1 ! -> Real;
coherence
c1 ! is Real
;
end;

theorem Th17: :: NEWTON:17
canceled;

theorem Th18: :: NEWTON:18
0 ! = 1 by FINSEQ_2:58, RVSUM_1:124;

theorem Th19: :: NEWTON:19
1 ! = 1 by FINSEQ_2:59, RVSUM_1:125;

theorem Th20: :: NEWTON:20
2 ! = 2
proof end;

theorem Th21: :: NEWTON:21
for b1 being natural number holds (b1 + 1) ! = (b1 ! ) * (b1 + 1)
proof end;

theorem Th22: :: NEWTON:22
for b1 being natural number holds b1 ! is Nat
proof end;

theorem Th23: :: NEWTON:23
for b1 being natural number holds b1 ! > 0
proof end;

theorem Th24: :: NEWTON:24
canceled;

theorem Th25: :: NEWTON:25
for b1, b2 being natural number holds (b1 ! ) * (b2 ! ) <> 0
proof end;

definition
let c1, c2 be natural number ;
func c2 choose c1 -> set means :Def3: :: NEWTON:def 3
for b1 being natural number st b1 = a2 - a1 holds
a3 = (a2 ! ) / ((a1 ! ) * (b1 ! )) if a2 >= a1
otherwise a3 = 0;
consistency
for b1 being set holds verum
;
existence
( ( c2 >= c1 implies ex b1 being set st
for b2 being natural number st b2 = c2 - c1 holds
b1 = (c2 ! ) / ((c1 ! ) * (b2 ! )) ) & ( not c2 >= c1 implies ex b1 being set st b1 = 0 ) )
proof end;
uniqueness
for b1, b2 being set holds
( ( c2 >= c1 & ( for b3 being natural number st b3 = c2 - c1 holds
b1 = (c2 ! ) / ((c1 ! ) * (b3 ! )) ) & ( for b3 being natural number st b3 = c2 - c1 holds
b2 = (c2 ! ) / ((c1 ! ) * (b3 ! )) ) implies b1 = b2 ) & ( not c2 >= c1 & b1 = 0 & b2 = 0 implies b1 = b2 ) )
proof end;
end;

:: deftheorem Def3 defines choose NEWTON:def 3 :
for b1, b2 being natural number
for b3 being set holds
( ( b2 >= b1 implies ( b3 = b2 choose b1 iff for b4 being natural number st b4 = b2 - b1 holds
b3 = (b2 ! ) / ((b1 ! ) * (b4 ! )) ) ) & ( not b2 >= b1 implies ( b3 = b2 choose b1 iff b3 = 0 ) ) );

registration
let c1, c2 be natural number ;
cluster a2 choose a1 -> real ;
coherence
c2 choose c1 is real
proof end;
end;

definition
let c1, c2 be natural number ;
redefine func choose as c2 choose c1 -> Real;
coherence
c2 choose c1 is Real
by XREAL_0:def 1;
end;

theorem Th26: :: NEWTON:26
canceled;

theorem Th27: :: NEWTON:27
0 choose 0 = 1
proof end;

theorem Th28: :: NEWTON:28
canceled;

theorem Th29: :: NEWTON:29
for b1 being natural number holds b1 choose 0 = 1
proof end;

theorem Th30: :: NEWTON:30
for b1, b2 being natural number st b1 >= b2 holds
for b3 being natural number st b3 = b1 - b2 holds
b1 choose b2 = b1 choose b3
proof end;

theorem Th31: :: NEWTON:31
for b1 being natural number holds b1 choose b1 = 1
proof end;

theorem Th32: :: NEWTON:32
for b1, b2 being natural number holds (b1 + 1) choose (b2 + 1) = (b1 choose (b2 + 1)) + (b1 choose b2)
proof end;

theorem Th33: :: NEWTON:33
for b1 being natural number st b1 >= 1 holds
b1 choose 1 = b1
proof end;

theorem Th34: :: NEWTON:34
for b1, b2 being natural number st b1 >= 1 & b2 = b1 - 1 holds
b1 choose b2 = b1
proof end;

theorem Th35: :: NEWTON:35
for b1, b2 being natural number holds b1 choose b2 is Nat
proof end;

theorem Th36: :: NEWTON:36
for b1, b2 being Nat
for b3 being FinSequence of REAL st b2 <> 0 & len b3 = b2 & ( for b4, b5 being Nat st b4 in dom b3 & b5 = (b1 + b4) - 1 holds
b3 . b4 = b5 choose b1 ) holds
Sum b3 = (b1 + b2) choose (b1 + 1)
proof end;

definition
let c1, c2 be real number ;
let c3 be natural number ;
func c1,c2 In_Power c3 -> FinSequence of REAL means :Def4: :: NEWTON:def 4
( len a4 = a3 + 1 & ( for b1, b2, b3 being natural number st b1 in dom a4 & b3 = b1 - 1 & b2 = a3 - b3 holds
a4 . b1 = ((a3 choose b3) * (a1 |^ b2)) * (a2 |^ b3) ) );
existence
ex b1 being FinSequence of REAL st
( len b1 = c3 + 1 & ( for b2, b3, b4 being natural number st b2 in dom b1 & b4 = b2 - 1 & b3 = c3 - b4 holds
b1 . b2 = ((c3 choose b4) * (c1 |^ b3)) * (c2 |^ b4) ) )
proof end;
uniqueness
for b1, b2 being FinSequence of REAL st len b1 = c3 + 1 & ( for b3, b4, b5 being natural number st b3 in dom b1 & b5 = b3 - 1 & b4 = c3 - b5 holds
b1 . b3 = ((c3 choose b5) * (c1 |^ b4)) * (c2 |^ b5) ) & len b2 = c3 + 1 & ( for b3, b4, b5 being natural number st b3 in dom b2 & b5 = b3 - 1 & b4 = c3 - b5 holds
b2 . b3 = ((c3 choose b5) * (c1 |^ b4)) * (c2 |^ b5) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines In_Power NEWTON:def 4 :
for b1, b2 being real number
for b3 being natural number
for b4 being FinSequence of REAL holds
( b4 = b1,b2 In_Power b3 iff ( len b4 = b3 + 1 & ( for b5, b6, b7 being natural number st b5 in dom b4 & b7 = b5 - 1 & b6 = b3 - b7 holds
b4 . b5 = ((b3 choose b7) * (b1 |^ b6)) * (b2 |^ b7) ) ) );

theorem Th37: :: NEWTON:37
canceled;

theorem Th38: :: NEWTON:38
for b1, b2 being real number holds b1,b2 In_Power 0 = <*1*>
proof end;

theorem Th39: :: NEWTON:39
for b1 being natural number
for b2, b3 being real number holds (b2,b3 In_Power b1) . 1 = b2 |^ b1
proof end;

theorem Th40: :: NEWTON:40
for b1 being natural number
for b2, b3 being real number holds (b2,b3 In_Power b1) . (b1 + 1) = b3 |^ b1
proof end;

theorem Th41: :: NEWTON:41
for b1, b2 being real number
for b3 being natural number holds (b1 + b2) |^ b3 = Sum (b1,b2 In_Power b3)
proof end;

definition
let c1 be natural number ;
func Newton_Coeff c1 -> FinSequence of REAL means :Def5: :: NEWTON:def 5
( len a2 = a1 + 1 & ( for b1, b2 being natural number st b1 in dom a2 & b2 = b1 - 1 holds
a2 . b1 = a1 choose b2 ) );
existence
ex b1 being FinSequence of REAL st
( len b1 = c1 + 1 & ( for b2, b3 being natural number st b2 in dom b1 & b3 = b2 - 1 holds
b1 . b2 = c1 choose b3 ) )
proof end;
uniqueness
for b1, b2 being FinSequence of REAL st len b1 = c1 + 1 & ( for b3, b4 being natural number st b3 in dom b1 & b4 = b3 - 1 holds
b1 . b3 = c1 choose b4 ) & len b2 = c1 + 1 & ( for b3, b4 being natural number st b3 in dom b2 & b4 = b3 - 1 holds
b2 . b3 = c1 choose b4 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Newton_Coeff NEWTON:def 5 :
for b1 being natural number
for b2 being FinSequence of REAL holds
( b2 = Newton_Coeff b1 iff ( len b2 = b1 + 1 & ( for b3, b4 being natural number st b3 in dom b2 & b4 = b3 - 1 holds
b2 . b3 = b1 choose b4 ) ) );

theorem Th42: :: NEWTON:42
canceled;

theorem Th43: :: NEWTON:43
for b1 being natural number holds Newton_Coeff b1 = 1,1 In_Power b1
proof end;

theorem Th44: :: NEWTON:44
for b1 being natural number holds 2 |^ b1 = Sum (Newton_Coeff b1)
proof end;

theorem Th45: :: NEWTON:45
for b1, b2 being Nat st b1 >= 1 holds
b2 * b1 >= b2
proof end;

theorem Th46: :: NEWTON:46
for b1, b2, b3 being Nat st b1 >= 1 & b2 >= b3 * b1 holds
b2 >= b3
proof end;

definition
let c1 be Nat;
redefine func ! as c1 ! -> Nat;
coherence
c1 ! is Nat
by Th22;
end;

theorem Th47: :: NEWTON:47
for b1 being Nat st b1 <> 0 holds
b1 divides b1 !
proof end;

theorem Th48: :: NEWTON:48
for b1 being Nat st b1 <> 0 holds
(b1 + 1) / b1 > 1
proof end;

theorem Th49: :: NEWTON:49
for b1 being Nat holds b1 / (b1 + 1) < 1
proof end;

theorem Th50: :: NEWTON:50
for b1 being Nat holds b1 ! >= b1
proof end;

theorem Th51: :: NEWTON:51
for b1, b2 being Nat st b1 <> 1 & b1 divides b2 holds
not b1 divides b2 + 1
proof end;

theorem Th52: :: NEWTON:52
for b1, b2 being Nat holds
( ( b2 divides b1 & b2 divides b1 + 1 ) iff b2 = 1 ) by Th51, NAT_1:53;

theorem Th53: :: NEWTON:53
for b1, b2 being Nat st b2 <> 0 holds
b2 divides (b2 + b1) !
proof end;

theorem Th54: :: NEWTON:54
for b1, b2 being Nat st b2 <= b1 & b2 <> 0 holds
b2 divides b1 !
proof end;

theorem Th55: :: NEWTON:55
for b1, b2 being Nat st b2 <> 1 & b2 <> 0 & b2 divides (b1 ! ) + 1 holds
b2 > b1
proof end;

theorem Th56: :: NEWTON:56
for b1, b2, b3 being Nat holds b1 lcm (b2 lcm b3) = (b1 lcm b2) lcm b3
proof end;

theorem Th57: :: NEWTON:57
for b1, b2 being Nat holds
( b1 divides b2 iff b1 lcm b2 = b2 )
proof end;

theorem Th58: :: NEWTON:58
for b1, b2, b3 being Nat holds
( ( b1 divides b2 & b3 divides b2 ) iff b1 lcm b3 divides b2 )
proof end;

theorem Th59: :: NEWTON:59
for b1 being Nat holds b1 lcm 1 = b1
proof end;

theorem Th60: :: NEWTON:60
for b1, b2 being Nat holds b1 lcm b2 divides b1 * b2
proof end;

theorem Th61: :: NEWTON:61
for b1, b2, b3 being Nat holds b1 hcf (b2 hcf b3) = (b1 hcf b2) hcf b3
proof end;

theorem Th62: :: NEWTON:62
for b1, b2 being Nat st b1 divides b2 holds
b1 hcf b2 = b1
proof end;

theorem Th63: :: NEWTON:63
for b1, b2, b3 being Nat holds
( ( b1 divides b2 & b1 divides b3 ) iff b1 divides b2 hcf b3 )
proof end;

theorem Th64: :: NEWTON:64
for b1 being Nat holds b1 hcf 1 = 1
proof end;

theorem Th65: :: NEWTON:65
for b1 being Nat holds b1 hcf 0 = b1
proof end;

theorem Th66: :: NEWTON:66
for b1, b2 being Nat holds (b1 hcf b2) lcm b2 = b2
proof end;

theorem Th67: :: NEWTON:67
for b1, b2 being Nat holds b1 hcf (b1 lcm b2) = b1
proof end;

theorem Th68: :: NEWTON:68
for b1, b2 being Nat holds b1 hcf (b1 lcm b2) = (b2 hcf b1) lcm b1
proof end;

theorem Th69: :: NEWTON:69
for b1, b2, b3 being Nat st b1 divides b2 holds
b1 hcf b3 divides b2 hcf b3
proof end;

theorem Th70: :: NEWTON:70
for b1, b2, b3 being Nat st b1 divides b2 holds
b3 hcf b1 divides b3 hcf b2
proof end;

theorem Th71: :: NEWTON:71
for b1, b2 being Nat st b1 > 0 holds
b1 hcf b2 > 0
proof end;

theorem Th72: :: NEWTON:72
canceled;

theorem Th73: :: NEWTON:73
for b1, b2 being Nat st b1 > 0 & b2 > 0 holds
b1 lcm b2 > 0
proof end;

theorem Th74: :: NEWTON:74
for b1, b2, b3 being Nat holds (b1 hcf b2) lcm (b1 hcf b3) divides b1 hcf (b2 lcm b3)
proof end;

theorem Th75: :: NEWTON:75
for b1, b2, b3 being Nat st b1 divides b2 holds
b1 lcm (b3 hcf b2) divides (b1 lcm b3) hcf b2
proof end;

theorem Th76: :: NEWTON:76
for b1, b2 being Nat holds b1 hcf b2 divides b1 lcm b2
proof end;

theorem Th77: :: NEWTON:77
for b1, b2 being Nat st 0 < b2 holds
b1 mod b2 = b1 - (b2 * (b1 div b2))
proof end;

theorem Th78: :: NEWTON:78
for b1, b2 being Integer st b1 >= 0 holds
b2 mod b1 >= 0
proof end;

theorem Th79: :: NEWTON:79
for b1, b2 being Integer st b1 > 0 holds
b2 mod b1 < b1
proof end;

theorem Th80: :: NEWTON:80
for b1, b2 being Integer st b1 <> 0 holds
b2 = ((b2 div b1) * b1) + (b2 mod b1)
proof end;

theorem Th81: :: NEWTON:81
for b1, b2 being Nat st ( b1 > 0 or b2 > 0 ) holds
ex b3, b4 being Integer st (b3 * b1) + (b4 * b2) = b1 hcf b2
proof end;

definition
func SetPrimes -> Subset of NAT means :Def6: :: NEWTON:def 6
for b1 being Nat holds
( b1 in a1 iff b1 is prime );
existence
ex b1 being Subset of NAT st
for b2 being Nat holds
( b2 in b1 iff b2 is prime )
proof end;
uniqueness
for b1, b2 being Subset of NAT st ( for b3 being Nat holds
( b3 in b1 iff b3 is prime ) ) & ( for b3 being Nat holds
( b3 in b2 iff b3 is prime ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines SetPrimes NEWTON:def 6 :
for b1 being Subset of NAT holds
( b1 = SetPrimes iff for b2 being Nat holds
( b2 in b1 iff b2 is prime ) );

registration
cluster prime Element of NAT ;
existence
ex b1 being Nat st b1 is prime
by INT_2:44;
end;

definition
mode Prime is prime Nat;
end;

definition
let c1 be Nat;
func SetPrimenumber c1 -> Subset of NAT means :Def7: :: NEWTON:def 7
for b1 being Nat holds
( b1 in a2 iff ( b1 < a1 & b1 is prime ) );
existence
ex b1 being Subset of NAT st
for b2 being Nat holds
( b2 in b1 iff ( b2 < c1 & b2 is prime ) )
proof end;
uniqueness
for b1, b2 being Subset of NAT st ( for b3 being Nat holds
( b3 in b1 iff ( b3 < c1 & b3 is prime ) ) ) & ( for b3 being Nat holds
( b3 in b2 iff ( b3 < c1 & b3 is prime ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines SetPrimenumber NEWTON:def 7 :
for b1 being Nat
for b2 being Subset of NAT holds
( b2 = SetPrimenumber b1 iff for b3 being Nat holds
( b3 in b2 iff ( b3 < b1 & b3 is prime ) ) );

theorem Th82: :: NEWTON:82
for b1 being Nat holds SetPrimenumber b1 c= SetPrimes
proof end;

theorem Th83: :: NEWTON:83
for b1, b2 being Nat st b1 < b2 holds
SetPrimenumber b1 c= SetPrimenumber b2
proof end;

theorem Th84: :: NEWTON:84
for b1 being Nat holds SetPrimenumber b1 c= Seg b1
proof end;

theorem Th85: :: NEWTON:85
for b1 being Nat holds SetPrimenumber b1 is finite
proof end;

Lemma50: for b1 being Nat holds
( b1 = 0 or b1 = 1 or 2 <= b1 )
proof end;

theorem Th86: :: NEWTON:86
for b1 being Nat ex b2 being Prime st
( b2 is prime & b2 > b1 )
proof end;

theorem Th87: :: NEWTON:87
SetPrimes <> {} by Def6, INT_2:44;

theorem Th88: :: NEWTON:88
{ b1 where B is Nat : ( b1 < 2 & b1 is prime ) } = {}
proof end;

theorem Th89: :: NEWTON:89
for b1 being Prime holds { b2 where B is Nat : ( b2 < b1 & b2 is prime ) } c= NAT
proof end;

theorem Th90: :: NEWTON:90
for b1 being Nat holds { b2 where B is Nat : ( b2 < b1 & b2 is prime ) } c= Seg b1
proof end;

theorem Th91: :: NEWTON:91
for b1 being Nat holds { b2 where B is Nat : ( b2 < b1 & b2 is prime ) } is finite
proof end;

theorem Th92: :: NEWTON:92
for b1 being Nat holds not b1 in { b2 where B is Nat : ( b2 < b1 & b2 is prime ) }
proof end;

theorem Th93: :: NEWTON:93
for b1 being Nat holds { b2 where B is Nat : ( b2 < b1 & b2 is prime ) } \/ {b1} is finite
proof end;

theorem Th94: :: NEWTON:94
for b1, b2 being Prime st b1 < b2 holds
{ b3 where B is Nat : ( b3 < b1 & b3 is prime ) } \/ {b1} c= { b3 where B is Nat : ( b3 < b2 & b3 is prime ) }
proof end;

theorem Th95: :: NEWTON:95
for b1, b2 being Nat st b2 > b1 holds
not b2 in { b3 where B is Nat : ( b3 < b1 & b3 is prime ) }
proof end;

definition
let c1 be Nat;
func primenumber c1 -> Prime means :Def8: :: NEWTON:def 8
ex b1 being finite set st
( b1 = { b2 where B is Nat : ( b2 < a2 & b2 is prime ) } & a1 = card b1 );
existence
ex b1 being Primeex b2 being finite set st
( b2 = { b3 where B is Nat : ( b3 < b1 & b3 is prime ) } & c1 = card b2 )
proof end;
uniqueness
for b1, b2 being Prime st ex b3 being finite set st
( b3 = { b4 where B is Nat : ( b4 < b1 & b4 is prime ) } & c1 = card b3 ) & ex b3 being finite set st
( b3 = { b4 where B is Nat : ( b4 < b2 & b4 is prime ) } & c1 = card b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines primenumber NEWTON:def 8 :
for b1 being Nat
for b2 being Prime holds
( b2 = primenumber b1 iff ex b3 being finite set st
( b3 = { b4 where B is Nat : ( b4 < b2 & b4 is prime ) } & b1 = card b3 ) );

theorem Th96: :: NEWTON:96
for b1 being Prime holds SetPrimenumber b1 = { b2 where B is Nat : ( b2 < b1 & b2 is prime ) }
proof end;

theorem Th97: :: NEWTON:97
not SetPrimes is finite
proof end;

registration
cluster SetPrimes -> non empty infinite ;
coherence
( not SetPrimes is empty & not SetPrimes is finite )
by Th97;
end;

Lemma60: for b1 being Nat st b1 is prime holds
b1 > 0
by INT_2:def 5;

theorem Th98: :: NEWTON:98
for b1 being Nat st b1 is prime holds
for b2, b3 being Nat holds
( not b1 divides b2 * b3 or b1 divides b2 or b1 divides b3 )
proof end;

theorem Th99: :: NEWTON:99
for b1, b2 being Nat holds b2 |^ b1 is Nat
proof end;

theorem Th100: :: NEWTON:100
for b1 being real number holds
( b1 |^ 2 = b1 * b1 & b1 ^2 = b1 |^ 2 )
proof end;

theorem Th101: :: NEWTON:101
for b1, b2 being natural number holds
( b1 div b2 = b1 div b2 & b1 mod b2 = b1 mod b2 )
proof end;