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
  for f,g being FinSequence holds Rev(f^g) = (Rev g)^(Rev f)
proof
  let f be FinSequence;
  defpred P[FinSequence] means Rev(f^$1) = (Rev $1)^(Rev f);
A1: P[{}]
  proof
    set g = {};
    thus Rev(f^g) = Rev f by FINSEQ_1:34
      .= (Rev g)^(Rev f) by FINSEQ_1:34;
  end;
A2: for g being FinSequence, x being object st P[g] holds P[g^<*x*>]
  proof
    let g be FinSequence, x be object such that
A3: P[g];
    thus Rev(f^(g^<*x*>)) = Rev(f^g^<*x*>) by FINSEQ_1:32
      .= <*x*>^((Rev g)^(Rev f)) by A3,Th63
      .= <*x*>^(Rev g)^(Rev f) by FINSEQ_1:32
      .= (Rev(g^<*x*>))^(Rev f) by Th63;
  end;
  thus for g being FinSequence holds P[g] from FINSEQ_1:sch 3(A1,A2);
end;
