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

Update persistent → intuitionistic in ProofMode.md.

parent 75c165b2
No related branches found
No related tags found
No related merge requests found
...@@ -30,15 +30,15 @@ Context management ...@@ -30,15 +30,15 @@ Context management
pattern `selpat` and the Coq level hypotheses/variables `x1 ... xn`. pattern `selpat` and the Coq level hypotheses/variables `x1 ... xn`.
- `iRevert (x1 ... xn) "selpat"` : revert the hypotheses given by the selection - `iRevert (x1 ... xn) "selpat"` : revert the hypotheses given by the selection
pattern `selpat` into wands, and the Coq level hypotheses/variables pattern `selpat` into wands, and the Coq level hypotheses/variables
`x1 ... xn` into universal quantifiers. Persistent hypotheses are wrapped into `x1 ... xn` into universal quantifiers. Intuitionistic hypotheses are wrapped
the persistence modality. into the intuitionistic modality.
- `iRename "H1" into "H2"` : rename the hypothesis `H1` into `H2`. - `iRename "H1" into "H2"` : rename the hypothesis `H1` into `H2`.
- `iSpecialize pm_trm` : instantiate universal quantifiers and eliminate - `iSpecialize pm_trm` : instantiate universal quantifiers and eliminate
implications/wands of a hypothesis `pm_trm`. See proof mode terms below. implications/wands of a hypothesis `pm_trm`. See proof mode terms below.
- `iSpecialize pm_trm as #` : instantiate universal quantifiers and eliminate - `iSpecialize pm_trm as #` : instantiate universal quantifiers and eliminate
implications/wands of a hypothesis whose conclusion is persistent. In this implications/wands of a hypothesis `pm_trm` whose conclusion is persistent.
case, all hypotheses can be used for proving the premises, as well as for All hypotheses can be used for proving the premises of `pm_trm`, as well as
the resulting goal. for the resulting main goal.
- `iPoseProof pm_trm as (x1 ... xn) "ipat"` : put `pm_trm` into the context and - `iPoseProof pm_trm as (x1 ... xn) "ipat"` : put `pm_trm` into the context and
eliminates it. This tactic is essentially the same as `iDestruct` with the eliminates it. This tactic is essentially the same as `iDestruct` with the
difference that when `pm_trm` is a non-universally quantified intuitionistic difference that when `pm_trm` is a non-universally quantified intuitionistic
...@@ -48,9 +48,9 @@ Context management ...@@ -48,9 +48,9 @@ Context management
specifies which hypotheses will be consumed by proving `P`. The introduction specifies which hypotheses will be consumed by proving `P`. The introduction
pattern `ipat` specifies how to eliminate `P`. pattern `ipat` specifies how to eliminate `P`.
In case all branches of `ipat` start with a `#` (which causes `P` to be moved In case all branches of `ipat` start with a `#` (which causes `P` to be moved
to the persistent context) or with an `%` (which causes `P` to be moved to the to the intuitionistic context) or with an `%` (which causes `P` to be moved to
pure Coq context), then one can use all hypotheses for proving `P` as well as the pure Coq context), then one can use all hypotheses for proving `P` as well
for proving the current goal. as for proving the current goal.
- `iAssert P as %cpat` : assert `P` and eliminate it using the Coq introduction - `iAssert P as %cpat` : assert `P` and eliminate it using the Coq introduction
pattern `cpat`. All hypotheses can be used for proving `P` as well as for pattern `cpat`. All hypotheses can be used for proving `P` as well as for
proving the current goal. proving the current goal.
...@@ -68,8 +68,8 @@ Introduction of logical connectives ...@@ -68,8 +68,8 @@ Introduction of logical connectives
one of the operands is persistent. one of the operands is persistent.
- `iSplitL "H1 ... Hn"` : introduction of a separating conjunction. The - `iSplitL "H1 ... Hn"` : introduction of a separating conjunction. The
hypotheses `H1 ... Hn` are used for the left conjunct, and the remaining ones hypotheses `H1 ... Hn` are used for the left conjunct, and the remaining ones
for the right conjunct. Persistent hypotheses are ignored, since these do not for the right conjunct. Intuitionistic hypotheses are ignored, since these do
need to be split. not need to be split.
- `iSplitR "H0 ... Hn"` : symmetric version of the above. - `iSplitR "H0 ... Hn"` : symmetric version of the above.
- `iExist t1, .., tn` : introduction of an existential quantifier. - `iExist t1, .., tn` : introduction of an existential quantifier.
...@@ -82,7 +82,7 @@ Elimination of logical connectives ...@@ -82,7 +82,7 @@ Elimination of logical connectives
elimination of an object level connective using the proof mode introduction elimination of an object level connective using the proof mode introduction
pattern `ipat`. pattern `ipat`.
In case all branches of `ipat` start with a `#` (which causes the hypothesis In case all branches of `ipat` start with a `#` (which causes the hypothesis
to be moved to the persistent context) or with an `%` (which causes the to be moved to the intuitionistic context) or with an `%` (which causes the
hypothesis to be moved to the pure Coq context), then one can use all hypothesis to be moved to the pure Coq context), then one can use all
hypotheses for proving the premises of `pm_trm`, as well as for proving the hypotheses for proving the premises of `pm_trm`, as well as for proving the
resulting goal. Note that in this case the hypotheses still need to be resulting goal. Note that in this case the hypotheses still need to be
...@@ -100,11 +100,11 @@ Separating logic specific tactics ...@@ -100,11 +100,11 @@ Separating logic specific tactics
of the selection pattern have the following meaning: of the selection pattern have the following meaning:
+ `%` : repeatedly frame hypotheses from the Coq context. + `%` : repeatedly frame hypotheses from the Coq context.
+ `#` : repeatedly frame hypotheses from the persistent context. + `#` : repeatedly frame hypotheses from the intuitionistic context.
+ `∗` : frame as much of the spatial context as possible. + `∗` : frame as much of the spatial context as possible.
Notice that framing spatial hypotheses makes them disappear, but framing Coq Notice that framing spatial hypotheses makes them disappear, but framing Coq
or persistent hypotheses does not make them disappear. or intuitionistic hypotheses does not make them disappear.
This tactic finishes the goal in case everything in the conclusion has been This tactic finishes the goal in case everything in the conclusion has been
framed. framed.
...@@ -117,9 +117,9 @@ Modalities ...@@ -117,9 +117,9 @@ Modalities
- `iModIntro mod` : introduction of a modality. The type class `FromModal` is - `iModIntro mod` : introduction of a modality. The type class `FromModal` is
used to specify which modalities this tactic should introduce. Instances of used to specify which modalities this tactic should introduce. Instances of
that type class include: later, except 0, basic update and fancy update, that type class include: later, except 0, basic update and fancy update,
persistently, affinely, plainly, absorbingly, objectively, and subjectively. intuitionistically, persistently, affinely, plainly, absorbingly, objectively,
The optional argument `mod` can be used to specify what modality to introduce and subjectively. The optional argument `mod` can be used to specify what
in case of ambiguity, e.g. `⎡|==> P⎤`. modality to introduce in case of ambiguity, e.g. `⎡|==> P⎤`.
- `iAlways` : a deprecated alias of `iModIntro`. - `iAlways` : a deprecated alias of `iModIntro`.
- `iNext n` : an alias of `iModIntro (▷^n P)`. - `iNext n` : an alias of `iModIntro (▷^n P)`.
- `iNext` : an alias of `iModIntro (▷^1 P)`. - `iNext` : an alias of `iModIntro (▷^1 P)`.
...@@ -136,10 +136,10 @@ Induction ...@@ -136,10 +136,10 @@ Induction
`selpat`, and the spatial context. `selpat`, and the spatial context.
- `iInduction x as cpat "IH" forall (x1 ... xn) "selpat"` : perform induction on - `iInduction x as cpat "IH" forall (x1 ... xn) "selpat"` : perform induction on
the Coq term `x`. The Coq introduction pattern is used to name the introduced the Coq term `x`. The Coq introduction pattern is used to name the introduced
variables. The induction hypotheses are inserted into the persistent context variables. The induction hypotheses are inserted into the intuitionistic
and given fresh names prefixed `IH`. The tactic generalizes over the Coq level context and given fresh names prefixed `IH`. The tactic generalizes over the
variables `x1 ... xn`, the hypotheses given by the selection pattern `selpat`, Coq level variables `x1 ... xn`, the hypotheses given by the selection pattern
and the spatial context. `selpat`, and the spatial context.
Rewriting / simplification Rewriting / simplification
-------------------------- --------------------------
...@@ -186,7 +186,7 @@ following _selection patterns_: ...@@ -186,7 +186,7 @@ following _selection patterns_:
- `H` : select the hypothesis named `H`. - `H` : select the hypothesis named `H`.
- `%` : select the entire pure/Coq context. - `%` : select the entire pure/Coq context.
- `#` : select the entire persistent context. - `#` : select the entire intuitionistic context.
- `∗` : select the entire spatial context. - `∗` : select the entire spatial context.
Introduction patterns Introduction patterns
...@@ -210,7 +210,7 @@ _introduction patterns_: ...@@ -210,7 +210,7 @@ _introduction patterns_:
- `[]` : false elimination. - `[]` : false elimination.
- `%` : move the hypothesis to the pure Coq context (anonymously). - `%` : move the hypothesis to the pure Coq context (anonymously).
- `->` and `<-` : rewrite using a pure Coq equality - `->` and `<-` : rewrite using a pure Coq equality
- `# ipat` : move the hypothesis to the persistent context. - `# ipat` : move the hypothesis into the intuitionistic context.
- `> ipat` : eliminate a modality (if the goal permits). - `> ipat` : eliminate a modality (if the goal permits).
Apart from this, there are the following introduction patterns that can only Apart from this, there are the following introduction patterns that can only
...@@ -259,11 +259,11 @@ _specification patterns_ to express splitting of hypotheses: ...@@ -259,11 +259,11 @@ _specification patterns_ to express splitting of hypotheses:
spatial, it will be consumed. spatial, it will be consumed.
- `[H1 .. Hn]` and `[H1 .. Hn //]` : generate a goal for the premise with the - `[H1 .. Hn]` and `[H1 .. Hn //]` : generate a goal for the premise with the
(spatial) hypotheses `H1 ... Hn` and all persistent hypotheses. The spatial (spatial) hypotheses `H1 ... Hn` and all intuitionistic hypotheses. The
hypotheses among `H1 ... Hn` will be consumed, and will not be available for spatial hypotheses among `H1 ... Hn` will be consumed, and will not be
subsequent goals. Hypotheses prefixed with a `$` will be framed in the available for subsequent goals. Hypotheses prefixed with a `$` will be framed
goal for the premise. The pattern can be terminated with a `//`, which causes in the goal for the premise. The pattern can be terminated with a `//`, which
`done` to be called to close the goal (after framing). causes `done` to be called to close the goal (after framing).
- `[-H1 ... Hn]` and `[-H1 ... Hn //]` : the negated forms of the above - `[-H1 ... Hn]` and `[-H1 ... Hn //]` : the negated forms of the above
patterns, where the goal for the premise will have all spatial premises except patterns, where the goal for the premise will have all spatial premises except
`H1 .. Hn`. `H1 .. Hn`.
...@@ -285,14 +285,14 @@ _specification patterns_ to express splitting of hypotheses: ...@@ -285,14 +285,14 @@ _specification patterns_ to express splitting of hypotheses:
which causes `done` to be called to close the goal. which causes `done` to be called to close the goal.
- `[$]` : solve the premise by framing. It will first repeatedly frame the - `[$]` : solve the premise by framing. It will first repeatedly frame the
spatial hypotheses, and then repeatedly frame the persistent hypotheses. spatial hypotheses, and then repeatedly frame the intuitionistic hypotheses.
Spatial hypothesis that are not framed are carried over to the subsequent Spatial hypothesis that are not framed are carried over to the subsequent
goal. goal.
- `[> $]` : like the above pattern, but this pattern can only be used if the - `[> $]` : like the above pattern, but this pattern can only be used if the
goal is a modality `M`, in which case the goal for the premise will be wrapped goal is a modality `M`, in which case the goal for the premise will be wrapped
in the modality `M` before framing. in the modality `M` before framing.
- `[# $]` : solve the persistent premise by framing. It will first repeatedly - `[# $]` : solve the persistent premise by framing. It will first repeatedly
frame the spatial hypotheses, and then repeatedly frame the persistent frame the spatial hypotheses, and then repeatedly frame the intuitionistic
hypotheses. This pattern does not consume any hypotheses. hypotheses. This pattern does not consume any hypotheses.
For example, given: For example, given:
......
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