diff --git a/iris/language.v b/iris/language.v index 3fcb653bdf264e9f39d3c80ca7c1016a9db059ee..443340947a1dfffd59c259a98f0037cc8bcafc87 100644 --- a/iris/language.v +++ b/iris/language.v @@ -1,4 +1,4 @@ -Require Import prelude.prelude. +Require Export modures.base. Class Language (E V St : Type) := { of_val : V → E; @@ -18,6 +18,13 @@ Class Language (E V St : Type) := { Section language. Context `{Language E V St}. + Lemma atomic_of_val v : ¬atomic (of_val v). + Proof. + by intros Hat; apply atomic_not_value in Hat; rewrite to_of_val in Hat. + Qed. + Global Instance: Injective (=) (=) of_val. + Proof. by intros v v' Hv; apply (injective Some); rewrite -!to_of_val Hv. Qed. + Definition cfg : Type := (list E * St)%type. Inductive step (Ï1 Ï2 : cfg) : Prop := | step_atomic e1 σ1 e2 σ2 ef t1 t2 : @@ -30,7 +37,7 @@ Section language. Definition stepn := nsteps step. Record is_ctx (K : E → E) := IsCtx { - is_ctx_value e : is_Some (to_val (K e)) → is_Some (to_val e); + is_ctx_value e : to_val e = None → to_val (K e) = None; is_ctx_step_preserved e1 σ1 e2 σ2 ef : prim_step e1 σ1 e2 σ2 ef → prim_step (K e1) σ1 (K e2) σ2 ef; is_ctx_step e1' σ1 e2 σ2 ef :