Guide
Grammar
⟨bexpr⟩::=∣∣∣∣∣∣⟨rel-op⟩::=⟨var⟩::=⟨command⟩::=⟨command-kind⟩::=∣∣∣∣⟨guard⟩::=∣⟨predicate-block⟩::=⟨predicate-inv⟩::=⟨predicate⟩::=∣∣∣∣∣∣∣∣⟨quantifier⟩::=⟨aexpr⟩::=∣∣∣∣∣∣∣∣∣⟨function⟩::=∣∣∣∣∣⟨aexpr⟩⟨rel-op⟩⟨aexpr⟩"true""false""!"⟨bexpr⟩"("⟨bexpr⟩")"⟨bexpr⟩"&"⟨bexpr⟩⟨bexpr⟩"|"⟨bexpr⟩"<"∣">"∣"<="∣">="∣"="∣"!="r"[_a-zA-Z][_a-zA-Z0-9]*"⟨predicate-block⟩∗⟨command-kind⟩⟨predicate-block⟩∗⟨var⟩":="⟨aexpr⟩"skip""if"⟨guard⟩"fi""do"⟨predicate-inv⟩⟨guard⟩"od"⟨command⟩"[]"⟨command⟩⟨bexpr⟩"->"⟨command⟩⟨guard⟩"[]"⟨guard⟩"{"⟨predicate⟩"}""["⟨predicate⟩"]"⟨aexpr⟩⟨rel-op⟩⟨aexpr⟩"true""false""!"⟨predicate⟩"("⟨predicate⟩")"⟨predicate⟩"&"⟨predicate⟩⟨predicate⟩"|"⟨predicate⟩⟨predicate⟩"==>"⟨predicate⟩⟨quantifier⟩⟨var⟩"::"⟨predicate⟩"exists"∣"forall"⟨int⟩⟨var⟩"old("⟨var⟩")""-"⟨<aexpr>⟩"("⟨<aexpr>⟩")"⟨aexpr⟩"*"⟨aexpr⟩⟨aexpr⟩"/"⟨aexpr⟩⟨aexpr⟩"+"⟨aexpr⟩⟨aexpr⟩"-"⟨aexpr⟩⟨function⟩"division""("⟨aexpr⟩","⟨aexpr⟩")""min""("⟨aexpr⟩","⟨aexpr⟩")""max""("⟨aexpr⟩","⟨aexpr⟩")""fac""("⟨aexpr⟩")""fib""("⟨aexpr⟩")""exp""("⟨aexpr⟩","⟨aexpr⟩")"