reserve X,Y for set;
reserve Z for non empty set;

theorem Th4:
  for A being non empty reflexive AltCatStr, B being non empty
  reflexive SubCatStr of A, C being non empty SubCatStr of A, D being non empty
  SubCatStr of B st C = D holds incl C = incl B * incl D
proof
  let A be non empty reflexive AltCatStr, B be non empty reflexive SubCatStr
  of A, C be non empty SubCatStr of A, D be non empty SubCatStr of B such that
A1: C = D;
  set X = [: the carrier of B, the carrier of B :], Y = [: the carrier of D,
  the carrier of D :];
A2: the carrier of D c= the carrier of B by ALTCAT_2:def 11;
  then
A3: Y c= X by ZFMISC_1:96;
  for i being object st i in Y holds (the MorphMap of incl C).i = (((the
  MorphMap of incl B)*the ObjectMap of incl D)** the MorphMap of incl D).i
  proof
    set dom2 = dom (the MorphMap of incl D);
    set dom1 = dom ((the MorphMap of incl B)*the ObjectMap of incl D);
    set XX = the Arrows of B, YY = the Arrows of D;
    let i be object;
A4: (the MorphMap of incl C).i = (id the Arrows of C).i by FUNCTOR0:def 28;
A5: dom (((the MorphMap of incl B)*the ObjectMap of incl D)** the
    MorphMap of incl D) = dom2 /\ dom1 & dom (the MorphMap of incl D) = Y by
PARTFUN1:def 2,PBOOLE:def 19;
A6: dom ((the MorphMap of incl B)*the ObjectMap of incl D) = dom ((the
    MorphMap of incl B)*(id Y)) by FUNCTOR0:def 28
      .= (dom (the MorphMap of incl B)) /\ Y by FUNCT_1:19
      .= X /\ Y by PARTFUN1:def 2
      .= Y by A2,XBOOLE_1:28,ZFMISC_1:96;
    assume
A7: i in Y;
    then
A8: i in dom id Y;
    YY cc= XX by ALTCAT_2:def 11;
    then
A9: YY.i c= XX.i by A7;
A10: ((the MorphMap of incl B)*the ObjectMap of incl D).i = ((the MorphMap
    of incl B)*id Y).i by FUNCTOR0:def 28
      .= ((the MorphMap of incl B).((id Y).i)) by A8,FUNCT_1:13
      .= ((the MorphMap of incl B).i) by A7,FUNCT_1:18;
    (the MorphMap of incl B).i = (id the Arrows of B).i & (the MorphMap
    of incl D).i = (id the Arrows of D).i by FUNCTOR0:def 28;
    then
    (the MorphMap of incl B).i * (the MorphMap of incl D).i = (id XX).i *
    id (YY.i) by A7,MSUALG_3:def 1
      .= id (XX.i) * id (YY.i) by A3,A7,MSUALG_3:def 1
      .= id (XX.i /\ YY.i) by FUNCT_1:22
      .= id ((the Arrows of D).i) by A9,XBOOLE_1:28
      .= (the MorphMap of incl C).i by A1,A7,A4,MSUALG_3:def 1;
    hence thesis by A7,A10,A5,A6,PBOOLE:def 19;
  end;
  then
A11: the MorphMap of incl C = ((the MorphMap of incl B)*the ObjectMap of
  incl D)** the MorphMap of incl D by A1,PBOOLE:3;
  the ObjectMap of incl C = id Y by A1,FUNCTOR0:def 28
    .= id(X /\ Y) by A2,XBOOLE_1:28,ZFMISC_1:96
    .= (id X)*(id Y) by FUNCT_1:22
    .= (id X)*the ObjectMap of incl D by FUNCTOR0:def 28
    .= (the ObjectMap of incl B)*the ObjectMap of incl D by FUNCTOR0:def 28;
  hence thesis by A1,A11,FUNCTOR0:def 36;
end;
