                 "forall" "exists"
                 "assert" "assert_norm" "assume"
                 "fun" "function"
-                "try" "match" "with"
+                "try" "match" "when" "with"
                 "if" "then" "else"
                 "ALL" "All" "DIV" "Div" "EXN" "Ex" "Exn" "GHOST" "GTot" "Ghost"
                 "Lemma" "PURE" "Pure" "Tot" "ST" "STATE" "St"

(defconst fstar-syntax-block-start-re
  (format "^\\(?:%s \\)*%s "
          (regexp-opt fstar-syntax-qualifiers)
          (regexp-opt (remove "and" fstar-syntax-headers)))
  "Regexp matching starts of semantic blocks.")

(defconst fstar-syntax-structure
  (regexp-opt `("begin" "end" "in"
                ,@fstar-syntax-structural-headers
                ,@fstar-syntax-qualifiers)
              'symbols))



(defconst fstar-syntax-preprocessor-directives
  '("#set-options" "#reset-options"))

(defconst fstar-syntax-qualifiers
  '("new" "abstract" "logic" "assume" "visible"
