The goal statement specifies a section that describes a goal for Cyclone to solve.
 
goal { [<expression>] <check/enumerate> [<condition>] [<reach>] }
 
The goal section contains three parts: expressions that describe a list of path conditions, a check statement that issues a command to Cyclone (along with path condition) and a reach statement that specifies the set of reachable nodes. The goal section must have exactly either one check or enumeration statement.
Here is an example:goal {
let pc = S1->S2 ^ S1->S3;
check for 5 condition(pc) reach (S0,S2)
}
The goal section is a part of Cyclone specification. Every valid Cyclone specification can have at most one goal section . A specification without a goal section is still a valid specification.
The goal section is the most fundamental building block for a Cyclone specification. All different kinds of path conditions are generated from this block by the compiler
@2020-2022 Hao Wu. All rights reserved. Last update: January 29, 2022