reserve n for Nat;

theorem
  for D be set for f be FinSequence of D holds f is almost-one-to-one
iff for i,j be Nat st i in dom f & j in dom f & (i <> 1 or j <> len
  f) & (i <> len f or j <> 1) & f/.i = f/.j holds i = j
proof
  let D be set;
  let f be FinSequence of D;
  thus f is almost-one-to-one implies for i,j be Nat st i in dom f
  & j in dom f & (i <> 1 or j <> len f) & (i <> len f or j <> 1) & f/.i = f/.j
  holds i = j
  proof
    assume
A1: f is almost-one-to-one;
    let i,j be Nat such that
A2: i in dom f and
A3: j in dom f and
A4: i <> 1 or j <> len f and
A5: i <> len f or j <> 1 and
A6: f/.i = f/.j;
    f.i = f/.j by A2,A6,PARTFUN1:def 6
      .= f.j by A3,PARTFUN1:def 6;
    hence thesis by A1,A2,A3,A4,A5;
  end;
  assume
A7: for i,j be Nat st i in dom f & j in dom f & (i <> 1 or j
  <> len f) & (i <> len f or j <> 1) & f/.i = f/.j holds i = j;
  now
    let i,j be Nat such that
A8: i in dom f and
A9: j in dom f and
A10: i <> 1 or j <> len f and
A11: i <> len f or j <> 1 and
A12: f.i = f.j;
    f/.i = f.j by A8,A12,PARTFUN1:def 6
      .= f/.j by A9,PARTFUN1:def 6;
    hence i = j by A7,A8,A9,A10,A11;
  end;
  hence thesis;
end;
