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

theorem Th18:
  for g being morphism of the CategoryStr of C st f = g
  holds f is right_identity iff g is right_identity
  proof
    let g be morphism of the CategoryStr of C;
    assume
A1: f = g;
    hereby
      assume
A2:  f is right_identity;
      for g1 being morphism of the CategoryStr of C st g1 |> g
      holds g1 (*) g = g1
      proof
        let g1 be morphism of the CategoryStr of C;
        reconsider f1 = g1 as morphism of C;
        assume g1 |> g;
        then
A3:     f1 |> f by A1;
        then f1 (*) f = f1 by A2;
        hence g1 (*) g = g1 by A1,A3,Th11;
      end;
      hence g is right_identity;
    end;
    assume
A4: g is right_identity;
    for f1 being morphism of C st f1 |> f holds f1 (*) f = f1
    proof
      let f1 be morphism of C;
      reconsider g1 = f1 as morphism of the CategoryStr of C;
      assume
A5:   f1 |> f;
      then g1 |> g by A1;
      then g1 (*) g = g1 by A4;
      hence f1 (*) f = f1 by A1,A5,Th11;
    end;
    hence f is right_identity;
  end;
