Commit 88e93595 by Jacques-Henri Jourdan

### Whitespaces.

parent ca60948b
 ... @@ -14,7 +14,7 @@ Local Arguments op _ _ _ !_ /. ... @@ -14,7 +14,7 @@ Local Arguments op _ _ _ !_ /. Local Arguments pcore _ _ !_ /. Local Arguments pcore _ _ !_ /. (* This is isomorphic to option, but has a very different RA structure. *) (* This is isomorphic to option, but has a very different RA structure. *) Inductive dec_agree (A : Type) : Type := Inductive dec_agree (A : Type) : Type := | DecAgree : A → dec_agree A | DecAgree : A → dec_agree A | DecAgreeBot : dec_agree A. | DecAgreeBot : dec_agree A. Arguments DecAgree {_} _. Arguments DecAgree {_} _. ... ...
 ... @@ -22,7 +22,7 @@ Record DraMixin A `{Equiv A, Core A, Disjoint A, Op A, Valid A} := { ... @@ -22,7 +22,7 @@ Record DraMixin A `{Equiv A, Core A, Disjoint A, Op A, Valid A} := { mixin_dra_core_disjoint_l x : ✓ x → core x ## x; mixin_dra_core_disjoint_l x : ✓ x → core x ## x; mixin_dra_core_l x : ✓ x → core x ⋅ x ≡ x; mixin_dra_core_l x : ✓ x → core x ⋅ x ≡ x; mixin_dra_core_idemp x : ✓ x → core (core x) ≡ core x; mixin_dra_core_idemp x : ✓ x → core (core x) ≡ core x; mixin_dra_core_mono x y : mixin_dra_core_mono x y : ∃ z, ✓ x → ✓ y → x ## y → core (x ⋅ y) ≡ core x ⋅ z ∧ ✓ z ∧ core x ## z ∃ z, ✓ x → ✓ y → x ## y → core (x ⋅ y) ≡ core x ⋅ z ∧ ✓ z ∧ core x ## z }. }. Structure draT := DraT { Structure draT := DraT { ... @@ -81,7 +81,7 @@ Section dra_mixin. ... @@ -81,7 +81,7 @@ Section dra_mixin. Proof. apply (mixin_dra_core_l _ (dra_mixin A)). Qed. Proof. apply (mixin_dra_core_l _ (dra_mixin A)). Qed. Lemma dra_core_idemp x : ✓ x → core (core x) ≡ core x. Lemma dra_core_idemp x : ✓ x → core (core x) ≡ core x. Proof. apply (mixin_dra_core_idemp _ (dra_mixin A)). Qed. Proof. apply (mixin_dra_core_idemp _ (dra_mixin A)). Qed. Lemma dra_core_mono x y : Lemma dra_core_mono x y : ∃ z, ✓ x → ✓ y → x ## y → core (x ⋅ y) ≡ core x ⋅ z ∧ ✓ z ∧ core x ## z. ∃ z, ✓ x → ✓ y → x ## y → core (x ⋅ y) ≡ core x ⋅ z ∧ ✓ z ∧ core x ## z. Proof. apply (mixin_dra_core_mono _ (dra_mixin A)). Qed. Proof. apply (mixin_dra_core_mono _ (dra_mixin A)). Qed. End dra_mixin. End dra_mixin. ... @@ -209,7 +209,7 @@ Proof. ... @@ -209,7 +209,7 @@ Proof. assert (✓ y) by (rewrite EQ; by apply dra_op_valid). assert (✓ y) by (rewrite EQ; by apply dra_op_valid). split; first done. exists (to_validity z). split; first split. split; first done. exists (to_validity z). split; first split. + intros _. simpl. by split_and!. + intros _. simpl. by split_and!. + intros _. setoid_subst. by apply dra_op_valid. + intros _. setoid_subst. by apply dra_op_valid. + intros _. rewrite /= EQ //. + intros _. rewrite /= EQ //. Qed. Qed. *) *) ... ...
 ... @@ -8,7 +8,7 @@ Definition ofe_fun_insert `{EqDecision A} {B : A → ofeT} ... @@ -8,7 +8,7 @@ Definition ofe_fun_insert `{EqDecision A} {B : A → ofeT} match decide (x = x') with left H => eq_rect _ B y _ H | right _ => f x' end. match decide (x = x') with left H => eq_rect _ B y _ H | right _ => f x' end. Instance: Params (@ofe_fun_insert) 5. Instance: Params (@ofe_fun_insert) 5. Definition ofe_fun_singleton `{Finite A} {B : A → ucmraT} Definition ofe_fun_singleton `{Finite A} {B : A → ucmraT} (x : A) (y : B x) : ofe_fun B := ofe_fun_insert x y ε. (x : A) (y : B x) : ofe_fun B := ofe_fun_insert x y ε. Instance: Params (@ofe_fun_singleton) 5. Instance: Params (@ofe_fun_singleton) 5. ... ...
 ... @@ -6,7 +6,7 @@ Set Default Proof Using "Type". ... @@ -6,7 +6,7 @@ Set Default Proof Using "Type". category, and mathematically speaking, the entire development lives category, and mathematically speaking, the entire development lives in this category. However, we will generally prefer to work with raw in this category. However, we will generally prefer to work with raw Coq functions plus some registered Proper instances for non-expansiveness. Coq functions plus some registered Proper instances for non-expansiveness. This makes writing such functions much easier. It turns out that it many This makes writing such functions much easier. It turns out that it many cases, we do not even need non-expansiveness. cases, we do not even need non-expansiveness. *) *) ... ...
 ... @@ -311,7 +311,7 @@ Proof. done. Qed. ... @@ -311,7 +311,7 @@ Proof. done. Qed. Lemma sts_frag_up_valid s T : ✓ sts_frag_up s T ↔ tok s ## T. Lemma sts_frag_up_valid s T : ✓ sts_frag_up s T ↔ tok s ## T. Proof. Proof. split. split. - move=>/sts_frag_valid [H _]. apply H, elem_of_up. - move=>/sts_frag_valid [H _]. apply H, elem_of_up. - intros. apply sts_frag_valid; split. by apply closed_up. set_solver. - intros. apply sts_frag_valid; split. by apply closed_up. set_solver. Qed. Qed. ... ...
 ... @@ -228,7 +228,7 @@ Proof. ... @@ -228,7 +228,7 @@ Proof. revert P. revert P. induction k; intros P. induction k; intros P. - rewrite //= ?right_id. apply wand_intro_l. - rewrite //= ?right_id. apply wand_intro_l. rewrite {1}(nnupd_k_intro 0 (P -∗ False)%I) //= ?right_id. apply wand_elim_r. rewrite {1}(nnupd_k_intro 0 (P -∗ False)%I) //= ?right_id. apply wand_elim_r. - rewrite {2}(nnupd_k_unfold k P). - rewrite {2}(nnupd_k_unfold k P). apply and_intro. apply and_intro. * rewrite (nnupd_k_unfold k P). rewrite and_elim_l. * rewrite (nnupd_k_unfold k P). rewrite and_elim_l. ... @@ -291,9 +291,9 @@ Qed. ... @@ -291,9 +291,9 @@ Qed. End classical. End classical. (* We might wonder whether we can prove an adequacy lemma for nnupd. We could combine (* We might wonder whether we can prove an adequacy lemma for nnupd. We could combine the adequacy lemma for bupd with the previous result to get adquacy for nnupd, but the adequacy lemma for bupd with the previous result to get adquacy for nnupd, but this would rely on the classical axiom we needed to prove the equivalence! Can this would rely on the classical axiom we needed to prove the equivalence! Can we establish adequacy without axioms? Unfortunately not, because adequacy for we establish adequacy without axioms? Unfortunately not, because adequacy for nnupd would imply double negation elimination, which is classical: *) nnupd would imply double negation elimination, which is classical: *) Lemma nnupd_dne φ: (|=n=> ⌜¬¬ φ → φ⌝: uPred M)%I. Lemma nnupd_dne φ: (|=n=> ⌜¬¬ φ → φ⌝: uPred M)%I. ... @@ -327,7 +327,7 @@ Proof. ... @@ -327,7 +327,7 @@ Proof. intros ??? Hx'. rewrite left_id in Hx' *=> Hx'. intros ??? Hx'. rewrite left_id in Hx' *=> Hx'. unseal. unseal. assert (n' < S k ∨ n' = S k) as [|] by omega. assert (n' < S k ∨ n' = S k) as [|] by omega. * intros. move:(laterN_small n' (S k) x' False). rewrite //=. unseal. intros Hsmall. * intros. move:(laterN_small n' (S k) x' False). rewrite //=. unseal. intros Hsmall. eapply Hsmall; eauto. eapply Hsmall; eauto. * subst. intros. exfalso. eapply Hf2. exists x'. split; eauto using cmra_validN_S. * subst. intros. exfalso. eapply Hf2. exists x'. split; eauto using cmra_validN_S. - intros k P x Hx. rewrite ?Nat_iter_S_r. - intros k P x Hx. rewrite ?Nat_iter_S_r. ... ...
 ... @@ -84,7 +84,7 @@ End namespace. ... @@ -84,7 +84,7 @@ End namespace. (* The hope is that registering these will suffice to solve most goals (* The hope is that registering these will suffice to solve most goals of the forms: of the forms: - [N1 ## N2] - [N1 ## N2] - [↑N1 ⊆ E ∖ ↑N2 ∖ .. ∖ ↑Nn] - [↑N1 ⊆ E ∖ ↑N2 ∖ .. ∖ ↑Nn] - [E1 ∖ ↑N1 ⊆ E2 ∖ ↑N2 ∖ .. ∖ ↑Nn] *) - [E1 ∖ ↑N1 ⊆ E2 ∖ ↑N2 ∖ .. ∖ ↑Nn] *) Create HintDb ndisj. Create HintDb ndisj. ... ...
 ... @@ -82,7 +82,7 @@ Section sts. ... @@ -82,7 +82,7 @@ Section sts. sts_own γ s1 T ==∗ sts_own γ s2 T. sts_own γ s1 T ==∗ sts_own γ s2 T. Proof. Proof. intros ??. apply own_update, sts_update_frag_up; [|done..]. intros ??. apply own_update, sts_update_frag_up; [|done..]. intros Hdisj. apply sts.closed_up. done. intros Hdisj. apply sts.closed_up. done. Qed. Qed. Lemma sts_own_weaken_tok γ s T1 T2 : Lemma sts_own_weaken_tok γ s T1 T2 : ... ...
 ... @@ -60,7 +60,7 @@ Module uPred_reflection. Section uPred_reflection. ... @@ -60,7 +60,7 @@ Module uPred_reflection. Section uPred_reflection. match e with match e with | ETrue => None | ETrue => None | EVar n' => if decide (n = n') then Some ETrue else None | EVar n' => if decide (n = n') then Some ETrue else None | ESep e1 e2 => | ESep e1 e2 => match cancel_go n e1 with match cancel_go n e1 with | Some e1' => Some (ESep e1' e2) | Some e1' => Some (ESep e1' e2) | None => ESep e1 <\$> cancel_go n e2 | None => ESep e1 <\$> cancel_go n e2 ... ...
 ... @@ -276,7 +276,7 @@ Definition fill_item (Ki : ectx_item) (e : expr) : expr := ... @@ -276,7 +276,7 @@ Definition fill_item (Ki : ectx_item) (e : expr) : expr := | CaseCtx e1 e2 => Case e e1 e2 | CaseCtx e1 e2 => Case e e1 e2 | AllocCtx => Alloc e | AllocCtx => Alloc e | LoadCtx => Load e | LoadCtx => Load e | StoreLCtx e2 => Store e e2 | StoreLCtx e2 => Store e e2 | StoreRCtx v1 => Store (of_val v1) e | StoreRCtx v1 => Store (of_val v1) e | CasLCtx e1 e2 => CAS e e1 e2 | CasLCtx e1 e2 => CAS e e1 e2 | CasMCtx v0 e2 => CAS (of_val v0) e e2 | CasMCtx v0 e2 => CAS (of_val v0) e e2 ... @@ -365,11 +365,11 @@ Inductive head_step : expr → state → expr → state → list (expr) → Prop ... @@ -365,11 +365,11 @@ Inductive head_step : expr → state → expr → state → list (expr) → Prop head_step (App (Rec f x e1) e2) σ e' σ [] head_step (App (Rec f x e1) e2) σ e' σ [] | UnOpS op e v v' σ : | UnOpS op e v v' σ : to_val e = Some v → to_val e = Some v → un_op_eval op v = Some v' → un_op_eval op v = Some v' → head_step (UnOp op e) σ (of_val v') σ [] head_step (UnOp op e) σ (of_val v') σ [] | BinOpS op e1 e2 v1 v2 v' σ : | BinOpS op e1 e2 v1 v2 v' σ : to_val e1 = Some v1 → to_val e2 = Some v2 → to_val e1 = Some v1 → to_val e2 = Some v2 → bin_op_eval op v1 v2 = Some v' → bin_op_eval op v1 v2 = Some v' → head_step (BinOp op e1 e2) σ (of_val v') σ [] head_step (BinOp op e1 e2) σ (of_val v') σ [] | IfTrueS e1 e2 σ : | IfTrueS e1 e2 σ : head_step (If (Lit \$ LitBool true) e1 e2) σ e1 σ [] head_step (If (Lit \$ LitBool true) e1 e2) σ e1 σ [] ... ...
 ... @@ -55,7 +55,7 @@ Section mono_proof. ... @@ -55,7 +55,7 @@ Section mono_proof. - iDestruct (own_valid_2 with "Hγ Hγf") - iDestruct (own_valid_2 with "Hγ Hγf") as %[?%mnat_included _]%auth_valid_discrete_2. as %[?%mnat_included _]%auth_valid_discrete_2. iMod (own_update_2 with "Hγ Hγf") as "[Hγ Hγf]". iMod (own_update_2 with "Hγ Hγf") as "[Hγ Hγf]". { apply auth_update, (mnat_local_update _ _ (S c)); auto. } { apply auth_update, (mnat_local_update _ _ (S c)); auto. } wp_cas_suc. iMod ("Hclose" with "[Hl Hγ]") as "_". wp_cas_suc. iMod ("Hclose" with "[Hl Hγ]") as "_". { iNext. iExists (S c). rewrite Nat2Z.inj_succ Z.add_1_l. by iFrame. } { iNext. iExists (S c). rewrite Nat2Z.inj_succ Z.add_1_l. by iFrame. } iModIntro. wp_if. iApply "HΦ"; iExists γ; repeat iSplit; eauto. iModIntro. wp_if. iApply "HΦ"; iExists γ; repeat iSplit; eauto. ... ...
 ... @@ -94,7 +94,7 @@ Section proof. ... @@ -94,7 +94,7 @@ Section proof. + iMod ("Hclose" with "[Hlo Hln Hainv Ht]") as "_". + iMod ("Hclose" with "[Hlo Hln Hainv Ht]") as "_". { iNext. iExists o, n. iFrame. eauto. } { iNext. iExists o, n. iFrame. eauto. } iModIntro. wp_let. wp_op. case_bool_decide; [|done]. iModIntro. wp_let. wp_op. case_bool_decide; [|done]. wp_if. wp_if. iApply ("HΦ" with "[-]"). rewrite /locked. iFrame. eauto. iApply ("HΦ" with "[-]"). rewrite /locked. iFrame. eauto. + iDestruct (own_valid_2 with "Ht Haown") as % [_ ?%gset_disj_valid_op]. + iDestruct (own_valid_2 with "Ht Haown") as % [_ ?%gset_disj_valid_op]. set_solver. set_solver. ... @@ -129,7 +129,7 @@ Section proof. ... @@ -129,7 +129,7 @@ Section proof. iModIntro. wp_if. iModIntro. wp_if. iApply (wait_loop_spec γ (#lo, #ln) with "[-HΦ]"). iApply (wait_loop_spec γ (#lo, #ln) with "[-HΦ]"). + iFrame. rewrite /is_lock; eauto 10. + iFrame. rewrite /is_lock; eauto 10. + by iNext. + by iNext. - wp_cas_fail. - wp_cas_fail. iMod ("Hclose" with "[Hlo' Hln' Hauth Haown]") as "_". iMod ("Hclose" with "[Hlo' Hln' Hauth Haown]") as "_". { iNext. iExists o', n'. by iFrame. } { iNext. iExists o', n'. by iFrame. } ... ...
 ... @@ -237,7 +237,7 @@ Proof. ... @@ -237,7 +237,7 @@ Proof. iSplitL "He2"; first by iApply ("IH" with "He2"). iClear "Hred Hstep". iSplitL "He2"; first by iApply ("IH" with "He2"). iClear "Hred Hstep". induction efs as [|ef efs IH]; first by iApply big_sepL_nil. induction efs as [|ef efs IH]; first by iApply big_sepL_nil. rewrite !big_sepL_cons. iDestruct "Hefs" as "(Hef & Hefs)". rewrite !big_sepL_cons. iDestruct "Hefs" as "(Hef & Hefs)". iSplitL "Hef". by iApply ("IH" with "Hef"). exact: IH. iSplitL "Hef". by iApply ("IH" with "Hef"). exact: IH. Qed. Qed. Lemma fupd_wp s E e Φ : (|={E}=> WP e @ s; E {{ Φ }}) ⊢ WP e @ s; E {{ Φ }}. Lemma fupd_wp s E e Φ : (|={E}=> WP e @ s; E {{ Φ }}) ⊢ WP e @ s; E {{ Φ }}. ... ...
 ... @@ -27,7 +27,7 @@ Definition ascii_beq (x y : ascii) : bool := ... @@ -27,7 +27,7 @@ Definition ascii_beq (x y : ascii) : bool := beq x5 y5 && beq x6 y6 && beq x7 y7 && beq x8 y8. beq x5 y5 && beq x6 y6 && beq x7 y7 && beq x8 y8. Fixpoint string_beq (s1 s2 : string) : bool := Fixpoint string_beq (s1 s2 : string) : bool := match s1, s2 with match s1, s2 with | "", "" => true | "", "" => true | String a1 s1, String a2 s2 => ascii_beq a1 a2 && string_beq s1 s2 | String a1 s1, String a2 s2 => ascii_beq a1 a2 && string_beq s1 s2 | _, _ => false | _, _ => false ... ...
 ... @@ -40,7 +40,7 @@ Fixpoint env_app {A} (Γapp : env A) (Γ : env A) : option (env A) := ... @@ -40,7 +40,7 @@ Fixpoint env_app {A} (Γapp : env A) (Γ : env A) : option (env A) := match Γapp with match Γapp with | Enil => Some Γ | Enil => Some Γ | Esnoc Γapp i x => | Esnoc Γapp i x => Γ' ← env_app Γapp Γ; Γ' ← env_app Γapp Γ; match Γ' !! i with None => Some (Esnoc Γ' i x) | Some _ => None end match Γ' !! i with None => Some (Esnoc Γ' i x) | Some _ => None end end. end. ... ...
 ... @@ -327,14 +327,14 @@ Local Tactic Notation "iIntro" "#" constr(H) := ... @@ -327,14 +327,14 @@ Local Tactic Notation "iIntro" "#" constr(H) := first first [ (* (?P → _) *) [ (* (?P → _) *) eapply tac_impl_intro_persistent with _ H _; (* (i:=H) *) eapply tac_impl_intro_persistent with _ H _; (* (i:=H) *) [apply _ || [apply _ || let P := match goal with |- IntoPersistent _ ?P _ => P end in let P := match goal with |- IntoPersistent _ ?P _ => P end in fail 1 "iIntro: " P " not persistent" fail 1 "iIntro: " P " not persistent" |env_reflexivity || fail 1 "iIntro:" H "not fresh" |env_reflexivity || fail 1 "iIntro:" H "not fresh" |] |] | (* (?P -∗ _) *) | (* (?P -∗ _) *) eapply tac_wand_intro_persistent with _ H _; (* (i:=H) *) eapply tac_wand_intro_persistent with _ H _; (* (i:=H) *) [apply _ || [apply _ || let P := match goal with |- IntoPersistent _ ?P _ => P end in let P := match goal with |- IntoPersistent _ ?P _ => P end in fail 1 "iIntro: " P " not persistent" fail 1 "iIntro: " P " not persistent" |env_reflexivity || fail 1 "iIntro:" H "not fresh" |env_reflexivity || fail 1 "iIntro:" H "not fresh" ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment