reserve i,j,k,n for Nat;
reserve D for non empty set,
  p for Element of D,
  f,g for FinSequence of D;

theorem Th57:
  for f being FinSequence holds dom f = dom Rev f & rng f = rng Rev f
proof
  let f be FinSequence;
  thus
A1: dom f = Seg len f by FINSEQ_1:def 3
    .= Seg len Rev f by Def3
    .= dom Rev f by FINSEQ_1:def 3;
A2: len f = len Rev f by Def3;
  hereby
    let x be object;
    assume x in rng f;
    then consider i being Nat such that
A3: i in dom f and
A4: f.i = x by FINSEQ_2:10;
    i <= len f by A3,FINSEQ_3:25;
    then reconsider j = len f - i + 1 as Element of NAT by Th1;
    dom f = Seg len f by FINSEQ_1:def 3;
    then j in Seg len (Rev f) by A2,A3,Th2;
    then
A5: j in dom(Rev f) by FINSEQ_1:def 3;
    then (Rev f).j = f.(len f - j + 1) by Def3;
    hence x in rng(Rev f) by A4,A5,FUNCT_1:def 3;
  end;
  let x be object;
  assume x in rng(Rev f);
  then consider i being Nat such that
A6: i in dom(Rev f) and
A7: (Rev f).i = x by FINSEQ_2:10;
  i <= len f by A2,A6,FINSEQ_3:25;
  then reconsider j = len f - i + 1 as Element of NAT by Th1;
  i in Seg len(Rev f) by A6,FINSEQ_1:def 3;
  then j in Seg len (Rev f) by A2,Th2;
  then
A8: j in dom (Rev f) by FINSEQ_1:def 3;
  (Rev f).i = f.(len f - i + 1) by A6,Def3;
  hence thesis by A1,A7,A8,FUNCT_1:def 3;
end;
