reserve V for non empty set,
  A,B,A9,B9 for Element of V;
reserve f,f9 for Element of Funcs(V);
reserve m,m1,m2,m3,m9 for Element of Maps V;
reserve a,b for Object of Ens(V);
reserve f,g,f1,f2 for Morphism of Ens(V);

theorem
 for a,b being Object of Ens(V), f being Morphism of a,b st Hom(a,b) <> {}
  holds f is monic iff (@f)`2 is one-to-one
proof
 let a,b be Object of Ens(V), f be Morphism of a,b such that
A1: Hom(a,b) <> {};
  set m = @f;
A2: dom m = dom f by Def9;
  then
A3: dom m`2 = dom f by Lm3;
  thus f is monic implies (@f)`2 is one-to-one
  proof
    set A = dom (@f)`2;
    assume
A4: f is monic;
    let x1,x2 be object such that
A5: x1 in A and
A6: x2 in A and
A7: (@f)`2.x1 = (@f)`2.x2;
A8: A = dom(@f) by Lm3;
    then reconsider A as Element of V;
A9: dom f = A by A8,Def9;
    reconsider fx1 = A --> x1, fx2 = A --> x2 as Function of A,A by A5,A6,
FUNCOP_1:45;
    reconsider m1 = [[A,A],fx1],m2 = [[A,A],fx2] as Element of Maps(V) by Th5;
    set f1 = @m1, f2 = @m2;
    set h1 = (@f)`2*(@f1)`2, h2 = (@f)`2*(@f2)`2;
    set ff1 = (@f)*(@f1), ff2 = (@f)*(@f2);
A10: cod m2 = A;
    then
A11: (ff2)`2 = h2 & dom(ff2) = dom(@f2) by A8,Th12;
    cod(ff2) = cod(@f) by A8,A10,Th12;
    then
A12: ff2=[[dom(@f2),cod(@f)],h2] by A11,Th8;
    dom(@f2) = A;
    then
A13: dom f2 = A by Def9;
    cod(@f2) = A;
    then
A14: cod f2 = A by Def10;
    then
A15: f(*)(f2) = ff2 by A9,Th27;
A16: cod m1 = A;
    then
A17: (ff1)`2 = h1 & dom(ff1) = dom(@f1) by A8,Th12;
    now
      thus
A18:  dom(h1) = A & dom(h2) = A by A17,A11,Lm3;
      let x be object;
      assume
A19:  x in A;
      (@f1)`2.x = x1 by A19,FUNCOP_1:7;
      then
A20:  h1.x = (@f)`2.x1 by A18,A19,FUNCT_1:12;
      (@f2)`2.x = x2 by A19,FUNCOP_1:7;
      hence h1.x = h2.x by A7,A18,A19,A20,FUNCT_1:12;
    end;
    then
A21: h1 = h2;
    cod(ff1) = cod(@f) by A8,A16,Th12;
    then
A22: ff1=[[dom(@f1),cod(@f)],h1] by A17,Th8;
    dom(@f1) = A;
    then
A23: dom f1 = A by Def9;
    cod(@f1) = A;
    then
A24: cod f1 = A by Def10;
    reconsider A as Object of Ens(V);
A25: dom f = a by A1,CAT_1:5;
    then
A26: f1 in Hom(A,a) & f2 in Hom(A,a) by A23,A9,A24,A13,A14;
    then reconsider f1,f2 as Morphism of A,a by CAT_1:def 5;
A27: f*f1 = f(*)f1 by A1,A26,CAT_1:def 13
      .= f(*)f2 by A22,A12,A21,A15,A24,A9,Th27
      .= f*f2 by A1,A26,CAT_1:def 13;
    Hom(A,a) <> {} by A25,A9;
    then f1 = f2 by A4,A27;
    then fx1 = fx2 by XTUPLE_0:1;
    hence x1 = fx2.x1 by A5,FUNCOP_1:7
      .= x2 by A5,FUNCOP_1:7;
  end;
  assume
A28: m`2 is one-to-one;
  thus Hom(a,b) <> {} by A1;
  let c be Object of Ens(V) such that
A29: Hom(c,a) <> {};
  let f1,f2 be Morphism of c,a;
A30: dom f1 = c by A29,CAT_1:5 .= dom f2 by A29,CAT_1:5;
A31: cod f1 = a by A29,CAT_1:5 .= dom f by A1,CAT_1:5;
A32: cod f2 = a by A29,CAT_1:5 .= dom f by A1,CAT_1:5;
  assume
A33: f*f1 = f*f2;
  set m1 = @f1, m2 = @f2;
A34: m*m1 = f(*)f1 by A31,Th27
     .= f*f1 by A29,A1,CAT_1:def 13;
A35: m*m2 = f(*)f2 by A32,Th27
     .= f*f2 by A29,A1,CAT_1:def 13;
A36: m1=[[dom m1,cod m1],m1`2] by Th8;
A37: dom m2 = dom f2 by Def9;
  then
A38: dom m2`2 = dom f2 by Lm3;
A39: cod m1 = cod f1 by Def10;
  then
A40: rng m1`2 c= cod f1 by Lm3;
A41: cod m2 = cod f2 by Def10;
  then
A42: rng m2`2 c= cod f2 by Lm3;
A43: m*m2 = [[dom m2,cod m],m`2*m2`2] by A32,A41,A2,Def6;
  m*m1 = [[dom m1,cod m],m`2*m1`2] by A31,A39,A2,Def6;
  then
A44: (m`2)*(m1`2) = (m`2)*(m2`2) by A35,A33,A34,A43,XTUPLE_0:1;
A45: dom m1 = dom f1 by Def9;
  then dom m1`2 = dom f1 by Lm3;
  then m1`2 = m2`2 by A28,A30,A31,A32,A38,A3,A40,A42,A44,FUNCT_1:27;
  hence thesis by A30,A31,A32,A45,A37,A39,A41,A36,Th8;
end;
