diff --git a/theories/heap_lang/proofmode.v b/theories/heap_lang/proofmode.v
index 50a141767756362176bfd6f7f1dff1b1d24bba6c..93359a4b32ce8a3e131635e24abbb21141116e93 100644
--- a/theories/heap_lang/proofmode.v
+++ b/theories/heap_lang/proofmode.v
@@ -355,6 +355,9 @@ Proof.
 Qed.
 End heap.
 
+(** Evaluate [lem] to a hypothesis [H] that can be applied, and then run
+[wp_bind K; tac H] for every possible evaluation context.  [tac] can do
+[iApplyHyp H] to actually apply the hypothesis. *)
 Tactic Notation "wp_apply_core" open_constr(lem) tactic(tac) :=
   wp_pures;
   iPoseProofCore lem as false true (fun H =>
@@ -375,10 +378,10 @@ Tactic Notation "wp_apply_core" open_constr(lem) tactic(tac) :=
     end).
 Tactic Notation "wp_apply" open_constr(lem) :=
   wp_apply_core lem (fun H => iApplyHyp H; try iNext; try wp_expr_simpl).
-(** Tactic tailored for atomic triples: the first, simple one just runs iAuIntro
-on the goal, as atomic triples always have an atomic update as their premise.
-The second one additionaly does some framing: it gets rid of `Hs` from the
-context, which is intended to be the non-laterable assertions that iAuIntro
+(** Tactic tailored for atomic triples: the first, simple one just runs
+[iAuIntro] on the goal, as atomic triples always have an atomic update as their
+premise.  The second one additionaly does some framing: it gets rid of [Hs] from
+the context, which is intended to be the non-laterable assertions that iAuIntro
 would choke on.  You get them all back in the continuation of the atomic
 operation. *)
 Tactic Notation "awp_apply" open_constr(lem) :=