reserve C for CategoryStr;
reserve f,f1,f2,f3 for morphism of C;
reserve g1,g2 for morphism of C opp;

theorem Th23:
  for C being non empty with_identities CategoryStr, f,f1 being morphism of C,
  o being Object of C st f = o holds
   (f |> f1 implies f (*) f1 = f1) &
   (f1 |> f implies f1 (*) f = f1) & f |> f
  proof
    let C be non empty with_identities CategoryStr;
    let f,f1 be morphism of C;
    let o be Object of C;
    assume A1: f = o;
A2: f is identity by A1,Th22;
    consider c be morphism of C such that
A3: c |> f & c is left_identity by Def12,Def6;
A4: c = c (*) f by A2,A3,Def5 .= f by A3;
    thus f |> f1 implies f (*) f1 = f1 by A2,Def4;
    thus f1 |> f implies f1 (*) f = f1 by A2,Def5;
    thus f |> f by A3,A4;
  end;
