
theorem Th12:
  for x,y be Integer,
  b,m be non empty FinSequence of INT
  st
  2 <=len b
  &
  (for i,j be Nat st i in Seg (len b)
  & j in Seg len b
  & i <> j
  holds b.i,b.j are_coprime )
  &
  (for i be Nat st i in Seg len b holds x mod b.i = y mod b.i )
  &
  m.1 = 1 holds
  for k be Element of NAT st 1<= k & k <= len b &
  (for i be 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)
  proof
    let x,y be Integer,
    b,m be non empty FinSequence of INT;
    assume
    A1: 2 <=len b;
    assume
    A2: for i,j be Nat st i in Seg len b & j in Seg len b & i <> j
    holds b.i,b.j are_coprime;
    assume
    A3: for i be Nat st i in Seg len b holds x mod b.i = y mod b.i;
    assume A4: m.1 = 1;
    defpred P[Nat] means
    ( 1<= $1 & $1 <= len b
    &
    (for i be 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;
    A5:P[0];
A6:for k be Nat st P[k] holds P[k+1]
    proof
      let k be Nat;
      assume A7: P[k];
      assume A8: 1<= k+1 & k+1 <= len b &
      (for i be Nat st 1<=i & i <=k+1 holds m.(i+1) = m.i * b.i);
      A9: k <= k +1 by NAT_1:12;
      per cases;
      suppose k = 0; then
        A11: m.((k+1)+1) = m.1 * b.1 by A8
        .= b.1 by A4;
        1<= 1 & 1<= len b by NAT_1:14;
        then 1 in Seg len b;
        hence x mod m.((k+1)+1) = y mod m.((k+1)+1) by A11,A3;
      end;
      suppose A13:k <> 0;
        k+1 -1 <= len b -1 by A8,XREAL_1:9;
        then
        A14: 1<=k & k <= len b -1 by A13,NAT_1:14;
        A15: now let i be Nat;
        assume 1<=i & i <=k;
        then 1<=i & i <=(k +1) by NAT_1:12;
        hence m.(i+1) = m.i * b.i by A8;
      end;
      A16: m.((k+1)+1) = m.(k+1) * b.(k+1) by A8;
      k+1 in Seg len b by A8; then
      A17: x mod b.(k+1) = y mod b.(k+1) by A3;
      m.(k+1),b.(k+1) are_coprime by Lm16,A15,A14,A1,A2,A4,A8;
      hence x mod m.((k+1)+1) = y mod m.((k+1)+1)
        by A16,A17,A7,A13,A8,A9,A15,Lm18,NAT_1:14,XXREAL_0:2;
    end;
  end;
  for k be Nat holds P[k] from NAT_1:sch 2(A5,A6);
  hence thesis;
end;
