Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Pierre Roux
Iris
Commits
8c00cc65
Commit
8c00cc65
authored
6 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
Update persistent → intuitionistic in ProofMode.md.
parent
75c165b2
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ProofMode.md
+29
-29
29 additions, 29 deletions
ProofMode.md
with
29 additions
and
29 deletions
ProofMode.md
+
29
−
29
View file @
8c00cc65
...
...
@@ -30,15 +30,15 @@ Context management
pattern
`selpat`
and the Coq level hypotheses/variables
`x1 ... xn`
.
-
`iRevert (x1 ... xn) "selpat"`
: revert the hypotheses given by the selection
pattern
`selpat`
into wands, and the Coq level hypotheses/variables
`x1 ... xn`
into universal quantifiers.
Persistent
hypotheses are wrapped
into
the persistence
modality.
`x1 ... xn`
into universal quantifiers.
Intuitionistic
hypotheses are wrapped
into the intuitionistic
modality.
-
`iRename "H1" into "H2"`
: rename the hypothesis
`H1`
into
`H2`
.
-
`iSpecialize pm_trm`
: instantiate universal quantifiers and eliminate
implications/wands of a hypothesis
`pm_trm`
. See proof mode terms below.
-
`iSpecialize pm_trm as #`
: instantiate universal quantifiers and eliminate
implications/wands of a hypothesis whose conclusion is persistent.
In this
case, a
ll hypotheses can be used for proving the premises, as well as
for
the resulting goal.
implications/wands of a hypothesis
`pm_trm`
whose conclusion is persistent.
A
ll hypotheses can be used for proving the premises
of
`pm_trm`
, as well as
for
the resulting
main
goal.
-
`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
difference that when
`pm_trm`
is a non-universally quantified intuitionistic
...
...
@@ -48,9 +48,9 @@ Context management
specifies which hypotheses will be consumed by proving
`P`
. The introduction
pattern
`ipat`
specifies how to eliminate
`P`
.
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
pure Coq context), then one can use all hypotheses for proving
`P`
as well
as
for proving the current goal.
to the
intuitionistic
context) or with an
`%`
(which causes
`P`
to be moved to
the
pure Coq context), then one can use all hypotheses for proving
`P`
as well
as
for proving the current goal.
-
`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
proving the current goal.
...
...
@@ -68,8 +68,8 @@ Introduction of logical connectives
one of the operands is persistent.
-
`iSplitL "H1 ... Hn"`
: introduction of a separating conjunction. The
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
need to be split.
for the right conjunct.
Intuitionistic
hypotheses are ignored, since these do
not
need to be split.
-
`iSplitR "H0 ... Hn"`
: symmetric version of the above.
-
`iExist t1, .., tn`
: introduction of an existential quantifier.
...
...
@@ -82,7 +82,7 @@ Elimination of logical connectives
elimination of an object level connective using the proof mode introduction
pattern
`ipat`
.
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
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
...
...
@@ -100,11 +100,11 @@ Separating logic specific tactics
of the selection pattern have the following meaning:
+
`%`
: 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.
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
framed.
...
...
@@ -117,9 +117,9 @@ Modalities
-
`iModIntro mod`
: introduction of a modality. The type class
`FromModal`
is
used to specify which modalities this tactic should introduce. Instances of
that type class include: later, except 0, basic update and fancy update,
persistently, affinely, plainly, absorbingly, objectively,
and subjectively.
The optional argument
`mod`
can be used to specify what
modality to introduce
in case of ambiguity, e.g.
`⎡|==> P⎤`
.
intuitionistically,
persistently, affinely, plainly, absorbingly, objectively,
and subjectively.
The optional argument
`mod`
can be used to specify what
modality to introduce
in case of ambiguity, e.g.
`⎡|==> P⎤`
.
-
`iAlways`
: a deprecated alias of
`iModIntro`
.
-
`iNext n`
: an alias of
`iModIntro (▷^n P)`
.
-
`iNext`
: an alias of
`iModIntro (▷^1 P)`
.
...
...
@@ -136,10 +136,10 @@ Induction
`selpat`
, and the spatial context.
-
`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
variables. The induction hypotheses are inserted into the
persistent context
and given fresh names prefixed
`IH`
. The tactic generalizes over the
Coq level
variables
`x1 ... xn`
, the hypotheses given by the selection pattern
`selpat`
,
and the spatial context.
variables. The induction hypotheses are inserted into the
intuitionistic
context
and given fresh names prefixed
`IH`
. The tactic generalizes over the
Coq level
variables
`x1 ... xn`
, the hypotheses given by the selection pattern
`selpat`
,
and the spatial context.
Rewriting / simplification
--------------------------
...
...
@@ -186,7 +186,7 @@ following _selection patterns_:
-
`H`
: select the hypothesis named
`H`
.
-
`%`
: select the entire pure/Coq context.
-
`#`
: select the entire
persistent
context.
-
`#`
: select the entire
intuitionistic
context.
-
`∗`
: select the entire spatial context.
Introduction patterns
...
...
@@ -210,7 +210,7 @@ _introduction patterns_:
-
`[]`
: false elimination.
-
`%`
: move the hypothesis to the pure Coq context (anonymously).
-
`->`
and
`<-`
: rewrite using a pure Coq equality
-
`# ipat`
: move the hypothesis to the
persistent
context.
-
`# ipat`
: move the hypothesis
in
to the
intuitionistic
context.
-
`> ipat`
: eliminate a modality (if the goal permits).
Apart from this, there are the following introduction patterns that can only
...
...
@@ -259,11 +259,11 @@ _specification patterns_ to express splitting of hypotheses:
spatial, it will be consumed.
-
`[H1 .. Hn]`
and
`[H1 .. Hn //]`
: generate a goal for the premise with the
(spatial) hypotheses
`H1 ... Hn`
and all
persistent
hypotheses. The
spatial
hypotheses among
`H1 ... Hn`
will be consumed, and will not be
available for
subsequent goals. Hypotheses prefixed with a
`$`
will be framed
in the
goal for the premise. The pattern can be terminated with a
`//`
, which
causes
`done`
to be called to close the goal (after framing).
(spatial) hypotheses
`H1 ... Hn`
and all
intuitionistic
hypotheses. The
spatial
hypotheses among
`H1 ... Hn`
will be consumed, and will not be
available for
subsequent goals. Hypotheses prefixed with a
`$`
will be framed
in the
goal for the premise. The pattern can be terminated with a
`//`
, which
causes
`done`
to be called to close the goal (after framing).
-
`[-H1 ... Hn]`
and
`[-H1 ... Hn //]`
: the negated forms of the above
patterns, where the goal for the premise will have all spatial premises except
`H1 .. Hn`
.
...
...
@@ -285,14 +285,14 @@ _specification patterns_ to express splitting of hypotheses:
which causes
`done`
to be called to close the goal.
-
`[$]`
: 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
goal.
-
`[> $]`
: 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
in the modality
`M`
before framing.
-
`[# $]`
: 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.
For example, given:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment