Noisy channel coding theorem