Various improvements to iFrame
This MR makes the following improvements to iFrame:
- Framing under implications
P → Q
(since we already allowed framing under magic wands). This is possible if either the frame is persistent, orP
is persistent. - Framing in both sides of a conjunction
P ∧ Q
(previously, it would frame in just one side). Concretely, framing in a conjunction will succeed if framing in either (or both)P
orQ
succeeds. - Stronger framing for disjunctions
P ∨ Q
Framing of a spatial frame will succeed if:
- Framing in both
P
andQ
succeeds. - Framing in
P
succeeds and turns it intoTrue
. - Similarly for
Q
. Framing of a persistent frame will succeed if it succeeds in either (or both)P
orQ
.
Note that I previously objected to (3) in #145 (closed), however, I come back from that point. The example was artificial, and we already have plenty of situations where framing may lead to information loss. For example, try framing P
in (False -∗ P) ∗ stuff
.
This MR closes #145 (closed).