An assignment is of the form
<signal> := <expr>;
where <expr> is an expression that combines other signals using
operators like ~ and &. Unlike an assignment in a typical
``procedural'' language, this assignment means exactly what it says:
that <signal> is equal to <expr>. So for example, suppose
we make the assignment
zip := foo & bar;
If foo and bar are as above, then
zip = 0;0;0;1;...
The assignments in an SMV program are interpreted as equations holding simultaneously. That is, the fact that two assignments occur in sequence in a program is not interpreted to mean that they are to hold sequentially. Thus, for example, if these assignments appear in a program:
y := x + 1; z := y + 1;then we have (at all times) z = x + 2.