process ::=decl+ decl ::=event_decl∣protocol_decl∣variable_decl∣property_decl∣rule_decl event_decl ::=event(event_name(,event_name)∗;)+ protocol_decl ::=protocol(protocol;;)+ protocol ::=any∣event_name∣protocol;protocol ∣protocol+protocol∣protocol*∣protocol?∣(protocol) variable_decl ::=variable(var_name(,var_name)∗(:type)?;)+ type ::=prop∣nat(nat_num) property_decl ::=property(ldl_formula;)+ rule_decl ::=rulerule+ rule ::=except?onevent_name(,event_name)∗({code})? (whencontext({code})?)? action+ context ::=proposition∣<ldl_path>context action ::=ensureldl_formula({code})? ∣raiseevent_name(+event_name)∗({code})? ∣do{code} ∣preserveproposition