(* Lenb: should be moved to tycontext or some other Clight-dependent file- but is in fact dead Definition Dbool {CS: compspecs} (Delta: tycontext) (e: Clight.expr) : assert := fun rho =>  EX b: bool, !! (bool_of_valf (eval_expr e rho) = Some b). *)

(* Specifications: *)
Lemma assert_truth:  forall {A} `{ageable A} (P:  Prop), P -> forall (Q: pred A), Q |-- (!! P) && Q.
(*   Lemma assert_Val_is_true: forall {A} `{ageable A} (P: pred A), P |-- !!(is_true Vtrue) && P.  Lemma adr_range_split_lem1: forall n m r loc loc', r = n + m -> n >= 0 -> m >= 0 -> adr_range loc n loc' -> adr_range loc r loc'.  Lemma adr_range_split_lem2: forall n m r loc loc', r = n + m -> n >= 0 -> m >= 0 -> adr_range (fst loc, snd loc + n) m loc' -> adr_range loc r loc'.  Lemma adr_range_split_lem3: forall n m r loc loc', r = n + m -> n >= 0 -> m >= 0 -> ~adr_range loc n loc' -> ~adr_range (fst loc, snd loc + n) m loc' -> ~adr_range loc r loc'.  Lemma prop_imp_i {A}{agA: ageable A}: forall (P: Prop) Q w, (P -> app_pred Q w) -> (!!P --> Q) w.  Lemma or_pred_ext {A} `{agA : ageable A}: forall P Q P' Q', (P <--> P') && (Q <--> Q') |--  (P || Q) <--> (P' || Q').  Lemma corable_pureat: forall pp k loc, corable (pureat pp k loc).  Lemma corable_func_at: forall f l, corable (func_at f l).  Lemma corable_func_at': forall f l, corable (func_at' f l).  Lemma corable_func_ptr : forall f v, corable (func_ptr f v).  Hint Resolve corable_func_ptr.  Lemma corable_funspecs_assert: forall FS rho, corable (funspecs_assert FS rho).  Hint Resolve corable_funspecs_assert.  Lemma corable_jam: forall {B} {S': B -> Prop} (S: forall l, {S' l}+{~ S' l}) (P Q: B -> pred rmap), (forall loc, corable (P loc)) -> (forall loc, corable (Q loc)) -> forall b, corable (jam S P Q b). (*Lenb: add Hint Resolve corable_jam?*)
(* Lemma corable_fun_assert: forall v fsig cc A P Q, corable (fun_assert v fsig cc A P Q).  Hint Resolve corable_fun_assert : normalize. *)
Lemma prop_derives {A}{H: ageable A}:
forall (P Q: Prop), (P -> Q) -> prop P |-- prop Q.