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

Make `iFrame` "less" smart w.r.t. clean up of modalities.

Previously, if would "cleanup" `<affine>` and `□` if the result after framing
is affine and intuitionistic, respectively. This behavior was inconsistent,
since similar "cleanup" was not performed for `<absorbing>` and `<persistent>`.
This MR thus removes this "cleanup" of modalities. It now consistently removes
the modalities `<affine>`, `<absorbing>, `<persistent>` and `□` only if the
result after framing is `True` or `emp`.

Since `iFrame` is already very complicated, and since its performance is
sometimes suboptimal in bigger developments, @jung and I believed doing
fewer "smart" things is better than the alternative, namely performing doing
sophisticated "cleanup" for all modalities, which is presented in
iris/iris!450
parent 5aaf3c6f
No related branches found
No related tags found
No related merge requests found
...@@ -188,10 +188,10 @@ Proof. ...@@ -188,10 +188,10 @@ Proof.
by rewrite assoc (comm _ P1) -assoc wand_elim_r. by rewrite assoc (comm _ P1) -assoc wand_elim_r.
Qed. Qed.
Global Instance make_affinely_emp : @KnownMakeAffinely PROP emp emp | 0.
Proof. by rewrite /KnownMakeAffinely /MakeAffinely affinely_emp. Qed.
Global Instance make_affinely_True : @KnownMakeAffinely PROP True emp | 0. Global Instance make_affinely_True : @KnownMakeAffinely PROP True emp | 0.
Proof. by rewrite /KnownMakeAffinely /MakeAffinely affinely_True_emp affinely_emp. Qed. Proof. by rewrite /KnownMakeAffinely /MakeAffinely affinely_True_emp affinely_emp. Qed.
Global Instance make_affinely_affine P : Affine P KnownMakeAffinely P P | 1.
Proof. intros. by rewrite /KnownMakeAffinely /MakeAffinely affine_affinely. Qed.
Global Instance make_affinely_default P : MakeAffinely P (<affine> P) | 100. Global Instance make_affinely_default P : MakeAffinely P (<affine> P) | 100.
Proof. by rewrite /MakeAffinely. Qed. Proof. by rewrite /MakeAffinely. Qed.
...@@ -202,17 +202,17 @@ Proof. ...@@ -202,17 +202,17 @@ Proof.
rewrite -{1}(affine_affinely ( R)%I) affinely_sep_2 //. rewrite -{1}(affine_affinely ( R)%I) affinely_sep_2 //.
Qed. Qed.
Global Instance make_intuitionistically_True : Global Instance make_intuitionistically_emp :
@KnownMakeIntuitionistically PROP True emp | 0. @KnownMakeIntuitionistically PROP emp emp | 0.
Proof. Proof.
by rewrite /KnownMakeIntuitionistically /MakeIntuitionistically by rewrite /KnownMakeIntuitionistically /MakeIntuitionistically
intuitionistically_True_emp. intuitionistically_emp.
Qed. Qed.
Global Instance make_intuitionistically_intuitionistic P : Global Instance make_intuitionistically_True :
Affine P Persistent P KnownMakeIntuitionistically P P | 1. @KnownMakeIntuitionistically PROP True emp | 0.
Proof. Proof.
intros. rewrite /KnownMakeIntuitionistically /MakeIntuitionistically. by rewrite /KnownMakeIntuitionistically /MakeIntuitionistically
rewrite intuitionistic_intuitionistically //. intuitionistically_True_emp.
Qed. Qed.
Global Instance make_intuitionistically_default P : Global Instance make_intuitionistically_default P :
MakeIntuitionistically P ( P) | 100. MakeIntuitionistically P ( P) | 100.
...@@ -230,9 +230,8 @@ Proof. ...@@ -230,9 +230,8 @@ Proof.
by rewrite /KnownMakeAbsorbingly /MakeAbsorbingly by rewrite /KnownMakeAbsorbingly /MakeAbsorbingly
-absorbingly_True_emp absorbingly_pure. -absorbingly_True_emp absorbingly_pure.
Qed. Qed.
(* Note: there is no point in having an instance `Absorbing P → MakeAbsorbingly P P` Global Instance make_absorbingly_True : @KnownMakeAbsorbingly PROP True True | 0.
because framing will never turn a proposition that is not absorbing into Proof. by rewrite /KnownMakeAbsorbingly /MakeAbsorbingly absorbingly_pure. Qed.
something that is absorbing. *)
Global Instance make_absorbingly_default P : MakeAbsorbingly P (<absorb> P) | 100. Global Instance make_absorbingly_default P : MakeAbsorbingly P (<absorb> P) | 100.
Proof. by rewrite /MakeAbsorbingly. Qed. Proof. by rewrite /MakeAbsorbingly. Qed.
...@@ -242,13 +241,13 @@ Proof. ...@@ -242,13 +241,13 @@ Proof.
rewrite /Frame /MakeAbsorbingly=> <- <- /=. by rewrite absorbingly_sep_r. rewrite /Frame /MakeAbsorbingly=> <- <- /=. by rewrite absorbingly_sep_r.
Qed. Qed.
Global Instance make_persistently_true : @KnownMakePersistently PROP True True.
Proof. by rewrite /KnownMakePersistently /MakePersistently persistently_pure. Qed.
Global Instance make_persistently_emp : @KnownMakePersistently PROP emp True. Global Instance make_persistently_emp : @KnownMakePersistently PROP emp True.
Proof. Proof.
by rewrite /KnownMakePersistently /MakePersistently by rewrite /KnownMakePersistently /MakePersistently
-persistently_True_emp persistently_pure. -persistently_True_emp persistently_pure.
Qed. Qed.
Global Instance make_persistently_True : @KnownMakePersistently PROP True True.
Proof. by rewrite /KnownMakePersistently /MakePersistently persistently_pure. Qed.
Global Instance make_persistently_default P : Global Instance make_persistently_default P :
MakePersistently P (<pers> P) | 100. MakePersistently P (<pers> P) | 100.
Proof. by rewrite /MakePersistently. Qed. Proof. by rewrite /MakePersistently. Qed.
...@@ -259,7 +258,7 @@ Proof. ...@@ -259,7 +258,7 @@ Proof.
rewrite /Frame /MakePersistently=> <- <- /=. rewrite /Frame /MakePersistently=> <- <- /=.
rewrite -persistently_and_intuitionistically_sep_l. rewrite -persistently_and_intuitionistically_sep_l.
by rewrite -persistently_sep_2 -persistently_and_sep_l_1 by rewrite -persistently_sep_2 -persistently_and_sep_l_1
persistently_affinely_elim persistently_idemp. persistently_affinely_elim persistently_idemp.
Qed. Qed.
Global Instance frame_exist {A} p R (Φ Ψ : A PROP) : Global Instance frame_exist {A} p R (Φ Ψ : A PROP) :
......
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