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.