reserve D for non empty set;
reserve m,n,N for Nat;
reserve size for non zero Nat;
reserve f1,f2,f3,f4,f5,f6 for BinominativeFunction of D;
reserve p1,p2,p3,p4,p5,p6,p7 for PartialPredicate of D;
reserve d,v for object;
reserve V,A for set;
reserve z for Element of V;
reserve val for Function;
reserve loc for V-valued Function;
reserve d1 for NonatomicND of V,A;
reserve T for TypeSCNominativeData of V,A;

theorem
  for val being size-element FinSequence holds
  loc,val,size are_correct_wrt d1 &
  Seg size c= dom loc & loc|Seg size is one-to-one &
  loc,val are_different_wrt size
  implies
  for j,m,n being Nat st 1 <= j < m <= n <= size holds
  LocalOverlapSeq(A,loc,val,d1,size).n.(loc/.m) =
  LocalOverlapSeq(A,loc,val,d1,size).j.(val.m)
  proof
    let val be size-element FinSequence;
    assume that
A1: loc,val,size are_correct_wrt d1 and
A2: Seg size c= dom loc and
A3: loc|Seg size is one-to-one and
A4: loc,val are_different_wrt size;
    set F = LocalOverlapSeq(A,loc,val,d1,size);
    let j,m,n be Nat such that
A5: 1 <= j and
A6: j < m and
A7: m <= n and
A8: n <= size;
    defpred P[Nat] means
    m <= $1 <= size implies F.$1.(loc/.m) = F.j.(val.m);
A9: P[0] by A6;
A10: for k being Nat st P[k] holds P[k+1]
    proof
      let k be Nat such that
A11:   P[k] and
A12:  m <= k+1 and
A13:  k+1 <= size;
      set D = denaming(V,A,val.(k+1));
A14:  1 <= m by A5,A6,XXREAL_0:2;
A15:  now
        assume k < 1;
        then k+1 <= 1 by NAT_1:13;
        then m <= 1 by A12,XXREAL_0:2;
        hence contradiction by A5,A6,XXREAL_0:2;
      end;
A16:  len F = size by Def4;
A17:  k <= k+1 by NAT_1:11;
A18:  k <= size by A13,A17,XXREAL_0:2;
      then reconsider d2 = F.k as NonatomicND of V,A by A15,A16,Def6;
A19:  dom D = {d where d is NonatomicND of V,A: val.(k+1) in dom d}
      by NOMIN_1:def 18;
      1 <= k+1 by NAT_1:11;
      then val.(k+1) in dom d2 by A1,A13,A15,A18,Th10;
      then d2 in dom D by A19;
      then reconsider T = D.d2 as TypeSCNominativeData of V,A
      by PARTFUN1:4,NOMIN_1:39;
      set L = local_overlapping(V,A,d2,T,loc/.(k+1));
      per cases;
      suppose m <= k;
        hence F.(k+1).(loc/.m) = F.j.(val.m)
        by A1,A2,A3,A11,A13,A17,A14,Th12,XXREAL_0:2;
      end;
      suppose m > k;
        then k+1 <= m by NAT_1:13;
        then
A20:    m = k+1 by A12,XXREAL_0:1;
A21:    m <= size by A7,A8,XXREAL_0:2;
        j <= size by A6,A21,XXREAL_0:2;
        hence F.j.(val.m) = d1.(val.m) by A1,A5,A4,A14,A21,Th14
        .= F.(k+1).(loc/.m) by A1,A2,A3,A4,A14,A20,A21,Th13;
      end;
    end;
    for k being Nat holds P[k] from NAT_1:sch 2(A9,A10);
    hence F.n.(loc/.m) = F.j.(val.m) by A7,A8;
  end;
