reserve A,X for non empty set;
reserve f for PartFunc of [:X,X:],REAL;
reserve a for Real;

theorem Th2:
  for p being FinSequence, i,j being Nat st i in dom p & j in dom p
& for k be Nat st k in dom p & k + 1 in dom p holds p.k = p.(k + 1)
  holds p.i = p.j
proof
  let p be FinSequence, i,j be Nat such that
A1: i in dom p & j in dom p and
A2: for k be Nat st k in dom p & k + 1 in dom p holds p.k = p.(k + 1);
  defpred P[Nat] means for j being Nat st $1 in dom p & j in dom p holds p.$1
  = p.j;
A3: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat such that
A4: P[k];
    let j be Nat such that
A5: k+1 in dom p and
A6: j in dom p;
    per cases;
    suppose
A7:   k in dom p;
      hence p.(k+1) = p.k by A2,A5
        .= p.j by A4,A6,A7;
    end;
    suppose
A8:   not k in dom p;
      defpred R[Nat] means $1 in dom p implies p.$1 = p.1;
A9:   for w being Nat st R[w] holds R[w+1]
      proof
        let w be Nat such that
A10:    R[w];
        assume
A11:    w+1 in dom p;
        per cases;
        suppose
          w in dom p;
          hence thesis by A2,A10,A11;
        end;
        suppose
          not w in dom p;
          then w = 0 by A11,Th1;
          hence thesis;
        end;
      end;
A12:  R[0] by FINSEQ_3:24;
A13:  for k being Nat holds R[k] from NAT_1:sch 2(A12,A9);
      k = 0 by A5,A8,Th1;
      hence thesis by A6,A13;
    end;
  end;
A14: P[0] by FINSEQ_3:24;
  for k being Nat holds P[k] from NAT_1:sch 2(A14,A3);
  hence thesis by A1;
end;
