Skip to content
Snippets Groups Projects
Commit a0c63e6f authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Bump Iris.

parent 19acb9ad
No related branches found
No related tags found
No related merge requests found
...@@ -55,10 +55,10 @@ Definition recv : val := ...@@ -55,10 +55,10 @@ Definition recv : val :=
Class chanG Σ := { Class chanG Σ := {
chanG_lockG :> lockG Σ; chanG_lockG :> lockG Σ;
chanG_authG :> auth_exclG (listC valC) Σ; chanG_authG :> auth_exclG (listO valO) Σ;
}. }.
Definition chanΣ : gFunctors := Definition chanΣ : gFunctors :=
#[ lockΣ; auth_exclΣ (constCF (listC valC)) ]. #[ lockΣ; auth_exclΣ (constOF (listO valO)) ].
Instance subG_chanΣ {Σ} : subG chanΣ Σ chanG Σ. Instance subG_chanΣ {Σ} : subG chanΣ Σ chanG Σ.
Proof. solve_inG. Qed. Proof. solve_inG. Qed.
......
...@@ -92,11 +92,11 @@ Section proto_ofe. ...@@ -92,11 +92,11 @@ Section proto_ofe.
+ revert n. cofix IH; destruct 1; inversion 1; constructor=> v; etrans; eauto. + revert n. cofix IH; destruct 1; inversion 1; constructor=> v; etrans; eauto.
- cofix IH=> -[|n]; inversion 1; constructor=> v; try apply dist_S; auto. - cofix IH=> -[|n]; inversion 1; constructor=> v; try apply dist_S; auto.
Qed. Qed.
Canonical Structure protoC : ofeT := OfeT (proto V PROP) proto_ofe_mixin. Canonical Structure protoO : ofeT := OfeT (proto V PROP) proto_ofe_mixin.
Definition proto_head ( : V -c> PROP) (prot : proto V PROP) : V -c> PROP := Definition proto_head ( : V -d> PROP) (prot : proto V PROP) : V -d> PROP :=
match prot with TEnd => | TSR a Φ prot => Φ end. match prot with TEnd => | TSR a Φ prot => Φ end.
Definition proto_tail (v : V) (prot : protoC) : later protoC := Definition proto_tail (v : V) (prot : protoO) : later protoO :=
match prot with TEnd => Next TEnd | TSR a P prot => Next (prot v) end. match prot with TEnd => Next TEnd | TSR a P prot => Next (prot v) end.
Global Instance proto_head_ne d : NonExpansive (proto_head d). Global Instance proto_head_ne d : NonExpansive (proto_head d).
Proof. by destruct 1. Qed. Proof. by destruct 1. Qed.
...@@ -111,7 +111,7 @@ Section proto_ofe. ...@@ -111,7 +111,7 @@ Section proto_ofe.
Lemma proto_force_eq prot : proto_force prot = prot. Lemma proto_force_eq prot : proto_force prot = prot.
Proof. by destruct prot. Defined. Proof. by destruct prot. Defined.
CoFixpoint proto_compl_go `{!Cofe PROP} (c : chain protoC) : protoC := CoFixpoint proto_compl_go `{!Cofe PROP} (c : chain protoO) : protoO :=
match c O with match c O with
| TEnd => TEnd | TEnd => TEnd
| TSR a Φ prot => TSR a | TSR a Φ prot => TSR a
...@@ -119,7 +119,7 @@ Section proto_ofe. ...@@ -119,7 +119,7 @@ Section proto_ofe.
(λ v, proto_compl_go (later_chain (chain_map (proto_tail v) c))) (λ v, proto_compl_go (later_chain (chain_map (proto_tail v) c)))
end. end.
Global Program Instance proto_cofe `{!Cofe PROP} : Cofe protoC := Global Program Instance proto_cofe `{!Cofe PROP} : Cofe protoO :=
{| compl c := proto_compl_go c |}. {| compl c := proto_compl_go c |}.
Next Obligation. Next Obligation.
intros ? n c; rewrite /compl. revert c n. cofix IH=> c n. intros ? n c; rewrite /compl. revert c n. cofix IH=> c n.
...@@ -206,7 +206,7 @@ Section proto_ofe. ...@@ -206,7 +206,7 @@ Section proto_ofe.
Qed. Qed.
End proto_ofe. End proto_ofe.
Arguments protoC : clear implicits. Arguments protoO : clear implicits.
CoFixpoint proto_map {V PROP PROP'} (f : PROP PROP') CoFixpoint proto_map {V PROP PROP'} (f : PROP PROP')
(prot : proto V PROP) : proto V PROP' := (prot : proto V PROP) : proto V PROP' :=
...@@ -251,36 +251,36 @@ Proof. ...@@ -251,36 +251,36 @@ Proof.
destruct prot; constructor=> v; auto. destruct prot; constructor=> v; auto.
Qed. Qed.
Definition protoC_map {V PROP PROP'} Definition protoO_map {V PROP PROP'}
(f : PROP -n> PROP') : protoC V PROP -n> protoC V PROP' := (f : PROP -n> PROP') : protoO V PROP -n> protoO V PROP' :=
CofeMor (proto_map f : protoC V PROP protoC V PROP'). OfeMor (proto_map f : protoO V PROP protoO V PROP').
Instance protoC_map_ne {V} PROP B : NonExpansive (@protoC_map V PROP B). Instance protoO_map_ne {V} PROP B : NonExpansive (@protoO_map V PROP B).
Proof. intros n f g ? prot. by apply proto_map_ext_ne. Qed. Proof. intros n f g ? prot. by apply proto_map_ext_ne. Qed.
Program Definition protoCF {V} (F : cFunctor) : cFunctor := {| Program Definition protoOF {V} (F : oFunctor) : oFunctor := {|
cFunctor_car PROP _ B _ := protoC V (cFunctor_car F PROP _ B _); oFunctor_car PROP _ B _ := protoO V (oFunctor_car F PROP _ B _);
cFunctor_map PROP1 _ PROP2 _ PROP1' _ PROP2' _ fg := protoC_map (cFunctor_map F fg) oFunctor_map PROP1 _ PROP2 _ PROP1' _ PROP2' _ fg := protoO_map (oFunctor_map F fg)
|}. |}.
Next Obligation. done. Qed. Next Obligation. done. Qed.
Next Obligation. Next Obligation.
intros V F PROP1 ? PROP2 ? PROP1' ? PROP2' ? n f g Hfg. intros V F PROP1 ? PROP2 ? PROP1' ? PROP2' ? n f g Hfg.
by apply protoC_map_ne, cFunctor_ne. by apply protoO_map_ne, oFunctor_ne.
Qed. Qed.
Next Obligation. Next Obligation.
intros V F PROP ? PROP' ? x. rewrite /= -{2}(proto_fmap_id x). intros V F PROP ? PROP' ? x. rewrite /= -{2}(proto_fmap_id x).
apply proto_map_ext=>y. apply cFunctor_id. apply proto_map_ext=>y. apply oFunctor_id.
Qed. Qed.
Next Obligation. Next Obligation.
intros V F PROP1 ? PROP2 ? PROP3 ? PROP1' ? PROP2' ? PROP3' ? f g f' g' x. intros V F PROP1 ? PROP2 ? PROP3 ? PROP1' ? PROP2' ? PROP3' ? f g f' g' x.
rewrite /= -proto_fmap_compose. rewrite /= -proto_fmap_compose.
apply proto_map_ext=>y; apply cFunctor_compose. apply proto_map_ext=>y; apply oFunctor_compose.
Qed. Qed.
Instance protoCF_contractive {V} F : Instance protoOF_contractive {V} F :
cFunctorContractive F cFunctorContractive (@protoCF V F). oFunctorContractive F oFunctorContractive (@protoOF V F).
Proof. Proof.
intros ? PROP1 ? PROP2 ? PROP1' ? PROP2' ? n f g Hfg. intros ? PROP1 ? PROP2 ? PROP1' ? PROP2' ? n f g Hfg.
by apply protoC_map_ne, cFunctor_contractive. by apply protoO_map_ne, oFunctor_contractive.
Qed. Qed.
Class IsDualAction (a1 a2 : action) := Class IsDualAction (a1 a2 : action) :=
......
...@@ -7,12 +7,12 @@ From osiris.utils Require Import auth_excl. ...@@ -7,12 +7,12 @@ From osiris.utils Require Import auth_excl.
Class logrelG A Σ := { Class logrelG A Σ := {
logrelG_channelG :> chanG Σ; logrelG_channelG :> chanG Σ;
logrelG_authG :> auth_exclG (laterC (protoC A (iPreProp Σ))) Σ; logrelG_authG :> auth_exclG (laterO (protoO A (iPreProp Σ))) Σ;
}. }.
Definition logrelΣ A := Definition logrelΣ A :=
#[ chanΣ ; GFunctor (authRF(optionURF (exclRF #[ chanΣ ; GFunctor (authRF(optionURF (exclRF
(laterCF (@protoCF A idCF))))) ]. (laterOF (@protoOF A idOF))))) ].
Instance subG_chanΣ {A Σ} : subG (logrelΣ A) Σ logrelG A Σ. Instance subG_chanΣ {A Σ} : subG (logrelΣ A) Σ logrelG A Σ.
Proof. intros [??%subG_auth_exclG]%subG_inv. constructor; apply _. Qed. Proof. intros [??%subG_auth_exclG]%subG_inv. constructor; apply _. Qed.
......
...@@ -8,10 +8,10 @@ Class auth_exclG (A : ofeT) (Σ : gFunctors) := AuthExclG { ...@@ -8,10 +8,10 @@ Class auth_exclG (A : ofeT) (Σ : gFunctors) := AuthExclG {
exclG_authG :> inG Σ (authR (optionUR (exclR A))); exclG_authG :> inG Σ (authR (optionUR (exclR A)));
}. }.
Definition auth_exclΣ (F : cFunctor) `{!cFunctorContractive F} : gFunctors := Definition auth_exclΣ (F : oFunctor) `{!oFunctorContractive F} : gFunctors :=
#[GFunctor (authRF (optionURF (exclRF F)))]. #[GFunctor (authRF (optionURF (exclRF F)))].
Instance subG_auth_exclG (F : cFunctor) `{!cFunctorContractive F} {Σ} : Instance subG_auth_exclG (F : oFunctor) `{!oFunctorContractive F} {Σ} :
subG (auth_exclΣ F) Σ auth_exclG (F (iPreProp Σ) _) Σ. subG (auth_exclΣ F) Σ auth_exclG (F (iPreProp Σ) _) Σ.
Proof. solve_inG. Qed. Proof. solve_inG. Qed.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment