reserve A for set, x,y,z for object,
  k for Element of NAT;
reserve n for Nat,
  x for object;
reserve V, C for set;

theorem Th28:
  for D being set, F being FinSequence of D*, k being set st k in
dom FlattenSeq F ex i, j being Nat st i in dom F & j in dom (F.i) &
  k = (Sum Card (F|(i-'1))) + j & (F.i).j = (FlattenSeq F).k
proof
  let D be set;
  set F = <*>(D*);
  defpred P[FinSequence of D*] means for k being set st k in dom FlattenSeq $1
   ex i,j be Nat st i in dom $1 & j in dom ($1.i) & k = (Sum Card ($1|(
  i-'1))) + j & ($1.i).j = (FlattenSeq $1).k;
A1: for F be FinSequence of D*, p be Element of D* st P[F] holds P[F^<*p*>]
  proof
    let F be FinSequence of D*, p be Element of D*;
    assume
A2: P[F];
    let k be set;
A3: FlattenSeq (F^<*p*>) = FlattenSeq F ^ FlattenSeq <*p*> by Th3
      .= FlattenSeq F ^ p by Th1;
A4: Sum Card F = len FlattenSeq F & (F^<*p*>)|len F = F by Th26,FINSEQ_5:23;
    assume
A5: k in dom FlattenSeq (F^<*p*>);
    then reconsider m = k as Element of NAT;
    per cases;
    suppose
A6:   not k in dom FlattenSeq F;
      take i = len F + 1;
      take j = m-'Sum Card ((F^<*p*>)|(i-'1));
A7:   1 <= len F +1 by NAT_1:11;
      len (F^<*p*>) = len F + len <*p*> by FINSEQ_1:22
        .= len F +1 by FINSEQ_1:39;
      hence i in dom (F^<*p*>) by A7,FINSEQ_3:25;
A8:   (Sum Card ((F^<*p*>)|(i-'1))) = len FlattenSeq F by A4,NAT_D:34;
      m <= len (FlattenSeq F ^ p) by A5,A3,FINSEQ_3:25;
      then m <= len FlattenSeq F + len p by FINSEQ_1:22;
      then
A9:   j <= len p by A8,NAT_D:53;
      1 in dom <*p*> by FINSEQ_5:6;
      then
A10:  (F^<*p*>).i = <*p*>.1 by FINSEQ_1:def 7
        .= p;
      1 <= m by A5,FINSEQ_3:25;
      then
A11:  len FlattenSeq F < m by A6,FINSEQ_3:25;
      then len FlattenSeq F +1 <= m by NAT_1:13;
      hence
A12:  j in dom ((F^<*p*>).i) by A10,A9,A8,FINSEQ_3:25,NAT_D:55;
      thus k = (Sum Card ((F^<*p*>)|(i-'1))) + j by A8,A11,XREAL_1:235;
      hence thesis by A3,A8,A10,A12,FINSEQ_1:def 7;
    end;
    suppose
A13:  k in dom FlattenSeq F;
      then consider i, j being Nat such that
A14:  i in dom F and
A15:  j in dom (F.i) and
A16:  k = (Sum Card (F|(i-'1))) + j and
A17:  (F.i).j = (FlattenSeq F).k by A2;
      take i, j;
      dom F c= dom (F^<*p*>) by FINSEQ_1:26;
      hence i in dom (F^<*p*>) by A14;
      thus j in dom ((F^<*p*>).i) by A14,A15,FINSEQ_1:def 7;
A18:  i-'1 <= i by NAT_D:35;
      i <= len F by A14,FINSEQ_3:25;
      hence k = (Sum Card ((F^<*p*>)|(i-'1))) + j by A16,A18,FINSEQ_5:22
,XXREAL_0:2;
      (F^<*p*>).i = (F.i) by A14,FINSEQ_1:def 7;
      hence thesis by A3,A13,A17,FINSEQ_1:def 7;
    end;
  end;
A19: P[F];
  thus for F being FinSequence of D* holds P[F] from FINSEQ_2:sch 2(A19, A1);
end;
