### Basic Properties of Rational Numbers

by
Andrzej Kondracki

Received July 10, 1990

Copyright (c) 1990 Association of Mizar Users

MML identifier: RAT_1
[ MML identifier index ]

```environ

vocabulary ARYTM, INT_1, ABSVALUE, ARYTM_3, ARYTM_1, RELAT_1, RAT_1, ORDINAL2,
BOOLE, COMPLEX1, OPPCAT_1, ARYTM_2, QUOFIELD, ORDINAL1;
notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, ORDINAL1, ORDINAL2, ARYTM_3,
ARYTM_2, NUMBERS, ARYTM_0, XCMPLX_0, XREAL_0, REAL_1, NAT_1, ABSVALUE,
INT_1, ARYTM_1;
constructors NAT_1, XCMPLX_0, XREAL_0, ORDINAL2, INT_1, ABSVALUE, XBOOLE_0,
ARYTM_3, ARYTM_0, FUNCT_4, ARYTM_2, ARYTM_1, REAL_1;
clusters INT_1, XREAL_0, REAL_1, ZFMISC_1, XBOOLE_0, NUMBERS, ARYTM_3,
ORDINAL2, ARYTM_2;
requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM;
definitions XREAL_0, TARSKI, XBOOLE_0;
theorems AXIOMS, REAL_1, INT_1, NAT_1, ABSVALUE, TARSKI, XREAL_0, XCMPLX_0,
XCMPLX_1, ORDINAL2, XBOOLE_0, NUMBERS, ARYTM_3, ARYTM_0, ARYTM_2,
ZFMISC_1, ARYTM_1;
schemes NAT_1;

begin

Lm0: one = succ 0 by ORDINAL2:def 4 .= 1;

reserve X,x for set,
a,b,c,d for real number,
k,k1,l,l1 for Nat,
m,m1,n,n1 for Integer;

:: Auxiliary theorems & redefinitions.

definition let i be integer number;
cluster abs i -> natural;
coherence
proof 0 <= abs i by ABSVALUE:5;
hence thesis by INT_1:16;
end;
end;

definition let k;
redefine func abs k -> Nat;
coherence by ORDINAL2:def 21;
end;

Lm1:0<b & 0<d implies (a*d<c*b iff a/b<c/d)
proof
assume A1:0<b & 0<d; then A2:0<b" & 0<d" by REAL_1:72;
A3:now assume a*d<c*b;
then (a*d)*d"<(c*b)*d" by A2,REAL_1:70;
then a*(d*d")<(c*b)*d" by XCMPLX_1:4;
then a*1<(c*b)*d" by A1,XCMPLX_0:def 7;
then a<b*(c*d") by XCMPLX_1:4;
then a<b*(c/d) by XCMPLX_0:def 9;
then b"*a<b"*(b*(c/d)) by A2,REAL_1:70;
then b"*a<(b"*b)*(c/d) by XCMPLX_1:4;
then b"*a<1*(c/d) by A1,XCMPLX_0:def 7;
hence a/b<c/d by XCMPLX_0:def 9;
end;
now assume a/b<c/d;
then a/b*b<c/d*b by A1,REAL_1:70;
then a<b*(c/d) by A1,XCMPLX_1:88;
then a*d<(b*(c/d))*d by A1,REAL_1:70;
then a*d<b*(c/d*d) by XCMPLX_1:4;
hence a*d<c*b by A1,XCMPLX_1:88;
end;
hence thesis by A3;
end;

:: We define RAT as a set of real numbers, each of which can be expressed
:: as a quotient of integer dividend and divisor (divisor is not equal
:: to zero).

reserve i,j,i1,j1 for Nat;

Lm_2:
quotient(i1,j1) = i1/j1
proof
set x = quotient(i1,j1);
per cases;
suppose
S:    j1 = 0;
hence x = 0 by ARYTM_3:def 9 .= i1/j1 by S,XCMPLX_1:49;
suppose
S2:   j1 <> 0;
j1 * j1" = 1 by XCMPLX_0:def 7,S2;
then consider x1,x2,y1,y2 being Real such that
W1:   j1 = [*x1,x2*] and
W2:   j1" = [*y1,y2*] and
W3:   1 = [* +(*(x1,y1),opp*(x2,y2)), +(*(x1,y2),*(x2,y1)) *]
by XCMPLX_0:def 5;
X2:   x2 = 0 by W1,ARYTM_0:26;
then
X1:   j1 = x1 by W1,ARYTM_0:def 7;
y2 = 0 by W2,ARYTM_0:26;
then
Y1:   j1" = y1 by W2,ARYTM_0:def 7;
+(0,opp 0) = 0 by ARYTM_0:def 4;
then
OP:   opp 0 = 0 by ARYTM_0:13;
+(*(x1,y2),*(x2,y1)) = 0 by W3,ARYTM_0:26;
then
XY1:  1 = +(*(x1,y1),opp*(x2,y2)) by W3,ARYTM_0:def 7
.= +(*(x1,y1),opp 0) by ARYTM_0:14,X2
.= *(x1,y1) by ARYTM_0:13,OP;
consider x'1,x'2,y'1,y'2 being Real such that
W4:    i1 = [*x'1,x'2*] and
W5:    j1" = [*y'1,y'2*] and
W6:    i1*j1" = [* +(*(x'1,y'1),opp*(x'2,y'2)), +(*(x'1,y'2),*(x'2,y'1)) *]
by XCMPLX_0:def 5;
x'2 = 0 by W4,ARYTM_0:26;
then
X'1:   i1 = x'1 by W4,ARYTM_0:def 7;
Y'2:   y'2 = 0 by W5,ARYTM_0:26;
then
Y'1:   j1" = y'1 by W5,ARYTM_0:def 7;
+(*(x'1,y'2),*(x'2,y'1)) = 0 by W6,ARYTM_0:26;
then
XY'1:  i1*j1" = +(*(x'1,y1),opp*(x'2,0)) by W6,ARYTM_0:def 7,Y'1,Y1,Y'2
.= +(*(x'1,y1),0) by ARYTM_0:14,OP
.= *(x'1,y1) by ARYTM_0:13;
x'1 in omega by X'1;
then
B:    x'1 in RAT+ by ARYTM_3:34;
x1 in omega by X1;
then reconsider xx = x1 as Element of RAT+ by ARYTM_3:34;
consider yy being Element of RAT+ such that
WW:    xx *' yy = one by ARYTM_3:60,S2,X1;
xx in RAT+ & yy in RAT+;
then reconsider xx1 = xx, yy1 = yy as Element of REAL+ by ARYTM_2:1;
I:    ex x',y' being Element of RAT+
st xx1 = x' & yy1 = y' & xx1 *' yy1 = x' *' y' by ARYTM_2:22;
xx1 in REAL+ & yy1 in REAL+;
then reconsider xx1, yy1 as Element of REAL by ARYTM_0:1;
ex x',y' being Element of REAL+
st xx1 = x' & yy1 = y' & *(xx1,yy1) = x' *' y' by ARYTM_0:def 3;
then yy = y1 by S2,XY1,Lm0,ARYTM_0:20,X1,I,WW;
then
G:    y1 in RAT+;
then consider x',y' being Element of REAL+ such that
W7:    x'1 = x' and
W8:    y1 = y' and
W9:    i1 * j1" = x' *' y' by B,ARYTM_0:def 3,XY'1,ARYTM_2:1;
consider x'',y'' being Element of RAT+ such that
W10:   x' = x'' and
W11:   y' = y'' and
W12:   i1 * j1" = x'' *' y'' by B,ARYTM_2:22,W9,W7,W8,G;
HH:   j1 in omega;
then reconsider a = x, b = j1 as Element of RAT+ by ARYTM_3:34;
x1 in omega by X1;
then consider x1',y1' being Element of REAL+ such that
W13:   x1 = x1' and
W14:   y1 = y1' and
W15:   *(x1,y1) = x1' *' y1' by ARYTM_0:def 3,G,ARYTM_2:1,2;
ex x1'',y1'' being Element of RAT+
st x1' = x1'' & y1' = y1'' & x1' *' y1' = x1'' *' y1''
by ARYTM_2:22,W13,W14,G,X1,ARYTM_3:34,HH;
then
XX:   b *' y'' = 1 by XY1,W15,X1,W14,W13,W11,W8;
a *' b = quotient(i1,j1) *' quotient(j1,one) by ARYTM_3:46
.= quotient(i1*^j1,j1*^one) by ARYTM_3:55
.= quotient(i1,one) *' quotient(j1,j1) by ARYTM_3:55
.= quotient(i1,one) *' one by S2, ARYTM_3:47
.= quotient(i1,one) by ARYTM_3:59
.= i1 by ARYTM_3:46
.= x'' *' one by ARYTM_3:59,W10,W7,X'1
.= x'' *' y'' *' b by ARYTM_3:58,XX,Lm0;
hence x = i1 * j1" by ARYTM_3:62,S2,W12
.= i1/j1 by XCMPLX_0:def 9;
end;

0 in omega;
then reconsider 0' = 0 as Element of REAL+ by ARYTM_2:2;

Lm_3:
for x' being Element of REAL+ st x' = a
holds 0' - x' = -a
proof let xx being Element of REAL+ such that
Z: xx = a;
per cases;
suppose xx = 0;
hence 0' - xx = -a by Z,ARYTM_1:18;
suppose
S:  xx <> 0;
set b = 0' - xx;
U: 0' <=' xx by ARYTM_1:6;
not xx <=' 0' by U,S,ARYTM_1:4;
then
X:  b = [{},xx -' 0'] by ARYTM_1:def 2;
now assume b = [0,0];
then xx -' 0' = 0 by X,ZFMISC_1:33;
hence contradiction by S,U,ARYTM_1:10;
end;
then
Y: not b in {[0,0]} by TARSKI:def 1;
0 in {0} by TARSKI:def 1;
then
V:  b in [:{0},REAL+:] by X,ZFMISC_1:106;
then b in REAL+ \/ [:{0},REAL+:] by XBOOLE_0:def 2;
then reconsider b as Element of REAL by Y,XBOOLE_0:def 4,NUMBERS:def 1;
consider x1,x2,y1,y2 being Element of REAL such that
W1: a = [*x1,x2*] and
W2: b = [*y1,y2*] and
W3: a+b = [*+(x1,y1),+(x2,y2)*] by XCMPLX_0:def 4;
a in REAL by XREAL_0:def 1;
then x2 = 0 by W1,ARYTM_0:26;
then
X1: a = x1 by W1,ARYTM_0:def 7;
y2 = 0 by W2,ARYTM_0:26;
then
Y1: b = y1 by W2,ARYTM_0:def 7;
a+b in REAL by XREAL_0:def 1;
then
+(x2,y2) = 0 by W3,ARYTM_0:26;
then
XY1: a+b = +(x1,y1) by W3,ARYTM_0:def 7;
y1 in [:{0},REAL+:] by Y1,V;
then consider x',y' being Element of REAL+ such that
W4: x1 = x' and
W5: y1 = [0,y'] and
W6: +(x1,y1) = x' - y' by ARYTM_0:def 2,Z,X1;
P:  y' = xx -' 0' by W5,Y1,X,ZFMISC_1:33;
Q:  xx -' 0' = xx -' 0' + 0' by ARYTM_2:def 8
.= xx by ARYTM_1:def 1,U;
a + b = +(x1,y1) by XY1
.= 0 by ARYTM_1:18,W6,P,W4,X1,Z,Q;
hence 0' - xx = -a by XCMPLX_0:def 6;
end;

Lm_0: x in RAT implies ex m,n st x = m/n
proof assume
Z: x in RAT;
pc: x in RAT+ \/ [:{0},RAT+:] by Z,XBOOLE_0:def 4,NUMBERS:def 3;
per cases by pc,XBOOLE_0:def 2;
suppose x in RAT+;
then reconsider x as Element of RAT+;
take numerator x,denominator x;
quotient(numerator x,denominator x) = x by ARYTM_3:45;
hence thesis by Lm_2;
suppose x in [:{0},RAT+:];
then consider x1,x2 being set such that
W1:  x1 in {0} and
W2:  x2 in RAT+ and
W3:  x = [x1,x2] by ZFMISC_1:103;
reconsider x2 as Element of RAT+ by W2;
reconsider x' = x2 as Element of REAL+ by W2,ARYTM_2:1;
take m = -numerator x2, n = denominator x2;
A:  x2 = quotient(numerator x2,denominator x2) by ARYTM_3:45
.= numerator x2/n by Lm_2;
x1 = 0 by W1,TARSKI:def 1;
then
C:   x = [0,x'] by W3;
not x in {[0,0]} by Z,XBOOLE_0:def 4,NUMBERS:def 3;
then x <> [0,0] by TARSKI:def 1;
then
B:  x2 <> 0 by C;
thus x = 0' - x' by C,ARYTM_1:19,B
.= -numerator x2/n by Lm_3,A
.= m/n by XCMPLX_1:188;
end;

Lm_1': x = m/l implies x in RAT
proof assume
Z: x = m/l;
then x in REAL by XREAL_0:def 1;
then
A: not x in {[0,0]} by NUMBERS:def 1,XBOOLE_0:def 4;
m is Element of INT by INT_1:def 2;
then
K:  ex k st m = k or m = -k by INT_1:def 1;
per cases;
suppose l = 0;
then x = m * 0" by Z,XCMPLX_0:def 9
.= 0;
then x in omega;
then x in RAT+ by ARYTM_3:34;
then x in RAT+ \/ [:{0},RAT+:] by XBOOLE_0:def 2;
hence thesis by A,XBOOLE_0:def 4,NUMBERS:def 3;
suppose ex k st m = k;
then consider k such that
W:  m = k;
x = quotient(k,l) by Z,Lm_2,W;
then x in RAT+ \/ [:{0},RAT+:] by XBOOLE_0:def 2;
hence x in RAT by XBOOLE_0:def 4,NUMBERS:def 3,A;
suppose that
S1: l <> 0 and
S2: for k holds m <> k;
consider k such that
W:  m = -k by K,S2;
B:  x = -k/l by W,Z, XCMPLX_1:188;
k/l = quotient(k,l) by Lm_2;
then
E:  k/l in RAT+;
then k/l in REAL+ by ARYTM_2:1;
then reconsider x' = k/l as Element of REAL+;
m <> 0 by S2;
then
C:  x' <> 0 by B,Z,XCMPLX_1:50,S1;
D:  x = 0' - x' by Lm_3,B
.= [0,x'] by ARYTM_1:19,C;
0 in {0} by TARSKI:def 1;
then x in [:{0},RAT+:] by D,ZFMISC_1:106,E;
then x in RAT+ \/ [:{0},RAT+:] by XBOOLE_0:def 2;
hence x in RAT by A,XBOOLE_0:def 4,NUMBERS:def 3;
end;

Lm_1: x = m/n implies x in RAT
proof assume
Z: x = m/n;
n is Element of INT by INT_1:def 2;
then consider k such that
W:  n = k or n = -k by INT_1:def 1;
per cases by W;
suppose n = k;
hence x in RAT by Z,Lm_1';
suppose n = -k;
then x = (-m)/k by Z, XCMPLX_1:193;
hence x in RAT by Lm_1';
end;

definition
redefine func RAT means
:Def1: x in it iff ex m,n st x = m/n;
compatibility
proof let R be set;
thus R = RAT implies for x holds x in R iff ex m,n st x = m/n
by Lm_0,Lm_1;
assume
Z:   for x holds x in R iff ex m,n st x = m/n;
thus R c= RAT
proof let x;
assume x in R;
then ex m,n st x = m/n by Z;
hence thesis by Lm_1;
end;
let x;
assume x in RAT;
then ex m,n st x = m/n by Lm_0;
hence thesis by Z;
end;
end;

definition let r be number;
attr r is rational means
:Def2: r in RAT;
end;

definition
cluster rational Real;
existence
proof
reconsider a = 0, b = 1 as Integer;
take x=a/b;
thus x is Real;
thus x in RAT by Def1;
end;
end;

definition
cluster rational number;
existence
proof
reconsider a = 0 as Integer;
reconsider b = 1 as Integer;
take x=a/b;
thus x in RAT by Def1;
end;
end;

definition
mode Rational is rational number;
end;

theorem Th1:
x in RAT implies ex m,n st n<>0 & x = m/n
proof assume
A1: x in RAT;
per cases;
suppose x = 0;
then x = 0/1;
hence thesis;
suppose
A2:  x <> 0;
consider m,n such that
A3:  x = m/n by A1,Def1;
take m,n;
A4:  x = m*n" by A3,XCMPLX_0:def 9;
hereby assume n = 0;
then n" = 0 by XCMPLX_0:def 7;
hence contradiction by A2,A4;
end;
thus thesis by A3;
end;

canceled;

theorem Th3:
x is Rational implies ex m,n st n<>0 & x = m/n
proof assume x is Rational;
then x in RAT by Def2;
hence thesis by Th1;
end;

theorem Th4:
RAT c= REAL by NUMBERS:12;

definition
cluster rational -> real number;
coherence
proof let n be number;
assume n in RAT;
hence n in REAL by Th4;
end;
end;

canceled;

theorem Th6:
(ex m,n st x = m/n) implies x is rational
proof
x is Rational iff x in RAT by Def2;
hence thesis by Def1;
end;

theorem Th7:
for x being Integer holds x is Rational
proof
let x be Integer;
x = x/1;
hence thesis by Th6;
end;

definition
cluster integer -> rational number;
coherence by Th7;
end;

canceled 3;

theorem
INT c= RAT by NUMBERS:14;

theorem
NAT c= RAT by NUMBERS:18;

reserve p,q for Rational;

:: Now we prove that fractions of integer denominator and natural numerator
:: or of natural denominator and numerator, etc., are all rational numbers.

definition let p,q;
cluster p*q -> rational;
coherence
proof
consider m1,n1 being Integer such that n1<>0
and A2: p = m1/n1 by Th3;
consider m2,n2 being Integer such that n2<>0
and A4: q = m2/n2 by Th3;
p*q=(m1*m2)/(n1*n2) by A2,A4,XCMPLX_1:77;
hence thesis by Th6;
end;
cluster p+q -> rational;
coherence
proof
consider m1,n1 being Integer such that A6: n1<>0
and A7: p = m1/n1 by Th3;
consider m2,n2 being Integer such that A8: n2<>0
and A9: q = m2/n2 by Th3;
p+q=(m1*n2+m2*n1)/(n1*n2) by A6,A7,A8,A9,XCMPLX_1:117;
hence thesis by Th6;
end;
cluster p-q -> rational;
coherence
proof
consider m1,n1 being Integer such that A11: n1<>0
and A12: p = m1/n1 by Th3;
consider m2,n2 being Integer such that A13: n2<>0
and A14: q = m2/n2 by Th3;
p-q=(m1*n2-m2*n1)/(n1*n2) by A11,A12,A13,A14,XCMPLX_1:131;
hence thesis by Th6;
end;
end;

definition let p,m;
cluster p+m -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
p+x is Rational;hence thesis;
end;
cluster p-m -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
p-x is Rational;hence thesis;
end;
cluster p*m -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
p*x is Rational;hence thesis;
end;
end;

definition let m,p;
cluster m+p -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
x+p is Rational;hence thesis;
end;
cluster m-p -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
x-p is Rational;hence thesis;
end;
cluster m*p -> rational;
coherence
proof
reconsider x=m as Rational by Th7;
x*p is Rational;hence thesis;
end;
end;

definition let p,k;
cluster p+k -> rational;
coherence;
cluster p-k -> rational;
coherence;
cluster p*k -> rational;
coherence;
end;

definition let k,p;
cluster k+p -> rational;
coherence;
cluster k-p -> rational;
coherence;
cluster k*p -> rational;
coherence;
end;

definition
let p;
cluster -p -> rational;
coherence
proof
consider m,n such that n<>0 and A2: p=m/n by Th3;
-p = (-m)/n by A2,XCMPLX_1:188;
hence thesis by Th6;
end;

cluster abs(p) -> rational;
coherence
proof
consider m,n such that A3:n<>0 & p=m/n by Th3;
abs(p)=abs(m)/abs(n) by A3,ABSVALUE:16;
hence thesis by Th6;
end;
end;

:: Now we prove that the quotient of two rational numbers is rational

canceled 3;

theorem Th16:
for p,q holds p/q is Rational
proof
let p,q;
consider m1,n1 being Integer such that n1<>0
and A3: p = m1/n1 by Th3;
consider m2,n2 being Integer such that n2<>0
and A4: q = m2/n2 by Th3;
p/q = p*(m2/n2)" by A4,XCMPLX_0:def 9
.= p*(1/(m2/n2)) by XCMPLX_1:217
.= p*((1*n2)/m2) by XCMPLX_1:78
.= (m1*n2)/(n1*m2) by A3,XCMPLX_1:77;
hence thesis by Th6;
end;

definition let p, q be rational number;
cluster p/q -> rational;
coherence by Th16;
end;

canceled 4;

theorem Th21:
p" is Rational
proof
p" = 1/p by XCMPLX_1:217;
hence thesis;
end;

definition let p be rational number;
cluster p" -> rational;
coherence by Th21;
end;

:: RAT is dense, that is there exists at least one rational number between
:: any two distinct real numbers.

theorem
a<b implies ex p st a<p & p<b
proof
assume A1:a<b;
set d=b-a;set m=[\d"/]+1;set l=[\m*a/]+1;
a-a<b-a by A1,REAL_1:54;
then a+ -a<d by XCMPLX_0:def 8;
then A2:0<d by XCMPLX_0:def 6;
then A3:0<d" by REAL_1:72;
A4:    d"<=m by INT_1:52;then
A5:0<m by A3;
A6:0<>m by A2,A4,REAL_1:72;
reconsider p=l/m as Rational;
take p;
A7:0<m" by A5,REAL_1:72;
thus a<p
proof
m*a-1<[\m*a/] by INT_1:def 4;
then m*a<[\m*a/]+1 by REAL_1:84;
then m"*(m*a)<m"*l by A7,REAL_1:70;
then (m"*m)*a<m"*l by XCMPLX_1:4;
then 1*a<m"*l by A6,XCMPLX_0:def 7;
hence thesis by XCMPLX_0:def 9;
end;
A8:[\m*a/]<=m*a by INT_1:def 4;
thus p<b
proof
d"-1<[\d"/] by INT_1:def 4;
then d"<[\d"/]+1 by REAL_1:84;
then d"*d<m*d by A2,REAL_1:70;
then 1<m*d by A2,XCMPLX_0:def 7;
then [\m*a/]+1<m*a+m*d by A8,REAL_1:67;
then l<m*(a+d) by XCMPLX_1:8;
then l<m*(a+(-a+b)) by XCMPLX_0:def 8;
then l<m*((a+ -a)+b) by XCMPLX_1:1;
then l<m*(0+b) by XCMPLX_0:def 6;
then m"*l<m"*(m*b) by A7,REAL_1:70;
then m"*l<(m"*m)*b by XCMPLX_1:4;
then m"*l<1*b by A6,XCMPLX_0:def 7;
hence thesis by XCMPLX_0:def 9;
end;
end;

canceled;

theorem Th24:
ex m,k st k<>0 & p=m/k
proof
consider m,n such that A1:n<>0 & p=m/n by Th3;
now per cases by A1;
suppose 0<n;
then n is Nat by INT_1:16;
hence thesis by A1;
suppose n<0;
then 0<=-n by REAL_1:66;
then A2:-n is Nat by INT_1:16;
A3:p = -(-m/n) by A1
.= -(-m)/n by XCMPLX_1:188
.= (-m)/(-n) by XCMPLX_1:189;
-n<>0 by A1,XCMPLX_1:135;
hence thesis by A2,A3;
end;
hence thesis;
end;

:: Each rational number can be uniquely expressed as a ratio of two
:: relatively prime numbers, the first is integer and the latter is natural
:: (but not equal to zero). Function denominator(p) is defined as the least
:: natural denominator of all denominators of fractions integer/natural=p.
:: Function numerator(p) is defined as a product of p and denominator(p).

theorem Th25:
ex m,k st k<>0 & p=m/k & for n,l st l<>0 & p=n/l holds k<=l
proof
defpred P[Nat] means (\$1<>0 & ex m1 st p=m1/\$1);
consider m,k such that A1:k<>0 & p=m/k by Th24;
A2:ex l st P[l] by A1;
ex k1 st P[k1]
& for l1 st P[l1] holds k1<=l1 from Min(A2);
then consider k1 such that A3: (k1<>0 & ex m1 st p=m1/k1)
& for l1 st (l1<>0 & ex n1 st p=n1/l1) holds k1<=l1;
consider m1 such that A4:p=m1/k1
& for l1 st (l1<>0 & ex n1 st p=n1/l1) holds k1<=l1 by A3;
take m1; take k1;
thus k1<>0 by A3;
thus m1/k1=p by A4;
thus for n,l st l<> 0 & p=n/l holds k1 <= l by A4;
thus thesis;
end;

definition let p;
func denominator(p) -> Nat means
:Def3:it<>0 & (ex m st p=m/it) & for n,k st k<>0 & p=n/k holds it<=k;
existence
proof
consider m,k such that A1:k<>0 & p=m/k
& for n,l st l<>0 & p=n/l holds k<=l by Th25;
take k;
thus thesis by A1;
end;
uniqueness
proof
let k,l such that
A2:k<>0 & (ex m st p=m/k) & for m1,k1 st k1<>0 & p=m1/k1 holds k<=k1 and
A3:l<>0 & (ex n st p=n/l) & for n1,l1 st l1<>0 & p=n1/l1 holds l<=l1;
k<=l & l<=k by A2,A3;
hence thesis by AXIOMS:21;
end;
end;

definition let p;
func numerator(p) -> Integer equals
:Def4:  denominator(p)*p;
coherence
proof
consider m such that A1:p=m/denominator(p) by Def3;
denominator(p)<>0 by Def3;
hence thesis by A1,XCMPLX_1:88;
end;
end;

:: Some basic theorems concerning p, numerator(p) and denominator(p).

canceled;

theorem Th27:
0<denominator(p)
proof
0<>denominator(p) by Def3;
hence thesis by NAT_1:19;
end;

canceled;

theorem Th29:
1<=denominator(p)
proof 0<denominator(p) by Th27;
then 0+1<=denominator(p) by NAT_1:38;
hence thesis;
end;

theorem Th30:
0<denominator(p)"
proof
0<denominator(p) by Th27;
hence thesis by REAL_1:72;
end;

canceled 3;

theorem Th34:
1>=denominator(p)"
proof
A1:0<>denominator(p) by Def3;
A2:1<=denominator(p) by Th29;
0<=denominator(p)" by Th30;
then 1*denominator(p)"<=denominator(p)*denominator(p)" by A2,AXIOMS:25;
hence thesis by A1,XCMPLX_0:def 7;
end;

canceled;

theorem Th36:
numerator(p)=0 iff p=0
proof
A1:numerator(p)=denominator(p)*p by Def4;
denominator(p)<>0 by Def3;
hence thesis by A1,XCMPLX_1:6;
end;

theorem Th37:
p=numerator(p)/denominator(p) & p=numerator(p)*denominator(p)"
& p=denominator(p)"*numerator(p)
proof set x=denominator(p);A1:x<>0 by Def3;
thus A2:numerator(p)/denominator(p)=numerator(p)*x" by XCMPLX_0:def 9
.=(p*x)*x" by Def4
.=p*(x*x") by XCMPLX_1:4
.=p*1 by A1,XCMPLX_0:def 7
.=p;
hence p=numerator(p)*denominator(p)" by XCMPLX_0:def 9;
thus p=denominator(p)"*numerator(p) by A2,XCMPLX_0:def 9;
end;

theorem
p<>0 implies denominator(p)=numerator(p)/p
proof
assume A1:p<>0;
A2:denominator(p)<>0 by Def3;
p*denominator(p)=numerator(p)/denominator(p)*denominator(p) by Th37;
then p"*(p*denominator(p))=p"*numerator(p) by A2,XCMPLX_1:88;
then (p"*p)*denominator(p)=p"*numerator(p) by XCMPLX_1:4;
then 1*denominator(p)=p"*numerator(p) by A1,XCMPLX_0:def 7;
hence denominator(p) =numerator(p)/p by XCMPLX_0:def 9;
end;

canceled;

theorem Th40:
p is Integer implies denominator(p)=1 & numerator(p)=p
proof
assume p is Integer;
then reconsider m=p as Integer;
p =m/1;
then A1:denominator(p)<=1 by Def3;
1<=denominator(p) by Th29;
hence A2:denominator(p)=1 by A1,AXIOMS:21;
numerator(p)=denominator(p)*p by Def4;
hence numerator(p)=p by A2;
end;

theorem Th41:
(numerator(p)=p or denominator(p)=1) implies p is Integer
proof
assume A1:numerator(p)=p or denominator(p)=1;
now per cases by A1;
suppose numerator(p)=p;hence thesis;
suppose denominator(p)=1;
then numerator(p)=p*1 by Def4
.=p;
hence thesis;
end;
hence thesis;
end;

theorem
numerator(p)=p iff denominator(p)=1
proof
now assume denominator(p)=1;
then p is Integer by Th41;
hence numerator(p)=p by Th40;
end;
hence thesis by Th40;
end;

canceled;

theorem
(numerator(p)=p or denominator(p)=1) & 0<=p implies p is Nat
proof
assume A1:(numerator(p)=p or denominator(p)=1) & 0<=p;
then p is Integer by Th41;
hence thesis by A1,INT_1:16;
end;

theorem
1<denominator(p) iff p is not integer
proof
now assume not p is Integer;
then A1:denominator(p)<>1 by Th41;
denominator(p)>=1 by Th29;
hence denominator(p)>1 by A1,REAL_1:def 5;
end;
hence thesis by Th40;
end;

Lm2:1"=1;

theorem
1>denominator(p)" iff p is not integer
proof
A1:denominator(p)"<=1 by Th34;
now assume not p is Integer;
then denominator(p)" <> 1 by Lm2,Th41;
hence denominator(p)"<1 by A1,REAL_1:def 5;
end;
hence thesis by Lm2,Th40;
end;

theorem Th47:
numerator(p)=denominator(p) iff p=1
proof
A1:denominator(p)<>0 by Def3;
A2:now assume numerator(p)=denominator(p);
then numerator(p)/denominator(p)=1 by A1,XCMPLX_1:60;
hence p=1 by Th37;
end;
now assume A3:p=1; then numerator(p)=1 by Th40;
hence numerator(p)=denominator(p) by A3,Th40;
end;
hence thesis by A2;
end;

theorem Th48:
numerator(p)=-denominator(p) iff p=-1
proof
A1:0<>denominator(p) by Def3;
A2:now assume numerator(p)=-denominator(p);
hence p=(-denominator(p))/denominator(p) by Th37
.=-denominator(p)/denominator(p) by XCMPLX_1:188
.=-1 by A1,XCMPLX_1:60;
end;
now assume A3:p=-1; then numerator(p)=-1 by Th40;
hence numerator(p)=-denominator(p) by A3,Th40;
end;
hence thesis by A2;
end;

theorem
-numerator(p)=denominator(p) iff p=-1
proof
-numerator(p)=denominator(p) iff numerator(p)=-denominator(p);
hence thesis by Th48;
end;

:: We can multiple the numerator and the denominator of any rational number
:: by any integer (natural) number which is not equal to zero.

theorem Th50:
m<>0 implies p=(numerator(p)*m)/(denominator(p)*m)
proof
assume m<>0;
then numerator(p)/denominator(p)=(numerator(p)*m)/(denominator(p)*m)
by XCMPLX_1:92;
hence p=(numerator(p)*m)/(denominator(p)*m) by Th37;
end;

canceled 9;

theorem Th60:
k<>0 & p=m/k implies (ex l st m=numerator(p)*l & k=denominator(p)*l)
proof
assume A1:k<>0 & p=m/k;
A2:denominator(p)<>0 by Def3;
defpred P[Nat] means \$1*denominator(p)<=k;
A3:for l st P[l] holds l<=k
proof
let l such that A4:l*denominator(p)<=k;
assume A5: not thesis;

0<denominator(p) by A2,NAT_1:19;
then 0+1<=denominator(p) by NAT_1:38;
then A6:k*1<=k*denominator(p) by NAT_1:20;
0<denominator(p) by A2,NAT_1:19;
then k*denominator(p)<l*denominator(p) by A5,REAL_1:70;
hence contradiction by A4,A6,AXIOMS:22;
end;
A7:1*denominator(p)<=k by A1,Def3;
then A8:ex l1 st P[l1];
consider l such that A9:P[l] and
A10:for l1 st P[l1] holds l1<=l from Max(A3,A8);
take l;
A11:0<>l by A7,A10;
then A12:l*denominator(p)<>0 by A2,XCMPLX_1:6;
A13: now
assume A14:l*denominator(p)<k;
then A15:      0+l*denominator(p)<k;
then 0<=k-l*denominator(p) by REAL_1:86;
then reconsider x=k-l*denominator(p) as Nat by INT_1:16;
A16:0<>x by A15,REAL_1:86;
m/k=(numerator(p)*l)/(l*denominator(p)) by A1,A11,Th50;
then p=(m-numerator(p)*l)/x by A1,A12,A14,XCMPLX_1:124;
then denominator(p)<=k-l*denominator(p) by A16,Def3;
then l*denominator(p)+1*denominator(p)<=k by REAL_1:84;
then (l+1)*denominator(p)<=k by XCMPLX_1:8;
then l+1<=l by A10;
hence contradiction by NAT_1:38;
end;
then A17:k=denominator(p)*l by A9,AXIOMS:21;
p*k=m by A1,XCMPLX_1:88;
hence m=numerator(p)/denominator(p)*(denominator(p)*l) by A17,Th37
.=(numerator(p)/denominator(p)*denominator(p))*l by XCMPLX_1:4
.=numerator(p)*l by A2,XCMPLX_1:88;
thus k=denominator(p)*l by A9,A13,AXIOMS:21;
end;

theorem
p=m/n & n<>0 implies ex m1 st m=numerator(p)*m1 & n=denominator(p)*m1
proof
assume A1:p=m/n & n<>0;
per cases by A1;
suppose n<0; then 0<=-n by REAL_1:66;
then reconsider x=-n as Nat by INT_1:16;A2:x<>0 by A1,XCMPLX_1:135;
p=-(-m/n) by A1
.=-(-m)/n by XCMPLX_1:188
.=(-m)/x by XCMPLX_1:189;
then consider k such that A3:-m=numerator(p)*k & x=denominator(p)*k
by A2,Th60;
take y=-k;
thus m=-numerator(p)*k by A3
.=numerator(p)*y by XCMPLX_1:175;
thus n=-denominator(p)*k by A3
.=denominator(p)*y by XCMPLX_1:175;
suppose 0<n;
then reconsider x=n as Nat by INT_1:16;
consider k such that A4:m=numerator(p)*k & x=denominator(p)*k
by A1,Th60;
reconsider y=k as Integer;take y;
thus m=numerator(p)*y by A4;
thus n=denominator(p)*y by A4;
end;

:: Fraction numerator(p)/denominator(p) is irreducible.

theorem Th62:
not ex l st 1<l & ex m,k st numerator(p)=m*l & denominator(p)=k*l
proof
assume not thesis;
then consider l such that A1:1<l
& ex m,k st numerator(p)=m*l & denominator(p)=k*l;
consider m,k such that A2:numerator(p)=m*l & denominator(p)=k*l by A1;
A3:0<>l by A1;
A4:k<>0 by A2,Def3;
then A5:0<k by NAT_1:19;
A6:now k*1<k*l by A1,A5,REAL_1:70;
hence k<denominator(p) by A2;
end;
p=(m*l)/(k*l) by A2,Th37
.=(m/k)*(l/l) by XCMPLX_1:77
.=m/k*1 by A3,XCMPLX_1:60
.=m/k;
hence contradiction by A4,A6,Def3;
end;

theorem Th63:
(p=m/k & k<>0 & not ex l st 1<l & ex m1,k1 st m=m1*l & k=k1*l)
implies k=denominator(p) & m=numerator(p)
proof
assume A1:(p=m/k & k<>0 & not ex l st 1<l & ex m1,k1 st m=m1*l & k=k1*l);
then consider l such that A2:m=numerator(p)*l & k=denominator(p)*l by Th60;
A3:l<=1 by A1,A2;
l<>0 by A1,A2;
then 0<l by NAT_1:19; then 0+1<=l by NAT_1:38;
then A4:l=1 by A3,AXIOMS:21;
hence k=denominator(p) by A2;
thus m=numerator(p) by A2,A4;
end;

theorem Th64:
p<-1 iff numerator(p)<-denominator(p)
proof
A1:0<>denominator(p) by Def3;
A2:0<denominator(p)" by Th30;
A3:0<denominator(p) by Th27;
A4:now
assume p<-1;
then numerator(p)/denominator(p)<-1 by Th37;
then (numerator(p)/denominator(p))*denominator(p)<(-1)*denominator(p)
by A3,REAL_1:70;
then numerator(p)<(-1)*denominator(p) by A1,XCMPLX_1:88;
then numerator(p)<-(1*denominator(p)) by XCMPLX_1:175;
hence numerator(p)<-denominator(p);
end;
now
assume numerator(p)<-denominator(p);
then numerator(p)<-(1*denominator(p));
then numerator(p)<(-1)*denominator(p) by XCMPLX_1:175;
then numerator(p)*denominator(p)"<((-1)*denominator(p))*denominator(p)"
by A2,REAL_1:70;
then numerator(p)*denominator(p)"<(-1)*(denominator(p)*denominator(p)")
by XCMPLX_1:4;
then numerator(p)*denominator(p)"<(-1)*1 by A1,XCMPLX_0:def 7;
hence p<-1 by Th37;
end;
hence thesis by A4;
end;

theorem Th65:
p<=-1 iff numerator(p)<=-denominator(p)
proof
A1:now assume A2:p<=-1;
now per cases by A2,REAL_1:def 5;
suppose p=-1;
hence numerator(p)<=-denominator(p) by Th48;
suppose p<-1;
hence numerator(p)<=-denominator(p) by Th64;
end;
hence numerator(p)<=-denominator(p);
end;
now assume A3:numerator(p)<=-denominator(p);
now per cases by A3,REAL_1:def 5;
suppose numerator(p)=-denominator(p);
hence p<=-1 by Th48;
suppose numerator(p)<-denominator(p);
hence p<=-1 by Th64;
end;
hence p<=-1;
end;
hence thesis by A1;
end;

theorem
p<-1 iff denominator(p)<-numerator(p)
proof
denominator(p)<-numerator(p) iff -(-numerator(p))<-denominator(p)
by REAL_1:50;
hence thesis by Th64;
end;

theorem
p<=-1 iff denominator(p)<=-numerator(p)
proof
denominator(p)<=-numerator(p) iff -(-numerator(p))<=-denominator(p)
by REAL_1:50;
hence thesis by Th65;
end;

canceled 4;

theorem Th72:
p<1 iff numerator(p)<denominator(p)
proof
A1:0<denominator(p) by Th27;
A2:0<>denominator(p) by Def3;
A3:0<denominator(p)" by Th30;
A4:now assume p<1;
then numerator(p)/denominator(p)<1 by Th37;
then numerator(p)/denominator(p)*denominator(p)<1*denominator(p)
by A1,REAL_1:70;
hence numerator(p)<denominator(p) by A2,XCMPLX_1:88;
end;
now assume numerator(p)<denominator(p);
then numerator(p)*denominator(p)"<denominator(p)*denominator(p)"
by A3,REAL_1:70;
then numerator(p)*denominator(p)"<1 by A2,XCMPLX_0:def 7;
hence p<1 by Th37;
end;
hence thesis by A4;
end;

theorem
p<=1 iff numerator(p)<=denominator(p)
proof
A1:now assume A2:p<=1;
now per cases by A2,REAL_1:def 5;
suppose p=1;
hence numerator(p)<=denominator(p) by Th47;
suppose p<1;
hence numerator(p)<=denominator(p) by Th72;
end;
hence numerator(p)<=denominator(p);
end;
now assume A3:numerator(p)<=denominator(p);
now per cases by A3,REAL_1:def 5;
suppose numerator(p)=denominator(p);
hence p<=1 by Th47;
suppose numerator(p)<denominator(p);
hence p<=1 by Th72;
end;
hence p<=1;
end;
hence thesis by A1;
end;

canceled 2;

theorem Th76:
p<0 iff numerator(p)<0
proof
A1:0<denominator(p) by Th27;
A2:0<>denominator(p) by Def3;
A3:0<denominator(p)" by Th30;
A4:now assume p<0;
then numerator(p)/denominator(p)<0 by Th37;
then numerator(p)/denominator(p)*denominator(p)<0*denominator(p)
by A1,REAL_1:70;
hence numerator(p)<0 by A2,XCMPLX_1:88;
end;
now assume numerator(p)<0;
then numerator(p)*denominator(p)"<0*denominator(p)" by A3,REAL_1:70;
hence p<0 by Th37;
end;
hence thesis by A4;
end;

theorem Th77:
p<=0 iff numerator(p)<=0
proof
A1:now assume A2:p<=0;
now per cases by A2;
suppose p=0;
hence numerator(p)<=0 by Th40;
suppose p<0;
hence numerator(p)<=0 by Th76;
end;
hence numerator(p)<=0;
end;
now assume A3:numerator(p)<=0;
now per cases by A3;
suppose numerator(p)=0;
hence p<=0 by Th36;
suppose numerator(p)<0;
hence p<=0 by Th76;
end;
hence p<=0;
end;
hence thesis by A1;
end;

canceled 2;

theorem Th80:
a<p iff a*denominator(p)<numerator(p)
proof
A1:0<denominator(p) by Th27;
A2:0<>denominator(p) by Def3;
A3:0<denominator(p)" by Th30;
A4:now assume a<p;
then a*denominator(p)<p*denominator(p) by A1,REAL_1:70;
hence a*denominator(p)<numerator(p) by Def4;
end;
now assume a*denominator(p)<numerator(p);
then (a*denominator(p))*denominator(p)"<numerator(p)*denominator(p)"
by A3,REAL_1:70;
then a*(denominator(p)*denominator(p)")<numerator(p)*denominator(p)"
by XCMPLX_1:4;
then a*1<numerator(p)*denominator(p)" by A2,XCMPLX_0:def 7;
hence a<p by Th37;
end;
hence thesis by A4;
end;

theorem
a<=p iff a*denominator(p)<=numerator(p)
proof
A1:denominator(p)<>0 by Def3;
A2:now assume A3:a<=p;
now per cases by A3,REAL_1:def 5;
suppose a=p;
hence numerator(p)>=a*denominator(p) by Def4;
suppose a<p;
hence a*denominator(p)<=numerator(p) by Th80;
end;
hence a*denominator(p)<=numerator(p);
end;
now assume A4:a*denominator(p)<=numerator(p);
now per cases by A4,REAL_1:def 5;
suppose a*denominator(p)=numerator(p);
then p=(a*denominator(p))/(1*denominator(p)) by Th37
.=(a/1)*(denominator(p)/denominator(p)) by XCMPLX_1:77
.=a/1*1 by A1,XCMPLX_1:60
.=a;
hence a<=p;
suppose a*denominator(p)<numerator(p);
hence a<=p by Th80;
end;
hence a<=p;
end;
hence thesis by A2;
end;

canceled 2;

theorem
p=q iff (denominator(p)=denominator(q) & numerator(p)=numerator(q))
proof
now assume denominator(p)=denominator(q) & numerator(p)=numerator(q);
hence p=numerator(q)/denominator(q) by Th37
.=q by Th37;
end;
hence thesis;
end;

canceled;

theorem
p<q iff numerator(p)*denominator(q)<numerator(q)*denominator(p)
proof A1:0<denominator(p) & 0<denominator(q) by Th27;
p<q iff numerator(p)/denominator(p)<q by Th37;
then p<q iff numerator(p)/denominator(p)<numerator(q)/denominator(q)
by Th37;
hence thesis by A1,Lm1;
end;

theorem Th87:
denominator(-p)=denominator(p) & numerator(-p)=-numerator(p)
proof
A1:denominator(p)<>0 by Def3;
A2:denominator(-p)<>0 by Def3;
A3:0<=denominator(p) by Th27;
A4:0<=denominator(-p) by Th27;
A5:p=numerator(p)/denominator(p) by Th37;
-p=-numerator(p)/denominator(p) by Th37
.=(-numerator(p))/denominator(p) by XCMPLX_1:188;
then consider k such that A6:-numerator(p)=numerator(-p)*k
& denominator(p)=denominator(-p)*k by A1,Th60;
k<>0 by A6,Def3;
then 0<k by NAT_1:19; then 0+1<=k by NAT_1:38;
then A7: denominator(-p)*1<=denominator(-p)*k by A4,AXIOMS:25;
A8:p=-(-p)
.=-numerator(-p)/denominator(-p) by Th37
.=(-numerator(-p))/denominator(-p) by XCMPLX_1:188;
then consider l such that A9:-numerator(-p)=numerator(p)*l
& denominator(-p)=denominator(p)*l by A2,Th60;
l<>0 by A9,Def3;
then 0<l by NAT_1:19; then 0+1<=l by NAT_1:38;
then A10:  denominator(p)*1<=denominator(p)*l by A3,AXIOMS:25;
hence denominator(p)=denominator(-p) by A6,A7,A9,AXIOMS:21;
numerator(p)/denominator(p)*denominator(p)
=(-numerator(-p))/denominator(p)*denominator(p)
by A5,A6,A7,A8,A9,A10,AXIOMS:21;
then numerator(p)=(-numerator(-p))/denominator(p)*denominator(p)
by A1,XCMPLX_1:88;
then -numerator(p)=-(-numerator(-p)) by A1,XCMPLX_1:88;
hence -numerator(p)=numerator(-p);
end;

theorem Th88:
0<p & q=1/p iff numerator(q)=denominator(p) & denominator(q)=numerator(p)
proof
A1:now assume A2:0<p & q=1/p;
then A3:0<numerator(p) by Th77;A4:0<>numerator(p) by A2,Th77;
A5:q=1/(numerator(p)/denominator(p)) by A2,Th37
.=(1*denominator(p))/numerator(p) by XCMPLX_1:78
.=denominator(p)/numerator(p);
reconsider x=denominator(p) as Integer;
reconsider y=numerator(p) as Nat by A3,INT_1:16;
not ex k st 1<k & ex m,l st x=m*k & y=l*k
proof
assume not thesis;
then consider k such that A6:1<k & ex m,l st x=m*k & y=l*k;
consider m,l such that A7:x=m*k & y=l*k by A6;
A8:    0<k by A6,AXIOMS:22;
now assume not 0<=m;
then m*k<0*m by A8,REAL_1:71;
hence contradiction by A7,Th27;
end;
then reconsider z=m as Nat by INT_1:16;
reconsider v=l as Integer;
1<k & numerator(p)=v*k & denominator(p)=z*k by A6,A7;
hence contradiction by Th62;
end;
hence numerator(p)=denominator(q) & denominator(p)=numerator(q) by A4,A5,
Th63;
end;
now assume A9:numerator(q)=denominator(p) & denominator(q)=numerator(p);
then 0<numerator(p) by Th27;
hence 0<p by Th77;
thus q =(1*denominator(p))/numerator(p) by A9,Th37
.=1/(numerator(p)/denominator(p)) by XCMPLX_1:78
.=1/p by Th37;
end;
hence thesis by A1;
end;

theorem
p<0 & q=1/p iff numerator(q)=-denominator(p) & denominator(q)=-numerator(p)
proof
A1:now assume A2:p<0 & q=1/p;
set r=-p;A3:0<r by A2,REAL_1:66;
set s=-q; s=1/r by A2,XCMPLX_1:189;
then numerator(s)=denominator(r) & denominator(s)=numerator(r) by A3,Th88;
then -numerator(q)=denominator(r) & denominator(q)=numerator(r) by Th87;
then -(-numerator(q))=-denominator(p) & denominator(q)=-numerator(p) by
Th87;
hence numerator(q)=-denominator(p) & denominator(q)=-numerator(p);
end;
now assume A4:numerator(q)=-denominator(p) & denominator(q)=-numerator(p);
then 0<-numerator(p) by Th27;
then numerator(p)<0 by REAL_1:66;
hence p<0 by Th76;
thus q=(-denominator(p))/(-numerator(p)) by A4,Th37
.=-(denominator(p)/(-numerator(p))) by XCMPLX_1:188
.=-(-denominator(p)/numerator(p)) by XCMPLX_1:189
.=(1*denominator(p))/numerator(p)
.=1/(numerator(p)/denominator(p)) by XCMPLX_1:78
.=1/p by Th37;
end;
hence thesis by A1;
end;
```