      (if (assoc form bindings)
          (list 'value (alist-get form bindings))
        (list 'unknown form)))
+    (`(if ,cond ,then)
+     (whatif--simplify `(if ,cond ,then nil) bindings))
     (`(if ,cond ,then ,else)
      (setq cond (whatif--simplify cond bindings))
      (setq then (whatif--simplify then bindings))

    (whatif--simplify '(if (if t x a) y z) '((y . 42) (z . 41)))
    (list 'unknown '(if x 42 41)))))

(ert-deftest simplify--progn ()
  (should
   (equal

       (`(value ,value)
        (if value then
          else))
       ;; Otherwise, return an if where we have simplified as much as
       ;; we can.
       (`(unknown ,_)
        (list 'unknown
