reserve i, i1, i2, j, k for Nat,
  r, s for Real;
reserve D for non empty set,
  f1 for FinSequence of D;

theorem Th25:
  for f being non constant standard special_circular_sequence,
      g being FinSequence of TOP-REAL 2,i1,i2 being Nat st
      g is_a_part>_of f,i1,i2 & i1<=i2 holds
        len g=i2-'i1+1 & g=mid(f,i1,i2)
proof
  let f be non constant standard special_circular_sequence, g be FinSequence
  of TOP-REAL 2,i1,i2 be Nat;
  assume that
A1: g is_a_part>_of f,i1,i2 and
A2: i1<=i2;
A3: 1<=len g by A1;
A4: 1<=i1 by A1;
A5: i1+1<=len f by A1;
  then
A6: i1+1-1<=len f-1 by XREAL_1:9;
  then
A7: 1<=len f-1 by A4,XXREAL_0:2;
  then
A8: len f-1=len f-'1 by NAT_D:39;
A9: now
    per cases;
    case
A10:  (i1+len g)-'1 mod (len f -'1)<>0;
A11:  i1<=len f -'1 by A5,NAT_D:49;
      then
A12:  ((i1+len g)-'1 mod (len f -'1)) <len f-'1 by A4,NAT_D:1;
      1<=len f -'1 by A4,A11,XXREAL_0:2;
      then
A13:  len f -'1<len f by NAT_D:51;
      S_Drop((i1+len g)-'1,f)=((i1+len g)-'1 mod (len f -'1)) by A10,Def1;
      hence S_Drop((i1+len g)-'1,f)< len f by A12,A13,XXREAL_0:2;
    end;
    case
A14:  (i1+len g)-'1 mod (len f -'1)=0;
      i1<=len f -'1 by A5,NAT_D:49;
      then
A15:  1<=len f -'1 by A4,XXREAL_0:2;
      S_Drop((i1+len g)-'1,f)=len f -'1 by A14,Def1;
      hence S_Drop((i1+len g)-'1,f)< len f by A15,NAT_D:51;
    end;
  end;
A16: f.i2=f.S_Drop((i1+len g)-'1,f) by A1;
A17: i2+1<=len f by A1;
A18: now
    per cases;
    case
      (i1+len g)-'1 mod (len f -'1)<>0;
      then 0+1<=(i1+len g)-'1 mod (len f -'1) by NAT_1:13;
      hence 1<=S_Drop((i1+len g)-'1,f) by Def1;
    end;
    case
A19:  (i1+len g)-'1 mod (len f -'1)=0;
A20:  i1<=len f -'1 by A5,NAT_D:49;
      S_Drop((i1+len g)-'1,f)=len f -'1 by A19,Def1;
      hence 1<=S_Drop((i1+len g)-'1,f) by A4,A20,XXREAL_0:2;
    end;
  end;
  i1<=i1+1 by NAT_1:11;
  then
A21: i1<=len f by A5,XXREAL_0:2;
A22: 0<>len f-'1 by A7,NAT_D:39;
A23: len g<len f by A1;
A24: 1<=i2 by A1;
  i2<=i2+1 by NAT_1:11;
  then
A25: i2<=len f by A17,XXREAL_0:2;
A26: i2<=len f -'1 by A17,NAT_D:49;
  then 1<=len f -'1 by A24,XXREAL_0:2;
  then len f -'1<len f by NAT_D:51;
  then
A27: i2<len f by A26,XXREAL_0:2;
  now
    per cases by XXREAL_0:1;
    case
A28:  i2<S_Drop((i1+len g)-'1,f);
      i2<=len f by A17,NAT_D:46;
      then
A29:  f/.i2=f.i2 by A24,FINSEQ_4:15;
A30:  1<=S_Drop((i1+len g)-'1,f) by A24,A28,XXREAL_0:2;
      f/.i2<>f/.(S_Drop((i1+len g)-'1,f)) by A24,A9,A28,GOBOARD7:36;
      hence contradiction by A16,A9,A29,A30,FINSEQ_4:15;
    end;
    case
A31:  i2>S_Drop((i1+len g)-'1,f);
      i2<=len f by A17,NAT_D:46;
      then
A32:  f/.i2=f.i2 by A24,FINSEQ_4:15;
      f/.i2<>f/.(S_Drop((i1+len g)-'1,f)) by A18,A27,A31,GOBOARD7:36;
      hence contradiction by A16,A18,A9,A32,FINSEQ_4:15;
    end;
    case
A33:  i2=S_Drop((i1+len g)-'1,f);
      now
        per cases;
        case
A34:      (i1+len g)-'1 mod (len f -'1)<>0;
          ex n being Nat st i1+len g -'1 =(len f-'1)*n+((i1+len g-'1) mod
(len f -'1)) & ((i1+len g-'1) mod (len f -'1))<len f -'1 by A22,NAT_D:def 2;
          then consider n being Nat such that
A35:      i1+len g -'1 =(len f-'1)*n+((i1+len g)-'1 mod (len f -'1));
A36:      i1+len g -'1=(len f-'1)*n+i2 by A33,A34,A35,Def1;
          now
            per cases;
            case
A37:          n=0;
A38:          dom g = Seg len g by FINSEQ_1:def 3;
A39:          i1+len g-'1=i1+len g-1 by A4,NAT_1:12,XREAL_1:233;
A40:          i2=i1+len g -'1 by A33,A34,A35,A37,Def1;
              then
A41:          i2+1-i1 = len g by A39;
A42:          for j be Nat st j in dom g holds g.j = mid(f,i1,i2).j
              proof
                let j be Nat;
                assume
A43:            j in dom g;
                then
A44:            1<=j by A38,FINSEQ_1:1;
                then
A45:            i1+j-'1=i1+j-1 by NAT_D:37;
                i1+j>=1+1 by A4,A44,XREAL_1:7;
                then
A46:            i1+j-'1<>0 by A45;
A47:            j<=len g by A38,A43,FINSEQ_1:1;
                then j+i1<=i2-i1+1+i1 by A40,A39,XREAL_1:6;
                then
A48:            i1+j<=len f by A17,XXREAL_0:2;
A49:            now
                  per cases;
                  case
A50:                i1+j=len f;
                    then (i1+j-'1) mod (len f-'1)=0 by NAT_D:25;
                    hence S_Drop(i1+j-'1,f)=i1+j-'1 by A50,Def1;
                  end;
                  case
                    i1+j<>len f;
                    then i1+j<len f by A48,XXREAL_0:1;
                    then i1+j-1<len f-1 by XREAL_1:9;
                    then i1+j-'1<len f-'1 by A4,A8,NAT_D:37;
                    then (i1+j-'1)mod (len f-'1)=i1+j-'1 by NAT_D:24;
                    hence S_Drop((i1+j)-'1,f)=i1+j-'1 by A46,Def1;
                  end;
                end;
                g.j=f.S_Drop((i1+j)-'1,f) by A1,A44,A47;
                hence thesis by A2,A4,A25,A41,A44,A47,A49,FINSEQ_6:122;
              end;
A51:          i2-i1+1=len g by A40,A39;
              then len g=i2-'i1+1 by A2,XREAL_1:233;
              then len mid(f,i1,i2) = len g by A2,A4,A24,A21,A25,FINSEQ_6:118;
              hence thesis by A2,A51,A42,FINSEQ_2:9,XREAL_1:233;
            end;
            case
              n<>0;
              then 0+1<=n by NAT_1:13;
              then
A52:          (len f-'1)*n>=(len f-'1)*1 by XREAL_1:64;
              len g+1<=len f by A23,NAT_1:13;
              then len g+1-1<=len f-1 by XREAL_1:9;
              then len g<=len f-'1 by XREAL_0:def 2;
              then len g+i1<=len f-'1+i2 by A2,XREAL_1:7;
              then i1+len g<len f-'1+i2+1 by NAT_1:13;
              then
A53:          i1+len g-1<len f-'1+i2+1-1 by XREAL_1:14;
              i1<=i1+len g by NAT_1:11;
              then i1+len g-1=i1+len g-'1 by A4,XREAL_1:233,XXREAL_0:2;
              then i1+len g-'1-i2<len f-'1+i2-i2 by A53,XREAL_1:14;
              hence contradiction by A36,A52;
            end;
          end;
          hence thesis;
        end;
        case
A54:      (i1+len g)-'1 mod (len f -'1)=0;
          ex n being Nat st i1+len g -'1 =(len f-'1)*n+((i1+len g-'1) mod
(len f -'1)) & ((i1+len g-'1) mod (len f -'1))<len f -'1 by A22,NAT_D:def 2;
          then consider n being Nat such that
A55:      i1+len g -'1 =(len f-'1)*n+((i1+len g-'1) mod (len f -'1));
A56:      now
            assume n>1;
            then n>=1+1 by NAT_1:13;
            then
A57:        i1+len g -'1>=(len f-'1)*(1+1) by A54,A55,NAT_1:4;
            len g -1<len f-1 by A23,XREAL_1:9;
            then i1+(len g -1)<len f-'1+(len f-'1) by A6,A8,XREAL_1:8;
            then i1+len g -1<len f-'1+(len f-'1);
            hence contradiction by A4,A57,NAT_1:12,XREAL_1:233;
          end;
          now
            assume n=0;
            then
A58:        i1+len g<=1 by A54,A55,NAT_D:36;
            i1+len g>=1+1 by A4,A3,XREAL_1:7;
            hence contradiction by A58,XXREAL_0:2;
          end;
          then n>=0+1 by NAT_1:13;
          then
A59:      n=1 by A56,XXREAL_0:1;
          i1+len g -'1=i2*n by A33,A54,A55,Def1;
          then
A60:      i1+len g-1=i2 by A24,A59,NAT_D:39;
A61:      i2-i1=i2-'i1 by A2,XREAL_1:233;
          then
A62:      len g=i2-'i1+1 by A60;
A63:      dom g = Seg len g by FINSEQ_1:def 3;
A64:      for j be Nat st j in dom g holds g.j = mid(f,i1,i2).j
          proof
            let j be Nat;
            assume
A65:        j in dom g;
            then
A66:        1<=j by A63,FINSEQ_1:1;
            then
A67:        i1+j-'1=i1+j-1 by NAT_D:37;
A68:        j<=len g by A63,A65,FINSEQ_1:1;
            then j+i1<=i2-i1+1+i1 by A60,XREAL_1:6;
            then
A69:        i1+j<=len f by A17,XXREAL_0:2;
            i1+j>=1+1 by A4,A66,XREAL_1:7;
            then
A70:        i1+j-'1<>0 by A67;
A71:        now
              per cases;
              case
A72:            i1+j=len f;
                then (i1+j-'1) mod (len f-'1)=0 by NAT_D:25;
                hence S_Drop(i1+j-'1,f)=i1+j-'1 by A72,Def1;
              end;
              case
                i1+j<>len f;
                then i1+j<len f by A69,XXREAL_0:1;
                then i1+j-1<len f-1 by XREAL_1:9;
                then
A73:            i1+j-'1<len f-'1 by A4,A8,NAT_D:37;
                then (i1+j-'1) mod (len f-'1)<>0 by A70,NAT_D:24;
                then S_Drop((i1+j)-'1,f)=(i1+j-'1) mod (len f-'1) by Def1;
                hence S_Drop((i1+j)-'1,f)=i1+j-'1 by A73,NAT_D:24;
              end;
            end;
            g.j=f.S_Drop((i1+j)-'1,f) by A1,A66,A68;
            hence thesis by A2,A4,A25,A62,A66,A68,A71,FINSEQ_6:122;
          end;
          len mid(f,i1,i2) = len g by A2,A4,A24,A21,A25,A62,FINSEQ_6:118;
          hence thesis by A60,A61,A64,FINSEQ_2:9;
        end;
      end;
      hence thesis;
    end;
  end;
  hence thesis;
end;
