reserve x, y, z for object,
  i, j, n for Nat,
  p, q, r for FinSequence,
  v for FinSequence of NAT;

theorem
  x-flat_tree p = y-tree q & q is DTree-yielding implies x = y &
  len p = len q & for i st i in dom p holds q.i = root-tree (p.i)
proof
  assume that
A1: x-flat_tree p = y-tree q and
A2: q is DTree-yielding;
  reconsider q9 = q as DTree-yielding FinSequence by A2;
  thus x = (x-flat_tree p).{} by Def3
    .= y by A1,A2,Def4;
 tree((len p)|->elementary_tree 0) = elementary_tree len p by TREES_3:54
    .= dom (x-flat_tree p) by Def3
    .= tree(doms q9) by A1,Th10;
then A3: (len p)|->elementary_tree 0 = doms q9 by TREES_3:50;
 len doms q9 = len q by TREES_3:38;
  thus
then A4: len p = len q by A3,CARD_1:def 7;
  let i;
  assume
A5: i in dom p;
then A6: i >= 1 by FINSEQ_3:25;
A7: i <= len p by A5,FINSEQ_3:25;
  consider n being Nat such that
A8: i = 1+n by A6,NAT_1:10;
  reconsider n as Element of NAT by ORDINAL1:def 12;
A9: n < len p by A7,A8,NAT_1:13;
then  (x-flat_tree p)|<*n*> = root-tree (p.i) by A8,Th9;
  hence thesis by A1,A2,A4,A8,A9,Def4;
end;
