reserve A,B,C,D for Category,
  F for Functor of A,B,
  G for Functor of B,C;
reserve o,m for set;

theorem
  [:[:A,B:],C:] ~= [:A,[:B,C:]:]
proof
  set X = pr1(A,B)*pr1([:A,B:],C);
  set Y = <:pr2(A,B)*pr1([:A,B:],C),pr2([:A,B:],C):>;
  take F = <:X, Y:>;
A1: dom pr2([:A,B:],C) = the carrier' of [:[:A,B:],C:] & dom(pr2(A,B)*pr1([:
  A,B :],C)) = the carrier' of [:[:A,B:],C:] by FUNCT_2:def 1;
A2: dom X = the carrier' of [:[:A,B:],C:] & dom Y = the carrier' of [:[:A,B
  :],C :] by FUNCT_2:def 1;
  now
    let x,y be object;
    assume x in [:[:the carrier' of A,the carrier' of B:],the carrier' of C:];
    then consider x1,x2 being object such that
A3: x1 in [:the carrier' of A,the carrier' of B:] and
A4: x2 in the carrier' of C and
A5: x = [x1,x2] by ZFMISC_1:def 2;
    assume y in [:[:the carrier' of A,the carrier' of B:],the carrier' of C :];
    then consider y1,y2 being object such that
A6: y1 in [:the carrier' of A,the carrier' of B:] and
A7: y2 in the carrier' of C and
A8: y = [y1,y2] by ZFMISC_1:def 2;
    reconsider f2 = x2, g2 = y2 as Morphism of C by A4,A7;
    assume
A9: F.x = F.y;
    consider x11,x12 being object such that
A10: x11 in the carrier' of A and
A11: x12 in the carrier' of B and
A12: x1 = [x11,x12] by A3,ZFMISC_1:def 2;
    consider y11,y12 being object such that
A13: y11 in the carrier' of A and
A14: y12 in the carrier' of B and
A15: y1 = [y11,y12] by A6,ZFMISC_1:def 2;
    reconsider f12 = x12, g12 = y12 as Morphism of B by A11,A14;
    reconsider f11 = x11, g11 = y11 as Morphism of A by A10,A13;
A16: [f11,[f12,f2]] = [pr1(A,B).(f11,f12),[f12,f2]] by FUNCT_3:def 4
      .= [pr1(A,B).(pr1([:A,B:],C).([f11,f12],f2)),[f12,f2]] by FUNCT_3:def 4
      .= [pr1(A,B).(pr1([:A,B:],C).[[f11,f12],f2]),[f12,f2]]
      .= [X.([f11,f12],f2),[f12,f2]] by FUNCT_2:15
      .= [X.[[f11,f12],f2],[pr2(A,B).(f11,f12),f2]] by FUNCT_3:def 5
      .= [X.[[f11,f12],f2],[pr2(A,B).(pr1([:A,B:],C).([f11,f12],f2)),f2]] by
FUNCT_3:def 4
      .= [X.[[f11,f12],f2],[(pr2(A,B)*pr1([:A,B:],C)).[[f11,f12],f2],f2]] by
FUNCT_2:15
      .= [X.[[f11,f12],f2],[(pr2(A,B)*pr1([:A,B:],C)).[[f11,f12],f2], pr2([:
    A,B:],C).([f11,f12],f2)]] by FUNCT_3:def 5
      .= [X.[[f11,f12],f2],Y.[[f11,f12],f2]] by A1,FUNCT_3:49
      .= F.[[g11,g12],g2] by A2,A5,A12,A8,A15,A9,FUNCT_3:49
      .= [X.[[g11,g12],g2],Y.[[g11,g12],g2]] by A2,FUNCT_3:49
      .= [X.[[g11,g12],g2],[(pr2(A,B)*pr1([:A,B:],C)).[[g11,g12],g2], pr2([:
    A,B:],C).([g11,g12],g2)]] by A1,FUNCT_3:49
      .= [X.[[g11,g12],g2],[(pr2(A,B)*pr1([:A,B:],C)).[[g11,g12],g2],g2]] by
FUNCT_3:def 5
      .= [X.[[g11,g12],g2],[pr2(A,B).(pr1([:A,B:],C).([g11,g12],g2)),g2]] by
FUNCT_2:15
      .= [X.[[g11,g12],g2],[pr2(A,B).(g11,g12),g2]]by FUNCT_3:def 4
      .= [X.[[g11,g12],g2],[g12,g2]]by FUNCT_3:def 5
      .= [pr1(A,B).(pr1([:A,B:],C).([g11,g12],g2)),[g12,g2]]by FUNCT_2:15
      .= [pr1(A,B).(g11,g12),[g12,g2]]by FUNCT_3:def 4
      .= [g11,[g12,g2]] by FUNCT_3:def 4;
    then [x12,x2] = [y12,y2] by XTUPLE_0:1;
    then x12 = y12 & x2 = y2 by XTUPLE_0:1;
    hence x = y by A5,A12,A8,A15,A16,XTUPLE_0:1;
  end;
  hence F is one-to-one by FUNCT_2:19;
  thus rng F c= the carrier' of [:A,[:B,C:]:];
  let x be object;
  assume x in the carrier' of [:A,[:B,C:]:];
  then consider x1,x2 being object such that
A17: x1 in the carrier' of A and
A18: x2 in the carrier' of [:B,C:] and
A19: x = [x1,x2] by ZFMISC_1:def 2;
  reconsider x1 as Morphism of A by A17;
  consider x21,x22 being object such that
A20: x21 in the carrier' of B and
A21: x22 in the carrier' of C and
A22: x2 = [x21,x22] by A18,ZFMISC_1:def 2;
  reconsider x22 as Morphism of C by A21;
  reconsider x21 as Morphism of B by A20;
  F.[[x1,x21],x22] = [X.[[x1,x21],x22],Y.[[x1,x21],x22]] by A2,FUNCT_3:49
    .= [pr1(A,B).(pr1([:A,B:],C).([x1,x21],x22)),Y.[[x1,x21],x22]] by
FUNCT_2:15
    .= [pr1(A,B).(x1,x21),Y.[[x1,x21],x22]] by FUNCT_3:def 4
    .= [x1,Y.[[x1,x21],x22]] by FUNCT_3:def 4
    .= [x1,[(pr2(A,B)*pr1([:A,B:],C)).[[x1,x21],x22], pr2([:A,B:],C).[[x1,
  x21],x22]]] by A1,FUNCT_3:49
    .= [x1,[pr2(A,B).(pr1([:A,B:],C).([x1,x21],x22)), pr2([:A,B:],C).[[x1,
  x21],x22]]] by FUNCT_2:15
    .= [x1,[pr2(A,B).(x1,x21),pr2([:A,B:],C).([x1,x21],x22)]] by FUNCT_3:def 4
    .= [x1,[x21,pr2([:A,B:],C).([x1,x21],x22)]] by FUNCT_3:def 5
    .= [x1,[x21,x22]] by FUNCT_3:def 5;
  hence thesis by A19,A22,FUNCT_2:4;
end;
