(* 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_assoc {A} {NA: NatDed A} : forall P Q R : A, (P && Q) && R = P && (Q && R).