reserve U1,U2,U3 for Universal_Algebra,
  n,m for Nat,
  o1 for operation of U1,
  o2 for operation of U2,
  o3 for operation of U3,
  x,y for set;
reserve a for FinSequence of U1,
  f for Function of U1,U2;
reserve E for Congruence of U1;

theorem Th20:
  f is_epimorphism implies HomQuot(f) is_isomorphism
proof
  set qa = QuotUnivAlg(U1,Cng(f)), u1 = the carrier of U1, u2 = the carrier of
  U2, F = HomQuot(f);
  assume
A1: f is_epimorphism;
  then
A2: f is_homomorphism;
  then F is_monomorphism by Th19;
  then
A3: F is one-to-one;
A4: rng f = u2 by A1;
A5: rng F = u2
  proof
    thus rng F c= u2;
    let x be object;
    assume x in u2;
    then consider y being object such that
A6: y in dom f and
A7: f.y = x by A4,FUNCT_1:def 3;
    reconsider y as Element of u1 by A6;
    set u = Class(Cng f,y);
A8: dom F = the carrier of qa & u in Class(Cng f) by EQREL_1:def 3
,FUNCT_2:def 1;
    F.u = x by A2,A7,Def13;
    hence thesis by A8,FUNCT_1:def 3;
  end;
  F is_homomorphism by A2,Th19;
  hence thesis by A3,A5,Th7;
end;
