diff --git a/theories/proofmode/ltac_tactics.v b/theories/proofmode/ltac_tactics.v
index 6f696ed02a5841d8feecbf92ad4247929e931933..f25bfb91af287a2010c8f7e86cc31965545e20d4 100644
--- a/theories/proofmode/ltac_tactics.v
+++ b/theories/proofmode/ltac_tactics.v
@@ -720,23 +720,25 @@ Notation "( H $! x1 .. xn 'with' pat )" :=
   (ITrm H (hcons x1 .. (hcons xn hnil) ..) pat) (at level 0, x1, xn at level 9).
 Notation "( H 'with' pat )" := (ITrm H hnil pat) (at level 0).
 
-(* The tactic [iIntoEmpValid] tactic solves a goal [bi_emp_valid Q]. The
+(* The tactic [iIntoEmpValid] tactic solves a goal [bi_emp_valid ?Q]. The
 argument [t] must be a Coq term whose type is of the following shape:
 
 [∀ (x_1 : A_1) .. (x_n : A_n), φ]
 
-and so that we have an instance `AsValid φ Q`.
+for which we have an instance [AsEmpValid φ ?Q].
 
 Examples of such [φ]s are
 
-- [bi_emp_valid P], in which case [Q] should be [P]
-- [P1 ⊢ P2], in which case [Q] should be [P1 -∗ P2]
-- [P1 ⊣⊢ P2], in which case [Q] should be [P1 ↔ P2]
+- [bi_emp_valid P], in which case [Q] is unified with [P].
+- [P1 ⊢ P2], in which case [Q] is unified with [P1 -∗ P2].
+- [P1 ⊣⊢ P2], in which case [Q] is unified with [P1 ↔ P2].
 
-The tactic instantiates each dependent argument [x_i] with an evar and generates
-a goal [R] for each non-dependent argument [x_i : R].  For example, if the
-original goal was [Q] and [t] has type [∀ x, P x → Q], then it generates an evar
-[?x] for [x] and a subgoal [P ?x]. *)
+The tactic instantiates each dependent argument [x_i : A_i] with an evar and
+generates a goal [A_i] for each non-dependent argument [x_i : A_i].
+
+For example, if the initial goal is [bi_emp_valid ?Q] and [t] has type
+[∀ x, P x → R x], then it generates an evar [?x] for [x], a subgoal [P ?x],
+and unifies [?Q] with [R x]. *)
 Local Ltac iIntoEmpValid t :=
   let go_specialize t tT :=
     lazymatch tT with                (* We do not use hnf of tT, because, if