   "Face used to use for /\\ and \//."
   :group 'fstar)
 
+(defface fstar-universe-face
+  '((t :foreground "forest green"))
+  "Face used for universe levels and variables"
+  :group 'fstar)
+
 (defun fstar-subexpr-pre-matcher (rewind-to &optional bound-to)
   "Move past REWIND-TO th group, then return end of BOUND-TO th."
   (goto-char (match-end rewind-to))

                "try" "match" "with"
                "if" "then" "else"
                "ALL" "All" "DIV" "Div" "EXN" "Ex" "Exn" "GHOST" "GTot" "Ghost"
                "Lemma" "PURE" "Pure" "STL" "Stl" "ST" "STATE" "St" "Tot"
                "u#" "max") ;; universe specific keywords
              'symbols))

(defconst fstar-syntax-builtins

(defconst fstar-syntax-cs (rx symbol-start
                         (any "A-Z") (* (or wordchar (syntax symbol)))
                         symbol-end))

(defconst fstar-syntax-universe-id-unwrapped (rx "'u" (* (or wordchar (syntax symbol)))))

(defconst fstar-syntax-universe-id (concat "\\_<" fstar-syntax-universe-id-unwrapped "\\_>"))

(defconst fstar-syntax-universe (concat "\\(" fstar-syntax-universe-id
                                        "\\|u#([^)]*)\\)"))

(defun fstar-find-id-maybe-type (bound must-find-type)
  "Find var:type pair between point and BOUND.
