(* this suggest capturing the pattern by means of a new definition *)
Definition after A s (p : proc A) (P : A -> state -> Prop) :=
always s p (fun s2 p2 => forall v, p2 = Ret v -> P v s2).

Lemma aft_alwsf A s (p : proc A) :
alwsafe s p <-> after s p (fun v s => True).