Definition nonlocal (Q: environ->mpred) := True.
Ltac check_nonlocal :=
match goal with
|  |- nonlocal (local _) => fail 1
|  |- nonlocal (prop _) => fail 1
|  |- nonlocal (andp _ _) => fail 1
|  |- nonlocal (sepcon _ _) => fail 1
| |- _ => apply I
end.

Lemma start_canon: forall P, P  = do_canon P (PROPx nil (LOCALx nil (SEPx nil ))).
Hint Rewrite canon1 canon2 canon4 canon8 : canon.