let n2, m2 be Element of NAT ; :: thesis: ( m2 > 0 implies idiv1_prg n2,m2 = n2 div m2 )
assume A1:
m2 > 0
; :: thesis: idiv1_prg n2,m2 = n2 div m2
reconsider n = n2, m = m2 as Integer ;
now per cases
( n < m or n >= m )
;
suppose A2:
n < m
;
:: thesis: ex sm, sn, pn being FinSequence of INT st
( len sm = n + 1 & len sn = n + 1 & len pn = n + 1 & ( n < m implies n2 div m2 = 0 ) & ( not n < m implies ( sm . 1 = m & ex i being Integer st
( 1 <= i & i <= n & ( for k being Integer st 1 <= k & k < i holds
( sm . (k + 1) = (sm . k) * 2 & not sm . (k + 1) > n ) ) & sm . (i + 1) = (sm . i) * 2 & sm . (i + 1) > n & pn . (i + 1) = 0 & sn . (i + 1) = n & ( for j being Integer st 1 <= j & j <= i holds
( ( sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies ( sn . ((i + 1) - j) = (sn . ((i + 1) - (j - 1))) - (sm . ((i + 1) - j)) & pn . ((i + 1) - j) = ((pn . ((i + 1) - (j - 1))) * 2) + 1 ) ) & ( not sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies ( sn . ((i + 1) - j) = sn . ((i + 1) - (j - 1)) & pn . ((i + 1) - j) = (pn . ((i + 1) - (j - 1))) * 2 ) ) ) ) & n2 div m2 = pn . 1 ) ) ) )end; suppose A5:
n >= m
;
:: thesis: ex sm, sn, pn being FinSequence of INT st
( len sm = n + 1 & len sn = n + 1 & len pn = n + 1 & ( n < m implies n2 div m2 = 0 ) & ( not n < m implies ( sm . 1 = m & ex i being Integer st
( 1 <= i & i <= n & ( for k being Integer st 1 <= k & k < i holds
( sm . (k + 1) = (sm . k) * 2 & not sm . (k + 1) > n ) ) & sm . (i + 1) = (sm . i) * 2 & sm . (i + 1) > n & pn . (i + 1) = 0 & sn . (i + 1) = n & ( for j being Integer st 1 <= j & j <= i holds
( ( sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies ( sn . ((i + 1) - j) = (sn . ((i + 1) - (j - 1))) - (sm . ((i + 1) - j)) & pn . ((i + 1) - j) = ((pn . ((i + 1) - (j - 1))) * 2) + 1 ) ) & ( not sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies ( sn . ((i + 1) - j) = sn . ((i + 1) - (j - 1)) & pn . ((i + 1) - j) = (pn . ((i + 1) - (j - 1))) * 2 ) ) ) ) & n2 div m2 = pn . 1 ) ) ) )then
n2 >= 0 + 1
by A1, NAT_1:13;
then
1
< n2 + 1
by NAT_1:13;
then A6:
1
in Seg (n2 + 1)
by FINSEQ_1:3;
deffunc H1(
Nat)
-> Element of
NAT =
m2 * (2 |^ ($1 -' 1));
ex
ssm being
FinSequence st
(
len ssm = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ssm holds
ssm . k2 = H1(
k2) ) )
from FINSEQ_1:sch 2();
then consider ssm being
FinSequence such that A7:
(
len ssm = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ssm holds
ssm . k2 = m * (2 |^ (k2 -' 1)) ) )
;
A8:
dom ssm = Seg (n2 + 1)
by A7, FINSEQ_1:def 3;
rng ssm c= INT
then reconsider ssm =
ssm as
FinSequence of
INT by FINSEQ_1:def 4;
deffunc H2(
Nat)
-> Element of
NAT =
n2 mod (m2 * (2 |^ ($1 -' 1)));
ex
ssn being
FinSequence st
(
len ssn = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ssn holds
ssn . k2 = H2(
k2) ) )
from FINSEQ_1:sch 2();
then consider ssn being
FinSequence such that A11:
(
len ssn = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ssn holds
ssn . k2 = n2 mod (m2 * (2 |^ (k2 -' 1))) ) )
;
A12:
dom ssn = Seg (n2 + 1)
by A11, FINSEQ_1:def 3;
rng ssn c= INT
then reconsider ssn =
ssn as
FinSequence of
INT by FINSEQ_1:def 4;
deffunc H3(
Nat)
-> Element of
NAT =
n2 div (m2 * (2 |^ ($1 -' 1)));
ex
ppn being
FinSequence st
(
len ppn = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ppn holds
ppn . k2 = H3(
k2) ) )
from FINSEQ_1:sch 2();
then consider ppn being
FinSequence such that A15:
(
len ppn = n2 + 1 & ( for
k2 being
Nat st
k2 in dom ppn holds
ppn . k2 = n2 div (m2 * (2 |^ (k2 -' 1))) ) )
;
A16:
dom ppn = Seg (n2 + 1)
by A15, FINSEQ_1:def 3;
rng ppn c= INT
then reconsider ppn =
ppn as
FinSequence of
INT by FINSEQ_1:def 4;
A19:
ppn . 1 =
n2 div (m2 * (2 |^ (1 -' 1)))
by A6, A15, A16
.=
n2 div (m2 * (2 |^ 0 ))
by XREAL_1:234
.=
n2 div (m2 * 1)
by NEWTON:9
.=
n2 div m2
;
A20:
ssm . 1 =
m * (2 |^ (1 -' 1))
by A6, A7, A8
.=
m * (2 |^ 0 )
by XREAL_1:234
.=
m * 1
by NEWTON:9
.=
m
;
consider ii0 being
Element of
NAT such that A21:
( ( for
k2 being
Element of
NAT st
k2 < ii0 holds
m * (2 |^ k2) <= n2 ) &
m2 * (2 |^ ii0) > n2 )
by A1, Th6;
reconsider i0 =
ii0 as
Integer ;
then
ii0 > 0
;
then A22:
ii0 >= 0 + 1
by NAT_1:13;
then A23:
i0 - 1
>= 0
by XREAL_1:50;
then A27:
i0 + 1
<= n2 + 1
by XREAL_1:9;
i0 < n2 + 1
by A24, NAT_1:13;
then A28:
ii0 in Seg (n2 + 1)
by A22, FINSEQ_1:3;
1
<= i0 + 1
by A22, NAT_1:13;
then A29:
ii0 + 1
in Seg (n2 + 1)
by A27, FINSEQ_1:3;
(ii0 + 1) -' 1 =
(i0 - 1) + 1
by NAT_D:34
.=
(ii0 -' 1) + 1
by A23, XREAL_0:def 2
;
then A30:
2
|^ ((ii0 + 1) -' 1) = (2 |^ (ii0 -' 1)) * 2
by NEWTON:11;
A31:
ssm . (i0 + 1) =
m * (2 |^ ((ii0 + 1) -' 1))
by A7, A29, A8
.=
(m * (2 |^ (ii0 -' 1))) * 2
by A30
.=
(ssm . i0) * 2
by A7, A28, A8
;
A32:
for
k being
Element of
NAT st 1
<= k &
k < i0 holds
(
ssm . (k + 1) = (ssm . k) * 2 & not
ssm . (k + 1) > n )
proof
let k be
Element of
NAT ;
:: thesis: ( 1 <= k & k < i0 implies ( ssm . (k + 1) = (ssm . k) * 2 & not ssm . (k + 1) > n ) )
assume A33:
( 1
<= k &
k < i0 )
;
:: thesis: ( ssm . (k + 1) = (ssm . k) * 2 & not ssm . (k + 1) > n )
then A34:
k <= n2
by A24, XXREAL_0:2;
A35:
k - 1
>= 0
by A33, XREAL_1:50;
A36:
1
< k + 1
by A33, NAT_1:13;
A37:
(k + 1) -' 1
= k
by NAT_D:34;
k + 1
<= n2 + 1
by A34, XREAL_1:9;
then
k + 1
in Seg (n2 + 1)
by A36, FINSEQ_1:3;
then A38:
ssm . (k + 1) = m * (2 |^ ((k + 1) -' 1))
by A7, A8;
k <= n2 + 1
by A34, NAT_1:12;
then
k in Seg (n2 + 1)
by A33, FINSEQ_1:3;
then A39:
ssm . k = m * (2 |^ (k -' 1))
by A7, A8;
(k + 1) -' 1 =
(k - 1) + 1
by NAT_D:34
.=
(k -' 1) + 1
by A35, XREAL_0:def 2
;
then
2
|^ ((k + 1) -' 1) = (2 |^ (k -' 1)) * 2
by NEWTON:11;
hence
(
ssm . (k + 1) = (ssm . k) * 2 & not
ssm . (k + 1) > n )
by A21, A33, A37, A38, A39;
:: thesis: verum
end; A40:
for
k being
Integer st 1
<= k &
k < i0 holds
(
ssm . (k + 1) = (ssm . k) * 2 & not
ssm . (k + 1) > n )
A42:
1
<= 1
+ ii0
by NAT_1:11;
A43:
(ii0 + 1) -' 1
= ii0
by NAT_D:34;
i0 + 1
<= n2 + 1
by A24, XREAL_1:9;
then A44:
ii0 + 1
in Seg (n2 + 1)
by A42, FINSEQ_1:3;
then A45:
ssm . (i0 + 1) > n
by A7, A21, A43, A8;
i0 < n2 + 1
by A24, NAT_1:13;
then A46:
ii0 + 1
<= n2 + 1
by NAT_1:13;
0 + 1
<= i0 + 1
by XREAL_1:9;
then
ii0 + 1
in Seg (n2 + 1)
by A46, FINSEQ_1:3;
then A47:
ssn . (i0 + 1) = n2 mod (m2 * (2 |^ ((ii0 + 1) -' 1)))
by A11, A12;
reconsider k5 =
m2 * (2 |^ ((ii0 + 1) -' 1)) as
Element of
NAT ;
A48:
k5 > n2
by A21, NAT_D:34;
n2 div (m2 * (2 |^ ((ii0 + 1) -' 1))) = 0
by A21, A43, NAT_D:27;
then A49:
(
ppn . (i0 + 1) = 0 &
ssn . (i0 + 1) = n )
by A15, A44, A47, A48, NAT_D:24, A16;
for
j being
Integer st 1
<= j &
j <= i0 holds
( (
ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies (
ssn . ((i0 + 1) - j) = (ssn . ((i0 + 1) - (j - 1))) - (ssm . ((i0 + 1) - j)) &
ppn . ((i0 + 1) - j) = ((ppn . ((i0 + 1) - (j - 1))) * 2) + 1 ) ) & ( not
ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies (
ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) &
ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 ) ) )
proof
let j be
Integer;
:: thesis: ( 1 <= j & j <= i0 implies ( ( ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies ( ssn . ((i0 + 1) - j) = (ssn . ((i0 + 1) - (j - 1))) - (ssm . ((i0 + 1) - j)) & ppn . ((i0 + 1) - j) = ((ppn . ((i0 + 1) - (j - 1))) * 2) + 1 ) ) & ( not ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies ( ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) & ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 ) ) ) )
assume A50:
( 1
<= j &
j <= i0 )
;
:: thesis: ( ( ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies ( ssn . ((i0 + 1) - j) = (ssn . ((i0 + 1) - (j - 1))) - (ssm . ((i0 + 1) - j)) & ppn . ((i0 + 1) - j) = ((ppn . ((i0 + 1) - (j - 1))) * 2) + 1 ) ) & ( not ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies ( ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) & ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 ) ) )
then reconsider jj =
j as
Element of
NAT by INT_1:16;
A51:
i0 - j >= 0
by A50, XREAL_1:50;
then A52:
ii0 -' jj = i0 - j
by XREAL_0:def 2;
A53:
j - 1
>= 0
by A50, XREAL_1:50;
hereby :: thesis: ( not ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies ( ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) & ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 ) )
assume A54:
ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j)
;
:: thesis: ( ssn . ((i0 + 1) - j) = (ssn . ((i0 + 1) - (j - 1))) - (ssm . ((i0 + 1) - j)) & ppn . ((i0 + 1) - j) = ((ppn . ((i0 + 1) - (j - 1))) * 2) + 1 )A55:
jj -' 1
= j - 1
by A53, XREAL_0:def 2;
A56:
j + 1
<= i0 + 1
by A50, XREAL_1:9;
j < j + 1
by XREAL_1:31;
then A57:
j < i0 + 1
by A56, XXREAL_0:2;
ii0 < ii0 + 1
by NAT_1:13;
then
j < i0 + 1
by A50, XXREAL_0:2;
then A58:
(i0 + 1) - j > 0
by XREAL_1:52;
then A59:
(ii0 + 1) -' jj = (i0 + 1) - j
by XREAL_0:def 2;
A60:
(ii0 + 1) -' jj = (i0 - j) + 1
by A58, XREAL_0:def 2;
A61:
(ii0 + 1) -' jj = (i0 + 1) - j
by A58, XREAL_0:def 2;
jj -' 1
<= j
by NAT_D:35;
then
jj -' 1
< i0 + 1
by A57, XXREAL_0:2;
then A62:
(ii0 + 1) - (jj -' 1) >= 0
by XREAL_1:50;
then A63:
(ii0 + 1) -' (jj -' 1) = ((i0 + 1) - j) + 1
by A55, XREAL_0:def 2;
then A64:
((ii0 + 1) -' (jj -' 1)) -' 1
= (ii0 + 1) -' jj
by A59, NAT_D:34;
A65:
(ii0 + 1) -' (jj -' 1) = (i0 + 1) - (j - 1)
by A55, A62, XREAL_0:def 2;
ii0 < ii0 + 1
by NAT_1:13;
then
j < i0 + 1
by A50, XXREAL_0:2;
then
(i0 + 1) - j >= 0
by XREAL_1:50;
then A66:
(ii0 + 1) -' jj = (i0 + 1) - j
by XREAL_0:def 2;
i0 + 1
<= n2 + j
by A24, A50, XREAL_1:9;
then
(i0 + 1) - j <= (n2 + j) - j
by XREAL_1:11;
then A67:
((ii0 + 1) -' jj) + 1
<= n2 + 1
by A66, XREAL_1:9;
1
<= (ii0 + 1) -' (jj -' 1)
by A59, A63, NAT_1:11;
then A68:
(ii0 + 1) -' (jj -' 1) in Seg (n2 + 1)
by A59, A63, A67, FINSEQ_1:3;
A69:
(ii0 + 1) -' jj >= 0 + 1
by A58, A59, NAT_1:13;
then
((ii0 + 1) -' jj) - 1
>= 0
by XREAL_1:50;
then A70:
((ii0 + 1) -' jj) -' 1
= i0 - j
by A59, XREAL_0:def 2;
A71:
(ii0 + 1) -' jj <= i0 + 1
by NAT_D:35;
i0 + 1
<= n2 + 1
by A24, XREAL_1:9;
then
n2 + 1
>= (ii0 + 1) -' jj
by A71, XXREAL_0:2;
then A72:
(ii0 + 1) -' jj in Seg (n2 + 1)
by A69, FINSEQ_1:3;
then A73:
ssn . ((ii0 + 1) -' jj) = n2 mod (m2 * (2 |^ (((ii0 + 1) -' jj) -' 1)))
by A11, A12;
A74:
jj -' 1
= j - 1
by A53, XREAL_0:def 2;
A75:
j + 1
<= i0 + 1
by A50, XREAL_1:9;
jj < jj + 1
by NAT_1:13;
then A76:
j < i0 + 1
by A75, XXREAL_0:2;
jj -' 1
<= jj
by NAT_D:35;
then
jj -' 1
< i0 + 1
by A76, XXREAL_0:2;
then
(ii0 + 1) - (jj -' 1) >= 0
by XREAL_1:50;
then (ii0 + 1) -' (jj -' 1) =
((i0 + 1) - j) + 1
by A74, XREAL_0:def 2
.=
((ii0 + 1) -' jj) + 1
by A58, XREAL_0:def 2
;
then A77:
ssn . ((ii0 + 1) -' (jj -' 1)) =
n2 mod (m2 * (2 |^ ((((ii0 + 1) -' jj) + 1) -' 1)))
by A11, A68, A12
.=
n2 mod (m2 * (2 |^ ((ii0 + 1) -' jj)))
by NAT_D:34
;
((ii0 + 1) -' jj) - 1
>= 0
by A50, A60, XREAL_1:50;
then A78:
((ii0 + 1) -' jj) -' 1 =
i0 - j
by A59, XREAL_0:def 2
.=
ii0 -' jj
by A51, XREAL_0:def 2
;
A79:
m2 * (2 |^ ((ii0 + 1) -' jj)) =
m2 * (2 |^ ((ii0 -' jj) + 1))
by A52, A58, XREAL_0:def 2
.=
m2 * ((2 |^ (ii0 -' jj)) * 2)
by NEWTON:11
.=
2
* (m2 * (2 |^ (ii0 -' jj)))
;
A80:
ssm . ((ii0 + 1) -' jj) = m2 * (2 |^ (ii0 -' jj))
by A7, A72, A78, A8;
2
|^ (ii0 -' jj) <> 0
by CARD_4:51;
then
2
|^ (ii0 -' jj) > 0
;
then A81:
m2 * (2 |^ (ii0 -' jj)) > m2 * 0
by A1, XREAL_1:70;
then A82:
(ssn . ((ii0 + 1) -' (jj -' 1))) - (ssm . ((ii0 + 1) -' jj)) = n2 mod (m2 * (2 |^ (ii0 -' jj)))
by A54, A61, A63, A77, A79, A80, Th2;
ppn . ((ii0 + 1) -' jj) =
n2 div (m2 * (2 |^ (((ii0 + 1) -' jj) -' 1)))
by A15, A72, A16
.=
((n2 div (m2 * (2 |^ (((ii0 + 1) -' (jj -' 1)) -' 1)))) * 2) + 1
by A54, A59, A64, A65, A77, A78, A79, A80, A81, Th3
.=
((ppn . ((ii0 + 1) -' (jj -' 1))) * 2) + 1
by A15, A68, A16
;
hence
(
ssn . ((i0 + 1) - j) = (ssn . ((i0 + 1) - (j - 1))) - (ssm . ((i0 + 1) - j)) &
ppn . ((i0 + 1) - j) = ((ppn . ((i0 + 1) - (j - 1))) * 2) + 1 )
by A59, A63, A70, A73, A82, XREAL_0:def 2;
:: thesis: verum
end;
thus
( not
ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j) implies (
ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) &
ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 ) )
:: thesis: verumproof
assume A83:
not
ssn . ((i0 + 1) - (j - 1)) >= ssm . ((i0 + 1) - j)
;
:: thesis: ( ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) & ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 )
A84:
jj -' 1
= j - 1
by A53, XREAL_0:def 2;
A85:
j + 1
<= i0 + 1
by A50, XREAL_1:9;
jj < jj + 1
by NAT_1:13;
then A86:
j < i0 + 1
by A85, XXREAL_0:2;
ii0 < ii0 + 1
by NAT_1:13;
then
j < i0 + 1
by A50, XXREAL_0:2;
then A87:
(i0 + 1) - j > 0
by XREAL_1:52;
then A88:
(ii0 + 1) -' jj = (i0 + 1) - j
by XREAL_0:def 2;
A89:
(ii0 + 1) -' jj = (i0 - j) + 1
by A87, XREAL_0:def 2;
jj -' 1
<= jj
by NAT_D:35;
then
jj -' 1
< i0 + 1
by A86, XXREAL_0:2;
then A90:
(i0 + 1) - (jj -' 1) >= 0
by XREAL_1:50;
then A91:
(ii0 + 1) -' (jj -' 1) = ((i0 + 1) - j) + 1
by A84, XREAL_0:def 2;
then A92:
((ii0 + 1) -' (jj -' 1)) -' 1
= (ii0 + 1) -' jj
by A88, NAT_D:34;
ii0 < ii0 + 1
by NAT_1:13;
then
j < i0 + 1
by A50, XXREAL_0:2;
then
(i0 + 1) - j >= 0
by XREAL_1:50;
then A93:
(ii0 + 1) -' jj = (i0 + 1) - j
by XREAL_0:def 2;
i0 + 1
<= n2 + j
by A24, A50, XREAL_1:9;
then
(i0 + 1) - j <= (n2 + j) - j
by XREAL_1:11;
then A94:
((ii0 + 1) -' jj) + 1
<= n2 + 1
by A93, XREAL_1:9;
1
<= (ii0 + 1) -' (jj -' 1)
by A88, A91, NAT_1:11;
then A95:
(ii0 + 1) -' (jj -' 1) in Seg (n2 + 1)
by A88, A91, A94, FINSEQ_1:3;
A96:
(ii0 + 1) -' jj >= 0 + 1
by A87, A88, NAT_1:13;
then
((ii0 + 1) -' jj) - 1
>= 0
by XREAL_1:50;
then A97:
((ii0 + 1) -' jj) -' 1
= i0 - j
by A88, XREAL_0:def 2;
A98:
(ii0 + 1) -' jj <= ii0 + 1
by NAT_D:35;
i0 + 1
<= n2 + 1
by A24, XREAL_1:9;
then
n2 + 1
>= (ii0 + 1) -' jj
by A98, XXREAL_0:2;
then A99:
(ii0 + 1) -' jj in Seg (n2 + 1)
by A96, FINSEQ_1:3;
then
ssn . ((ii0 + 1) -' jj) = n2 mod (m2 * (2 |^ (((ii0 + 1) -' jj) -' 1)))
by A11, A12;
then A100:
ssn . ((ii0 + 1) -' jj) = n2 mod (m2 * (2 |^ (ii0 -' jj)))
by A97, XREAL_0:def 2;
A101:
jj -' 1
= j - 1
by A53, XREAL_0:def 2;
A102:
j + 1
<= i0 + 1
by A50, XREAL_1:9;
jj < jj + 1
by NAT_1:13;
then A103:
j < i0 + 1
by A102, XXREAL_0:2;
jj -' 1
<= j
by NAT_D:35;
then
jj -' 1
< i0 + 1
by A103, XXREAL_0:2;
then
(i0 + 1) - (jj -' 1) >= 0
by XREAL_1:50;
then A104:
(ii0 + 1) -' (jj -' 1) = ((ii0 + 1) -' jj) + 1
by A88, A101, XREAL_0:def 2;
A105:
(ii0 + 1) -' (jj -' 1) = (i0 + 1) - (j - 1)
by A84, A90, XREAL_0:def 2;
A106:
ssn . ((ii0 + 1) -' (jj -' 1)) =
n2 mod (m2 * (2 |^ ((((ii0 + 1) -' jj) + 1) -' 1)))
by A11, A95, A104, A12
.=
n2 mod (m2 * (2 |^ ((ii0 + 1) -' jj)))
by NAT_D:34
;
A107:
((ii0 + 1) -' jj) -' 1 =
((i0 - j) + 1) - 1
by A51, A89, XREAL_0:def 2
.=
ii0 -' jj
by A51, XREAL_0:def 2
;
A108:
m2 * (2 |^ ((ii0 + 1) -' jj)) =
m2 * (2 |^ ((ii0 -' jj) + 1))
by A52, A87, XREAL_0:def 2
.=
m2 * ((2 |^ (ii0 -' jj)) * 2)
by NEWTON:11
.=
2
* (m2 * (2 |^ (ii0 -' jj)))
;
A109:
ssm . ((ii0 + 1) -' jj) = m2 * (2 |^ (ii0 -' jj))
by A7, A99, A107, A8;
ppn . ((ii0 + 1) -' jj) =
n2 div (m2 * (2 |^ (((ii0 + 1) -' jj) -' 1)))
by A15, A99, A16
.=
(n2 div (m2 * (2 |^ (((ii0 + 1) -' (jj -' 1)) -' 1)))) * 2
by A83, A88, A92, A105, A106, A107, A108, A109, Th5
.=
(ppn . ((ii0 + 1) -' (jj -' 1))) * 2
by A15, A95, A16
;
hence
(
ssn . ((i0 + 1) - j) = ssn . ((i0 + 1) - (j - 1)) &
ppn . ((i0 + 1) - j) = (ppn . ((i0 + 1) - (j - 1))) * 2 )
by A83, A88, A91, A100, A106, A108, A109, Th4;
:: thesis: verum
end;
end; hence
ex
sm,
sn,
pn being
FinSequence of
INT st
(
len sm = n + 1 &
len sn = n + 1 &
len pn = n + 1 & (
n < m implies
n2 div m2 = 0 ) & ( not
n < m implies (
sm . 1
= m & ex
i being
Integer st
( 1
<= i &
i <= n & ( for
k being
Integer st 1
<= k &
k < i holds
(
sm . (k + 1) = (sm . k) * 2 & not
sm . (k + 1) > n ) ) &
sm . (i + 1) = (sm . i) * 2 &
sm . (i + 1) > n &
pn . (i + 1) = 0 &
sn . (i + 1) = n & ( for
j being
Integer st 1
<= j &
j <= i holds
( (
sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies (
sn . ((i + 1) - j) = (sn . ((i + 1) - (j - 1))) - (sm . ((i + 1) - j)) &
pn . ((i + 1) - j) = ((pn . ((i + 1) - (j - 1))) * 2) + 1 ) ) & ( not
sn . ((i + 1) - (j - 1)) >= sm . ((i + 1) - j) implies (
sn . ((i + 1) - j) = sn . ((i + 1) - (j - 1)) &
pn . ((i + 1) - j) = (pn . ((i + 1) - (j - 1))) * 2 ) ) ) ) &
n2 div m2 = pn . 1 ) ) ) )
by A5, A7, A11, A15, A19, A20, A22, A24, A31, A40, A45, A49;
:: thesis: verum end; end; end;
hence
idiv1_prg n2,m2 = n2 div m2
by A1, Def1; :: thesis: verum