Definition ewand {A} {JA: Join A} (P Q: pred A) : pred A :=
  fun w => exists w1, exists w2, join w1 w w2 /\ P w1 /\ Q w2.

(* Specifications: *)
Lemma emp_ewand {A} {JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}: forall P, ewand emp P = P.
Lemma exists_sepcon1 {A} {JA: Join A}{PA: Perm_alg A}: forall T (P: T -> pred A) Q, exp P * Q = exp (fun x => P x * Q).
Lemma derives_refl {A: Type}: forall (P: pred A), (P |-- P).
Lemma derives_TT {A}: forall (P: pred A), P |-- TT.
Lemma sepcon_derives {A} {JA: Join A}{PA: Perm_alg A}: forall p q p' q', (p |-- p') -> (q |-- q') -> (p * q |-- p' * q').
Lemma derives_e {A: Type}: forall p q (st: A), (p |-- q) -> p st -> q st.
Lemma exp_derives {A} : forall B (P: B -> pred A) Q , (forall x:B, P x |-- Q x) -> (exp P |-- exp Q).