It should be noted that "cancelling" in the sense used here is a short version of what's really going on. Consider this equation:
a*x = a * y
The justification for being able to cancel the "a" on both sides is that you can multiply both sides of the equation by any number except zero. In this case, the desired choice is the reciprocal of a, i.e. 1/a
When doing so, the equation now looks like:
(1/a) * a * x = (1/a) * a * y
which can be rewritten as:
(a/a) * x = (a/a) * y
Given that a/a = 1 for any number except zero, the equation can be written as:
1 * x = 1 * y
and since 1 * n = n for any number, we can simply write it as:
x = y
In the original "false proof", the cancellation goes as:
2(a^2 - ab) = 1(a^2 - ab)
2(a^2 - ab) / (a^2 - ab) = 1(a^2 - ab) / (a^2 - ab)
But since a^2 - ab = 0, this step divides by zero, which is invalid.
I just wanted to point out that the reason "cancelling" zero like this is invalid is because it requires dividing by zero, which is invalid.