Commit 2b300ebb authored by Ralf Jung's avatar Ralf Jung
Browse files

use the heap_lang to show that we can actually instantiate IParam :)

parent 9f597f7b
Require Import Autosubst.Autosubst. Require Import Autosubst.Autosubst.
Require Import prelude.option prelude.gmap iris.language. Require Import prelude.option prelude.gmap iris.language iris.parameter.
Set Bullet Behavior "Strict Subproofs". Set Bullet Behavior "Strict Subproofs".
...@@ -318,7 +318,7 @@ Proof. ...@@ -318,7 +318,7 @@ Proof.
exists K''; by eauto using f_equal, f_equal2, f_equal3, v2e_inj. exists K''; by eauto using f_equal, f_equal2, f_equal3, v2e_inj.
intros Hfill Hred Hnval. intros Hfill Hred Hnval.
Time revert K' Hfill; induction K=>K' /= Hfill; revert K' Hfill; induction K=>K' /= Hfill;
first (now eexists; reflexivity); first (now eexists; reflexivity);
(destruct K'; simpl; (destruct K'; simpl;
(* The first case is: K' is EmpyCtx. *) (* The first case is: K' is EmpyCtx. *)
...@@ -408,12 +408,7 @@ Section Language. ...@@ -408,12 +408,7 @@ Section Language.
Definition ectx_step e1 σ1 e2 σ2 (ef: option expr) := Definition ectx_step e1 σ1 e2 σ2 (ef: option expr) :=
exists K e1' e2', e1 = fill K e1' /\ e2 = fill K e2' /\ prim_step e1' σ1 e2' σ2 ef. exists K e1' e2', e1 = fill K e1' /\ e2 = fill K e2' /\ prim_step e1' σ1 e2' σ2 ef.
Instance heap_lang : Language expr value state := {| Instance heap_lang : Language expr value state := Build_Language v2e e2v atomic ectx_step.
of_val := v2e;
to_val := e2v;
atomic := atomic;
prim_step := ectx_step
|}.
Proof. Proof.
- exact v2v. - exact v2v.
- exact e2e. - exact e2e.
...@@ -431,7 +426,7 @@ Section Language. ...@@ -431,7 +426,7 @@ Section Language.
Lemma fill_is_ctx K: is_ctx (fill K). Lemma fill_is_ctx K: is_ctx (fill K).
Proof. Proof.
split. split.
- intros ? [v Hval]. eapply fill_value. eassumption. - intros ? Hnval. by eapply fill_not_value.
- intros ? ? ? ? ? (K' & e1' & e2' & Heq1 & Heq2 & Hstep). - intros ? ? ? ? ? (K' & e1' & e2' & Heq1 & Heq2 & Hstep).
exists (comp_ctx K K'), e1', e2'. rewrite -!fill_comp Heq1 Heq2. exists (comp_ctx K K'), e1', e2'. rewrite -!fill_comp Heq1 Heq2.
split; last split; reflexivity || assumption. split; last split; reflexivity || assumption.
...@@ -445,3 +440,9 @@ Section Language. ...@@ -445,3 +440,9 @@ Section Language.
Qed. Qed.
End Language. End Language.
(* This is just to demonstrate that we can instantiate IParam. *)
Module IParam.
Definition Σ := IParamConst heap_lang unitRA.
Print Assumptions Σ.
End IParam.
...@@ -14,6 +14,7 @@ Class Language (E V St : Type) := { ...@@ -14,6 +14,7 @@ Class Language (E V St : Type) := {
prim_step e1 σ1 e2 σ2 ef prim_step e1 σ1 e2 σ2 ef
is_Some (to_val e2) is_Some (to_val e2)
}. }.
Arguments Build_Language {_ _ _} _ _ _ _ {_ _ _ _ _}.
Section language. Section language.
Context `{Language E V St}. Context `{Language E V St}.
......
...@@ -17,7 +17,7 @@ Record iParam := IParam { ...@@ -17,7 +17,7 @@ Record iParam := IParam {
icmra_map (g f) x icmra_map g (icmra_map f x); icmra_map (g f) x icmra_map g (icmra_map f x);
icmra_map_mono {A B} (f : A -n> B) : CMRAMonotone (icmra_map f) icmra_map_mono {A B} (f : A -n> B) : CMRAMonotone (icmra_map f)
}. }.
Arguments IParam _ _ _ _ _ {_ _} _ {_ _ _ _}. Arguments IParam {_ _ _} _ _ {_ _} _ {_ _ _ _}.
Existing Instances ilanguage. Existing Instances ilanguage.
Existing Instances icmra_empty icmra_empty_spec icmra_map_ne icmra_map_mono. Existing Instances icmra_empty icmra_empty_spec icmra_map_ne icmra_map_mono.
...@@ -27,13 +27,12 @@ Proof. ...@@ -27,13 +27,12 @@ Proof.
by intros ?; apply equiv_dist=> n; apply icmra_map_ne=> ?; apply equiv_dist. by intros ?; apply equiv_dist=> n; apply icmra_map_ne=> ?; apply equiv_dist.
Qed. Qed.
Definition IParamConst (iexpr ival istate : Type) Definition IParamConst {iexpr ival istate : Type}
(ilanguage : Language iexpr ival istate) (ilanguage : Language iexpr ival istate)
(icmra : cmraT) {icmra_empty : Empty icmra} (icmra : cmraT) {icmra_empty : Empty icmra}
{icmra_empty_spec : RAIdentity icmra}: {icmra_empty_spec : RAIdentity icmra}:
iParam. iParam.
eapply (IParam iexpr ival istate ilanguage eapply (IParam ilanguage (fun _ => icmra) (fun _ _ _ => cid)).
(fun _ => icmra) (fun _ _ _ => cid)).
Unshelve. Unshelve.
- by intros. - by intros.
- by intros. - by intros.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment