   "Retract everything and process (possibly in LAX mode) again to POS."
   (interactive (list (point) (not (null current-prefix-arg))))
   (fstar-subp-start)
-  (fstar-subp-retract-until (point-min))
-  (let ((fstar-subp--lax lax))
-    (fstar-subp-advance-until pos)))
+  (fstar--widened
+    (fstar-subp-retract-until (point-min))
+    (let ((fstar-subp--lax lax))
+      (fstar-subp-advance-until pos))))
 
 (defun fstar-subp-advance-or-retract-to-point (&optional arg)
   "Advance or retract proof state to reach point.

  (with-current-buffer buffer
    (setq fstar-subp--queue-timer nil)
    (fstar-subp-start)
    (unless (fstar-subp--busy-p)
      (-if-let* ((overlay (car-safe (fstar-subp-tracking-overlays 'pending))))
          (progn (fstar-log 'info "Processing queue")
                 (fstar-subp-process-overlay overlay))
        (fstar-log 'info "Queue is empty (%d overlays)" (length (fstar-subp-tracking-overlays)))))))

;;; ;; Moving around the buffer

(defcustom fstar-fly-past-comments t
  "Whether to skip comments when splitting blocks to send to F*."
  :group 'fstar-interactive
  :type 'boolean)

(defconst fstar-subp-block-sep
  (let ((any-blanks "[ \n\r\t]*")

  "Process next block."
  (interactive)
  (fstar-subp-start)
  (fstar--widened
    (-if-let* ((target (fstar-subp--find-point-to-process 1)))
        (fstar-subp-enqueue-until (goto-char target))
      (user-error "Cannot find a full block to process"))))

(defun fstar-subp-pop-overlay (overlay)
  "Remove overlay OVERLAY and issue the corresponding `pop' command."
