(* Hint Resolve @derives_refl.    too expensive sometimes when it fails . . . *)

Ltac solve_andp' :=
  first [ apply derives_refl
        | apply andp_left1; solve_andp'
        | apply andp_left2; solve_andp'].Ltac solve_andp := repeat apply andp_right; solve_andp'.Ltac norm := auto with norm.

Lemma andp_comm {A}{NA: NatDed A}: forall P Q: A, P && Q = Q && P.