Program Definition closedM : @modality world _ := exist _ closedR _.Definition closed := box closedM.Program Definition setM v x : @modality world _ := setR v x.Program Definition world_op (Pp : pred prog) (Pr : store -> Prop) : pred world :=
  fun pr => let (p,r) := pr in Pp p /\ Pr r.Definition store_op (Pr : store -> Prop) := world_op TT Pr.Definition prog_op (X:pred prog) :=  world_op X (fun _ => True).

(* Specifications: *)
Lemma worldNec_unfold : forall p r p' r', @necR world _ (p,r) (p',r') <-> necR p p' /\ r = r'.
Lemma worldLater_unfold : forall p r p' r', @laterR world _ (p,r) (p',r') <-> laterR p p' /\ r = r'.
Lemma worldNec_unfold : forall p r p' r', @necR world _ (p,r) (p',r') <-> necR p p' /\ r = r'.
Lemma worldLater_unfold : forall p r p' r', @laterR world _ (p,r) (p',r') <-> laterR p p' /\ r = r'.