Depending on context, $$x = y$$ can mean any of:

• $$x$$ is known to be equal to $$y$$
• $$x$$ is assigned to be equal to y
• $$x$$ is defined to be equal to $$y$$.
• We’re trying to show $$x$$ is equal to $$y$$
• The Boolean relation of $$x = y$$

I get around this by using distinct forms of the equals sign for each of the nuances above.

I only use the equals sign when I know $$x$$ is equal to $$y$$.

If I’m using $$x = y$$ to mean “let $$x$$ be equal to $$y$$”, I use either $$x \gets y$$ or $$x := y$$.

If I’m defining $$x$$ to be equal to $$y$$, I use $$x \equiv y$$ or more often $$x \stackrel{def}{=} y$$ because my triple equals sign looks terrible when handwritten. The spacing is always off.

When I’m trying to show 2 sides are equal, I use $$\stackrel{?}{=}$$. This has the advantage of making it clear that it’s wrong to transform both sides because I don’t know that they’re equal.The question mark conveys the idea of “dunno if they’re equal”.

For the last one, I use == like in programming. I’m used to it.

These distinctions may be overkill, but I think they make intent clearer, which is all the more valuable when you’re in a thicket of symbols without a map.