let add_decl_hyp lv p =
let addr = mk_lvar_addr lv in
let ptr_hyp =
let tptr = Types.generic_pointer_type () in
let ptr = Fol.fresh_named_var "p" tptr in
let h = Why_ops.disj_pointer (Fol.Tvar ptr) addr in
let hv = Why_ops.valid_pointer (Fol.Tvar ptr) in
let h = Fol.pimplies (hv, h) in
Fol.forall_pred prop_in_data ~fresh:false ptr h
in Fol.pimplies (ptr_hyp, p)