reserve X for set;
reserve a,b,c,k,m,n for Nat;
reserve i,j for Integer;
reserve r,s for Real;
reserve p,p1,p2,p3 for Prime;

theorem Th16:
  for b1,b2 being finite-support complex-valued ManySortedSet of X st
  support b1 = support b2 holds Product(b1(#)b2) = Product(b1) * Product(b2)
  proof
    let b1,b2 be finite-support complex-valued ManySortedSet of X;
    set b0 = b1(#)b2;
    assume
A1: support b1 = support b2;
A2: support b0 = support b1 by A1,Th15;
A3: support b0 = support b2 by A1,Th15;
    consider f0 being FinSequence of COMPLEX such that
A4: Product b0 = Product f0 and
A5: f0 = b0*canFS(support b0) by NAT_3:def 5;
    consider f1 being FinSequence of COMPLEX such that
A6: Product b1 = Product f1 and
A7: f1 = b1*canFS(support b1) by NAT_3:def 5;
    consider f2 being FinSequence of COMPLEX such that
A8: Product b2 = Product f2 and
A9: f2 = b2*canFS(support b2) by NAT_3:def 5;
A10: f1 is (len f1)-element by CARD_1:def 7;
A11: f2 is (len f2)-element by CARD_1:def 7;
A12: dom(b0*canFS(support b0)) = dom canFS(support b0) by Th13;
    then
A13: dom f0 = dom f1 by A2,A5,A7,Th13;
    then
A14: len f0 = len f1 by FINSEQ_3:29;
A15: dom f0 = dom f2 by A3,A5,A9,A12,Th13;
    then
A16: len f0 = len f2 by FINSEQ_3:29;
A17: dom f0 = dom f1 /\ dom f2 by A13,A15;
    for c being object st c in dom f0 holds f0.c = f1.c * f2.c
    proof
      let c be object such that
A18:  c in dom f0;
      set x = (canFS(support b0)).c;
A19:  f1.c = b1.x by A2,A7,A13,A18,FUNCT_1:12;
A20:  f2.c = b2.x by A3,A9,A15,A18,FUNCT_1:12;
      thus f0.c = b0.x by A5,A18,FUNCT_1:12
      .= f1.c * f2.c by A19,A20,VALUED_1:5;
    end;
    then f0 = f1(#)f2 by A17,VALUED_1:def 4;
    hence thesis by A4,A6,A8,A10,A11,A14,A16,NEWTON04:63;
  end;
