The issue is that there is a difference between variables and "symbolic variables". A variable is a string of letters used to store some value. Every programming language has them. A "symbolic variable" is a Sage object that can be manipulated in certain ways. Just like other Sage objects, symbolic variables can be referenced by variable names. When you type `var('beta')`

, Sage defines a new symbolic variable whose name is beta, and *also* defines a new standard variable, also named beta, and makes the standard variable reference the symbolic variable.

But here's the issue: You can later change this standard variable to refer to some other Sage object. And that's what you're doing when you write `beta = 1`

.

When you defined `eq`

, you were using the earlier object (that is, the symbolic variable) stored in the standard variable `beta`

. Storing something new with the name `beta`

doesn't change this.

Here's another example where I first use the variable `B`

to store the value 1, then use it to define an equation, and then store a new value in that variable. Doing so doesn't change the equation.

```
sage: B = 1
sage: eq = x == B
sage: eq
x == 1
sage: B = 2
sage: eq
x == 1
```

Incidentally, this is why the "dictionary approach" in the previous answer doesn't work: The dictionary being used in that case is equivalent to `{1:1}`

, and it's key doesn't match any of the symbolic variables in the equation.