Proof with simpl; auto.
intros H1 H2 H3. revert c0 H2. induction l... intros c0 H2.
inversion H1; apply IHl...
Qed.

(* Specifications: *)
Lemma simplify_sound l c s :
listd clause_denote inter TT l s -> clause_denote c s ->
clause_denote (simplify l c) s.
Lemma rewrite_expr_eqv s t u st : (s === t) st -> (u === rewrite_expr s t u) st.
(* put this lemma elsewhere *)
Lemma var_eq_join_sub e1 e2 (x y s : state) :
sepalg.join x y s -> ((e1 === e2) s <-> (e1 === e2) x).
Lemma rewrite_clause_in_space_sound a b p1 p2 sigma0 st :
clause_denote (PureClause nil [Eqv a b] p1 p2) st ->
space_denote sigma0 st ->
space_denote (map (rewrite_clause_in_space (PureClause nil [Eqv a b] p1 p2))
sigma0) st.