Pure Functions

P Pure Function Declaration Grammar
pureFunctionDecl :
    | pure iden (params)? : type;     # P Pure Function Declaration

iden is the name of the pure function, params are the parameters of the function, and type is the return type of the function.

Syntax: pure functionName(); or pure functionName(param1: type1, param2: type2) : returnType;

functionName is the name of the P pure function, param1, param2, etc. are the parameters of the function, and returnType is the type of the value returned by the function.

// declaration of pure functions with no parameters
pure participants(): set[machine];
pure coordinator(): machine;

// declaration of pure functions with parameters
pure preference(m: machine) : bool;