(** [Loc.norepet ll] holds if the locations in list [ll] are pairwise different. *)
Inductive norepet : list loc -> Prop :=
| norepet_nil:
norepet nil
| norepet_cons:
forall hd tl, notin hd tl -> norepet tl -> norepet (hd :: tl).

Lemma gso: forall l v m p, Loc.diff l p -> (set l v m) p = m p.
Fixpoint undef (ll: list loc) (m: t) {struct ll} : t :=
match ll with
| nil => m
| l1 :: ll' => undef ll' (set l1 Vundef m)
end.