Warning
This page was created from a pull request (#74).
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,
numbermatches1or2or372.Multiple items placed next to each other can be separated by whitespace. For example,
"pragma" "specify" number "." numbermatchespragma specify 1.5and 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.1and also matchespragma specify 3.An item surrounded by curly braces may be repeated 0 or more times. For example,
number { "." number }matches3and3.1and3.1.4.1.5Items separated by a vertical bar represent different alternatives. For example,
"use" "rule" id | "use" "invariant" id | "use" "builtin" "rule" idmatchesuse rule fooand also matchesuse invariant barbut does not matchuse rule foo use invariant bar.