I hope I am contemplating my question correctly.

As far as my understanding, imperative programming (to the very brief) is based on mutation, control structures such as loops and assignments.

While i was following a course about functional programming they have mentioned a point. I want to understand it to depth..

The point is:

If we want to implement high-level concepts following their mathematical theories, there's no place for mutation.

What i have understand from this is, value/co-efficient assigned to particular variable should be same and could not be reassigned time to time to create abstract definition out of it. 
is it correct ? 

Can you add some more points ?