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 Th25:
  for s,t being non zero Nat st s,t are_coprime holds
  (EmptyBag SetPrimes +* Euler_factorization(s*t)) =
  (EmptyBag SetPrimes +* Euler_factorization s) +
  (EmptyBag SetPrimes +* Euler_factorization t)
  proof
    let s,t be non zero Nat such that
A1: s,t are_coprime;
    set n = s*t;
    set N = Euler_factorization n;
    set S = Euler_factorization s;
    set T = Euler_factorization t;
    for x being object st x in SetPrimes holds (B+*N).x = (B+*S).x+(B+*T).x
    proof
      let x be object;
      assume x in SetPrimes;
      then
      reconsider p = x as Prime by NEWTON:def 6;
A2:   p |-count n = (p |-count s) + (p |-count t) by NAT_3:28;
A3:   dom S = support ppf s by Def1;
A4:   dom T = support ppf t by Def1;
A5:   dom N = support ppf n by Def1;
      ppf n = ppf s + ppf t by A1,NAT_3:58;
      then
A6:   dom N = dom S \/ dom T by A3,A4,A5,PRE_POLY:38;
      per cases;
      suppose
A7:     x in dom S;
        then
A8:    not x in dom T by A1,Th24,XBOOLE_0:3;
        then
A9:    (B+*T).x = B.x by FUNCT_4:11;
A10:    p |-count t = 0 by A4,A8,MOEBIUS1:15;
A11:    x in dom N by A6,A7,XBOOLE_0:def 3;
        then
A12:    ex c being non zero Nat st c = p |-count n & N.p = p|^c - p|^(c-1)
        by Def1;
        ex c being non zero Nat st c = p |-count s & S.p = p|^c - p|^(c-1)
        by A7,Def1;
        hence (B+*S).x+(B+*T).x = N.x by A2,A7,A9,A10,A12,FUNCT_4:13
        .= (B+*N).x by A11,FUNCT_4:13;
      end;
      suppose
A13:    x in dom T;
A14:    not x in dom S by A1,A13,Th24,XBOOLE_0:3;
        then
A15:    (B+*S).x = B.x by FUNCT_4:11;
A16:    p |-count s = 0 by A3,A14,MOEBIUS1:15;
A17:    x in dom N by A6,A13,XBOOLE_0:def 3;
        then
A18:    ex c being non zero Nat st c = p |-count n & N.p = p|^c - p|^(c-1)
        by Def1;
        ex c being non zero Nat st c = p |-count t & T.p = p|^c - p|^(c-1)
        by A13,Def1;
        hence (B+*S).x+(B+*T).x = N.x by A2,A13,A15,A16,A18,FUNCT_4:13
        .= (B+*N).x by A17,FUNCT_4:13;
      end;
      suppose
A19:    not x in dom S & not x in dom T;
        then
A20:    not x in dom N by A6,XBOOLE_0:def 3;
        (B+*S).x = B.x & (B+*T).x = B.x by A19,FUNCT_4:11;
        hence (B+*N).x = (B+*S).x+(B+*T).x by A20,FUNCT_4:11;
      end;
    end;
    hence thesis by PRE_POLY:33;
  end;
