reserve m, n for Nat;

theorem Th50:
  for m, n being non zero Nat st m, n are_coprime holds
  PFactors (m * n) = PFactors m + PFactors n
proof
  let a, b be non zero Nat;
  reconsider an = a, bn = b as non zero Nat;
  assume
A1: a, b are_coprime;
  now
    let i be object;
    assume i in SetPrimes;
    then reconsider p = i as prime Element of NAT by NEWTON:def 6;
A2: p |-count (an*bn) = (p |-count a) + (p |-count b) by NAT_3:28;
A3: a gcd b = 1 by A1,INT_2:def 3;
A4: p > 1 by INT_2:def 4;
    per cases;
    suppose
A5:   p |-count (a*b) = 0;
      then
A6:   (p |-count b) = 0 by A2;
A7:   (p |-count a) = 0 by A2,A5;
      thus (PFactors (a*b)).i = 0 by A5,Th48
        .= 0 + (PFactors b).i by A6,Th48
        .= (PFactors a).i + (PFactors b).i by A7,Th48
        .= (PFactors a + PFactors b).i by PRE_POLY:def 5;
    end;
    suppose
A8:   p |-count (a*b) <> 0;
      thus (PFactors (a*b)).i = (PFactors a + PFactors b).i
      proof
        per cases by A2,A8;
        suppose
A9:       (p |-count a) <> 0;
A10:      now
            consider ka being Nat such that
A11:        (p |-count a) = ka+1 by A9,NAT_1:6;
            reconsider ka as Element of NAT by ORDINAL1:def 12;
            p |^ (p |-count a) divides a by A4,NAT_3:def 7;
            then p*(p|^ka) divides a by A11,NEWTON:6;
            then consider la being Nat such that
A12:        a = p*(p|^ka)*la by NAT_D:def 3;
            a = p*((p|^ka)*la) by A12;
            then
A13:        p divides a by NAT_D:def 3;
            assume (p |-count b) <> 0;
            then consider kb being Nat such that
A14:        (p |-count b) = kb+1 by NAT_1:6;
            reconsider kb as Element of NAT by ORDINAL1:def 12;
            p |^ (p |-count b) divides b by A4,NAT_3:def 7;
            then p*(p|^kb) divides b by A14,NEWTON:6;
            then consider lb being Nat such that
A15:        b = p*(p|^kb)*lb by NAT_D:def 3;
            b = p*((p|^kb)*lb) by A15;
            then p divides b by NAT_D:def 3;
            then p divides 1 by A3,A13,NAT_D:def 5;
            hence contradiction by A4,NAT_D:7;
          end;
          thus (PFactors (a*b)).i = p by A8,Th49
            .= (PFactors a).p + 0 by A9,Th49
            .= (PFactors a).p + (PFactors b).p by A10,Th48
            .= (PFactors a + PFactors b).i by PRE_POLY:def 5;
        end;
        suppose
A16:      (p |-count b) <> 0;
A17:      now
            assume (p |-count a) <> 0;
            then consider ka being Nat such that
A18:        (p |-count a) = ka+1 by NAT_1:6;
            reconsider ka as Element of NAT by ORDINAL1:def 12;
            p |^ (p |-count a) divides a by A4,NAT_3:def 7;
            then p*(p|^ka) divides a by A18,NEWTON:6;
            then consider la being Nat such that
A19:        a = p*(p|^ka)*la by NAT_D:def 3;
            a = p*((p|^ka)*la) by A19;
            then
A20:        p divides a by NAT_D:def 3;
            consider kb being Nat such that
A21:        (p |-count b) = kb+1 by A16,NAT_1:6;
            reconsider kb as Element of NAT by ORDINAL1:def 12;
            p |^ (p |-count b) divides b by A4,NAT_3:def 7;
            then p*(p|^kb) divides b by A21,NEWTON:6;
            then consider lb being Nat such that
A22:        b = p*(p|^kb)*lb by NAT_D:def 3;
            b = p*((p|^kb)*lb) by A22;
            then p divides b by NAT_D:def 3;
            then p divides 1 by A3,A20,NAT_D:def 5;
            hence contradiction by A4,NAT_D:7;
          end;
          thus (PFactors (a*b)).i = p by A8,Th49
            .= 0+(PFactors b).p by A16,Th49
            .= (PFactors a).p + (PFactors b).p by A17,Th48
            .= (PFactors a + PFactors b).i by PRE_POLY:def 5;
        end;
      end;
    end;
  end;
  hence thesis by PBOOLE:3;
end;
