(** Loading constants *)

Definition genv_match (ge: genv) : Prop :=
  (forall id b, Genv.find_symbol ge id = Some b <-> bc b = BCglob id)
/\(forall b, Plt b (Genv.genv_next ge) -> bc b <> BCinvalid /\ bc b <> BCstack).

(* Specifications: *)
Lemma symbol_address_sound: forall ge id ofs, genv_match ge -> vmatch (Genv.symbol_address ge id ofs) (Ptr (Gl id ofs)).
Lemma vmatch_ptr_gl: forall ge v id ofs, genv_match ge -> vmatch v (Ptr (Gl id ofs)) -> Val.lessdef v (Genv.symbol_address ge id ofs).
Lemma vmatch_ptr_stk: forall v ofs sp, vmatch v (Ptr(Stk ofs)) -> bc sp = BCstack -> Val.lessdef v (Vptr sp ofs).