diff --git a/tests/proofmode.ref b/tests/proofmode.ref
index b50195bf3eedabe4b237f20955372c8a7631ee1b..2f8b19f5551a70a18ce638b5c7406c890d08633c 100644
--- a/tests/proofmode.ref
+++ b/tests/proofmode.ref
@@ -443,8 +443,8 @@ Tactic failure: iModIntro: spatial context is non-empty.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iDestruct (open_constr) as (constr)",
-"iDestructCore (open_constr) as (constr) (tactic)" and
-"iDestructCore (open_constr) as (constr) (tactic)", last call failed.
+"iDestructCore (open_constr) as (constr) (tactic3)" and
+"iDestructCore (open_constr) as (constr) (tactic3)", last call failed.
 Tactic failure: iDestruct: "HQ" not found.
 "iIntros_dup_name"
      : string
@@ -553,14 +553,14 @@ Tactic failure: iStartProof: not a BI assertion.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iPoseProof (open_constr) as (constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)",
-"iPoseProofCoreLem (constr) as (constr) before_tc (tactic)" and
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)",
+"iPoseProofCoreLem (constr) as (constr) before_tc (tactic3)" and
 "<iris.proofmode.ltac_tactics.iIntoEmpValid>", last call failed.
 Tactic failure: iPoseProof: not a BI assertion.
 The command has indeed failed with message:
 In nested Ltac calls to "iPoseProof (open_constr) as (constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)",
-"iPoseProofCoreLem (constr) as (constr) before_tc (tactic)", 
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)",
+"iPoseProofCoreLem (constr) as (constr) before_tc (tactic3)", 
 "tac" (bound to spec_tac ltac:(()); [ .. | tac Htmp ]), 
 "tac" (bound to spec_tac ltac:(()); [ .. | tac Htmp ]), 
 "tac" (bound to fun H => iDestructHyp H as pat),
@@ -573,15 +573,15 @@ Tactic failure: iRename: "H" not fresh.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iPoseProof (open_constr) as (constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)" and
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)" and
 "iPoseProofCoreHyp (constr) as (constr)", last call failed.
 Tactic failure: iPoseProof: "Hx" not found.
 "iPoseProof_not_found_fail2"
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iPoseProof (open_constr) as (constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)",
-"iPoseProofCoreLem (constr) as (constr) before_tc (tactic)", 
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)",
+"iPoseProofCoreLem (constr) as (constr) before_tc (tactic3)", 
 "tac" (bound to spec_tac ltac:(()); [ .. | tac Htmp ]), 
 "tac" (bound to spec_tac ltac:(()); [ .. | tac Htmp ]), 
 "spec_tac" (bound to
@@ -616,9 +616,9 @@ Tactic failure: iElaborateSelPat: "H" not found.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iDestruct (open_constr) as (constr)",
-"iDestructCore (open_constr) as (constr) (tactic)",
-"iDestructCore (open_constr) as (constr) (tactic)",
-"iDestructCore (open_constr) as (constr) (tactic)", 
+"iDestructCore (open_constr) as (constr) (tactic3)",
+"iDestructCore (open_constr) as (constr) (tactic3)",
+"iDestructCore (open_constr) as (constr) (tactic3)", 
 "tac" (bound to fun H => iDestructHyp H as pat),
 "iDestructHyp (constr) as (constr)",
 "<iris.proofmode.ltac_tactics.iDestructHypFindPat>" and
@@ -627,9 +627,9 @@ Tactic failure: iDestruct: "{HP}"
 should contain exactly one proper introduction pattern.
 The command has indeed failed with message:
 In nested Ltac calls to "iDestruct (open_constr) as (constr)",
-"iDestructCore (open_constr) as (constr) (tactic)",
-"iDestructCore (open_constr) as (constr) (tactic)",
-"iDestructCore (open_constr) as (constr) (tactic)", 
+"iDestructCore (open_constr) as (constr) (tactic3)",
+"iDestructCore (open_constr) as (constr) (tactic3)",
+"iDestructCore (open_constr) as (constr) (tactic3)", 
 "tac" (bound to fun H => iDestructHyp H as pat),
 "iDestructHyp (constr) as (constr)",
 "<iris.proofmode.ltac_tactics.iDestructHypFindPat>" and
@@ -648,7 +648,7 @@ Tactic failure: iOrDestruct: "H1" or "H'" not fresh.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iApply (open_constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)", 
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)", 
 "tac" (bound to fun H => iApplyHyp H) and "iApplyHyp (constr)", last call
 failed.
 Tactic failure: iApply: cannot apply P.
@@ -656,7 +656,7 @@ Tactic failure: iApply: cannot apply P.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iApply (open_constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)", 
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)", 
 "tac" (bound to fun H => iApplyHyp H) and "iApplyHyp (constr)", last call
 failed.
 Tactic failure: iApply: Q
@@ -665,7 +665,7 @@ not absorbing and the remaining hypotheses not affine.
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iApply (open_constr)",
-"iPoseProofCore (open_constr) as (constr) (constr) (tactic)", 
+"iPoseProofCore (open_constr) as (constr) (constr) (tactic3)", 
 "tac" (bound to fun H => iApplyHyp H) and "iApplyHyp (constr)", last call
 failed.
 Tactic failure: iApply: Q
diff --git a/tests/proofmode_iris.ref b/tests/proofmode_iris.ref
index 0dbca72f4bf79e467472c44b99700f3542570f5c..6ebe13d84e424d0fe758d1da03beb2b76a065c16 100644
--- a/tests/proofmode_iris.ref
+++ b/tests/proofmode_iris.ref
@@ -111,20 +111,20 @@
      : string
 The command has indeed failed with message:
 In nested Ltac calls to "iInv (constr) as (constr)",
-"iInvCore (constr) in (tactic)" and
-"iInvCore (constr) with (constr) as (open_constr) in (tactic)", last call
+"iInvCore (constr) in (tactic3)" and
+"iInvCore (constr) with (constr) as (open_constr) in (tactic3)", last call
 failed.
 Tactic failure: iInv: selector 34 is not of the right type .
 The command has indeed failed with message:
 In nested Ltac calls to "iInv (constr) as (constr)",
-"iInvCore (constr) in (tactic)" and
-"iInvCore (constr) with (constr) as (open_constr) in (tactic)", last call
+"iInvCore (constr) in (tactic3)" and
+"iInvCore (constr) with (constr) as (open_constr) in (tactic3)", last call
 failed.
 Tactic failure: iInv: invariant nroot not found.
 The command has indeed failed with message:
 In nested Ltac calls to "iInv (constr) as (constr)",
-"iInvCore (constr) in (tactic)" and
-"iInvCore (constr) with (constr) as (open_constr) in (tactic)", last call
+"iInvCore (constr) in (tactic3)" and
+"iInvCore (constr) with (constr) as (open_constr) in (tactic3)", last call
 failed.
 Tactic failure: iInv: invariant "H2" not found.
 "test_iInv"
diff --git a/theories/proofmode/ltac_tactics.v b/theories/proofmode/ltac_tactics.v
index ba1e9531d243b683c37f103028e18d1343263d62..a6c6da9700887bf8007a0eee636d2da61465970e 100644
--- a/theories/proofmode/ltac_tactics.v
+++ b/theories/proofmode/ltac_tactics.v
@@ -726,7 +726,7 @@ Tactic Notation "iPoseProofCoreHyp" constr(H) "as" constr(Hnew) :=
     end.
 
 Tactic Notation "iPoseProofCoreLem"
-    constr(lem) "as" constr(Hnew) "before_tc" tactic(tac) :=
+    constr(lem) "as" constr(Hnew) "before_tc" tactic3(tac) :=
   eapply tac_pose_proof with Hnew _; (* (j:=H) *)
     [iIntoEmpValid lem
     |pm_reduce;
@@ -1015,7 +1015,7 @@ Both variants of [lazy_tc] are used in other tactics that build on top of
   because it may be not possible to eliminate logical connectives before all
   type class constraints have been resolved. *)
 Tactic Notation "iPoseProofCore" open_constr(lem)
-    "as" constr(p) constr(lazy_tc) tactic(tac) :=
+    "as" constr(p) constr(lazy_tc) tactic3(tac) :=
   iStartProof;
   let Htmp := iFresh in
   let t := lazymatch lem with ITrm ?t ?xs ?pat => t | _ => lem end in
@@ -1710,7 +1710,7 @@ Instance copy_destruct_affinely {PROP : bi} (P : PROP) :
 Instance copy_destruct_persistently {PROP : bi} (P : PROP) :
   CopyDestruct P → CopyDestruct (<pers> P) := {}.
 
-Tactic Notation "iDestructCore" open_constr(lem) "as" constr(p) tactic(tac) :=
+Tactic Notation "iDestructCore" open_constr(lem) "as" constr(p) tactic3(tac) :=
   let ident :=
     lazymatch type of lem with
     | ident => constr:(Some lem)
@@ -1869,7 +1869,7 @@ result in the following actions:
 - Introduce the spatial hypotheses and intuitionistic hypotheses involving [x]
 - Introduce the proofmode hypotheses [Hs]
 *)
-Tactic Notation "iInductionCore" tactic(tac) "as" constr(IH) :=
+Tactic Notation "iInductionCore" tactic3(tac) "as" constr(IH) :=
   let rec fix_ihs rev_tac :=
     lazymatch goal with
     | H : context [envs_entails _ _] |- _ =>
@@ -2144,7 +2144,7 @@ Tactic Notation "iLöb" "as" constr (IH) "forall" "(" ident(x1) ident(x2)
 Boolean or an introduction pattern, which will be coerced into [true] if it
 only contains `#` or `%` patterns at the top-level, and [false] otherwise. *)
 Tactic Notation "iAssertCore" open_constr(Q)
-    "with" constr(Hs) "as" constr(p) tactic(tac) :=
+    "with" constr(Hs) "as" constr(p) tactic3(tac) :=
   iStartProof;
   let pats := spec_pat.parse Hs in
   lazymatch pats with
@@ -2156,7 +2156,7 @@ Tactic Notation "iAssertCore" open_constr(Q)
   [pm_reduce;
    iSpecializeCore H with hnil pats as p; [..|tac H]].
 
-Tactic Notation "iAssertCore" open_constr(Q) "as" constr(p) tactic(tac) :=
+Tactic Notation "iAssertCore" open_constr(Q) "as" constr(p) tactic3(tac) :=
   let p := intro_pat_intuitionistic p in
   lazymatch p with
   | true => iAssertCore Q with "[#]" as p tac
@@ -2314,7 +2314,7 @@ Tactic Notation "iAssumptionInv" constr(N) :=
 
 (* The argument [select] is the namespace [N] or hypothesis name ["H"] of the
 invariant. *)
-Tactic Notation "iInvCore" constr(select) "with" constr(pats) "as" open_constr(Hclose) "in" tactic(tac) :=
+Tactic Notation "iInvCore" constr(select) "with" constr(pats) "as" open_constr(Hclose) "in" tactic3(tac) :=
   iStartProof;
   let pats := spec_pat.parse pats in
   lazymatch pats with
@@ -2361,13 +2361,13 @@ Tactic Notation "iInvCore" constr(select) "with" constr(pats) "as" open_constr(H
     )].
 
 (* Without closing view shift *)
-Tactic Notation "iInvCore" constr(N) "with" constr(pats) "in" tactic(tac) :=
+Tactic Notation "iInvCore" constr(N) "with" constr(pats) "in" tactic3(tac) :=
   iInvCore N with pats as (@None string) in ltac:(tac).
 (* Without pattern *)
-Tactic Notation "iInvCore" constr(N) "as" constr(Hclose) "in" tactic(tac) :=
+Tactic Notation "iInvCore" constr(N) "as" constr(Hclose) "in" tactic3(tac) :=
   iInvCore N with "[$]" as Hclose in ltac:(tac).
 (* Without both *)
-Tactic Notation "iInvCore" constr(N) "in" tactic(tac) :=
+Tactic Notation "iInvCore" constr(N) "in" tactic3(tac) :=
   iInvCore N with "[$]" as (@None string) in ltac:(tac).
 
 (* With everything *)