diff --git a/theories/heap_lang/locations.v b/theories/heap_lang/locations.v index e10269515827f31b0c919b3b9a5a07d91b0eecff..53ca9e056f77a5a932435fcfa700aaa6774fe756 100644 --- a/theories/heap_lang/locations.v +++ b/theories/heap_lang/locations.v @@ -11,6 +11,20 @@ Instance loc_inhabited : Inhabited loc := populate {|loc_car := 0 |}. Instance loc_countable : Countable loc. Proof. by apply (inj_countable' loc_car (λ i, {| loc_car := i |})); intros []. Qed. +Program Definition loc_infinite : Infinite loc := {| + infinite_fresh l := {| loc_car := infinite_fresh (loc_car <$> l) |} +|}. +Next Obligation. + intros xs Hfresh. unfold fresh in Hfresh. + eapply (infinite_is_fresh (loc_car <$> xs)). + eapply elem_of_list_fmap. eexists. split; last done. + reflexivity. +Qed. +Next Obligation. + intros xs ys Hperm. unfold fresh. f_equal. + eapply infinite_fresh_Permutation. rewrite Hperm //. +Qed. + Definition loc_add (l : loc) (off : Z) : loc := {| loc_car := loc_car l + off|}.