Variables & Mutability

Variables are identifiers that hold non-signal data and are mutable. Variables are declared using the keyword var as in:

var x;


They hold either numerical values of the field or arithmetic expressions when they are used to build constraints (see Constraint Generation). They can be named using a variable identifier or can be stored in arrays.

Variable assignment is made using the equal symbol =. Declarations may also include an initialization, as in the following examples:

var x;
x = 234556;
var y = 0;
var z[3] = [1,2,3]


An assignment is a statement and does not return any value, hence it cannot be part of an expression, which avoids misleading uses of =. Any use of = inside an expression will lead to a compilation error.

The two examples below would result in compilation errors:

a = (b = 3) + 2;

var x;
if (x = 3) {
var y = 0;
}