reserve i,j,n,k,m for Nat,
     a,b,x,y,z for object,
     F,G for FinSequence-yielding FinSequence,
     f,g,p,q for FinSequence,
     X,Y for set,
     D for non empty set;

theorem Th61:
  f in doms F & g in doms G implies
     (App(F^G)).(f^g) = ((App F).f) ^ ((App G).g)
proof
  set FG=F^G,AF=App F,AG=App G,AFG=App FG;
  assume
A1: f in doms F & g in doms G;
  then
A2: f^g in doms FG by Th48;
A3: len (f^g) = len f + len g by FINSEQ_1:22;
  then
A4: len (AF.f) = len f & len (AG.g) = len g &
    len (AFG.(f^g)) = len f + len g by A1,A2,Def9;
A5: len f=len F & len g=len G by A1,Th47;
  then
A6: dom f = dom F & dom g = dom G by FINSEQ_3:30;
  for i st 1<=i & i <= len (AFG.(f^g)) holds
    (AFG.(f^g)).i = ((AF.f) ^ (AG.g)).i
  proof
    let i;
    assume 1<=i & i <= len (AFG.(f^g));
    then
A7:   i in dom (f^g) by A3,A4,FINSEQ_3:25;
    then per cases by FINSEQ_1:25;
    suppose
A8:     i in dom f;
      then i in dom (AF.f) by A4,FINSEQ_3:29;
      hence ((AF.f) ^ (AG.g)).i = (AF.f).i by FINSEQ_1:def 7
      .= (F.i).(f.i) by A8,A1,Def9
      .= (FG.i).(f.i) by A8,A6,FINSEQ_1:def 7
      .= (FG.i).((f^g).i) by A8,FINSEQ_1:def 7
      .= (AFG.(f^g)).i by A2,A7,Def9;
    end;
    suppose ex n st n in dom g & i=len f + n;
      then consider n such that
A9:     n in dom g & i=len f + n;
      n in dom (AG.g) by A4,A9,FINSEQ_3:29;
      hence ((AF.f) ^ (AG.g)).i = (AG.g).n by FINSEQ_1:def 7,A9,A4
      .= (G.n).(g.n) by A9,A1,Def9
      .= (FG.i).(g.n) by A9,A5,A6,FINSEQ_1:def 7
      .= (FG.i).((f^g).i) by A9,FINSEQ_1:def 7
      .= (AFG.(f^g)).i by A2,A7,Def9;
    end;
  end;
  hence thesis by A4,FINSEQ_1:22;
end;
