reserve x,y,z for object, X for set, I for non empty set, i,j for Element of I,
    M0 for multMagma-yielding Function,
    M for non empty multMagma-yielding Function,
    M1, M2, M3 for non empty multMagma,
    G for Group-like multMagma-Family of I,
    H for Group-like associative multMagma-Family of I;
reserve p, q for FinSequence of FreeAtoms(H), g,h for Element of H.i,
  k for Nat;
reserve s,t for Element of FreeProduct(H);

theorem Th72:
  Product factorization(s) = s
proof
  defpred P[Nat] means for s being Element of FreeProduct(H)
    st len nf s = $1 holds Product factorization(s) = s;
  A1: P[0]
  proof
    let s be Element of FreeProduct(H);
    assume len nf s = 0;
    then A2: s = 1_FreeProduct(H) by Th63;
    hence Product factorization(s)
       = Product <*>the carrier of FreeProduct(H) by Th68
      .= s by A2, GROUP_4:8;
  end;
  A3: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat;
    assume A4: P[k];
    let s be Element of FreeProduct(H);
    assume A5: len nf s = k + 1;
    then k + 0 <= len nf s by XREAL_1:6;
    then consider s1, s2 being Element of FreeProduct(H) such that
      A6: s = s1 * s2 & nf s = (nf s1)^nf s2 & len nf s1 = k by Th67;
    len nf s = len nf s1 + len nf s2 by A6, FINSEQ_1:22;
    then A7: 1 = len nf s2 by A5, A6;
    then consider i, g such that
      A8: g <> 1_(H.i) & s2 = [* i, g *] by Th65;
    reconsider r = <*s2*> as FinSequence of FreeProduct(H);
    per cases;
    suppose len nf s1 <> 0;
      then A9: ((nf s1).len nf s1)`1 <> ((nf s2).1)`1
        by A6, A7, Def7, Th44;
      thus Product factorization(s)
         = Product(factorization(s1)^factorization(s2)) by A6, A9, Th70
        .= Product(factorization(s1))*Product(factorization(s2)) by GROUP_4:5
        .= s1*Product(factorization(s2)) by A4, A6
        .= s1*Product r by A8, Th69
        .= s by A6, GROUP_4:9;
    end;
    suppose len nf s1 = 0;
      then A10: s1 = 1_FreeProduct(H) by Th63;
      thus Product factorization(s)
         = Product(factorization(s2)) by A6, A10, GROUP_1:def 4
        .= Product r by A8, Th69
        .= s2 by GROUP_4:9
        .= s by A6, A10, GROUP_1:def 4;
    end;
  end;
  for k being Nat holds P[k] from NAT_1:sch 2(A1,A3);
  then P[len nf s];
  hence thesis;
end;
