 reserve n,i for Nat;
 reserve p for Prime;

theorem MB150T:
  for m, n being non zero Nat st
    m, n are_coprime holds
      TSqFactors (m * n) = TSqFactors m + TSqFactors n
  proof
    let a, b be non zero Nat;
    reconsider an = a, bn = b as non zero Nat;
    assume
A1: a, b are_coprime;
    deffunc F(non zero Nat) = TSqFactors $1;
    now
      let i be object;
      assume i in SetPrimes;
      then reconsider p = i as Prime by NEWTON:def 6;
A2:   p |-count (an*bn) = (p |-count a) + (p |-count b) by NAT_3:28;
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 (F(a*b)).i = 0 by A5,MB148T
          .= 0 + (F(b)).i by A6,MB148T
          .= (F(a)).i + (F(b)).i by A7,MB148T
          .= (F(a) + F(b)).i by PRE_POLY:def 5;
      end;
      suppose
A8:     p |-count (a*b) <> 0;
        thus (F(a*b)).i = (F(a) + F(b)).i
        proof
          per cases by A2,A8;
          suppose
A9:       (p |-count a) <> 0;
A10:      (p |-count b) = 0
          proof
            consider ka being Nat such that
A11:        (p |-count a) = ka+1 by A9,NAT_1:6;
            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;
            a = p*((p|^ka)*la) by A12; then
A13:        p divides a;
            assume (p |-count b) <> 0;
            then consider kb being Nat such that
A14:        (p |-count b) = kb+1 by NAT_1:6;
            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;
            b = p*((p|^kb)*lb) by A15;
            then p divides b;
            then p divides 1 by A1,A13,NAT_D:def 5;
            hence contradiction by INT_2:def 4,NAT_D:7;
          end;
          thus (F(a*b)).i = p |^ (2 * ((p |-count (a*b)) div 2)) by A8,MB149T
            .= (F(a)).p + 0 by A9,MB149T,A10,A2
            .= (F(a)).p + (F(b)).p by A10,MB148T
            .= (F(a) + F(b)).i by PRE_POLY:def 5;
        end;
        suppose
A16:      (p |-count b) <> 0;
A17:      (p |-count a) = 0
          proof
            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;
            a = p*((p|^ka)*la) by A19; then
A20:        p divides a;
            consider kb being Nat such that
A21:        (p |-count b) = kb+1 by A16,NAT_1:6;
            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;
            b = p*((p|^kb)*lb) by A22;
            then p divides b;
            then p divides 1 by A1,A20,NAT_D:def 5;
            hence contradiction by INT_2:def 4,NAT_D:7;
          end;
          thus (F(a*b)).i = p |^ (2 * ((p |-count (a*b)) div 2)) by A8,MB149T
            .= 0+(F(b)).p by A16,MB149T,A17,A2
            .= (F(a)).p + (F(b)).p by A17,MB148T
            .= (F(a) + F(b)).i by PRE_POLY:def 5;
        end;
      end;
    end;
  end;
  hence thesis by PBOOLE:3;
end;
