The value of variables may change over time as a computer program runs.
When we say something like X = X+1 we are acknowledging the advance of time.
A mathematician might say X' = X+1 so as to preserve the traditional meaning of equality.
Some computer languages use symbols like := or <- in place of = so as to avoid the conflict with mathematical notation.
Some computer languages let you bind a value to a name only once. In such a language you could say X = 2+1 or Y = X+1 but not X = X+1
The value of a variable at some point in time is called its state. The value of all variables taken together (including some hidden variables) is the state of the program.
See also Functional Reactive Programming. stackoverflow