real_props contains useful properties about real numbers. Most of these are known to the decision procedures of PVS, but there are some nonlinear ones that cannot be gotten automatically. Nonlinear expressions are those that involve multiplication or division by two non-numeric terms. Thus x*y and x/c are nonlinear, while 2001*x + 39*z is linear. Note that it doesn't matter whether the terms are constants or variables, only whether they are actual numbers.
real_props
:
THEORY
BEGIN
n0w:
VAR
nonzero
real
n0x:
VAR
nonzero
real
n0y:
VAR
nonzero
real
n0z:
VAR
nonzero
real
nnw:
VAR
nonneg
real
nnx:
VAR
nonneg
real
nny:
VAR
nonneg
real
nnz:
VAR
nonneg
real
npw:
VAR
nonpos
real
npx:
VAR
nonpos
real
npy:
VAR
nonpos
real
npz:
VAR
nonpos
real
inv
ne
0:
LEMMA
(1
/
n0x)
/=
0
both
sides
plus1:
LEMMA
((x
+
z)
=
(y
+
z))
IFF
(x
=
y)
both
sides
plus2:
LEMMA
((z
+
x)
=
(z
+
y))
IFF
(x
=
y)
both
sides
minus1:
LEMMA
((x
-
z)
=
(y
-
z))
IFF
(x
=
y)
both
sides
minus2:
LEMMA
((z
-
x)
=
(z
-
y))
IFF
(x
=
y)
both
sides
times1:
LEMMA
((x
*
n0z)
=
(y
*
n0z))
IFF
(x
=
y)
both
sides
times2:
LEMMA
((n0z
*
x)
=
(n0z
*
y))
IFF
(x
=
y)
both
sides
div1:
LEMMA
((x
/
n0z)
=
(y
/
n0z))
IFF
(x
=
y)
both
sides
div2:
LEMMA
((n0z
/
n0x)
=
(n0z
/
n0y))
IFF
(n0x
=
n0y)
times
plus:
LEMMA
((x
+
y)
*
(z
+
w))
=
((x
*
z)
+
(x
*
w)
+
(y
*
z)
+
(y
*
w))
times
div1:
LEMMA
(x
*
(y
/
n0z))
=
((x
*
y)
/
n0z)
times
div2:
LEMMA
((x
/
n0z)
*
y)
=
((x
*
y)
/
n0z)
div
times:
LEMMA
((x
/
n0x)
*
(y
/
n0y))
=
((x
*
y)
/
(n0x
*
n0y))
div
eq
zero:
LEMMA
((x
/
n0z)
=
0)
IFF
(x
=
0)
div
simp:
LEMMA
(n0x
/
n0x)
=
1
div
cancel1:
LEMMA
(n0z
*
(x
/
n0z))
=
x
div
cancel2:
LEMMA
((x
/
n0z)
*
n0z)
=
x
div
cancel3:
LEMMA
((x
/
n0z)
=
y)
IFF
(x
=
(y
*
n0z))
cross
mult:
LEMMA
((x
/
n0x)
=
(y
/
n0y))
IFF
((x
*
n0y)
=
(y
*
n0x))
add
div:
LEMMA
((x
/
n0x)
+
(y
/
n0y))
=
(((x
*
n0y)
+
(y
*
n0x))
/
(n0x
*
n0y))
minus
div1:
LEMMA
((x
/
n0x)
-
(y
/
n0y))
=
(((x
*
n0y)
-
(y
*
n0x))
/
(n0x
*
n0y))
minus
div2:
LEMMA
((x
/
n0x)
-
(y
/
n0x))
=
((x
-
y)
/
n0x)
div
distributes:
LEMMA
((x
/
n0z)
+
(y
/
n0z))
=
((x
+
y)
/
n0z)
div
distributes
minus:
LEMMA
((x
/
n0z)
-
(y
/
n0z))
=
((x
-
y)
/
n0z)
div
div1:
LEMMA
(x
/
(n0y
/
n0z))
=
((x
*
n0z)
/
n0y)
div
div2:
LEMMA
(x
/
n0y
/
n0z)
=
(x
/
(n0y
*
n0z))
idem
add
is
zero:
LEMMA
((x
+
x)
=
x)
IMPLIES
(x
=
0)
zero
times1:
LEMMA
(0
*
x)
=
0
zero
times2:
LEMMA
(x
*
0)
=
0
zero
times3:
LEMMA
((x
*
y)
=
0)
IFF
((x
=
0)
OR
(y
=
0))
neg
times
neg:
LEMMA
((-x)
*
(-y))
=
(x
*
y)
zero
is
neg
zero:
LEMMA
(-0)
=
0
strict
lt:
LEMMA
strict
total
order?(
<
)
trich
lt:
LEMMA
(x
<
y)
OR
(x
=
y)
OR
(y
<
x)
tri
unique
lt1:
LEMMA
(x
<
y)
IMPLIES
((x
/=
y)
AND
(NOT
(y
<
x)))
tri
unique
lt2:
LEMMA
(x
=
y)
IMPLIES
((NOT
(x
<
y))
AND
(NOT
(y
<
x)))
zero
not
lt
zero:
LEMMA
NOT
(0
<
0)
neg
lt:
LEMMA
(0
<
(-x))
IFF
(x
<
0)
pos
times
lt:
LEMMA
(0
<
(x
*
y))
IFF
(((0
<
x)
AND
(0
<
y))
OR
((x
<
0)
AND
(y
<
0)))
neg
times
lt:
LEMMA
((x
*
y)
<
0)
IFF
(((0
<
x)
AND
(y
<
0))
OR
((x
<
0)
AND
(0
<
y)))
quotient
pos
lt:
FORMULA
(0
<
(1
/
n0x))
IFF
(0
<
n0x)
quotient
neg
lt:
FORMULA
((1
/
n0x)
<
0)
IFF
(n0x
<
0)
pos
div
lt:
LEMMA
(0
<
(x
/
n0y))
IFF
(((0
<
x)
AND
(0
<
n0y))
OR
((x
<
0)
AND
(n0y
<
0)))
neg
div
lt:
LEMMA
((x
/
n0y)
<
0)
IFF
(((0
<
x)
AND
(n0y
<
0))
OR
((x
<
0)
AND
(0
<
n0y)))
div
mult
pos
lt1:
LEMMA
((z
/
py)
<
x)
IFF
(z
<
(x
*
py))
div
mult
pos
lt2:
LEMMA
(x
<
(z
/
py))
IFF
((x
*
py)
<
z)
div
mult
neg
lt1:
LEMMA
((z
/
ny)
<
x)
IFF
((x
*
ny)
<
z)
div
mult
neg
lt2:
LEMMA
(x
<
(z
/
ny))
IFF
(z
<
(x
*
ny))
both
sides
plus
lt1:
LEMMA
((x
+
z)
<
(y
+
z))
IFF
(x
<
y)
both
sides
plus
lt2:
LEMMA
((z
+
x)
<
(z
+
y))
IFF
(x
<
y)
both
sides
minus
lt1:
LEMMA
((x
-
z)
<
(y
-
z))
IFF
(x
<
y)
both
sides
minus
lt2:
LEMMA
((z
-
x)
<
(z
-
y))
IFF
(y
<
x)
both
sides
times
pos
lt1:
LEMMA
((x
*
pz)
<
(y
*
pz))
IFF
(x
<
y)
both
sides
times
pos
lt2:
LEMMA
((pz
*
x)
<
(pz
*
y))
IFF
(x
<
y)
both
sides
times
neg
lt1:
LEMMA
((x
*
nz)
<
(y
*
nz))
IFF
(y
<
x)
both
sides
times
neg
lt2:
LEMMA
((nz
*
x)
<
(nz
*
y))
IFF
(y
<
x)
both
sides
div
pos
lt1:
LEMMA
((x
/
pz)
<
(y
/
pz))
IFF
(x
<
y)
both
sides
div
pos
lt2:
LEMMA
((pz
/
px)
<
(pz
/
py))
IFF
(py
<
px)
both
sides
div
pos
lt3:
LEMMA
((nz
/
px)
<
(nz
/
py))
IFF
(px
<
py)
both
sides
div
neg
lt1:
LEMMA
((x
/
nz)
<
(y
/
nz))
IFF
(y
<
x)
both
sides
div
neg
lt2:
LEMMA
((pz
/
nx)
<
(pz
/
ny))
IFF
(ny
<
nx)
both
sides
div
neg
lt3:
LEMMA
((nz
/
nx)
<
(nz
/
ny))
IFF
(nx
<
ny)
lt
plus
lt1:
LEMMA
((x
<
=
y)
AND
(z
<
w))
IMPLIES
((x
+
z)
<
(y
+
w))
lt
plus
lt2:
LEMMA
((x
<
y)
AND
(z
<
=
w))
IMPLIES
((x
+
z)
<
(y
+
w))
lt
minus
lt1:
LEMMA
((x
<
=
y)
AND
(w
<
z))
IMPLIES
((x
-
z)
<
(y
-
w))
lt
minus
lt2:
LEMMA
((x
<
y)
AND
(w
<
=
z))
IMPLIES
((x
-
z)
<
(y
-
w))
lt
times
lt
pos1:
LEMMA
((px
<
=
y)
AND
(nnz
<
w))
IMPLIES
((px
*
nnz)
<
(y
*
w))
lt
times
lt
pos2:
LEMMA
((nnx
<
y)
AND
(pz
<
=
w))
IMPLIES
((nnx
*
pz)
<
(y
*
w))
%%(TCC)
lt_div_lt_pos1_TCC1:
OBLIGATION
lt
div
lt
pos1:
LEMMA
((px
<
=
y)
AND
(pz
<
w))
IMPLIES
((px
/
w)
<
(y
/
pz))
%%(TCC)
lt_div_lt_pos2_TCC1:
OBLIGATION
lt
div
lt
pos2:
LEMMA
((nnx
<
y)
AND
(pz
<
=
w))
IMPLIES
((nnx
/
w)
<
(y
/
pz))
lt
times
lt
neg1:
LEMMA
((x
<
=
ny)
AND
(z
<
npw))
IMPLIES
((ny
*
npw)
<
(x
*
z))
lt
times
lt
neg2:
LEMMA
((x
<
npy)
AND
(z
<
=
nw))
IMPLIES
((npy
*
nw)
<
(x
*
z))
%%(TCC)
lt_div_lt_neg1_TCC1:
OBLIGATION
lt
div
lt
neg1:
LEMMA
((x
<
=
ny)
AND
(z
<
nw))
IMPLIES
((ny
/
z)
<
(x
/
nw))
%%(TCC)
lt_div_lt_neg2_TCC1:
OBLIGATION
lt
div
lt
neg2:
LEMMA
((x
<
npy)
AND
(z
<
=
nw))
IMPLIES
((npy
/
z)
<
(x
/
nw))
total
le:
LEMMA
total
order?(
<
=)
dich
le:
LEMMA
(x
<
=
y)
OR
(y
<
=
x)
zero
le
zero:
LEMMA
0
<
=
0
neg
le:
LEMMA
(0
<
=
(-x))
IFF
(x
<
=
0)
pos
times
le:
LEMMA
(0
<
=
(x
*
y))
IFF
(((0
<
=
x)
AND
(0
<
=
y))
OR
((x
<
=
0)
AND
(y
<
=
0)))
neg
times
le:
LEMMA
((x
*
y)
<
=
0)
IFF
(((0
<
=
x)
AND
(y
<
=
0))
OR
((x
<
=
0)
AND
(0
<
=
y)))
quotient
pos
le:
FORMULA
(0
<
=
(1
/
n0x))
IFF
(0
<
=
n0x)
quotient
neg
le:
FORMULA
((1
/
n0x)
<
=
0)
IFF
(n0x
<
=
0)
pos
div
le:
LEMMA
(0
<
=
(x
/
n0y))
IFF
(((0
<
=
x)
AND
(0
<
=
n0y))
OR
((x
<
=
0)
AND
(n0y
<
=
0)))
neg
div
le:
LEMMA
((x
/
n0y)
<
=
0)
IFF
(((0
<
=
x)
AND
(n0y
<
=
0))
OR
((x
<
=
0)
AND
(0
<
=
n0y)))
div
mult
pos
le1:
LEMMA
((z
/
py)
<
=
x)
IFF
(z
<
=
(x
*
py))
div
mult
pos
le2:
LEMMA
(x
<
=
(z
/
py))
IFF
((x
*
py)
<
=
z)
div
mult
neg
le1:
LEMMA
((z
/
ny)
<
=
x)
IFF
((x
*
ny)
<
=
z)
div
mult
neg
le2:
LEMMA
(x
<
=
(z
/
ny))
IFF
(z
<
=
(x
*
ny))
both
sides
plus
le1:
LEMMA
((x
+
z)
<
=
(y
+
z))
IFF
(x
<
=
y)
both
sides
plus
le2:
LEMMA
((z
+
x)
<
=
(z
+
y))
IFF
(x
<
=
y)
both
sides
minus
le1:
LEMMA
((x
-
z)
<
=
(y
-
z))
IFF
(x
<
=
y)
both
sides
minus
le2:
LEMMA
((z
-
x)
<
=
(z
-
y))
IFF
(y
<
=
x)
both
sides
times
pos
le1:
LEMMA
((x
*
pz)
<
=
(y
*
pz))
IFF
(x
<
=
y)
both
sides
times
pos
le2:
LEMMA
((pz
*
x)
<
=
(pz
*
y))
IFF
(x
<
=
y)
both
sides
times
neg
le1:
LEMMA
((x
*
nz)
<
=
(y
*
nz))
IFF
(y
<
=
x)
both
sides
times
neg
le2:
LEMMA
((nz
*
x)
<
=
(nz
*
y))
IFF
(y
<
=
x)
both
sides
div
pos
le1:
LEMMA
((x
/
pz)
<
=
(y
/
pz))
IFF
(x
<
=
y)
both
sides
div
pos
le2:
LEMMA
((pz
/
px)
<
=
(pz
/
py))
IFF
(py
<
=
px)
both
sides
div
pos
le3:
LEMMA
((nz
/
px)
<
=
(nz
/
py))
IFF
(px
<
=
py)
both
sides
div
neg
le1:
LEMMA
((x
/
nz)
<
=
(y
/
nz))
IFF
(y
<
=
x)
both
sides
div
neg
le2:
LEMMA
((pz
/
nx)
<
=
(pz
/
ny))
IFF
(ny
<
=
nx)
both
sides
div
neg
le3:
LEMMA
((nz
/
nx)
<
=
(nz
/
ny))
IFF
(nx
<
=
ny)
le
plus
le:
LEMMA
((x
<
=
y)
AND
(z
<
=
w))
IMPLIES
((x
+
z)
<
=
(y
+
w))
le
minus
le:
LEMMA
((x
<
=
y)
AND
(w
<
=
z))
IMPLIES
((x
-
z)
<
=
(y
-
w))
le
times
le
pos:
LEMMA
((nnx
<
=
y)
AND
(nnz
<
=
w))
IMPLIES
((nnx
*
nnz)
<
=
(y
*
w))
%%(TCC)
le_div_le_pos_TCC1:
OBLIGATION
le
div
le
pos:
LEMMA
((nnx
<
=
y)
AND
(pz
<
=
w))
IMPLIES
((nnx
/
w)
<
=
(y
/
pz))
le
times
le
neg:
LEMMA
((x
<
=
npy)
AND
(z
<
=
npw))
IMPLIES
((npy
*
npw)
<
=
(x
*
z))
%%(TCC)
le_div_le_neg_TCC1:
OBLIGATION
le
div
le
neg:
LEMMA
((x
<
=
npy)
AND
(z
<
=
nw))
IMPLIES
((npy
/
z)
<
=
(x
/
nw))
strict
gt:
LEMMA
strict
total
order?(
>
)
trich
gt:
LEMMA
(x
>
y)
OR
(x
=
y)
OR
(y
>
x)
tri
unique
gt1:
LEMMA
(x
>
y)
IMPLIES
((x
/=
y)
AND
(NOT
(y
>
x)))
tri
unique
gt2:
LEMMA
(x
=
y)
IMPLIES
((NOT
(x
>
y))
AND
(NOT
(y
>
x)))
zero
not
gt
zero:
LEMMA
NOT
(0
>
0)
neg
gt:
LEMMA
(0
>
(-x))
IFF
(x
>
0)
pos
times
gt:
LEMMA
((x
*
y)
>
0)
IFF
(((0
>
x)
AND
(0
>
y))
OR
((x
>
0)
AND
(y
>
0)))
neg
times
gt:
LEMMA
(0
>
(x
*
y))
IFF
(((0
>
x)
AND
(y
>
0))
OR
((x
>
0)
AND
(0
>
y)))
quotient
pos
gt:
FORMULA
((1
/
n0x)
>
0)
IFF
(n0x
>
0)
quotient
neg
gt:
FORMULA
(0
>
(1
/
n0x))
IFF
(0
>
n0x)
pos
div
gt:
LEMMA
((x
/
n0y)
>
0)
IFF
(((0
>
x)
AND
(0
>
n0y))
OR
((x
>
0)
AND
(n0y
>
0)))
neg
div
gt:
LEMMA
(0
>
(x
/
n0y))
IFF
(((0
>
x)
AND
(n0y
>
0))
OR
((x
>
0)
AND
(0
>
n0y)))
div
mult
pos
gt1:
LEMMA
(x
>
(z
/
py))
IFF
((x
*
py)
>
z)
div
mult
pos
gt2:
LEMMA
((z
/
py)
>
x)
IFF
(z
>
(x
*
py))
div
mult
neg
gt1:
LEMMA
(x
>
(z
/
ny))
IFF
(z
>
(x
*
ny))
div
mult
neg
gt2:
LEMMA
((z
/
ny)
>
x)
IFF
((x
*
ny)
>
z)
both
sides
plus
gt1:
LEMMA
((x
+
z)
>
(y
+
z))
IFF
(x
>
y)
both
sides
plus
gt2:
LEMMA
((z
+
x)
>
(z
+
y))
IFF
(x
>
y)
both
sides
minus
gt1:
LEMMA
((x
-
z)
>
(y
-
z))
IFF
(x
>
y)
both
sides
minus
gt2:
LEMMA
((z
-
x)
>
(z
-
y))
IFF
(y
>
x)
both
sides
times
pos
gt1:
LEMMA
((x
*
pz)
>
(y
*
pz))
IFF
(x
>
y)
both
sides
times
pos
gt2:
LEMMA
((pz
*
x)
>
(pz
*
y))
IFF
(x
>
y)
both
sides
times
neg
gt1:
LEMMA
((x
*
nz)
>
(y
*
nz))
IFF
(y
>
x)
both
sides
times
neg
gt2:
LEMMA
((nz
*
x)
>
(nz
*
y))
IFF
(y
>
x)
both
sides
div
pos
gt1:
LEMMA
((x
/
pz)
>
(y
/
pz))
IFF
(x
>
y)
both
sides
div
pos
gt2:
LEMMA
((pz
/
px)
>
(pz
/
py))
IFF
(py
>
px)
both
sides
div
pos
gt3:
LEMMA
((nz
/
px)
>
(nz
/
py))
IFF
(px
>
py)
both
sides
div
neg
gt1:
LEMMA
((x
/
nz)
>
(y
/
nz))
IFF
(y
>
x)
both
sides
div
neg
gt2:
LEMMA
((pz
/
nx)
>
(pz
/
ny))
IFF
(ny
>
nx)
both
sides
div
neg
gt3:
LEMMA
((nz
/
nx)
>
(nz
/
ny))
IFF
(nx
>
ny)
gt
plus
gt1:
LEMMA
((x
>
=
y)
AND
(z
>
w))
IMPLIES
((x
+
z)
>
(y
+
w))
gt
plus
gt2:
LEMMA
((x
>
y)
AND
(z
>
=
w))
IMPLIES
((x
+
z)
>
(y
+
w))
gt
minus
gt1:
LEMMA
((x
>
=
y)
AND
(w
>
z))
IMPLIES
((x
-
z)
>
(y
-
w))
gt
minus
gt2:
LEMMA
((x
>
y)
AND
(w
>
=
z))
IMPLIES
((x
-
z)
>
(y
-
w))
gt
times
gt
pos1:
LEMMA
((x
>
=
py)
AND
(z
>
nnw))
IMPLIES
((x
*
z)
>
(py
*
nnw))
gt
times
gt
pos2:
LEMMA
((x
>
nny)
AND
(z
>
=
pw))
IMPLIES
((x
*
z)
>
(nny
*
pw))
%%(TCC)
gt_div_gt_pos1_TCC1:
OBLIGATION
gt
div
gt
pos1:
LEMMA
((x
>
=
py)
AND
(z
>
pw))
IMPLIES
((x
/
pw)
>
(py
/
z))
%%(TCC)
gt_div_gt_pos2_TCC1:
OBLIGATION
gt
div
gt
pos2:
LEMMA
((x
>
nny)
AND
(z
>
=
pw))
IMPLIES
((x
/
pw)
>
(nny
/
z))
gt
times
gt
neg1:
LEMMA
((nx
>
=
y)
AND
(npz
>
w))
IMPLIES
((y
*
w)
>
(nx
*
npz))
gt
times
gt
neg2:
LEMMA
((npx
>
y)
AND
(nz
>
=
w))
IMPLIES
((y
*
w)
>
(npx
*
nz))
%%(TCC)
gt_div_gt_neg1_TCC1:
OBLIGATION
gt
div
gt
neg1:
LEMMA
((nx
>
=
y)
AND
(nz
>
w))
IMPLIES
((y
/
nz)
>
(nx
/
w))
%%(TCC)
gt_div_gt_neg2_TCC1:
OBLIGATION
gt
div
gt
neg2:
LEMMA
((npx
>
y)
AND
(nz
>
=
w))
IMPLIES
((y
/
nz)
>
(npx
/
w))
strict
ge:
LEMMA
total
order?(
>
=)
dich
ge:
LEMMA
(x
>
=
y)
OR
(y
>
=
x)
zero
ge
zero:
LEMMA
0
>
=
0
neg
ge:
LEMMA
(0
>
=
(-x))
IFF
(x
>
=
0)
pos
times
ge:
LEMMA
((x
*
y)
>
=
0)
IFF
(((0
>
=
x)
AND
(0
>
=
y))
OR
((x
>
=
0)
AND
(y
>
=
0)))
neg
times
ge:
LEMMA
(0
>
=
(x
*
y))
IFF
(((0
>
=
x)
AND
(y
>
=
0))
OR
((x
>
=
0)
AND
(0
>
=
y)))
quotient
pos
ge:
FORMULA
((1
/
n0x)
>
=
0)
IFF
(n0x
>
=
0)
quotient
neg
ge:
FORMULA
(0
>
=
(1
/
n0x))
IFF
(0
>
=
n0x)
pos
div
ge:
LEMMA
((x
/
n0y)
>
=
0)
IFF
(((0
>
=
x)
AND
(0
>
=
n0y))
OR
((x
>
=
0)
AND
(n0y
>
=
0)))
neg
div
ge:
LEMMA
(0
>
=
(x
/
n0y))
IFF
(((0
>
=
x)
AND
(n0y
>
=
0))
OR
((x
>
=
0)
AND
(0
>
=
n0y)))
div
mult
pos
ge1:
LEMMA
((z
/
py)
>
=
x)
IFF
(z
>
=
(x
*
py))
div
mult
pos
ge2:
LEMMA
(x
>
=
(z
/
py))
IFF
((x
*
py)
>
=
z)
div
mult
neg
ge1:
LEMMA
((z
/
ny)
>
=
x)
IFF
((x
*
ny)
>
=
z)
div
mult
neg
ge2:
LEMMA
(x
>
=
(z
/
ny))
IFF
(z
>
=
(x
*
ny))
both
sides
plus
ge1:
LEMMA
((x
+
z)
>
=
(y
+
z))
IFF
(x
>
=
y)
both
sides
plus
ge2:
LEMMA
((z
+
x)
>
=
(z
+
y))
IFF
(x
>
=
y)
both
sides
minus
ge1:
LEMMA
((x
-
z)
>
=
(y
-
z))
IFF
(x
>
=
y)
both
sides
minus
ge2:
LEMMA
((z
-
x)
>
=
(z
-
y))
IFF
(y
>
=
x)
both
sides
times
pos
ge1:
LEMMA
((x
*
pz)
>
=
(y
*
pz))
IFF
(x
>
=
y)
both
sides
times
pos
ge2:
LEMMA
((pz
*
x)
>
=
(pz
*
y))
IFF
(x
>
=
y)
both
sides
times
neg
ge1:
LEMMA
((x
*
nz)
>
=
(y
*
nz))
IFF
(y
>
=
x)
both
sides
times
neg
ge2:
LEMMA
((nz
*
x)
>
=
(nz
*
y))
IFF
(y
>
=
x)
both
sides
div
pos
ge1:
LEMMA
((x
/
pz)
>
=
(y
/
pz))
IFF
(x
>
=
y)
both
sides
div
pos
ge2:
LEMMA
((pz
/
px)
>
=
(pz
/
py))
IFF
(py
>
=
px)
both
sides
div
pos
ge3:
LEMMA
((nz
/
px)
>
=
(nz
/
py))
IFF
(px
>
=
py)
both
sides
div
neg
ge1:
LEMMA
((x
/
nz)
>
=
(y
/
nz))
IFF
(y
>
=
x)
both
sides
div
neg
ge2:
LEMMA
((pz
/
nx)
>
=
(pz
/
ny))
IFF
(ny
>
=
nx)
both
sides
div
neg
ge3:
LEMMA
((nz
/
nx)
>
=
(nz
/
ny))
IFF
(nx
>
=
ny)
ge
plus
ge:
LEMMA
((x
>
=
y)
AND
(z
>
=
w))
IMPLIES
((x
+
z)
>
=
(y
+
w))
ge
minus
ge:
LEMMA
((x
>
=
y)
AND
(w
>
=
z))
IMPLIES
((x
-
z)
>
=
(y
-
w))
ge
times
ge
pos:
LEMMA
((x
>
=
nny)
AND
(z
>
=
nnw))
IMPLIES
((x
*
z)
>
=
(nny
*
nnw))
%%(TCC)
ge_div_ge_pos_TCC1:
OBLIGATION
ge
div
ge
pos:
LEMMA
((x
>
=
nny)
AND
(z
>
=
pw))
IMPLIES
((x
/
pw)
>
=
(nny
/
z))
ge
times
ge
neg:
LEMMA
((npx
>
=
y)
AND
(npz
>
=
w))
IMPLIES
((y
*
w)
>
=
(npx
*
npz))
%%(TCC)
ge_div_ge_neg_TCC1:
OBLIGATION
ge
div
ge
neg:
LEMMA
((npx
>
=
y)
AND
(nz
>
=
w))
IMPLIES
((y
/
nz)
>
=
(npx
/
w))
nonzero
times1:
LEMMA
((n0x
*
y)
=
0)
IFF
(y
=
0)
nonzero
times2:
LEMMA
((x
*
n0y)
=
0)
IFF
(x
=
0)
nonzero
times3:
LEMMA
((n0x
*
n0y)
=
0)
IFF
FALSE
eq1
gt:
FORMULA
((x
>
1)
AND
((x
*
y)
=
1))
IMPLIES
(y
<
1)
eq1
ge:
FORMULA
((x
>
=
1)
AND
((x
*
y)
=
1))
IMPLIES
(y
<
=
1)
eqm1
gt:
FORMULA
((x
>
1)
AND
((x
*
y)
=
(-1)))
IMPLIES
(y
>
(-1))
eqm1
ge:
FORMULA
((x
>
=
1)
AND
((x
*
y)
=
(-1)))
IMPLIES
(y
>
=
(-1))
eqm1
lt:
FORMULA
((x
<
(-1))
AND
((x
*
y)
=
(-1)))
IMPLIES
(y
<
1)
eqm1
le:
FORMULA
((x
<
=
(-1))
AND
((x
*
y)
=
(-1)))
IMPLIES
(y
<
=
1)
sqrt
1:
LEMMA
((x
*
x)
=
1)
IFF
((x
=
1)
OR
(x
=
(-1)))
sqrt
1
lt:
LEMMA
((x
*
x)
<
1)
IMPLIES
(abs(x)
<
1)
sqrt
1
le:
LEMMA
((x
*
x)
<
=
1)
IMPLIES
(abs(x)
<
=
1)
idem
mult:
LEMMA
((x
*
x)
=
x)
IFF
((x
=
0)
OR
(x
=
1))
product
1:
LEMMA
((i
>
=
0)
AND
(j
>
=
0)
AND
((i
*
j)
=
1))
IMPLIES
((i
=
1)
AND
(j
=
1))
product
m1:
LEMMA
((i
>
=
0)
AND
(j
<
=
0)
AND
((i
*
j)
=
(-1)))
IMPLIES
((i
=
1)
AND
(j
=
(-1)))
triangle:
LEMMA
abs(x
+
y)
<
=
(abs(x)
+
abs(y))
abs
mult:
LEMMA
abs(x
*
y)
=
(abs(x)
*
abs(y))
abs
div:
LEMMA
abs(x
/
n0y)
=
(abs(x)
/
abs(n0y))
abs
abs:
LEMMA
abs(abs(x))
=
abs(x)
abs
square:
LEMMA
abs(x
*
x)
=
(x
*
x)
abs
limits:
LEMMA
((-(abs(x)
+
abs(y)))
<
=
(x
+
y))
AND
((x
+
y)
<
=
(abs(x)
+
abs(y)))
axiom
of
archimedes:
LEMMA
FORALL
(x:real)
:
EXISTS
(i:int)
:
x
<
i
archimedean:
LEMMA
FORALL
(px:posreal)
:
EXISTS
(n:posnat)
:
(1
/
n)
<
px
END
real_props