Difference Algebra