Skip to content
Snippets Groups Projects
Commit 2c926d86 authored by Ralf Jung's avatar Ralf Jung
Browse files

gen_heap_alloc_gen: consistent order of argument usage

parent a43d8ebf
No related branches found
No related tags found
No related merge requests found
...@@ -143,12 +143,12 @@ Section gen_heap. ...@@ -143,12 +143,12 @@ Section gen_heap.
Qed. Qed.
Lemma gen_heap_alloc_gen σ σ' : Lemma gen_heap_alloc_gen σ σ' :
σ ## σ' gen_heap_ctx σ ==∗ gen_heap_ctx (σ' σ) [ map] l v σ', l v. σ' ## σ gen_heap_ctx σ ==∗ gen_heap_ctx (σ' σ) [ map] l v σ', l v.
Proof. Proof.
revert σ; induction σ' as [| l v σ' Hl IHσ'] using map_ind; revert σ; induction σ' as [| l v σ' Hl IHσ'] using map_ind;
iIntros (σ Hσdisj) "Hσ". iIntros (σ Hσdisj) "Hσ".
- by rewrite left_id big_opM_empty; iFrame. - by rewrite left_id big_opM_empty; iFrame.
- iMod (IHσ' with "Hσ") as "[Hσ m]"; first by eapply map_disjoint_insert_r. - iMod (IHσ' with "Hσ") as "[Hσ m]"; first by eapply map_disjoint_insert_l.
rewrite big_opM_insert //; iFrame. rewrite big_opM_insert //; iFrame.
assert (σ !! l = None). assert (σ !! l = None).
{ eapply map_disjoint_Some_r; first by eauto. { eapply map_disjoint_Some_r; first by eauto.
......
...@@ -512,6 +512,7 @@ Proof. ...@@ -512,6 +512,7 @@ Proof.
move: Hj. rewrite Z2Nat.id // => ?. by rewrite Hdisj. move: Hj. rewrite Z2Nat.id // => ?. by rewrite Hdisj.
Qed. Qed.
(* [h] is added on the right here to make [state_init_heap_singleton] true. *)
Definition state_init_heap (l : loc) (n : Z) (v : val) (σ : state) : state := Definition state_init_heap (l : loc) (n : Z) (v : val) (σ : state) : state :=
state_upd_heap (λ h, heap_array l (replicate (Z.to_nat n) v) h) σ. state_upd_heap (λ h, heap_array l (replicate (Z.to_nat n) v) h) σ.
......
...@@ -238,8 +238,7 @@ Proof. ...@@ -238,8 +238,7 @@ Proof.
iIntros (σ1 κ κs k) "[Hσ Hκs] !>"; iSplit; first by destruct n; auto with lia. iIntros (σ1 κ κs k) "[Hσ Hκs] !>"; iSplit; first by destruct n; auto with lia.
iNext; iIntros (v2 σ2 efs Hstep); inv_head_step. iNext; iIntros (v2 σ2 efs Hstep); inv_head_step.
iMod (@gen_heap_alloc_gen with "Hσ") as "[Hσ Hl]". iMod (@gen_heap_alloc_gen with "Hσ") as "[Hσ Hl]".
{ symmetry. { apply (heap_array_map_disjoint _ l (replicate (Z.to_nat n) v)); eauto.
apply (heap_array_map_disjoint _ l (replicate (Z.to_nat n) v)); eauto.
rewrite replicate_length Z2Nat.id; auto with lia. } rewrite replicate_length Z2Nat.id; auto with lia. }
iModIntro; iSplit; auto. iModIntro; iSplit; auto.
iFrame. iApply "HΦ". iFrame. iApply "HΦ".
...@@ -254,8 +253,7 @@ Proof. ...@@ -254,8 +253,7 @@ Proof.
iIntros (σ1 κs k) "[Hσ Hκs] !>"; iSplit; first by destruct n; auto with lia. iIntros (σ1 κs k) "[Hσ Hκs] !>"; iSplit; first by destruct n; auto with lia.
iIntros (κ v2 σ2 efs Hstep); inv_head_step. iIntros (κ v2 σ2 efs Hstep); inv_head_step.
iMod (@gen_heap_alloc_gen with "Hσ") as "[Hσ Hl]". iMod (@gen_heap_alloc_gen with "Hσ") as "[Hσ Hl]".
{ symmetry. { apply (heap_array_map_disjoint _ l (replicate (Z.to_nat n) v)); eauto.
apply (heap_array_map_disjoint _ l (replicate (Z.to_nat n) v)); eauto.
rewrite replicate_length Z2Nat.id; auto with lia. } rewrite replicate_length Z2Nat.id; auto with lia. }
iModIntro; iSplit; auto. iModIntro; iSplit; auto.
iFrame; iSplit; auto. iApply "HΦ". iFrame; iSplit; auto. iApply "HΦ".
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment