reserve a,b,c for set;

theorem Th39:
  for D being non empty set,f,CR being File of D holds CR
  is_substring_of ovlcon(f,CR),1
proof
  let D be non empty set,f,CR be File of D;
  per cases;
  suppose
A1: len CR >0;
    set i3=len f-'len ovlpart(f,CR);
A2: len CR>= 0+1 by A1,NAT_1:13;
    then
A3: i3+1 <= i3+ len CR by XREAL_1:6;
    then
A4: i3+len CR-'(i3+1)+1=i3+len CR-(i3+1)+1 by XREAL_1:233
      .=len CR;
    1-len ovlpart(f,CR)<=len CR - len ovlpart(f,CR) by A2,XREAL_1:9;
    then 1-len ovlpart(f,CR)+len f <=len CR - len ovlpart(f,CR) + len f by
XREAL_1:7;
    then
A5: len f - len ovlpart(f,CR)>=0 & len f -len ovlpart(f,CR)+1<= len f + (
    len CR - len ovlpart(f,CR)) by FINSEQ_8:10,XREAL_1:48;
    len ovlpart(f,CR)<= len CR by FINSEQ_8:def 2;
    then
A6: len CR - len ovlpart(f,CR) >=0 by XREAL_1:48;
    set i4= len f-'len ovlpart(f,CR)+1;
A7: i3<=len (f|i3) by FINSEQ_1:59,NAT_D:35;
A8: (f|i3)/^i3=(f/^i3)|(i3-'i3) by FINSEQ_5:80
      .=(f/^i3)|0 by XREAL_1:232
      .={};
    len (CR/^(len ovlpart(f,CR)))= len CR -' len ovlpart(f,CR) by RFINSEQ:29
      .= len CR - len ovlpart(f,CR) by A6,XREAL_0:def 2;
    then
    ovlcon(f,CR)=f^(CR/^(len ovlpart(f,CR))) & len f-'len ovlpart(f,CR)+1
    <= len f + len (CR/^(len ovlpart(f,CR))) by A5,FINSEQ_8:def 3,XREAL_0:def 2
    ;
    then
A9: 1<=i4 & i4<=len ovlcon(f,CR) by FINSEQ_1:22,NAT_1:11;
    mid((ovlcon(f,CR)),i4,(i4-'1)+len CR) =mid(((f|i3)^CR),i4,(i4-'1)+len
    CR) by FINSEQ_8:11
      .=mid(((f|i3)^CR),i3+1,i3+len CR) by NAT_D:34
      .=(((f|i3)^CR)/^(i3+1-'1)) | (i3+len CR-'(i3+1)+1 ) by A3,FINSEQ_6:def 3
      .=(((f|i3)^CR)/^i3) |(len CR) by A4,NAT_D:34
      .=(((f|i3)/^i3)^CR) | (len CR) by A7,GENEALG1:1
      .= CR|(len CR) by A8,FINSEQ_1:34
      .=CR by Th2;
    hence thesis by A9,FINSEQ_8:def 7;
  end;
  suppose len CR<=0;
    hence thesis by FINSEQ_8:def 7;
  end;
end;
