Foundations of differential calculus