
theorem FXF:
  for D be set, f,g be FinSequence of D holds f^g = f^(FS2XFS g)
  proof
    let D be set, f,g be FinSequence of D;
    A1: len (f^g) = len f + len g by FINSEQ_1:22
    .= len f + len (FS2XFS g) by AFINSQ_1:def 8
    .= len (f^(FS2XFS g)) by XL1;
    for k be Nat st k in dom (f^g) holds (f^g).k = (f^(FS2XFS g)).k
    proof
      let k be Nat;
      assume k in dom (f^g); then
      per cases by FINSEQ_1:25;
      suppose
        k in dom f; then
        (f^g).k = f.k & (f^(FS2XFS g)).k = f.k by Def2,FINSEQ_1:def 7;
        hence thesis;
      end;
      suppose
        ex n be Nat st n in dom g & k = len f + n; then
        consider n be Nat such that
        C1: n in dom g & k = len f + n;
        1 <= n <= len g by C1,FINSEQ_3:25; then
        reconsider m = n-1 as Nat;
        C2: m + 1 <= len g by C1,FINSEQ_3:25; then
        m < len g by NAT_1:13; then
        m in Segm len g by NAT_1:44; then
        C3: m in Segm len (FS2XFS g) by AFINSQ_1:def 8;
        (f^g).(len f + n) = g.(m+1) by C1,FINSEQ_1:def 7
        .= (FS2XFS g).m by C2,NAT_1:13,AFINSQ_1:def 8
        .= (f^(FS2XFS g)).(len f + m + 1) by C3,Def2;
        hence thesis by C1;
      end;
    end;
    hence thesis by A1,FINSEQ_3:29;
  end;
