Commit a0d93e84 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Merge branch 'master' into gen_proofmode

parents b8938010 23178b78
......@@ -114,5 +114,5 @@ for commit in parse_log.parse_git_commits(args.commits):
found_build = True
print(" success")
if not found_build:
if not found_build and not BREAK:
print(" found no succeessful build")
Subproject commit d2edcd474159cc883d09c0a08dbd463c2d2780df
Subproject commit 39c267a40904232496986518530eea6169fb8168
......@@ -38,9 +38,9 @@ Section proofs.
Global Instance cinv_persistent N γ P : Persistent (cinv N γ P).
Proof. rewrite /cinv; apply _. Qed.
Global Instance cinv_own_fractionnal γ : Fractional (cinv_own γ).
Global Instance cinv_own_fractional γ : Fractional (cinv_own γ).
Proof. intros ??. by rewrite /cinv_own -own_op. Qed.
Global Instance cinv_own_as_fractionnal γ q :
Global Instance cinv_own_as_fractional γ q :
AsFractional (cinv_own γ q) (cinv_own γ) q.
Proof. split. done. apply _. Qed.
......@@ -94,6 +94,19 @@ Proof.
iApply "HP'". iFrame.
Lemma inv_open_strong E N P :
N E inv N P ={E,E∖↑N}= P E', P ={E',N E'}= True.
iIntros (?) "Hinv".
iPoseProof (inv_open ( N) N P with "Hinv") as "H"; first done.
rewrite difference_diag_L.
iPoseProof (fupd_mask_frame_r _ _ (E N) with "H") as "H"; first set_solver.
rewrite left_id_L -union_difference_L //. iMod "H" as "[$ H]"; iModIntro.
iIntros (E') "HP". iSpecialize ("H" with "HP").
iPoseProof (fupd_mask_frame_r _ _ E' with "H") as "H"; first set_solver.
by rewrite left_id_L.
Global Instance into_inv_inv N P : IntoInv (inv N P) N.
Global Instance elim_inv_inv E N P Q Q' :
......@@ -158,6 +158,28 @@ Section sep_list.
apply forall_intro=> k. by rewrite (forall_elim (S k)).
Lemma big_sepL_delete Φ l i x :
l !! i = Some x
([ list] ky l, Φ k y)
Φ i x [ list] ky l, if decide (k = i) then emp else Φ k y.
intros. rewrite -(take_drop_middle l i x) // !big_sepL_app /= Nat.add_0_r.
rewrite take_length_le; last eauto using lookup_lt_Some, Nat.lt_le_incl.
rewrite decide_True // left_id.
rewrite assoc -!(comm _ (Φ _ _)) -assoc. do 2 f_equiv.
- apply big_sepL_proper=> k y Hk. apply lookup_lt_Some in Hk.
rewrite take_length in Hk. by rewrite decide_False; last lia.
- apply big_sepL_proper=> k y _. by rewrite decide_False; last lia.
Lemma big_sepL_delete' `{!BiAffine PROP} Φ l i x :
l !! i = Some x
([ list] ky l, Φ k y) Φ i x [ list] ky l, k i Φ k y.
intros. rewrite big_sepL_delete //. (do 2 f_equiv)=> k y.
rewrite -decide_emp. by repeat case_decide.
Global Instance big_sepL_nil_persistent Φ :
Persistent ([ list] kx [], Φ k x).
Proof. simpl; apply _. Qed.
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