diff --git a/opam b/opam
index 21900742f7889ab8fbb07dab7e4235df85d91397..8565a7bab90647159d2369b93cd17deb9f61999e 100644
--- a/opam
+++ b/opam
@@ -9,5 +9,5 @@ build: [make "-j%{jobs}%"]
 install: [make "install"]
 remove: [ "sh" "-c" "rm -rf '%{lib}%/coq/user-contrib/igps" ]
 depends: [
-  "coq-iris" { (= "branch.gen_proofmode.2018-03-1.3") | (= "dev") }
+  "coq-iris" { (= "branch.gen_proofmode.2018-03-02.0") | (= "dev") }
 ]
diff --git a/theories/examples/spin_lock.v b/theories/examples/spin_lock.v
index 9370a21d3efebc9f87936833f564e9bad2482a25..f7cf459d92c79f5b381e42171c3276d4e68e9da4 100644
--- a/theories/examples/spin_lock.v
+++ b/theories/examples/spin_lock.v
@@ -32,7 +32,8 @@ Section proof.
   Local Open Scope VP.
   Notation Q_dup := (λ v, (v = 1) ∨ (v = 0)).
   Notation Q J := (λ v, (v = 1) ∨ (v = 0 ∧ J)).
-  Instance Frame_Into_Q (J : vPred) v : ∀ V, Frame false (J V) (Q J v V) (Q_dup v V)%V.
+  Instance Frame_Into_Q (J : vPred) v :
+    ∀ V, KnownFrame false (J V) (Q J v V) (Q_dup v V)%V.
   Proof. iIntros (V) "[oJ [%|%]]"; [by iLeft|iRight]. by iFrame "oJ". Qed.
 
   Definition isLock (l : loc) J : vPred :=
diff --git a/theories/gps/plain.v b/theories/gps/plain.v
index e1b73905615a84fed91897c94d27a1e6386c51d8..b681c07fc09b9c119c6429f81b05fbb22b51ac97 100644
--- a/theories/gps/plain.v
+++ b/theories/gps/plain.v
@@ -61,11 +61,12 @@ Section Plain.
     apply persistor_persistent => ?. apply _.
   Qed.
 
-  Local Instance : Frame false (gps_inv IP l γ γ_x) (gpsPRaw p l (encode (p,γ,γ_x,γx)))
-                         (Writer γ ζ ∗ exwr γ_x 1%Qp e_x ∗ own.own γx (DecAgree e_x)).
+  Local Instance :
+    KnownFrame false (gps_inv IP l γ γ_x) (gpsPRaw p l (encode (p,γ,γ_x,γx)))
+               (Writer γ ζ ∗ exwr γ_x 1%Qp e_x ∗ own.own γx (DecAgree e_x)).
   Proof.
-    intros. rewrite /Frame. iIntros "[? ?]". iExists _, _. iFrame "∗". iExists _, _, _.
-    cbn. by iFrame "∗".
+    intros. rewrite /KnownFrame /Frame. iIntros "[? ?]". iExists _, _.
+    iFrame "∗". iExists _, _, _. cbn. by iFrame "∗".
   Qed.
 
   Lemma GPS_PPs_agree l p s1 s2 (E : coPset) (HE: ↑persist_locN .@ l ⊆ E):
diff --git a/theories/gps/singlewriter.v b/theories/gps/singlewriter.v
index 4241635b225e2c9c5c61f83fa76bbfccae0e2449..2eb60a74bafabe970fd4c1f02fa1ff2667be5303 100644
--- a/theories/gps/singlewriter.v
+++ b/theories/gps/singlewriter.v
@@ -72,9 +72,11 @@ Section Gname_StrongSW.
   Close Scope I.
 
   Local Instance :
-    Frame false (gps_inv (IP γ) l γ γ_x)
+    KnownFrame false (gps_inv (IP γ) l γ γ_x)
           (gpsSWnRaw γ l (encode (γ, (γ_x)))) True.
-  Proof. intros. rewrite /Frame /=. iIntros "[? _]". iExists _. by iFrame "∗". Qed.
+  Proof.
+    intros. rewrite /KnownFrame /Frame /=. iIntros "[? _]". iExists _. by iFrame "∗".
+  Qed.
 
   Lemma GPS_nFWP_Init_strong l (s: gname -> pr_state Prtcl) v
     (Q : gname -> vPred) (E : coPset) (HEN : ↑physN ⊆ E):
@@ -1022,9 +1024,9 @@ Section SingleWriter.
   Definition vGPS_FWP_eq : vGPS_FWP = _ := seal_eq _.
 
   Local Instance :
-    Frame false (gps_inv IP l γ γ_x) (gpsSWRaw l (encode (γ, (γ_x)))) True.
+    KnownFrame false (gps_inv IP l γ γ_x) (gpsSWRaw l (encode (γ, (γ_x)))) True.
   Proof.
-    intros. unfold Frame, bi_affinely_if, bi_persistently_if.
+    intros. unfold KnownFrame, Frame, bi_affinely_if, bi_persistently_if.
     iIntros "[H _]". iExists _, _. by iFrame "∗".
   Qed.
   Local Close Scope I.
diff --git a/theories/na.v b/theories/na.v
index b682fc4050184d6607fe2aa12f20a5de36820f99..1e6138ed8e784c8e7975dbc7ec61d2e8edc87492 100644
--- a/theories/na.v
+++ b/theories/na.v
@@ -57,9 +57,9 @@ Section Exclusive.
   (* Proof. apply _. Qed. *)
 
   Global Instance Frame_na_ownloc l v:
-    Frame false ((own_loc_na l v)) (own_loc l) (True%I) | 1.
+    KnownFrame false ((own_loc_na l v)) (own_loc l) (True%I) | 1.
   Proof.
-    rewrite /own_loc_na /own_loc /Frame. iStartProof (uPred _).
+    rewrite /own_loc_na /own_loc /KnownFrame /Frame. iStartProof (uPred _).
     iIntros (?) "[H _] /=". iDestruct "H" as (?) "?". iExists _. eauto.
   Qed.
 
diff --git a/theories/proofmode.v b/theories/proofmode.v
index fe8ea4f1cdef705056389396166fcae404516989..d1ec1415e69ee253c94533f62a6e71ef90cd1b4c 100644
--- a/theories/proofmode.v
+++ b/theories/proofmode.v
@@ -2,10 +2,11 @@ From iris.proofmode Require Export tactics.
 From igps Require Import viewpred.
 
 Global Instance Frame_vPred Σ p (P : vProp Σ) :
-  (* Frame (P V') (Q V') R → *)
-  (* class_instances.MakeSep ⌜V ⊑ V'⌝ R T → *)
-  Frame p (monPred_at P V) (monPred_at P V') ⌜V ⊑ V'⌝ | 30.
-Proof. intros. unfold Frame. iIntros "[? %]". rewrite H. by destruct p => /=. Qed.
+  KnownFrame p (monPred_at P V) (monPred_at P V') ⌜V ⊑ V'⌝ | 30.
+Proof.
+  intros. unfold KnownFrame, Frame. iIntros "[? %]".
+  rewrite H. by destruct p => /=.
+Qed.
 Hint Extern 10 (IsBiIndexRel _ _) => unfold IsBiIndexRel; solve_jsl
             : typeclass_instances.
 
diff --git a/theories/weakestpre.v b/theories/weakestpre.v
index 6d3e29cb37f9b7074dc2b70a42b36a112a7f1502..8ff3ed153b94621464b3f7391d1f35ab8c40508d 100644
--- a/theories/weakestpre.v
+++ b/theories/weakestpre.v
@@ -359,8 +359,11 @@ Section proofmode_classes.
   Qed.
 
   Global Instance frame_wp p E e R Φ Ψ :
-    (∀ v, Frame p R (Φ v) (Ψ v)) → Frame p R (WP e @ E {{ Φ }}) (WP e @ E {{ Ψ }}).
-  Proof. rewrite /Frame=> HR. rewrite wp_frame_l. apply wp_mono, HR. Qed.
+    (∀ v, Frame p R (Φ v) (Ψ v)) →
+    KnownFrame p R (WP e @ E {{ Φ }}) (WP e @ E {{ Ψ }}).
+  Proof.
+    rewrite /KnownFrame /Frame=> HR. rewrite wp_frame_l. apply wp_mono, HR.
+  Qed.
 
   Global Instance is_except_0_wp E e Φ : IsExcept0 (WP e @ E {{ Φ }}).
   Proof. by rewrite /IsExcept0 -{2}fupd_wp -except_0_fupd -fupd_intro. Qed.