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 canon9: forall Q1 P Q R, local (locald_denote Q1) && (PROPx P (LOCALx Q R)) = PROPx P (LOCALx (Q1::Q) R).
Lemma canon20: forall PQR, do_canon emp PQR = PQR.