Instance pred_sepcon_proper: Proper (pointwise_relation B eq ==> pointwise_relation B iff ==> eq) pred_sepcon.
(* Lemma pred_sepcon_sepcon: forall (P Q R: B -> Prop) p, Prop_join P Q R -> pred_sepcon P p * pred_sepcon Q p = pred_sepcon R p.  Lemma pred_sepcon_sepcon1: forall (P P': B -> Prop) p x0, (forall x, P' x <-> P x \/ x = x0) -> ~ P x0 -> pred_sepcon P' p = pred_sepcon P p * p x0. *)

(* Specifications: *)
Lemma pred_sepcon_unique_sepcon1: forall (P: B -> Prop) p x0,
sepcon_unique1 p ->
pred_sepcon p P * p x0 |-- !! (~ P x0).
Lemma prop_forall_allp: forall (P: B -> Prop),
!! (forall x, P x) = ALL x: B, !! P x.
Lemma prop_impl_imp: forall (P Q: Prop),
!! (P -> Q) = !! P --> !! Q.
Lemma pred_sepcon_prop_true: forall (P: B -> Prop) p x,
P x ->
pred_sepcon p P |-- p x * TT.
(* Lemma pred_sepcon_prop_true_weak: forall (P Q: B -> Prop) (qdec: forall x, Decidable (Q x)) p, (forall x, Q x -> P x) -> pred_sepcon P p |-- pred_sepcon Q p * TT. *)
Lemma pred_sepcon_False: forall p,
pred_sepcon p (fun _ => False) = emp.