Hint Resolve data_at__data_at : cancel.
Hint Resolve field_at__field_at : cancel.
Hint Resolve data_at__field_at : cancel.
Hint Resolve field_at__data_at : cancel.
Hint Extern 1 (_ = @default_val _ _) =>
match goal with |- ?A = ?B =>
let x := fresh "x" in set (x := B); hnf in x; subst x;
match goal with |- ?A = ?B => constr_eq A B; reflexivity
end end.
Hint Extern 1 (_ = _) =>
match goal with |- ?A = ?B => constr_eq A B; reflexivity end : cancel.
(* enhance cancel to solve field_at and data_at *)

Lemma field_at_data_at_cancel': forall {cs : compspecs} sh t v p,
field_at sh t nil v p = data_at sh t v p.