reserve X for set,
  F for Field_Subset of X,
  M for Measure of F,
  A,B for Subset of X,
  Sets for SetSequence of X,
  seq,seq1,seq2 for ExtREAL_sequence,
  n,k for Nat;
reserve FSets for Set_Sequence of F,
  CA for Covering of A,F;
reserve Cvr for Covering of Sets,F;

theorem Th17:
  A in F implies ex FSets being Sep_Sequence of F st A = union rng
  FSets & for n be Nat holds FSets.n c= CA.n
proof
  deffunc F(Element of NAT) = (Partial_Diff_Union CA).$1 /\ A;
  consider FSets be sequence of bool X such that
A1: for n being Element of NAT holds FSets.n = F(n) from FUNCT_2:sch 4;
  reconsider FSets as SetSequence of X;
  assume
A2: A in F;
  now
    let y be object;
    assume y in rng FSets;
    then consider x be object such that
A3: x in NAT and
A4: FSets.x = y by FUNCT_2:11;
    reconsider n = x as Element of NAT by A3;
A5: FSets.n = (Partial_Diff_Union CA).n /\ A by A1;
    Partial_Diff_Union CA is Set_Sequence of F by Th16;
    then (Partial_Diff_Union CA).n in F by Def2;
    hence y in F by A2,A4,A5,FINSUB_1:def 2;
  end;
  then rng FSets c= F;
  then reconsider FSets as sequence of F by FUNCT_2:6;
  for m,n be Nat st m <> n holds FSets.m misses FSets.n
  proof
    let m,n be Nat;
    n in NAT by ORDINAL1:def 12;
    then FSets.n = (Partial_Diff_Union CA).n /\ A by A1;
    then
A6: FSets.n c= (Partial_Diff_Union CA).n by XBOOLE_1:17;
    m in NAT by ORDINAL1:def 12;
    then FSets.m = (Partial_Diff_Union CA).m /\ A by A1;
    then
A7: FSets.m c= (Partial_Diff_Union CA).m by XBOOLE_1:17;
    assume m <> n;
    then (Partial_Diff_Union CA).m misses (Partial_Diff_Union CA).n by
PROB_3:def 4;
    hence thesis by A7,A6,XBOOLE_1:64;
  end;
  then reconsider FSets as Sep_Sequence of F by PROB_3:def 4;
  now
    let x be object;
    assume
A8: x in A;
    A c= union rng CA by Def3;
    then x in union rng CA by A8;
    then x in Union CA by CARD_3:def 4;
    then x in Union Partial_Diff_Union CA by PROB_3:20;
    then x in union rng Partial_Diff_Union CA by CARD_3:def 4;
    then consider E be set such that
A9: x in E and
A10: E in rng Partial_Diff_Union CA by TARSKI:def 4;
    consider n be object such that
A11: n in NAT and
A12: (Partial_Diff_Union CA).n = E by A10,FUNCT_2:11;
    reconsider n as Element of NAT by A11;
    x in (Partial_Diff_Union CA).n /\ A by A8,A9,A12,XBOOLE_0:def 4;
    then
A13: x in FSets.n by A1;
    FSets.n in rng FSets by FUNCT_2:4;
    hence x in union rng FSets by A13,TARSKI:def 4;
  end;
  then
A14: A c= union rng FSets;
  take FSets;
  now
    let x be object;
    assume x in union rng FSets;
    then consider E be set such that
A15: x in E and
A16: E in rng FSets by TARSKI:def 4;
    consider n be object such that
A17: n in NAT and
A18: FSets.n = E by A16,FUNCT_2:11;
    reconsider n as Element of NAT by A17;
    x in (Partial_Diff_Union CA).n /\ A by A1,A15,A18;
    hence x in A by XBOOLE_0:def 4;
  end;
  then union rng FSets c= A;
  hence A = union rng FSets by A14,XBOOLE_0:def 10;
  hereby
    let n be Nat;
    n in NAT by ORDINAL1:def 12;
    then FSets.n = (Partial_Diff_Union CA).n /\ A by A1;
    then
A19: FSets.n c= (Partial_Diff_Union CA).n by XBOOLE_1:17;
    (Partial_Diff_Union CA).n c= CA.n by PROB_3:17;
    hence FSets.n c= CA.n by A19;
  end;
end;
