diff --git a/theories/heap_lang/locations.v b/theories/heap_lang/locations.v
index 3f8e5319661a491f51ba4f5229d5b2b5f48e25dc..8a2b145f46c1e4b6d7728e5caf4597280e64a30c 100644
--- a/theories/heap_lang/locations.v
+++ b/theories/heap_lang/locations.v
@@ -11,19 +11,9 @@ 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 Instance 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.
+Program Instance loc_infinite : Infinite loc :=
+  inj_infinite (λ p, {| loc_car := p |}) (λ l, Some (loc_car l)) _.
+Next Obligation. done. Qed.
 
 Definition loc_add (l : loc) (off : Z) : loc :=
   {| loc_car := loc_car l + off|}.