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

theorem Th9:
  C is with_identities implies (f is left_identity iff f is right_identity)
  proof
    assume
A1: C is with_identities;
    hereby
      assume
A2:   f is left_identity;
      for f1 being morphism of C st f1 |> f holds f1 (*) f = f1
      proof
        let f1 be morphism of C;
        assume
A3:     f1 |> f;
        then C is non empty;
        then consider g be morphism of C such that
A4:     f |> g & g is right_identity by A1,Def7;
        f = f(*)g by A4 .= g by A2,A4;
        hence f1 (*) f = f1 by A4,A3;
      end;
      hence f is right_identity;
    end;
    assume
A5: f is right_identity;
    for f1 being morphism of C st f |> f1 holds f (*) f1 = f1
    proof
      let f1 be morphism of C;
      assume
A6:   f |> f1;
      then C is non empty;
      then consider g be morphism of C such that
A7:   g |> f & g is left_identity by A1,Def6;
      f = g(*)f by A7 .= g by A5,A7;
      hence f (*) f1 = f1 by A7,A6;
    end;
    hence f is left_identity;
  end;
