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

theorem Th4:
  C is left_composable iff C opp is right_composable
  proof
    hereby
      assume
A1:   C is left_composable;
      for g,g1,g2 being morphism of C opp st g1 |> g2
      holds (g |> g1(*)g2 iff g |> g1)
      proof
        let g,g1,g2 be morphism of C opp;
        reconsider f=g,f2=g1,f1=g2 as morphism of C;
        assume g1 |> g2;
        then
A2:     f1 |> f2 by FUNCT_4:42;
        then
A3:     f1(*)f2 = g1(*)g2 by Th3;
        hereby
          assume g |> g1(*)g2;
          then f1(*)f2 |> f by A3,FUNCT_4:42;
          then f2 |> f by A1,A2;
          hence g |> g1 by FUNCT_4:42;
        end;
        assume g |> g1;
        then f2 |> f by FUNCT_4:42;
        then f1(*)f2 |> f by A1,A2;
        hence g |> g1(*)g2 by A3,FUNCT_4:42;
      end;
      hence C opp is right_composable;
    end;
    assume
A4: C opp is right_composable;
    for f,f1,f2 being morphism of C st f1 |> f2
    holds (f1(*)f2 |> f iff f2 |> f)
    proof
      let f,f1,f2 be morphism of C;
      reconsider g=f,g2=f1,g1=f2 as morphism of C opp;
      assume
A5:   f1 |> f2;
      then
A6:   g1 |> g2 by FUNCT_4:42;
A7:   f1(*)f2 = g1(*)g2 by A5,Th3;
      hereby
        assume f1(*)f2 |> f;
        then g |> g1(*)g2 by A7,FUNCT_4:42;
        then g |> g1 by A4,A6;
        hence f2 |> f by FUNCT_4:42;
      end;
        assume f2 |> f;
        then g |> g1 by FUNCT_4:42;
        then g |> g1(*)g2 by A4,A6;
        hence f1(*)f2 |> f by A7,FUNCT_4:42;
    end;
    hence C is left_composable;
  end;
