let m be CR_Sequence; :: thesis: for i being natural number st i in dom m holds
for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime

let i be natural number ; :: thesis: ( i in dom m implies for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime )

assume AS1: i in dom m ; :: thesis: for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime

let mm be Integer; :: thesis: ( mm = (Product m) / (m . i) implies mm,m . i are_relative_prime )
assume AS2: mm = (Product m) / (m . i) ; :: thesis: mm,m . i are_relative_prime
set k = mm gcd (m . i);
defpred S1[ Nat] means for m being CR_Sequence st len m = $1 holds
for i being natural number st i in dom m holds
for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime ;
now
let m be integer-yielding FinSequence; :: thesis: ( len m = 0 implies for i being natural number st i in dom m holds
for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime )

assume A: len m = 0 ; :: thesis: for i being natural number st i in dom m holds
for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime

let i be natural number ; :: thesis: ( i in dom m implies for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime )

assume B: i in dom m ; :: thesis: for mm being Integer st mm = (Product m) / (m . i) holds
mm,m . i are_relative_prime

let mm be Integer; :: thesis: ( mm = (Product m) / (m . i) implies mm,m . i are_relative_prime )
assume mm = (Product m) / (m . i) ; :: thesis: mm,m . i are_relative_prime
m = <*> REAL by A, FINSEQ_1:32;
hence mm,m . i are_relative_prime by B; :: thesis: verum
end;
then A: S1[ 0 ] ;
B: now
let k be Element of NAT ; :: thesis: ( S1[k] implies S1[k + 1] )
assume B1: S1[k] ; :: thesis: S1[k + 1]
now
let m be CR_Sequence; :: thesis: ( len m = k + 1 implies for i' being natural number st i' in dom m holds
for mm being Integer st mm = (Product m) / (m . i') holds
b5,b3 . b4 are_relative_prime )

assume A: len m = k + 1 ; :: thesis: for i' being natural number st i' in dom m holds
for mm being Integer st mm = (Product m) / (m . i') holds
b5,b3 . b4 are_relative_prime

let i' be natural number ; :: thesis: ( i' in dom m implies for mm being Integer st mm = (Product m) / (m . i') holds
b4,b2 . b3 are_relative_prime )

assume B: i' in dom m ; :: thesis: for mm being Integer st mm = (Product m) / (m . i') holds
b4,b2 . b3 are_relative_prime

reconsider i = i' as Element of NAT by ORDINAL1:def 13;
let mm be Integer; :: thesis: ( mm = (Product m) / (m . i') implies b3,b1 . b2 are_relative_prime )
assume M: mm = (Product m) / (m . i') ; :: thesis: b3,b1 . b2 are_relative_prime
set m1 = m | k;
C4: i in Seg (k + 1) by A, B, FINSEQ_1:def 3;
then C5: ( 1 <= i & i <= k + 1 ) by FINSEQ_1:3;
Y: len (m | k) = k by A, FINSEQ_1:80, NAT_1:11;
1 <= k + 1 by NAT_1:11;
then k + 1 in Seg (k + 1) ;
then G: k + 1 in dom m by A, FINSEQ_1:def 3;
F: (m | k) ^ <*(m . (k + 1))*> = m | (k + 1) by A, th67
.= m by A, FINSEQ_1:79 ;
per cases ( k > 0 or k = 0 ) ;
suppose k > 0 ; :: thesis: b3,b1 . b2 are_relative_prime
then reconsider m1 = m | k as CR_Sequence by A, CRsub, NAT_1:11;
per cases ( i in dom m1 or not i in dom m1 ) ;
suppose E: i in dom m1 ; :: thesis: b3,b1 . b2 are_relative_prime
then E1: m1 . i = m . i by FUNCT_1:70;
reconsider mm1 = (Product m1) / (m1 . i) as Integer by E, prodint;
i in Seg k by E, Y, FINSEQ_1:def 3;
then ( 1 <= i & i <= k ) by FINSEQ_1:3;
then E2: i <> k + 1 by NAT_1:13;
X: m . i,m . (k + 1) are_relative_prime by E2, B, G, DefCR;
mm1,m . i are_relative_prime by E1, E, Y, B1;
then E3: (m . i) gcd (mm1 * (m . (k + 1))) = (m . i) gcd (m . (k + 1)) by thgcd2
.= 1 by X, INT_2:def 4 ;
mm1 * (m . (k + 1)) = ((Product m1) * (m . (k + 1))) * ((m . i) " ) by E1
.= mm by F, M, RVSUM_1:126 ;
hence mm,m . i' are_relative_prime by E3, INT_2:def 4; :: thesis: verum
end;
suppose not i in dom m1 ; :: thesis: b3,b1 . b2 are_relative_prime
then not i in Seg k by Y, FINSEQ_1:def 3;
then ( not 1 <= i or not i <= k ) ;
then not i < k + 1 by C4, FINSEQ_1:3, NAT_1:13;
then D0: i = k + 1 by C5, XXREAL_0:1;
m . (k + 1) in rng m by G, FUNCT_1:12;
then D1: m . (k + 1) > 0 by PARTFUN3:def 1;
defpred S2[ Nat] means ( $1 <= len m1 implies for s being Element of NAT st s = $1 holds
Product (m1 | s),m . (k + 1) are_relative_prime );
m1 | 0 is empty ;
then Q1: S2[ 0 ] by RVSUM_1:124, WSIERP_1:14;
Q2: now
let j be Element of NAT ; :: thesis: ( 0 <= j & j < len m1 & S2[j] implies S2[j + 1] )
assume Q3: ( 0 <= j & j < len m1 ) ; :: thesis: ( S2[j] implies S2[j + 1] )
assume Q4: S2[j] ; :: thesis: S2[j + 1]
now
assume Q8: j + 1 <= len m1 ; :: thesis: S2[j + 1]
then j + 1 <= k by A, FINSEQ_1:80, NAT_1:11;
then Q5: j + 1 <> k + 1 by NAT_1:13;
Q7: 0 + 1 <= j + 1 by XREAL_1:8;
j + 1 <= len m by A, Y, Q3, XREAL_1:10;
then j + 1 in Seg (len m) by Q7;
then Q6: j + 1 in dom m by FINSEQ_1:def 3;
j + 1 in Seg (len m1) by Q7, Q8;
then Q9: j + 1 in dom m1 by FINSEQ_1:def 3;
now
let s be Element of NAT ; :: thesis: ( s = j + 1 implies Product (m1 | s),m . (k + 1) are_relative_prime )
assume QX: s = j + 1 ; :: thesis: Product (m1 | s),m . (k + 1) are_relative_prime
reconsider s' = j as Element of NAT ;
X: m . (j + 1),m . (k + 1) are_relative_prime by DefCR, Q5, G, Q6;
j <= j + 1 by NAT_1:11;
then Product (m1 | s'),m . (k + 1) are_relative_prime by Q4, Q8, XXREAL_0:2;
then QQ: ((Product (m1 | s')) * (m . (j + 1))) gcd (m . (k + 1)) = (m . (j + 1)) gcd (m . (k + 1)) by thgcd2
.= 1 by X, INT_2:def 4 ;
Q10: m1 . (j + 1) = m . (j + 1) by Q9, FUNCT_1:70;
(m1 | s') ^ <*(m1 . s)*> = m1 | s by QX, Q8, th67;
then (Product (m1 | s)) gcd (m . (k + 1)) = 1 by QX, QQ, Q10, RVSUM_1:126;
hence Product (m1 | s),m . (k + 1) are_relative_prime by INT_2:def 4; :: thesis: verum
end;
hence S2[j + 1] ; :: thesis: verum
end;
hence S2[j + 1] ; :: thesis: verum
end;
Q3: for j being Element of NAT st 0 <= j & j <= len m1 holds
S2[j] from POLYNOM2:sch 4(Q1, Q2);
D2: m1 | (len m1) = m1 by FINSEQ_1:79;
mm = ((Product m1) * (m . (k + 1))) * ((m . (k + 1)) " ) by M, D0, F, RVSUM_1:126
.= (Product m1) * ((m . (k + 1)) * ((m . (k + 1)) " ))
.= (Product m1) * 1 by D1, XCMPLX_0:def 7 ;
hence mm,m . i' are_relative_prime by D2, Q3, D0; :: thesis: verum
end;
end;
end;
end;
end;
hence S1[k + 1] ; :: thesis: verum
end;
I: for k being Element of NAT holds S1[k] from NAT_1:sch 1(A, B);
consider l being Element of NAT such that
H: len m = l ;
thus mm,m . i are_relative_prime by I, H, AS1, AS2; :: thesis: verum