@@ -256,6 +256,7 @@ Opaque aneris_state_interp.
256256Notation state_interp_oos ζ α := (aneris_state_interp_opt (Some (ζ,α))).
257257
258258Definition sswp `{LM:LiveModel aneris_lang (joint_model M Net)}
259+ `{!LiveModelEq LM}
259260 `{!anerisG LM Σ} (s : stuckness)
260261 E ζ (e1:aneris_expr) (Φ : aneris_expr → option (action aneris_lang) → iProp Σ) : iProp Σ :=
261262 ⌜TCEq (aneris_to_val e1) None⌝ ∧
@@ -273,13 +274,15 @@ Definition sswp `{LM:LiveModel aneris_lang (joint_model M Net)}
273274 atr ∗ Φ e2 α ∗ ⌜efs = []⌝.
274275
275276Definition MU `{LM:LiveModel aneris_lang (joint_model M Net)}
277+ `{!LiveModelEq LM}
276278 `{!anerisG LM Σ} E ζ α (P : iProp Σ) : iProp Σ :=
277279 ∀ (extr : execution_trace aneris_lang) (atr : auxiliary_trace LM),
278280 state_interp_oos ζ α extr atr ={E}=∗
279281 ∃ δ2 ℓ, state_interp extr (trace_extend atr ℓ δ2) ∗ P.
280282
281283Lemma sswp_MU_wp_fupd `{LM:LiveModel aneris_lang (joint_model M Net)}
282- `{!anerisG LM Σ} s E E' ζ e Φ :
284+ `{!LiveModelEq LM}
285+ `{!anerisG LM Σ} s E E' ζ e Φ :
283286 (|={E,E'}=> sswp s E' ζ e (λ e' α, MU E' ζ α ((|={E',E}=> WP e' @ s; ζ; E {{ Φ }}))))%I -∗
284287 WP e @ s; ζ; E {{ Φ }}.
285288Proof .
@@ -300,7 +303,8 @@ Proof.
300303Qed .
301304
302305Lemma sswp_wand `{LM:LiveModel aneris_lang (joint_model M Net)}
303- `{!anerisG LM Σ} s E ζ e
306+ `{!LiveModelEq LM}
307+ `{!anerisG LM Σ} s E ζ e
304308 (Φ Ψ : aneris_expr → option (action aneris_lang) → iProp Σ) :
305309 (∀ e α, Φ e α -∗ Ψ e α) -∗ sswp s E ζ e Φ -∗ sswp s E ζ e Ψ.
306310Proof .
@@ -316,7 +320,8 @@ Proof.
316320Qed .
317321
318322Lemma MU_wand `{LM:LiveModel aneris_lang (joint_model M Net)}
319- `{!anerisG LM Σ} E ζ α (P Q : iProp Σ) :
323+ `{!LiveModelEq LM}
324+ `{!anerisG LM Σ} E ζ α (P Q : iProp Σ) :
320325 (P -∗ Q) -∗ MU E ζ α P -∗ MU E ζ α Q.
321326Proof .
322327 rewrite /MU. iIntros "HPQ HMU".
@@ -326,7 +331,8 @@ Proof.
326331Qed .
327332
328333Lemma sswp_MU_wp `{LM:LiveModel aneris_lang (joint_model M Net)}
329- `{!anerisG LM Σ} s E ζ e (Φ : aneris_val → iProp Σ) :
334+ `{!LiveModelEq LM}
335+ `{!anerisG LM Σ} s E ζ e (Φ : aneris_val → iProp Σ) :
330336 sswp s E ζ e (λ e' α, MU E ζ α (WP e' @ s; ζ; E {{ Φ }})) -∗
331337 WP e @ s; ζ; E {{ Φ }}.
332338Proof .
@@ -337,11 +343,11 @@ Qed.
337343
338344Section primitive_laws.
339345 Context `{LM: LiveModel aneris_lang (joint_model Mod net_model)}.
346+ Context `{!LiveModelEq LM}.
340347 Context `{aG : !anerisG LM Σ}.
341348
342349 Implicit Types P Q : iProp Σ.
343350 Implicit Types Φ : aneris_val → iProp Σ.
344- Implicit Types v : val aneris_lang.
345351 Implicit Types e : expr aneris_lang.
346352 Implicit Types σ : base_lang.state.
347353 Implicit Types M R T : message_soup.
0 commit comments