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

theorem Th19:
  C is with_right_identities iff the CategoryStr of C is with_right_identities
  proof
    hereby
      assume
A1:   C is with_right_identities;
      for g1 being morphism of the CategoryStr of C st
      g1 in the carrier of the CategoryStr of C holds
      ex g being morphism of the CategoryStr of C st
      g1 |> g & g is right_identity
      proof
        let g1 be morphism of the CategoryStr of C;
        reconsider f1 = g1 as morphism of C;
        assume g1 in the carrier of the CategoryStr of C;
        then consider f be morphism of C such that
A2:     f1 |> f & f is right_identity by A1;
        reconsider g = f as morphism of the CategoryStr of C;
        take g;
        thus g1 |> g by A2;
        thus g is right_identity by A2,Th18;
      end;
      hence the CategoryStr of C is with_right_identities;
    end;
    assume
A3: the CategoryStr of C is with_right_identities;
    for f1 being morphism of C st f1 in the carrier of C holds
    ex f being morphism of C st f1 |> f & f is right_identity
    proof
      let f1 be morphism of C;
      reconsider g1 = f1 as morphism of the CategoryStr of C;
      assume f1 in the carrier of C;
      then consider g be morphism of the CategoryStr of C such that
A4:   g1 |> g & g is right_identity by A3;
      reconsider f = g as morphism of C;
      take f;
      thus f1 |> f by A4;
      thus f is right_identity by A4,Th18;
    end;
    hence C is with_right_identities;
  end;
