reserve i,i1,i2,i3,i4,i5,j,r,a,b,x,y for Integer,
  d,e,k,n for Nat,
  fp,fk for FinSequence of INT,
  f,f1,f2 for FinSequence of REAL,
  p for Prime;
reserve fr for FinSequence of REAL;
reserve fr,f for FinSequence of INT;
reserve b,m for Nat;
reserve b for Integer;
reserve m for Integer;

theorem Th32:
  for f,fr st len f = len fr & (for d st d in dom f holds f.d,fr.d
  are_congruent_mod m) holds Product f,Product fr are_congruent_mod m
proof
  defpred P[Nat] means for f,fr st len f =$1 & len f=len fr & (for d st d in
  dom f holds f.d,fr.d are_congruent_mod m) holds Product f,Product fr
  are_congruent_mod m;
A1: for n be Nat st P[n] holds P[n+1]
  proof
    let n be Nat;
    assume
A2: P[n];
    P[n+1]
    proof
      let f,fr;
      assume that
A3:   len f = n+1 and
A4:   len f = len fr and
A5:   for d st d in dom f holds f.d,fr.d are_congruent_mod m;
      consider fr1 being FinSequence of INT,b being Element of INT such that
A6:   fr = fr1^<*b*> by A3,A4,FINSEQ_2:19;
      f <> {} by A3; then
A7:   (n+1) in dom f by A3,FINSEQ_5:6;
      consider f1 being FinSequence of INT,a being Element of INT such that
A8:   f = f1^<*a*> by A3,FINSEQ_2:19;
A9:   n+1 = len fr1 +1 by A3,A4,A6,FINSEQ_2:16; then
A10:  fr.(n+1) = b by A6,FINSEQ_1:42;
A11:  n+1 = len f1 +1 by A3,A8,FINSEQ_2:16; then
A12:  dom f1 = dom fr1 by A9,FINSEQ_3:29;
      for d st d in dom f1 holds f1.d,fr1.d are_congruent_mod m
      proof
        let d;
        assume
A13:    d in dom f1; then
A14:    f.d = f1.d by A8,FINSEQ_1:def 7;
        fr.d = fr1.d by A6,A12,A13,FINSEQ_1:def 7;
        hence thesis by A5,A8,A13,A14,FINSEQ_2:15;
      end;
      then
A15:  Product f1,Product fr1 are_congruent_mod m by A2,A11,A9;
      f.(n+1) = a by A8,A11,FINSEQ_1:42;
      then a,b are_congruent_mod m by A5,A7,A10;
      then (Product f1)*a,(Product fr1)*b are_congruent_mod m by A15,INT_1:18;
      then Product f,(Product fr1)*b are_congruent_mod m by A8,RVSUM_1:96;
      hence thesis by A6,RVSUM_1:96;
    end;
    hence thesis;
  end;
A16: P[0]
  proof
    let f,fr;
    assume that
A17: len f = 0 and
A18: len f = len fr;
A19: f = <*>INT by A17;
    fr = <*>INT by A17,A18;
    hence thesis by A19,INT_1:11;
  end;
  for n be Nat holds P[n] from NAT_1:sch 2(A16,A1);
  hence thesis;
end;
