reserve o,m for set;
reserve C for Cartesian_category;
reserve a,b,c,d,e,s for Object of C;

theorem Th44:
  for C being Category holds C is with_finite_coproduct iff (ex a
  being Object of C st a is initial) & for a,b being Object of C ex c being
Object of C, i1,i2 being Morphism of C st dom i1 = a & dom i2 = b & cod i1 = c
  & cod i2 = c & c is_a_coproduct_wrt i1,i2
proof
  let C be Category;
  thus C is with_finite_coproduct implies (ex a being Object of C st a is
  initial) & for a,b being Object of C ex c being Object of C, i1,i2 being
  Morphism of C st dom i1 = a & dom i2 = b & cod i1 = c & cod i2 = c & c
  is_a_coproduct_wrt i1,i2
  proof
    reconsider F = {} as Function of {},the carrier of C by RELSET_1:12;
A1: 0 in {0,1} by TARSKI:def 2;
    assume
A2: for I being finite set, F being Function of I,the carrier of C ex
    a being Object of C, F9 being Injections_family of a,I st doms F9 = F & a
    is_a_coproduct_wrt F9;
    then consider
    a being Object of C, F9 being Injections_family of a,{} such that
    doms F9 = F and
A3: a is_a_coproduct_wrt F9;
    thus ex a being Object of C st a is initial by A3,CAT_3:75;
    let a,b be Object of C;
    set F = (0,1)-->(a,b);
    consider c being Object of C, F9 being Injections_family of c,{0,1} such
    that
A4: doms F9 = F and
A5: c is_a_coproduct_wrt F9 by A2;
    take c, i1 = F9/.0, i2 = F9/.1;
A6: 1 in {0,1} by TARSKI:def 2;
    then
A7: i2 = F9.1 by FUNCT_2:def 13;
    F/.0 = a & F/.1 = b by CAT_3:3;
    hence dom i1 = a & dom i2 = b by A4,A1,A6,CAT_3:def 1;
    thus cod i1 = c & cod i2 = c by A1,A6,CAT_3:62;
    dom F9 = {0,1} & i1 = F9.0 by A1,FUNCT_2:def 1,def 13;
    then F9 = (0,1)-->(i1,i2) by A7,FUNCT_4:66;
    hence thesis by A5,CAT_3:79;
  end;
  given a being Object of C such that
A8: a is initial;
  defpred Q[Nat] means for I being finite set, F being Function of I,the
carrier of C st card I = $1 ex a being Object of C, F9 being Injections_family
  of a,I st doms F9 = F & a is_a_coproduct_wrt F9;
  assume
A9: for a,b being Object of C ex c being Object of C, i1,i2 being
  Morphism of C st dom i1 = a & dom i2 = b & cod i1 = c & cod i2 = c & c
  is_a_coproduct_wrt i1,i2;
A10: for n being Nat st Q[n] holds Q[n+1]
  proof
    let n be Nat such that
A11: Q[n];
    let I be finite set, F be Function of I,the carrier of C such that
A12: card I = n+1;
    set x = the Element of I;
    reconsider Ix = I \ {x} as finite set;
    reconsider sx = {x} as finite set;
    reconsider G = F|(I\{x}) as Function of I\{x},the carrier of C by
FUNCT_2:32;
    card(Ix) = card(I) - card(sx) by A12,CARD_1:27,CARD_2:44,ZFMISC_1:31
      .= card(I) - 1 by CARD_1:30
      .= n by A12,XCMPLX_1:26;
    then consider
    a being Object of C, G9 being Injections_family of a,I\{x} such
    that
A13: doms G9 = G and
A14: a is_a_coproduct_wrt G9 by A11;
    set b = F/.x;
    consider c being Object of C, i1,i2 being Morphism of C such that
A15: dom i1 = a and
A16: dom i2 = b and
A17: cod i1 = c and
A18: cod i2 = c and
A19: c is_a_coproduct_wrt i1,i2 by A9;
    set F9 = (i1*G9) +* (x .-->i2);
A20: dom({x} -->i2) = {x} by FUNCT_2:def 1;
    rng F9 c= rng(i1*G9) \/ rng(x .-->i2) by FUNCT_4:17;
    then
A21: rng F9 c= the carrier' of C by XBOOLE_1:1;
    dom(i1*G9) = I\{x} by FUNCT_2:def 1;
    then
A22: dom(i1*G9) \/ dom(x .-->i2) = I \/ {x} by A20,XBOOLE_1:39
      .= I by A12,CARD_1:27,ZFMISC_1:40;
    then dom F9 = I by FUNCT_4:def 1;
    then reconsider F9 as Function of I, the carrier' of C by A21,FUNCT_2:def 1
,RELSET_1:4;
A23: cods G9 = (I\{x})-->a by CAT_3:def 16;
    now
      let y be object;
      assume
A24:  y in I;
      now
        per cases;
        suppose
          y = x;
          then
A25:      y in {x} by TARSKI:def 1;
          F9/.y = F9.y by A24,FUNCT_2:def 13
            .= (x .-->i2).y by A20,A25,FUNCT_4:13
            .= i2 by A25,FUNCOP_1:7;
          hence (I --> c).y = cod(F9/.y) by A18,A24,FUNCOP_1:7
            .= (cods F9)/.y by A24,CAT_3:def 2;
        end;
        suppose
A26:      y <> x;
          then
A27:      not y in {x} by TARSKI:def 1;
A28:      y in I\{x} by A24,A26,ZFMISC_1:56;
          F9/.y = F9.y by A24,FUNCT_2:def 13
            .= (i1*G9).y by A20,A22,A24,A27,FUNCT_4:def 1
            .= (i1*G9)/.y by A28,FUNCT_2:def 13;
          hence (cods F9)/.y = cod((i1*G9)/.y) by A24,CAT_3:def 2
            .= (cods(i1*G9))/.y by A28,CAT_3:def 2
            .= ((I\{x})-->c)/.y by A15,A17,A23,CAT_3:17
            .= c by A24,A26,CAT_3:2,ZFMISC_1:56
            .= (I --> c).y by A24,FUNCOP_1:7;
        end;
      end;
      hence (cods F9).y = (I --> c).y by A24,FUNCT_2:def 13;
    end;
    then reconsider F9 as Injections_family of c,I
               by CAT_3:def 16,FUNCT_2:12;
    take c,F9;
A29:  now
      let y be set;
      assume
A30:  y in I;
      now
        per cases;
        suppose
A31:      y = x;
          then
A32:      y in {x} by TARSKI:def 1;
          F9/.y = F9.y by A30,FUNCT_2:def 13
            .= (x .-->i2).y by A20,A32,FUNCT_4:13
            .= i2 by A32,FUNCOP_1:7;
          hence (doms F9)/.y = F/.y by A16,A30,A31,CAT_3:def 1;
        end;
        suppose
A33:      y <> x;
          then
A34:      not y in {x} by TARSKI:def 1;
A35:      y in I\{x} by A30,A33,ZFMISC_1:56;
          F9/.y = F9.y by A30,FUNCT_2:def 13
            .= (i1*G9).y by A20,A22,A30,A34,FUNCT_4:def 1
            .= (i1*G9)/.y by A35,FUNCT_2:def 13;
          hence (doms F9)/.y = dom((i1*G9)/.y) by A30,CAT_3:def 1
            .= (doms(i1*G9))/.y by A35,CAT_3:def 1
            .= G/.y by A13,A15,A23,CAT_3:17
            .= G.y by A35,FUNCT_2:def 13
            .= F.y by A30,A33,FUNCT_1:49,ZFMISC_1:56
            .= F/.y by A30,FUNCT_2:def 13;
        end;
      end;
      hence (doms F9)/.y = F/.y;
    end;
    hence
 doms F9 = F by CAT_3:1;
    thus F9 is Injections_family of c,I;
    let d be Object of C;
    let F99 be Injections_family of d,I such that
A36: doms F9 = doms F99;
    reconsider G99 = F99|(I\{x}) as Function of I\{x},the carrier' of C by
FUNCT_2:32;
    now
      let y be set;
      assume
A37:  y in I\{x};
      then G99/.y = G99.y by FUNCT_2:def 13
        .= F99.y by A37,FUNCT_1:49
        .= F99/.y by A37,FUNCT_2:def 13;
      hence cods(G99)/.y = cod(F99/.y) by A37,CAT_3:def 2
        .= d by A37,CAT_3:62
        .= ((I\{x})-->d)/.y by A37,CAT_3:2;
    end;
    then reconsider G99 as Injections_family of d,I\{x}
               by CAT_3:1,def 16;
    now
      let y be set;
      assume
A38:  y in I\{x};
      then
A39:  G/.y = G.y by FUNCT_2:def 13
        .= F.y by A38,FUNCT_1:49
        .= F/.y by A38,FUNCT_2:def 13;
      F99/.y = F99.y by A38,FUNCT_2:def 13
        .= G99.y by A38,FUNCT_1:49
        .= G99/.y by A38,FUNCT_2:def 13;
      hence (doms G9)/.y = dom(G99/.y) by A13,A29,A36,A38,A39,CAT_3:1,def 1
        .= (doms G99)/.y by A38,CAT_3:def 1;
    end;
    then consider h9 being Morphism of C such that
A40: h9 in Hom(a,d) and
A41: for k being Morphism of C st k in Hom(a,d) holds (for y being set
    st y in I\{x} holds k(*)(G9/.y) = G99/.y) iff h9 = k by A14,CAT_3:1;
A42: x in {x} by TARSKI:def 1;
    set g = F99/.x;
A43: cod g = d by A12,CARD_1:27,CAT_3:62;
A44: F9/.x = F9.x by A12,CARD_1:27,FUNCT_2:def 13
      .= (x .-->i2).x by A20,A42,FUNCT_4:13
      .= i2 by A42,FUNCOP_1:7;
    then dom i2 = (doms F9)/.x by A12,CARD_1:27,CAT_3:def 1
      .= dom g by A12,A36,CARD_1:27,CAT_3:def 1;
    then g in Hom(dom i2,d) by A43;
    then consider h being Morphism of C such that
A45: h in Hom(c,d) and
A46: for k being Morphism of C st k in Hom(c,d) holds k(*)i1 = h9 & k(*)i2
    = g iff h = k by A15,A19,A40;
    take h;
    thus h in Hom(c,d) by A45;
    let k be Morphism of C such that
A47: k in Hom(c,d);
    thus (for y being set st y in I holds k(*)(F9/.y) = F99/.y) implies h = k
    proof
A48:  dom k = c by A47,CAT_1:1;
      then
A49:  dom(k(*)i1) = a by A15,A17,CAT_1:17;
      assume
A50:  for y being set st y in I holds k(*)(F9/.y) = F99/.y;
A51:  for y being set st y in I\{x} holds k(*)i1(*)(G9/.y) = G99/.y
      proof
        let y be set;
        assume
A52:    y in I\{x};
        then
A53:    not y in {x} by XBOOLE_0:def 5;
A54:    F9/.y = F9.y by A52,FUNCT_2:def 13
          .= (i1*G9).y by A20,A22,A52,A53,FUNCT_4:def 1
          .= (i1*G9)/.y by A52,FUNCT_2:def 13;
        cod(G9/.y) = a by A52,CAT_3:62;
        hence k(*)i1(*)(G9/.y) = k(*)(i1(*)(G9/.y)) by A15,A17,A48,CAT_1:18
          .= k(*)((i1*G9)/.y) by A52,CAT_3:def 6
          .= F99/.y by A50,A52,A54
          .= F99.y by A52,FUNCT_2:def 13
          .= G99.y by A52,FUNCT_1:49
          .= G99/.y by A52,FUNCT_2:def 13;
      end;
      cod k = d by A47,CAT_1:1;
      then cod(k(*)i1) = d by A17,A48,CAT_1:17;
      then k(*)i1 in Hom(a,d) by A49;
      then
A55:  k(*)i1 = h9 by A41,A51;
      k(*)i2 = g by A12,A44,A50,CARD_1:27;
      hence thesis by A46,A47,A55;
    end;
    assume
A56: h = k;
    let y be set such that
A57: y in I;
    now
      per cases;
      suppose
A58:    y = x;
        then
A59:    y in {x} by TARSKI:def 1;
        F9/.y = F9.y by A57,FUNCT_2:def 13
          .= (x .-->i2).y by A20,A59,FUNCT_4:13
          .= i2 by A59,FUNCOP_1:7;
        hence thesis by A46,A47,A56,A58;
      end;
      suppose
A60:    y <> x;
        then
A61:    not y in {x} by TARSKI:def 1;
A62:    dom k = c by A47,CAT_1:1;
A63:    y in I\{x} by A57,A60,ZFMISC_1:56;
A64:    cod(G9/.y) = a by A57,A60,CAT_3:62,ZFMISC_1:56;
        F9/.y = F9.y by A57,FUNCT_2:def 13
          .= (i1*G9).y by A20,A22,A57,A61,FUNCT_4:def 1
          .= (i1*G9)/.y by A63,FUNCT_2:def 13
          .= i1(*)(G9/.y) by A63,CAT_3:def 6;
        hence k(*)(F9/.y) = k(*)i1(*)(G9/.y) by A15,A17,A62,A64,CAT_1:18
          .= h9(*)(G9/.y) by A46,A47,A56
          .= G99/.y by A40,A41,A63
          .= G99.y by A63,FUNCT_2:def 13
          .= F99.y by A57,A60,FUNCT_1:49,ZFMISC_1:56
          .= F99/.y by A57,FUNCT_2:def 13;
      end;
    end;
    hence thesis;
  end;
  let I be finite set, F be Function of I,the carrier of C;
A65: card I = card I;
A66: Q[ 0 ]
  proof
    let I be finite set, F be Function of I,the carrier of C;
    assume card I = 0;
    then
A67: I = {};
    {} is Function of {}, the carrier' of C by RELSET_1:12;
    then reconsider F9 = {} as Injections_family of a,I by A67,CAT_3:63;
    take a,F9;
    for x being set st x in I holds (doms F9)/.x = F/.x;
    hence doms F9 = F by CAT_3:1;
    thus thesis by A8,A67,CAT_3:75;
  end;
  for n being Nat holds Q[n] from NAT_1:sch 2(A66,A10);
  hence thesis by A65;
end;
