This page provides a quick reference to the Cyclone specification language.
Grammar rules (older version) for Cyclone can be viewed here.
Call graph of grammar rules can be viewed here
Click the following keywords to learn more about Cyclone specification language.
abstract# | assert# | at- | bool# | char= |
condition# | const# | check# | edge# | enum# |
enumerate# | final# | for# | fresh# | function# |
goal# | graph# | int# | initial# | invariant# |
label# | let# | machine# | node# | normal# |
prev= | on# | reach# | real# | start# |
state# | stop# | string= | trans# | transition# |
via# | where# | with# |
#: can be compiled by Cyclone.
=: implemented but cannot be compiled in the current version.
-: reserved only.
Cyclone works with different kinds of path condition and finds the kinds of paths specified by users. In order to form path conditions for Cyclone to meet, one must use one or more following path operators to construct a valid path condition.
One can build compound path conditions by using standard one or more of the following logical operators:
One can store multiple path conditions into a single path variable that can be used in the condition statement. These variables can be created using let expressions.
Currently, Cyclone supports a range of operators just like other programming languages. Please click here to see the details.
Here are the keywords can be used interchangeably.
state/node | machine/graph |
edge/trans/transition | on/label |
condition/via/with | reach/stop |
A user can use different options to configure how Cyclone verifies a specification. The complete list of options is here.
@2020-2022 Hao Wu. All rights reserved. Last update: January 29, 2022