reserve x,y,z for object, X,Y for set,
  i,k,n for Nat,
  p,q,r,s for FinSequence,
  w for FinSequence of NAT,
  f for Function;

theorem
  for p being Tree-yielding FinSequence holds
  tree(p^<*elementary_tree 0*>) = tree(p) \/ elementary_tree (len p + 1)
proof
  let p be Tree-yielding FinSequence;
  len p < len p+1 by NAT_1:13;
  then
A1: <*len p*> in elementary_tree (len p + 1) by TREES_1:28;
  then
A2: <*len p*> in tree(p) \/ elementary_tree (len p + 1) by XBOOLE_0:def 3;
  {} in (elementary_tree (len p+1))|<*len p*> by TREES_1:22;
  then
A3: elementary_tree 0 c= (elementary_tree (len p+1))|<*len p*>
  by TREES_1:29,ZFMISC_1:31;
A4: (elementary_tree (len p+1))|<*len p*> c= elementary_tree 0
  proof
    let x be object;
    assume x in (elementary_tree (len p+1))|<*len p*>;
    then reconsider q = x as Element of (elementary_tree (len p+1))|<*len p*>;
    <*len p*>^q in elementary_tree (len p+1) by A1,TREES_1:def 6;
    then consider n such that
    n < len p+1 and
A5: <*len p*>^q = <*n*> by TREES_1:30;
A6: len <*n*> = 1 by FINSEQ_1:40;
    len <*len p*> = 1 by FINSEQ_1:40;
    then 1+len q = 1+0 by A5,A6,FINSEQ_1:22;
    then x = {};
    hence thesis by TREES_1:22;
  end;
  now
    let n,r;
    assume <*len p*> = <*n*>^r;
    then n = <*len p*>.1 by FINSEQ_1:41
      .= len p;
    hence not n < len p;
  end;
  then not ex n,q st n < len p & q in p.(n+1) & <*len p*> = <*n*>^q;
  then not <*len p*> in tree(p) by Def15;
  then
A7: (tree(p) \/ elementary_tree (len p + 1))|<*len p*>
  = (elementary_tree (len p+1))|<*len p*> by A2,Th47
    .= elementary_tree 0 by A3,A4;
  thus tree(p^<*elementary_tree 0*>)
  = (tree(p) \/ elementary_tree (len p + 1)) with-replacement(<*len p*>,
  elementary_tree 0) by Th55
    .= tree(p) \/ elementary_tree (len p + 1) by A2,A7,TREES_2:6;
end;
