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.