A single variable in a symbolic vector expression.
This is a product type, introduced by defflexsum in support of svar.
- The name of this variable. This can be any ACL2 object at all,
but our representation is optimized for stringp or symbolp names.
- delay — natp
- A natural valued index for this variable, used for instance
to support the encoding of, e.g., previous versus current
register values in FSMs. The default delay (which enjoys an
optimized representation) is 0. See below for some motivation
- nonblocking — booleanp
- A flag used in statement processing to indicate a reference
to a variable after nonblocking assignments have been done.
Not used in other contexts.
- override-test — booleanp
- override-val — booleanp
Each variable in an svex represents a 4vec.
In most s-expression formats, e.g., s-expressions in Lisp or in the ACL2::4v-sexprs used in esim, a variable is just a symbol, which
is generally treated as if it were an atomic name with no further
In contrast, in sv, our variables have both a name and also a natural
numbered index (called delay). This index is mainly an implementation
detail that allows us to cheaply (i.e., without intern$) construct new
In the semantics of expressions, e.g., in svex-lookup, variables are
distinct whenever they differ by name or by delay. That is, as far as
expression evaluation is concerned, the variable named "v" with delay 5 is
completely distinct from "v" with delay 4. Think of them as you would
indexed variables like v_5 versus v_4 in some mathematics.
- Recognizer for svar structures.
- Fixing function for svar structures.
- Basic constructor macro for svar structures.
- Basic equivalence relation for svar structures.
- Get the override-val field from a svar.
- Get the override-test field from a svar.
- Get the nonblocking field from a svar.
- Modifying constructor for svar structures.
- Get the delay field from a svar.
- A list of svar-p objects.
- Get the name field from a svar.
- An alist mapping svar-p to svar-p.
- An alist mapping svar-p to anything.