Arguments alwA [A B s p P].
(* always commutes with implication, so we can weaken the postconditions *)

(* Specifications: *)
Lemma alwI' A s (p : proc A) scs (P : Prop) (Q : state -> proc A -> Prop) :
alwsafe s p ->
(always_sc s p scs (fun s' p' => P -> Q s' p') <->
(P -> always_sc s p scs (fun s' p' => Q s' p'))).
Lemma alwI A s (p : proc A) (P : Prop) (Q : state -> proc A -> Prop) :
alwsafe s p ->
always s p (fun s' p' => P -> Q s' p') <->
(P -> always s p (fun s' p' => Q s' p')).