Syntactic conventions
Many of the pages in this guide describe the syntax of parts of the Certora Verification Language using a modified version of the EBNF format.
When reading the syntax blocks, keep the following in mind:
Text in double quotes is a terminal that matches the exact string. For example,
"pragma"
matchespragma
, and"."
matches.
Names that are not in double quotes are nonterminals that refers to other parts of the grammar. For example,
number
matches1
or2
or372
.Multiple items placed next to each other can be separated by whitespace. For example,
"pragma" "specify" number "." number
matchespragma specify 1.5
and alsopragma specify 0.3
. Note that this is different from the EBNF format described in the link above (that format would add a comma between items).An item surrounded by square brackets is optional. For example,
"pragma" "specify" number [ "." number ]
matchespragma specify 3.1
and also matchespragma specify 3
.An item surrounded by curly braces may be repeated 0 or more times. For example,
number { "." number }
matches3
and3.1
and3.1.4.1.5
Items separated by a vertical bar represent different alternatives. For example,
"use" "rule" id | "use" "invariant" id | "use" "builtin" "rule" id
matchesuse rule foo
and also matchesuse invariant bar
but does not matchuse rule foo use invariant bar
.