In a proof, how do you properly use “let”, “suppose”, and “assume”?

“Assume” indicates the assumptions your proof rely on. Unless you also cover the case where the assumption does not hold, the assumption should also be part of the theorem you are proving.

“Suppose” typically is used to prove something (possibly a part of the proof) by contradiction. An example: “AA must hold. We can show this as follows: suppose AA does not hold. That implies BB and CC, which leads to a contradiction.”

When we use “let”, we do not need any extra assumptions, but rather assign a name or a value to an object.

The difference in connotation is that we usually use suppose to make an assumption and let to make a declaration.

Suppose X is true. It follows that Y is false.

We let Z be an integer so that 2Z+1 is odd.

“assume” implies taking something for granted (as in LET a=4), while “suppose” could be an intro to presenting one of the possible scenarios.

If you ask someone to assume that A=B, you’re telling them not to question that, while saying “suppose A=B” goes more along the lines of “let’s see where it gets us if we say that A=B”

To assume – To accept [something], receive [something], accept [something], adopt [something]; to take [something, usually a responsibility] on yourself; to take [something, usually a fact] for granted.
To suppose: to conjecture; to guess; to vaguely believe; to imagine; to create an imaginary case; to suspect;

We assume something to be the truth and real, and the following verb is in the indicative: Assume I am King.”
When we suppose something, we imagine that it were the case, that it might be possible in another time or another reality and the following verb is in the subjunctive: “Suppose I were King.”

The more unrealistic the concept of the statement is, the more likely you are to use “suppose.”

“We assume that the boiler is hot because if you touch it, your fingers are burned, but let us suppose that the boiler is not hot, then how would we explain the burned fingers?”