let u be integer-yielding FinSequence; :: thesis: for m being CR_Sequence
for z1, z2 being Integer st 0 <= z1 & z1 < Product m & ( for i being natural number st i in dom m holds
z1,u . i are_congruent_mod m . i ) & 0 <= z2 & z2 < Product m & ( for i being natural number st i in dom m holds
z2,u . i are_congruent_mod m . i ) holds
z1 = z2
let m be CR_Sequence; :: thesis: for z1, z2 being Integer st 0 <= z1 & z1 < Product m & ( for i being natural number st i in dom m holds
z1,u . i are_congruent_mod m . i ) & 0 <= z2 & z2 < Product m & ( for i being natural number st i in dom m holds
z2,u . i are_congruent_mod m . i ) holds
z1 = z2
let z1, z2 be Integer; :: thesis: ( 0 <= z1 & z1 < Product m & ( for i being natural number st i in dom m holds
z1,u . i are_congruent_mod m . i ) & 0 <= z2 & z2 < Product m & ( for i being natural number st i in dom m holds
z2,u . i are_congruent_mod m . i ) implies z1 = z2 )
assume AS2:
( 0 <= z1 & z1 < Product m & ( for i being natural number st i in dom m holds
z1,u . i are_congruent_mod m . i ) & 0 <= z2 & z2 < Product m & ( for i being natural number st i in dom m holds
z2,u . i are_congruent_mod m . i ) )
; :: thesis: z1 = z2
defpred S1[ Nat] means for m1 being CR_Sequence st m1 = m | $1 holds
z1,z2 are_congruent_mod Product m1;
A:
S1[ 0 ]
;
B:
now let k be
Element of
NAT ;
:: thesis: ( 0 <= k & k < len m & S1[k] implies S1[k + 1] )assume B0:
(
0 <= k &
k < len m )
;
:: thesis: ( S1[k] implies S1[k + 1] )assume B1:
S1[
k]
;
:: thesis: S1[k + 1]now let m1 be
CR_Sequence;
:: thesis: ( m1 = m | (k + 1) implies z1,z2 are_congruent_mod Product b1 )assume C0:
m1 = m | (k + 1)
;
:: thesis: z1,z2 are_congruent_mod Product b1set m2 =
m | k;
C7:
k + 1
<= len m
by B0, NAT_1:13;
then C6:
len m1 = k + 1
by C0, FINSEQ_1:80;
C5:
1
<= k + 1
by NAT_1:11;
then C8:
(
k + 1
in Seg (len m1) &
k + 1
in Seg (len m) )
by C6, C7;
C1:
(
k + 1
in dom m1 &
k + 1
in dom m )
by C8, FINSEQ_1:def 3;
per cases
( k > 0 or k = 0 )
;
suppose
k > 0
;
:: thesis: z1,z2 are_congruent_mod Product b1then reconsider m2 =
m | k as
CR_Sequence by B0, CRsub;
B2:
z1,
z2 are_congruent_mod Product m2
by B1;
B5:
m . (k + 1) = m1 . (k + 1)
by C1, C0, FUNCT_1:70;
m . (k + 1) in rng m
by C1, FUNCT_1:12;
then B4:
m1 . (k + 1) > 0
by B5, PARTFUN3:def 1;
set mm =
(Product m1) / (m1 . (k + 1));
reconsider mm =
(Product m1) / (m1 . (k + 1)) as
Integer by prodint, C1;
reconsider m' =
m as
FinSequence of
INT by intint;
(m' | (k + 1)) | k = m' | k
by FINSEQ_1:103, NAT_1:11;
then
m1 = m2 ^ <*(m1 . (k + 1))*>
by C0, C6, FINSEQ_3:61;
then
Product m1 = (Product m2) * (m1 . (k + 1))
by RVSUM_1:126;
then
mm = (Product m2) * ((m1 . (k + 1)) * ((m1 . (k + 1)) " ))
;
then C3:
mm = (Product m2) * 1
by B4, XCMPLX_0:def 7;
B3:
z1,
z2 are_congruent_mod m1 . (k + 1)
by B5, C1, H;
mm * (m1 . (k + 1)) =
(Product m1) * (((m1 . (k + 1)) " ) * (m1 . (k + 1)))
.=
(Product m1) * 1
by B4, XCMPLX_0:def 7
.=
Product m1
;
hence
z1,
z2 are_congruent_mod Product m1
by B3, C3, B2, x1a, C1, prodgcd;
:: thesis: verum end; end; end; hence
S1[
k + 1]
;
:: thesis: verum end;
I:
for k being Element of NAT st 0 <= k & k <= len m holds
S1[k]
from POLYNOM2:sch 4(A, B);
m | (len m) = m
by FINSEQ_1:79;
then A:
z1,z2 are_congruent_mod Product m
by I;
thus z1 =
z1 mod (Product m)
by AS2, INT_3:10
.=
z2 mod (Product m)
by A, INT_3:12
.=
z2
by AS2, INT_3:10
; :: thesis: verum