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 Th57:
  I is trivial implies injection(H,i) is bijective
proof
  assume A1: I is trivial;
  now
    let Z be object;
    assume Z in the carrier of FreeProduct(H);
    then consider p being Element of FreeAtoms(H)*+^+<0> such that
      A2: Z = Class(EqCl ReductionRel(H),p) by EQREL_1:36;
    p in the carrier of FreeAtoms(H)*+^+<0>;
    then p in FreeAtoms(H)* by MONOID_0:61;
    then reconsider p as FinSequence of FreeAtoms(H) by FINSEQ_1:def 11;
    per cases;
    suppose p is non empty;
      then consider g being Element of H.i such that
        A3: ReductionRel(H) reduces p,<*[i,g]*> by A1, Th42;
      [i,g] in FreeAtoms(H) by Th9;
      then reconsider s = <*[i,g]*> as FinSequence of FreeAtoms(H)
        by FINSEQ_1:74;
      s in FreeAtoms(H)* by FINSEQ_1:def 11;
      then A4: s in the carrier of FreeAtoms(H)*+^+<0> by MONOID_0:61;
      dom injection(H,i) = the carrier of (H.i) by FUNCT_2:def 1;
      then A5: g in dom injection(H,i);
      p,s are_convertible_wrt ReductionRel(H) by A3, REWRITE1:25;
      then [p,s] in EqCl ReductionRel(H) by A4, MSUALG_6:41;
      then Z = [* i,g *] by A2, EQREL_1:35
        .= injection(H,i).g by Th56;
      hence Z in rng injection(H,i) by A5, FUNCT_1:3;
    end;
    suppose p is empty;
      then A6: Z = 1_FreeProduct(H) by A2, Th45
        .= [* i,1_(H.i) *] by Th49
        .= injection(H,i).1_(H.i) by Th56;
      dom injection(H,i) = the carrier of H.i by FUNCT_2:def 1;
      hence Z in rng injection(H,i) by A6, FUNCT_1:3;
    end;
  end;
  then the carrier of FreeProduct(H) c= rng injection(H,i) by TARSKI:def 3;
  then injection(H,i) is onto by XBOOLE_0:def 10, FUNCT_2:def 3;
  hence injection(H,i) is bijective by FUNCT_2:def 4;
end;
