div_nt_alt
:
THEORY
BEGIN
%%(TCC)
natdiv_TCC1:
OBLIGATION
%%(TCC)
natdiv_TCC2:
OBLIGATION
natdiv(n,
m)
:
RECURSIVE
nat
=
IF
n
>
=
m
THEN
1
+
natdiv(n
-
m,
m)
ELSE
0
ENDIF
MEASURE
LAMBDA
n,
m
:
n
;
j:
VAR
nonzero
integer
is
multiple(i,
j):
bool
=
EXISTS
k
:
i
=
(k
*
j);
rdiv(i,
j):
integer
=
IF
sgn(i)
=
sgn(j)
THEN
natdiv(abs(i),
abs(j))
ELSE
IF
is
multiple(i,
j)
THEN
-natdiv(abs(i),
abs(j))
ELSE
(-natdiv(abs(i),
abs(j)))
-
1
ENDIF
ENDIF;