reserve c,c1,c2 for Cardinal, G,G1,G2 for _Graph, v for Vertex of G;

theorem Th56:
  for P being set, c being Cardinal
  st P is mutually-disjoint & for A being set st A in P holds card A = c
  holds card union P = c*`card P
proof
  let P be set, c be Cardinal;
  assume A1: P is mutually-disjoint & for A being set st A in P holds card A=c;
  per cases;
  suppose A2: P <> {} & c <> 0;
    :: first recognize P as a partition of its union
    now
      set A0 = the Element of P, a0 = the Element of A0;
      A3: A0 in P by A2;
      card A0 <> 0 by A1, A2;
      then A0 <> {};
      then a0 in union P by A3, TARSKI:def 4;
      hence union P <> {};
    end;
    then reconsider X = union P as non empty set;
    now
      let x be object;
      reconsider x0 = x as set by TARSKI:1;
      assume x in P;
      then x0 c= union P by SETFAM_1:41;
      hence x in bool X;
    end;
    then reconsider p = P as Subset-Family of X by TARSKI:def 3;
    now
      let A be Subset of X;
      assume A4: A in p;
      then card A = c by A1;
      hence A <> {} by A2;
      let B be Subset of X;
      assume A5: B in p;
      assume A <> B;
      hence A misses B by A1, A4, A5, TAXONOM2:def 5;
    end;
    then reconsider p as a_partition of X by EQREL_1:def 4;
    :: next we construct the bijection and show the properties
    deffunc G(set) = the Enumeration of $1;
    deffunc C(object) = EqClass(In($1,X),p);
    deffunc F(object) = [G(C($1)).$1, C($1)];
    consider f being Function such that
      A6: dom f = X & for x being object st x in X holds f.x = F(x)
      from FUNCT_1:sch 3;
    :: onto
    now
      let y be object;
      hereby
        assume y in [: c, P :];
        then consider d, A being object such that
          A7: d in c & A in P & y = [d,A] by ZFMISC_1:def 2;
        reconsider A as set by A7;
        reconsider x = G(A)".d as object;
        take x;
        card A <> {} by A1, A7;
        then A8: A = dom G(A) by FUNCT_2:def 1
          .= rng(G(A)") by FUNCT_1:33;
        A9: c = card A by A1, A7
          .= rng G(A) by FUNCT_2:def 3;
        then c = dom(G(A)") by FUNCT_1:33;
        then A10: x in A by A7, A8, FUNCT_1:3;
        hence A11: x in dom f by A6, A7;
        A c= X by A7, SETFAM_1:41;
        then In(x,X) = x & A is Subset of X by A6, A11, SUBSET_1:def 8;
        then A12: C(x) = A by A7, A10, EQREL_1:def 6;
        thus f.x = [G(A).x, A] by A6, A11, A12
          .= y by A7, A9, FUNCT_1:35;
      end;
      given x being object such that
        A13: x in dom f & f.x = y;
      In(x,X) = x by A6, A13, SUBSET_1:def 8;
      then A14: x in C(x) & C(x) in p by EQREL_1:def 6;
      then x in dom G(C(x)) by FUNCT_2:def 1;
      then G(C(x)).x in rng G(C(x)) by FUNCT_1:3;
      then G(C(x)).x in card C(x);
      then A15: G(C(x)).x in c by A1, A14;
      y = [G(C(x)).x, C(x)] by A6, A13;
      hence y in [: c, P :] by A14, A15, ZFMISC_1:def 2;
    end;
    then A16: rng f = [: c, P :] by FUNCT_1:def 3;
    :: one-to-one
    now
      let x1,x2 be object;
      assume A17: x1 in dom f & x2 in dom f & f.x1 = f.x2;
      then A18: f.x1=[G(C(x1)).x1,C(x1)] & f.x2=[G(C(x2)).x2,C(x2)] by A6;
      then A19: C(x1) = C(x2) by A17, XTUPLE_0:1;
      In(x1,X) = x1 & In(x2,X) = x2 by A6, A17, SUBSET_1:def 8;
      then A20: x1 in C(x1) & C(x1) in p & x2 in C(x1) by A19, EQREL_1:def 6;
      then A21: dom G(C(x1)) = C(x1) by FUNCT_2:def 1;
      G(C(x1)).x1 = G(C(x1)).x2 by A17, A18, A19, XTUPLE_0:1;
      hence x1 = x2 by A20, A21, FUNCT_1:def 4;
    end;
    :: conclusion
    hence card union P = card rng f by A6, FUNCT_1:def 4, CARD_1:70
      .= card [: c, card P :] by A16, CARD_2:7
      .= c*`card P by CARD_2:def 2;
  end;
  suppose A22: P <> {} & c = 0;
    now
      let x,y be object;
      reconsider X=x, Y=y as set by TARSKI:1;
      assume x in P & y in P;
      then card X = 0 & card Y = 0 by A1, A22;
      then X = {} & Y = {};
      hence x = y;
    end;
    then consider x being object such that
      A23: P = {x} by A22, ZFMISC_1:def 10, ZFMISC_1:131;
    reconsider X = x as set by TARSKI:1;
    X in P by A23, TARSKI:def 1;
    then card X = 0 by A1, A22;
    then X = {};
    then union P = {} by A23, ZFMISC_1:25;
    hence thesis by A22, CARD_2:20;
  end;
  suppose P = {};
    hence thesis by CARD_2:20, ZFMISC_1:2;
  end;
end;
