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
Yixuan Chen
Iris
Commits
627f4019
Commit
627f4019
authored
2 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
Tweak comments.
parent
f826c648
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
iris/proofmode/class_instances_make.v
+2
-0
2 additions, 0 deletions
iris/proofmode/class_instances_make.v
iris/proofmode/classes_make.v
+11
-6
11 additions, 6 deletions
iris/proofmode/classes_make.v
with
13 additions
and
6 deletions
iris/proofmode/class_instances_make.v
+
2
−
0
View file @
627f4019
(** IMPORTANT: Read the comment in [classes_make] about the "constant time"
requirements of these instances. *)
From
iris
.
proofmode
Require
Export
classes_make
.
From
iris
.
prelude
Require
Import
options
.
Import
bi
.
...
...
This diff is collapsed.
Click to expand it.
iris/proofmode/classes_make.v
+
11
−
6
View file @
627f4019
From
iris
.
bi
Require
Export
bi
.
From
iris
.
prelude
Require
Import
options
.
(** The [MakeX] classes are "smart constructors" for the logical connectives
and modalities that perform some trivial logical simplifications to give "clean"
results.
...
...
@@ -15,8 +12,14 @@ appropriate assumptions w.r.t. affinity), the result [PQ] is [Q] or [P],
respectively. In other cases, the result is [PQ] is simply [P ∗ Q].
The [MakeX] classes are used in each recursive step of the framing machinery.
Hence, they should be constant time, which is typically achieved by only looking
at the top-level symbol of the input.
Hence, they should be "constant time", which means that the number of steps in
the inference search for [MakeX] should not depend on the size of the inputs.
This implies that [MakeX] instances should not be recursive, and [MakeX]
instances should not have premises of other classes with recursive instances. In
particular, [MakeX] instances should not have [Affine] or [Absorbing] premises
(because these could invoke a recursive search). Instances for [MakeX] instances
typically look only at the top-level symbol of the input, or check if the whole
BI is affine (via the [BiAffine] class).
One could imagine a smarter way of "cleaning up", as implemented in
https://gitlab.mpi-sws.org/iris/iris/-/merge_requests/450 for some modalities,
...
...
@@ -28,10 +31,12 @@ For each of the [MakeX] class, there is a [KnownMakeX] variant, which only
succeeds if the parameter(s) is not an evar. In the case the parameter(s) is an
evar, then [MakeX] will not instantiate it arbitrarily.
The reason for this is that if given an evar, these
type
classes would typically
The reason for this is that if given an evar, these classes would typically
try to instantiate this evar with some arbitrary logical constructs such as
[emp] or [True]. Therefore, we use a [Hint Mode] to disable all the instances
that would have this behavior. *)
From
iris
.
bi
Require
Export
bi
.
From
iris
.
prelude
Require
Import
options
.
Class
MakeEmbed
{
PROP
PROP'
:
bi
}
`{
BiEmbed
PROP
PROP'
}
(
P
:
PROP
)
(
Q
:
PROP'
)
:=
make_embed
:
⎡
P
⎤
⊣⊢
Q
.
...
...
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