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 Th54:
  for F,G be FinSequence-yielding FinSequence holds
     NAT-concatenation .: [:doms F,doms G:] = doms (F^G)
proof
  let F,G be FinSequence-yielding FinSequence;
  set C=NAT-concatenation;
  thus C .: [:doms F,doms G:] c= doms (F^G)
  proof
    let y;
    assume y in C .: [:doms F,doms G:];
    then consider x such that
A1:   x in dom C & x in [:doms F,doms G:] & C.x =y by FUNCT_1:def 6;
    consider f,g be object such that
A2:   f in doms F & g in doms G & x=[f,g] by A1,ZFMISC_1:def 2;
    reconsider f,g as NAT-valued FinSequence by A2;
    C.(f,g) = f^g by FOMODEL0:4;
    then y = f^g by A1,A2, BINOP_1:def 1;
    hence thesis by A2,Th48;
  end;
  let xy be object such that
A3: xy in doms (F^G);
  reconsider fg=xy as NAT-valued FinSequence by A3;
A4: len fg = len (F^G) = len F + len G by A3,Th47,FINSEQ_1:22;
  set f= fg|(len F);
A5: len f=len F by A4,NAT_1:11,FINSEQ_1:59;
  consider g be FinSequence such that
A6: fg = f^g by FINSEQ_1:80;
A7: f in doms F & g in doms G by Th50,A3,A6,A5;
  then
A8: [f,g] in [:doms F,doms G:] by ZFMISC_1:def 2;
  rng f c= NAT & rng g c= NAT by A7,RELAT_1:def 19;
  then f is FinSequence of NAT & g is FinSequence of NAT by FINSEQ_1:def 4;
  then f in NAT* & g in NAT* by FINSEQ_1:def 11;
  then [f,g] in [:NAT*,NAT*:] by ZFMISC_1:def 2;
  then
A9: [f,g] in dom C by FUNCT_2:def 1;
  C.(f,g)= f^g by A7,FOMODEL0:4;
  then C.[f,g] = f^g by BINOP_1:def 1;
  hence thesis by A6,A8,A9,FUNCT_1:def 6;
end;
