
theorem
  for D being non empty set,CR being FinSequence of D holds
  CR separates_uniquely iff len ovlpart(CR/^1,CR) =0
proof
  let D be non empty set,CR be FinSequence of D;
  set p= ovlpart(CR/^1,CR);
A1: now
    assume
A2: CR separates_uniquely;
    set f=(CR|1) ^ ovlcon(CR/^1,CR);
A3: f=(CR|1) ^ (CR/^1) ^ (CR/^(len ovlpart(CR/^1,CR))) by FINSEQ_1:32
      .= CR ^ (CR/^(len ovlpart(CR/^1,CR))) by RFINSEQ:8;
A4: f=(CR|1)^(((CR/^1)|(len (CR/^1)-'len ovlpart(CR/^1,CR)))^CR) by Th11
      .=(CR|1)^((CR/^1)|(len (CR/^1)-'len ovlpart(CR/^1,CR)))^CR
    by FINSEQ_1:32;
A5: len ((CR|1)^((CR/^1)|(len (CR/^1)-'len ovlpart(CR/^1,CR))))
    =len (CR|1)+len ((CR/^1)|(len (CR/^1)-'len ovlpart(CR/^1,CR)))
    by FINSEQ_1:22
.=len (CR|1) +(len (CR/^1)-'len ovlpart(CR/^1,CR)) by FINSEQ_1:59,NAT_D:35
      .=len (CR|1) +(len (CR/^1)-len ovlpart(CR/^1,CR)) by Th16,XREAL_1:233
      .=len (CR|1)+len (CR/^1)- len ovlpart(CR/^1,CR)
      .=len ((CR|1)^(CR/^1))- len ovlpart(CR/^1,CR) by FINSEQ_1:22
      .=len CR - len ovlpart(CR/^1,CR) by RFINSEQ:8;
A6: len CR - len ovlpart(CR/^1,CR)=len CR -' len ovlpart(CR/^1,CR)
    by Th16,XREAL_1:233;
A7: len CR +1-'1=len CR by NAT_D:34;
A8: len ovlpart(CR/^1,CR)<=len CR by Def2;
A9: len f= len (CR|1) +len ovlcon(CR/^1,CR) by FINSEQ_1:22
      .= len (CR|1) +(len (CR/^1)+len CR - len ovlpart(CR/^1,CR)) by Th15
      .= len (CR|1) +len (CR/^1)+(len CR - len ovlpart(CR/^1,CR))
      .= len ((CR|1)^(CR/^1))+(len CR - len ovlpart(CR/^1,CR)) by FINSEQ_1:22
      .= len CR + (len CR - len ovlpart(CR/^1,CR)) by RFINSEQ:8;
    set j=len CR +1-'len ovlpart(CR/^1,CR);
A10: len CR<len CR +1 by XREAL_1:29;
A11: len ovlpart(CR/^1,CR)<=len CR by Def2;
    then
A12: j=1+len CR -len ovlpart(CR/^1,CR) by A10,XREAL_1:233,XXREAL_0:2
      .=1+(len CR -len ovlpart(CR/^1,CR))
      .=1+(len CR -'len ovlpart(CR/^1,CR)) by A11,XREAL_1:233;
    then
A13: 1<=j by NAT_1:12;
A14: smid(f,1,1+len CR-'1)=(f/^(0+1-'1))|(len CR+1-'1) by NAT_D:34
      .=(f/^0)|len CR by A7,NAT_D:34
      .=f|len CR by FINSEQ_5:28
      .=CR by A3,FINSEQ_5:23;
    j+len CR-'1+1 =j+len CR-1+1 by A13,NAT_1:12,XREAL_1:233
      .=j+len CR;
    then
A15: j+len CR-'1+1-'j =j+len CR -j by NAT_1:12,XREAL_1:233
      .=len CR;
    1<= 1+(len CR -'len ovlpart(CR/^1,CR)) by NAT_1:12;
    then 1<= 1+(len CR -len ovlpart(CR/^1,CR)) by A8,XREAL_1:233;
    then 1<= 1+len CR -len ovlpart(CR/^1,CR);
    then 1<=len CR +1-'len ovlpart(CR/^1,CR) by A8,NAT_1:12,XREAL_1:233;
    then len CR +1-'len ovlpart(CR/^1,CR)-'1
    =len CR +1-'len ovlpart(CR/^1,CR)-1 by XREAL_1:233;
    then len CR +1-'len ovlpart(CR/^1,CR)-'1
    =len CR+1-len ovlpart(CR/^1,CR) -1 by A8,NAT_1:12,XREAL_1:233
      .=len CR +1 -1-len ovlpart(CR/^1,CR)
      .=len CR -'len ovlpart(CR/^1,CR) by A11,XREAL_1:233;
    then
A16: smid(f,j,j+len CR-'1) =CR|len CR by A4,A5,A6,A15,FINSEQ_5:37
      .=smid(f,1,1+len CR-'1) by A14,FINSEQ_1:58;
    len ovlpart(CR/^1,CR) <= len (CR/^1) by Th10;
    then len ovlpart(CR/^1,CR) <= len CR -'1 by RFINSEQ:29;
    then
A17: len CR+1-len ovlpart(CR/^1,CR) >= 1+len CR -(len CR -'1) by XREAL_1:10;
    now per cases;
      case len CR >=1;
        then 1+len CR -(len CR -'1)=1+len CR -(len CR -1) by XREAL_1:233
          .=1+1;
        then 1< len CR +1-len ovlpart(CR/^1,CR) by A17,XXREAL_0:2;
        then
A18:    1<j by A10,A11,XREAL_1:233,XXREAL_0:2;
        (len CR -'len ovlpart(CR/^1,CR))+len CR+1 -'1
        <= len CR + (len CR -' len ovlpart(CR/^1,CR)) by NAT_D:34;
        then 1+(len CR -'len ovlpart(CR/^1,CR))+len CR -'1
        <= len CR + (len CR - len ovlpart(CR/^1,CR)) by A11,XREAL_1:233;
        then
A19:    j-'1 >=len CR by A2,A9,A12,A14,A16,A18;
A20:    j-'1=1+(len CR -'len ovlpart(CR/^1,CR))-1 by A12,NAT_1:12,XREAL_1:233
          .= (len CR -'len ovlpart(CR/^1,CR));
A21:    len CR -'len ovlpart(CR/^1,CR)<=len CR by NAT_D:35;
        len CR -'len ovlpart(CR/^1,CR)=len CR -len ovlpart(CR/^1,CR)
        by A11,XREAL_1:233;
        then len CR -len ovlpart(CR/^1,CR)=len CR by A19,A20,A21,XXREAL_0:1;
        hence len ovlpart(CR/^1,CR) =0;
      end;
      case len CR<1;
        then len CR<0+1;
        then len CR<=0 by NAT_1:13;
        hence len ovlpart(CR/^1,CR) =0 by Def2;
      end;
    end;
    hence len ovlpart(CR/^1,CR) =0;
  end;
  now
    assume
A22: len ovlpart(CR/^1,CR) =0;
    for f being FinSequence of D,i,j being Element of NAT
    st 1<=i & i<j & j+len CR-'1<=len f &
    smid(f,i,i+len CR-'1)=smid(f,j,j+len CR-'1) & smid(f,i,i+len CR-'1)=CR
    holds j-'i>=len CR
    proof
      let f be FinSequence of D,i,j be Element of NAT;
      assume that
A23:  1<=i and
A24:  i<j and
A25:  j+len CR-'1<=len f and
A26:  smid(f,i,i+len CR-'1)=smid(f,j,j+len CR-'1) and
A27:  smid(f,i,i+len CR-'1)=CR;
A28:  j-i>0 by A24,XREAL_1:50;
      then
A29:  j-'i=j-i by XREAL_0:def 2;
A30:  i+(j-'i)=j-i+i by A28,XREAL_0:def 2
        .=j;
      now per cases;
        case len CR<=0;
          hence thesis;
        end;
        case
A31:      len CR>0;
          then
A32:      0+1<=len CR by NAT_1:13;
          then
A33:      len CR -'1=len CR-1 by XREAL_1:233;
A34:      i+len CR-'1=i+len CR-1 by A32,NAT_1:12,XREAL_1:233;
A35:      i<=i+(len CR -'1) by NAT_1:12;
          then
A36:      1<=i+len CR -'1 by A23,A33,A34,XXREAL_0:2;
          set k=j-'i;
A37:      0+1<=k by A24,XREAL_1:50,A29,NAT_1:13;
          then
A38:      k-1=k-'1 by XREAL_1:233;
A39:      i+(k-'1)=i+(k-1) by A37,XREAL_1:233
            .=i+(j-i-1) by A28,XREAL_0:def 2
            .=j-1;
          i+1<=j by A24,NAT_1:13;
          then
A40:      i+1-1<=j-1 by XREAL_1:9;
          then
A41:      j-'1=j-1 by XREAL_0:def 2;
          j-i>0 by A24,XREAL_1:50;
          then j-'i>0 by XREAL_0:def 2;
          then
A42:      j-'i>=0+1 by NAT_1:13;
A43:      j-'1<=j-'1+len CR by NAT_1:12;
          j<=j+len CR by NAT_1:12;
          then
A44:      i<j+len CR by A24,XXREAL_0:2;
          j-'1+len CR=j-1+len CR by A40,XREAL_0:def 2
            .=j+len CR-1
            .=j+len CR-'1 by A23,A44,XREAL_1:233,XXREAL_0:2;
          then
A45:      i+(k-'1)<=len f by A25,A39,A41,A43,XXREAL_0:2;
          now
            assume
A46:        j-'i<len CR;
            then k-1<len CR-1 by XREAL_1:9;
            then k-'1<len CR-1 by A42,XREAL_1:233;
            then k-'1<len CR -'1 by A32,XREAL_1:233;
            then
A47:        k-'1+1<=len CR -'1 by NAT_1:13;
A48:        k-k<len CR -k by A46,XREAL_1:9;
            then 0<len CR -'k by XREAL_0:def 2;
            then
A49:        0+1<=len CR -'k by NAT_1:13;
A50:        len CR -'k=len CR -k by A48,XREAL_0:def 2;
            1<len CR by A37,A46,XXREAL_0:2;
            then 1+1<=len CR by NAT_1:13;
            then
A51:        1+1-1<=len CR -1 by XREAL_1:9;
A52:        len CR-'1=len CR-1 by A37,A46,XREAL_1:233,XXREAL_0:2;
            then
A53:        len CR -'k<= len CR -'1 by A37,A50,XREAL_1:10;
            i<=i+(k-'1) by NAT_1:12;
            then
A54:        i<=len f by A45,XXREAL_0:2;
            j+len CR-'1=j+len CR-1 by A23,A44,XREAL_1:233,XXREAL_0:2
              .=j+(len CR-1)
              .=j+(len CR-'1) by A32,XREAL_1:233;
            then j<=j+len CR -'1 by NAT_1:12;
            then
A55:        j<=len f by A25,XXREAL_0:2;
            i+1<=j by A24,NAT_1:13;
            then i+1+len CR<=j+len CR by XREAL_1:7;
            then
A56:        i+1+len CR-1<=j+len CR-1 by XREAL_1:9;
A57:        1<j by A23,A24,XXREAL_0:2;
A58:        j<j+len CR by A31,XREAL_1:29;
            then
A59:        1<j+len CR by A57,XXREAL_0:2;
A60:        j+len CR-'1=j+len CR-1 by A57,A58,XREAL_1:233,XXREAL_0:2;
            then
A61:        i+1-1+len CR <=len f by A25,A56,XXREAL_0:2;
            i+len CR<=i+len CR+1 by NAT_1:12;
            then i+len CR -'1<=i+len CR by A34,XREAL_1:20;
            then
A62:        i+len CR-'1<=len f by A61,XXREAL_0:2;
A63:        0+1<= j+len CR-'1 by A60,NAT_1:13,A59,XREAL_1:50;
            j+1<=j+len CR by A58,NAT_1:13;
            then
A64:        j+1-1<=j+len CR-1 by XREAL_1:9;
A65:        len CR <=len CR +k by NAT_1:12;
            then
A66:        len CR -k<=len CR by XREAL_1:20;
A67:        len CR -'k<=len CR by A50,A65,XREAL_1:20;
A68:        len smid(CR,1,(len CR) -'k)
            = len mid(CR,1,(len CR) -'k) by A49,Th4;
A69:        len mid(CR,1,(len CR) -'k)
            = (len CR) -'k -'1+1 by A32,A49,A50,A66,FINSEQ_6:118
              .= (len CR) -'k -1+1 by A49,XREAL_1:233
              .= (len CR) -'k;
A70:        len (CR/^1) -'(len CR-'k)+1
            =len CR-'1-'(len CR -'k)+1 by RFINSEQ:29
              .=len CR-'1-(len CR-'k)+1 by A53,XREAL_1:233
              .=len CR-1-(len CR-k)+1 by A37,A46,A50,XREAL_1:233,XXREAL_0:2
              .=k;
A71:        len (CR/^1)=len CR -'1 by RFINSEQ:29;
            then
A72:        smid(CR/^1,len (CR/^1) -'(len CR-'k)+1,len (CR/^1) )
            = mid(CR/^1,k,len CR -'1) by A38,A47,A70,Th4;
A73:        len mid(CR/^1,k,len CR -'1)=len CR-'1-'k+1
            by A37,A38,A47,A51,A52,A71,FINSEQ_6:118
              .=len CR-'1-k+1 by A38,A47,XREAL_1:233
              .=len CR -1-k+1 by A37,A46,XREAL_1:233,XXREAL_0:2
              .=len CR -'k by A48,XREAL_0:def 2;
            for jj being Nat st 1<=jj & jj<=len CR -'k holds
            smid(CR,1,(len CR) -'k).jj
            =smid(CR/^1,len (CR/^1) -'(len CR-'k)+1,len (CR/^1)).jj
            proof
              let jj be Nat;
              assume that
A74:          1<=jj and
A75:          jj<=len CR-'k;
A76:          jj+k<=len CR -'k+k by A75,XREAL_1:7;
              then
A77:          jj+k-1<=len CR -1 by A50,XREAL_1:9;
              reconsider j1=jj as Element of NAT by ORDINAL1:def 12;
A78:          len mid(f,i,i+len CR-'1)=i+len CR-'1-'i+1
              by A23,A33,A34,A35,A36,A54,A62,FINSEQ_6:118
                .=i+len CR -1-i+1 by A33,A34,A35,XREAL_1:233
                .=len CR;
              len CR-'k<=len CR by NAT_D:35;
              then
A79:          jj <= len CR by A75,XXREAL_0:2;
A80:          1<=jj+(k-'1) by A74,NAT_1:12;
A81:          jj+(k-'1)=jj+(k-1) by A37,XREAL_1:233
                .=jj+k-1
                .=jj+k-'1 by A74,NAT_1:12,XREAL_1:233;
A82:          1<=jj+k by A74,NAT_1:12;
              jj+k-'1<=len CR -1 by A74,A77,NAT_1:12,XREAL_1:233;
              then jj+k-'1<=len CR -'1 by A32,XREAL_1:233;
              then jj+k-'1 in Seg len (CR/^1) by A71,A80,A81;
              then
A83:          jj+k-'1 in dom (CR/^1) by FINSEQ_1:def 3;
A84:          smid(f,j,j+len CR-'1) =mid(f,j,j+len CR-'1) by A60,A64,Th4;
              thus
              smid(CR/^1,len (CR/^1) -'(len CR-'k)+1,len (CR/^1)).jj
=(CR/^1).(j1+k-'1) by A37,A38,A47,A51,A52,A71,A72,A73,A74,A75,FINSEQ_6:118
.= smid(f,i,i+len CR-'1).(jj+k-'1+1) by A27,A32,A83,RFINSEQ:def 1
                .= mid(f,i,i+len CR-'1).(jj+k-'1+1) by A33,A34,A35,Th4
                .= mid(f,i,i+len CR-'1).(jj+k-1+1) by A74,NAT_1:12,XREAL_1:233
                .=f.(i+(j1+k)-'1)
              by A23,A33,A34,A35,A36,A50,A54,A62,A76,A78,A82,FINSEQ_6:118
                .=f.(i+k+j1-'1)
                .=CR.jj by A25,A26,A27,A30,A55,A57,A60,A63,A64,A74,A79,A84,
FINSEQ_6:118
                .=CR.(j1+1-'1) by NAT_D:34
                .= mid(CR,1,(len CR) -'k).j1
              by A32,A49,A50,A66,A69,A74,A75,FINSEQ_6:118
                .= smid(CR,1,(len CR) -'k).jj by A49,Th4;
            end;
            then smid(CR,1,(len CR)-'k)
            =smid(CR/^1,len (CR/^1) -'(len CR-'k)+1,len (CR/^1))
              by A68,A69,A72,A73;
            then (len CR)-'k<=len p by A67,Def2;
            hence contradiction by A22,A48,XREAL_0:def 2;
          end;
          hence thesis;
        end;
      end;
      hence thesis;
    end;
    hence CR separates_uniquely;
  end;
  hence thesis by A1;
end;
