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)