let x, y be Element of INT ; for b, m being non empty FinSequence of INT st 2 <= len b & ( for i, j being Nat st i in Seg (len b) & j in Seg (len b) & i <> j holds
b . i,b . j are_relative_prime ) & ( for i being Nat st i in Seg (len b) holds
x mod (b . i) = y mod (b . i) ) & m . 1 = 1 holds
for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1))
let b, m be non empty FinSequence of INT ; ( 2 <= len b & ( for i, j being Nat st i in Seg (len b) & j in Seg (len b) & i <> j holds
b . i,b . j are_relative_prime ) & ( for i being Nat st i in Seg (len b) holds
x mod (b . i) = y mod (b . i) ) & m . 1 = 1 implies for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1)) )
assume A1:
2 <= len b
; ( ex i, j being Nat st
( i in Seg (len b) & j in Seg (len b) & i <> j & not b . i,b . j are_relative_prime ) or ex i being Nat st
( i in Seg (len b) & not x mod (b . i) = y mod (b . i) ) or not m . 1 = 1 or for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1)) )
assume A4:
for i, j being Nat st i in Seg (len b) & j in Seg (len b) & i <> j holds
b . i,b . j are_relative_prime
; ( ex i being Nat st
( i in Seg (len b) & not x mod (b . i) = y mod (b . i) ) or not m . 1 = 1 or for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1)) )
assume A2:
for i being Nat st i in Seg (len b) holds
x mod (b . i) = y mod (b . i)
; ( not m . 1 = 1 or for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1)) )
assume A3:
m . 1 = 1
; for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1))
defpred S1[ Nat] means ( 1 <= $1 & $1 <= len b & ( for i being Nat st 1 <= i & i <= $1 holds
m . (i + 1) = (m . i) * (b . i) ) implies x mod (m . ($1 + 1)) = y mod (m . ($1 + 1)) );
reconsider I0 = 0 as Element of NAT ;
P0:
S1[ 0 ]
;
P1:
for k being Element of NAT st S1[k] holds
S1[k + 1]
proof
let k be
Element of
NAT ;
( S1[k] implies S1[k + 1] )
assume P11:
S1[
k]
;
S1[k + 1]
assume P12:
( 1
<= k + 1 &
k + 1
<= len b & ( for
i being
Nat st 1
<= i &
i <= k + 1 holds
m . (i + 1) = (m . i) * (b . i) ) )
;
x mod (m . ((k + 1) + 1)) = y mod (m . ((k + 1) + 1))
P14:
k <= k + 1
by NAT_1:12;
per cases
( k = 0 or k <> 0 )
;
suppose P181:
k <> 0
;
x mod (m . ((k + 1) + 1)) = y mod (m . ((k + 1) + 1))
(k + 1) - 1
<= (len b) - 1
by P12, XREAL_1:9;
then P19:
( 1
<= k &
k <= (len b) - 1 )
by P181, NAT_1:14;
XX1:
now for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i)let i be
Nat;
( 1 <= i & i <= k implies m . (i + 1) = (m . i) * (b . i) )assume
( 1
<= i &
i <= k )
;
m . (i + 1) = (m . i) * (b . i)then
( 1
<= i &
i <= k + 1 )
by NAT_1:12;
hence
m . (i + 1) = (m . i) * (b . i)
by P12;
verum end; P22:
m . ((k + 1) + 1) = (m . (k + 1)) * (b . (k + 1))
by P12;
k + 1
in Seg (len b)
by P12;
then P23:
x mod (b . (k + 1)) = y mod (b . (k + 1))
by A2;
P24:
m . (k + 1),
b . (k + 1) are_relative_prime
by LmTh5, XX1, P19, A1, A4, A3, P12;
(
m . (k + 1) is
Element of
INT &
b . (k + 1) is
Element of
INT )
by INT_1:def 2;
hence
x mod (m . ((k + 1) + 1)) = y mod (m . ((k + 1) + 1))
by P22, P23, P11, NAT_1:14, P181, P12, P14, XXREAL_0:2, XX1, P24, LmTh7A;
verum end; end;
end;
for k being Element of NAT holds S1[k]
from NAT_1:sch 1(P0, P1);
hence
for k being Element of NAT st 1 <= k & k <= len b & ( for i being Nat st 1 <= i & i <= k holds
m . (i + 1) = (m . i) * (b . i) ) holds
x mod (m . (k + 1)) = y mod (m . (k + 1))
; verum