The reach statement specifies one or more nodes (states) for a path (p to be discovered) to reach.
reach (node1,node2,...,noden)
Each node here must be a valid node that is defined in the node section.
Here is an example:reach (S0,S1,S2)
check for 6 condition (
(>>2(S1->S2) && (S3->_->S4)) ||
(!(S5->S6) && !(S2->S4)) )
reach (S0)
The reach statement can also be optional for check or enumeration statement.
The reach statement specifies the path to be discovered by Cyclone must reach one of the nodes included in the statement (if no other final nodes are defined). Hence, the list of nodes included within the reach statement are formed as a logic disjunction.
start final node S0 { ... }
abstract node S11 { ... }
final node S12 { ... }
.
.
.
goal {
check for 8 reach (S0,S10,S3)
/* find a path that has a length of 8
* and reaches one of these nodes: S0,S3,S10,S12.
*/
}
start final node S0 { ... }
abstract node S11 { ... }
final node S12 { ... }
.
.
.
goal {
check for 8
/* find a path that has a length of 8
* and reaches one of these nodes: S0,S12.
*/
}
@2020-2022 Hao Wu. All rights reserved. Last update: January 29, 2022