7.2.14 Predicates

Symex offers a few standard predicates to use as conditions in traversals like decision, precaution, and loop, usable via a convenient syntax.

In addition to supporting the above syntax, the conditions in traversals like decision, precaution, and loop, are simply traversals themselves, so you may use any traversal as a predicate, including, in particular, any lambda (See Lambdas).

Composing Predicates

The modifier not can be used to negate any of the above predicates (or the result of arbitrary lambdas). E.g. (not (at root)) returns true if cursor is not at the root node of the tree.

and and or form the conjunction and disjunction of predicates (including lambdas), e.g., (and (not (at root)) (not (at first))).