
theorem Th4:
  for C being with_identities composable CategoryStr,
      f1,f2 being morphism of C st f1 |> f2 holds
      dom (f1 (*) f2) = dom f2 & cod (f1 (*) f2) = cod f1
  proof
    let C be with_identities composable CategoryStr;
    let f1,f2 be morphism of C;
    assume
A1: f1 |> f2;
    per cases;
    suppose
A2:   C is empty;
      thus dom (f1 (*) f2) = the Object of C by A2,CAT_6:def 18
      .= dom f2 by A2,CAT_6:def 18;
      thus cod (f1 (*) f2) = the Object of C by A2,CAT_6:def 19
      .= cod f1 by A2,CAT_6:def 19;
    end;
    suppose
A3:   C is non empty;
      [f1,f2] in dom the composition of C by A1,CAT_6:def 2;
      then [f1,f2] in dom(CompMap C) by CAT_6:def 29;
      then
A4:   (SourceMap C).f1 = (TargetMap C).f2 by A3,CAT_6:36;
A5:   f1 (*) f2 = (the composition of C).(f1,f2) by A1,CAT_6:def 3
      .= (CompMap C).(f1,f2) by CAT_6:def 29;
      thus dom (f1 (*) f2) = (SourceMap C).(f1(*)f2) by A3,CAT_6:def 30
      .= (SourceMap C).f2 by A4,A5,CAT_6:37
      .= dom f2 by A3,CAT_6:def 30;
      thus cod (f1 (*) f2) = (TargetMap C).(f1(*)f2) by A3,CAT_6:def 31
      .= (TargetMap C).f1 by A4,A5,CAT_6:37
      .= cod f1 by A3,CAT_6:def 31;
    end;
  end;
