Many-body perturbation theory