Notation alwsafe_sc s p scs := (always_sc s p scs (fun _ _ => True)).Notation alwsafe s p := (always s p (fun _ _ => True)).

(* Specifications: *)
Lemma alwA' A B s (p : proc A) scs (P : B -> state -> proc A -> Prop) : alwsafe_sc s p scs -> (always_sc s p scs (fun s' p' => forall x, P x s' p') <-> forall x, always_sc s p scs (fun s' p' => P x s' p')).
Lemma alwA A B s (p : proc A) (P : B -> state -> proc A -> Prop) : alwsafe s p -> (always s p (fun s' p' => forall x, P x s' p') <-> forall x, always s p (fun s' p' => P x s' p')).
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')).