diff --git a/theories/lang/tactics.v b/theories/lang/tactics.v
index c7b85fe793d74eeb6d86eb7d6a454f97e4761b20..a7d8e6e56d14e0df5b47829bd2e312f97d9390c5 100644
--- a/theories/lang/tactics.v
+++ b/theories/lang/tactics.v
@@ -172,7 +172,7 @@ Ltac solve_closed :=
   match goal with
   | |- Closed ?X ?e =>
      let e' := W.of_expr e in change (Closed X (W.to_expr e'));
-     apply W.is_closed_correct; exact (I <: W.is_closed X e')
+     apply W.is_closed_correct; vm_compute; exact I
   end.
 Hint Extern 0 (Closed _ _) => solve_closed : typeclass_instances.
 
@@ -188,10 +188,7 @@ Ltac solve_to_val :=
      apply W.to_val_Some; simpl; unfold W.to_expr; unlock; reflexivity
   | |- is_Some (to_val ?e) =>
      let e' := W.of_expr e in change (is_Some (to_val (W.to_expr e')));
-     apply W.to_val_is_Some, (bool_decide_unpack _);
-     match goal with [|-Is_true (@bool_decide ?P ?dec)] =>
-       exact (I <: Is_true (@bool_decide P dec))
-     end
+     apply W.to_val_is_Some, (bool_decide_unpack _); vm_compute; exact I
   end.
 Hint Extern 10 (IntoVal _ _) => solve_to_val : typeclass_instances.
 Hint Extern 10 (AsVal _) => solve_to_val : typeclass_instances.
@@ -200,7 +197,7 @@ Ltac solve_atomic :=
   match goal with
   | |- Atomic ?s ?e =>
      let e' := W.of_expr e in change (Atomic s (W.to_expr e'));
-     apply W.is_atomic_correct; exact (I <: W.is_atomic e')
+     apply W.is_atomic_correct; vm_compute; exact I
   end.
 Hint Extern 0 (Atomic _ _) => solve_atomic : typeclass_instances.