reserve a,x,y for object, A,B for set,
  l,m,n for Nat;
reserve X,Y for set, x for object,
  p,q for Function-yielding FinSequence,
  f,g,h for Function;

theorem Th48:
  apply(p^q,x).(len (p^q)+1) = apply(q,apply(p,x).(len p+1)).(len
  q+1)
proof
  defpred P[Function-yielding FinSequence] means apply(p^$1,x).(len (p^$1)+1)
  = apply($1,apply(p,x).(len p+1)).(len $1+1);
A1: for p being Function-yielding FinSequence st P[p] for f being Function
  holds P[p^<*f*>]
  proof
    set y = apply(p,x).(len p+1);
    let q such that
A2: apply(p^q,x).(len (p^q)+1) = apply(q,apply(p,x).(len p+1)).(len q+
    1);
    let f be Function;
A3: len <*f*> = 1 by FINSEQ_1:40;
    then
A4: len (p^q^<*f*>) = len (p^q)+1 by FINSEQ_1:22;
A5: len (q^<*f*>) = len q+1 by A3,FINSEQ_1:22;
A6: apply(q^<*f*>,y) = apply(q,y)^<*f.(apply(q,y).(len q+1))*> & len
    apply(q,y) = len q+1 by Def4,Th41;
A7: len apply(p^q,x) = len (p^q)+1 by Def4;
    p^(q^<*f*>) = p^q^<*f*> & apply(p^q^<*f*>,x) = apply(p^q,x)^<*f.(apply
    (p^q,x ).(len (p^q)+1))*> by Th41,FINSEQ_1:32;
    hence
    apply(p^(q^<*f*>),x).(len (p^(q^<*f*>))+1) = f.(apply(p^q,x).(len (p^
    q)+1)) by A7,A4,FINSEQ_1:42
      .= apply(q^<*f*>,apply(p,x).(len p+1)).(len (q^<*f*>)+1) by A2,A6,A5,
FINSEQ_1:42;
  end;
  apply({},apply(p,x).(len p+1)) = <*apply(p,x).(len p+1)*> & p^{} = p by Th39,
FINSEQ_1:34;
  then
A8: P[{}];
  for q holds P[q] from FuncSeqInd(A8,A1);
  hence thesis;
end;
