reserve i,j,k,n,m for Nat,
  x,y,z,y1,y2 for object, X,Y,D for set,
  p,q for XFinSequence;

theorem Th13: ::RFINSEQ:21
  (p|n)^(p/^n) = p
proof
  set pn = p/^n;
  now
    per cases;
    case
A1:   len p<=n;
      p/^n = {} by A1,Th6;
      hence thesis by A1,AFINSQ_1:52;
    end;
    case
A2:   n<len p;
      set g=p|n;
A3:   len (g) = n by A2,AFINSQ_1:54;
A4:   len pn = len p - n by A2,Th7;
A5:   now
        let m;
        assume
A6:     m < len p;
        now
          per cases;
          case
            m<n;
            then
A7:         m in Segm n by NAT_1:44;
            hence ((p|n)^(p/^n)).m = (p|n).m by A3,AFINSQ_1:def 3
              .= p.m by A2,A7,AFINSQ_1:53;
          end;
          case
            n<=m;
            then max(0,m-n) = m-n by FINSEQ_2:4;
            then reconsider k = m-n as Element of NAT by FINSEQ_2:5;
            k< len pn by A4,A6,XREAL_1:9;
            then
A8:         k in dom pn by AFINSQ_1:86;
            m=len (p|n) +k by A3;
            hence ((p|n) ^ (p/^n)).m = pn.k by A8,AFINSQ_1:def 3
              .= p.(k+n) by A8,Def2
              .= p.m;
          end;
        end;
        hence ((p|n) ^ (p/^n)).m = p.m;
      end;
      len (g^(p/^n)) = n+(len p - n) by A4,A3,AFINSQ_1:17
        .= len p;
      hence thesis by A5,AFINSQ_1:9;
    end;
  end;
  hence thesis;
end;
