Ltac canonicalize_pre :=
match goal with |- semax _ ?P _ _ =>
rewrite (start_canon P); autorewrite with canon
end.

(* Specifications: *)
Lemma restart_canon: forall P Q R, (PROPx P (LOCALx Q (SEPx R))) = do_canon emp (PROPx P (LOCALx Q (SEPx R))).
Lemma exp_do_canon:
forall T (P: T -> environ->mpred) (Q: environ->mpred), do_canon (exp P) Q = EX x:_, do_canon (P x) Q.