reserve m,j,p,q,n,l for Element of NAT;
reserve e1,e2 for ExtReal;
reserve i for Nat,
        k,k1,k2,j1 for Element of NAT,
        x,x1,x2,y for set;
reserve p1,p2 for FinSequence;

theorem
  for p1,p2 being FinSequence holds p1^p2 = p1 \/ (Shift(p2,len p1))
proof
  let p1,p2;
A1: dom (p1 \/ (Shift(p2,len p1))) = Seg (len p1 + len p2) by Th46;
  dom p1 misses dom (Shift(p2,len p1)) by Th47;
  then reconsider p = p1 \/ (Shift(p2,len p1)) as FinSequence by A1,
FINSEQ_1:def 2,GRFUNC_1:13;
A2: dom p = Seg (len p1 + len p2) by Th46;
A3: for k be Nat st k in dom p1 holds p.k = p1.k
  proof
    let k be Nat;
    assume k in dom p1;
    then [k,p1.k] in p1 by FUNCT_1:def 2;
    then [k,p1.k] in p by XBOOLE_0:def 3;
    hence thesis by FUNCT_1:1;
  end;
  for k be Nat st k in dom p2 holds p.(len p1 + k) = p2.k
  proof
    let k be Nat;
    assume
A4: k in dom p2;
    dom (Shift(p2,len p1)) = {j+len p1 where j is Nat: j in dom p2} by Def12;
    then len p1 + k in dom (Shift(p2,len p1)) by A4;
    then [len p1 + k, (Shift(p2,len p1)).(len p1 + k)] in
    (Shift(p2,len p1)) by FUNCT_1:def 2;
    then [len p1 + k, (Shift(p2,len p1)).(len p1 + k)] in p
    by XBOOLE_0:def 3;
    then p.(len p1 + k) = (Shift(p2,len p1)).(len p1 + k) by FUNCT_1:1;
    hence thesis by A4,Def12;
  end;
  hence thesis by A2,A3,FINSEQ_1:def 7;
end;
