Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
George Pirlea
Iris
Commits
e65f83ad
Commit
e65f83ad
authored
Apr 04, 2018
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Document `ElimModal`.
parent
dcf5e561
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
0 deletions
+19
-0
theories/proofmode/classes.v
theories/proofmode/classes.v
+19
-0
No files found.
theories/proofmode/classes.v
View file @
e65f83ad
...
@@ -234,6 +234,25 @@ Arguments IsExcept0 {_} _%I : simpl never.
...
@@ -234,6 +234,25 @@ Arguments IsExcept0 {_} _%I : simpl never.
Arguments
is_except_0
{
_
}
_
%
I
{
_
}.
Arguments
is_except_0
{
_
}
_
%
I
{
_
}.
Hint
Mode
IsExcept0
+
!
:
typeclass_instances
.
Hint
Mode
IsExcept0
+
!
:
typeclass_instances
.
(** The [ElimModal φ p p' P P' Q Q'] class is used by the [iMod] tactic.
The inputs are [p], [P] and [Q], and the outputs are [φ], [p'], [P'] and [Q'].
The class is used to transform a hypothesis [P] into a hypothesis [P'], given
a goal [Q], which is simultaniously transformed into [Q']. The Booleans [p]
and [p'] indicate whether the original, respectively, updated hypothesis reside
in the persistent context (iff [true]). The proposition [φ] can be used to
express a side-condition that [iMod] will generate (if not [True]).
An example instance is:
ElimModal True p false (|={E1,E2}=> P) P (|={E1,E3}=> Q) (|={E2,E3}=> Q).
This instance expresses that to eliminate [|={E1,E2}=> P] the goal is
transformed from [|={E1,E3}=> Q] into [|={E2,E3}=> Q], and the resulting
hypothesis is moved into the spatial context (regardless of where it was
originally). A corresponding [ElimModal] instance for the Iris 1/2-style update
modality, would have a side-condition [φ] on the masks. *)
Class
ElimModal
{
PROP
:
bi
}
(
φ
:
Prop
)
(
p
p'
:
bool
)
(
P
P'
:
PROP
)
(
Q
Q'
:
PROP
)
:
=
Class
ElimModal
{
PROP
:
bi
}
(
φ
:
Prop
)
(
p
p'
:
bool
)
(
P
P'
:
PROP
)
(
Q
Q'
:
PROP
)
:
=
elim_modal
:
φ
→
□
?p
P
∗
(
□
?p'
P'
-
∗
Q'
)
⊢
Q
.
elim_modal
:
φ
→
□
?p
P
∗
(
□
?p'
P'
-
∗
Q'
)
⊢
Q
.
Arguments
ElimModal
{
_
}
_
_
_
_
%
I
_
%
I
_
%
I
_
%
I
:
simpl
never
.
Arguments
ElimModal
{
_
}
_
_
_
_
%
I
_
%
I
_
%
I
_
%
I
:
simpl
never
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment