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
William Mansky
Iris
Commits
ee49d97b
Commit
ee49d97b
authored
4 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
Use `löb_weak` for BiLöb class.
parent
725ffc11
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
theories/bi/derived_connectives.v
+6
-3
6 additions, 3 deletions
theories/bi/derived_connectives.v
theories/bi/derived_laws_later.v
+12
-10
12 additions, 10 deletions
theories/bi/derived_laws_later.v
theories/bi/monpred.v
+1
-3
1 addition, 3 deletions
theories/bi/monpred.v
with
19 additions
and
16 deletions
theories/bi/derived_connectives.v
+
6
−
3
View file @
ee49d97b
...
...
@@ -121,8 +121,11 @@ Notation "mP -∗? Q" := (bi_wandM mP Q)
should not be inhabited directly, but the instance [Contractive (▷) → BiLöb PROP]
in [derived_laws_later] should be used. A direct instance of the class is useful
when considering a BI logic with a discrete OFE, instead of a OFE that takes
step-indexing of the logic in account.*)
step-indexing of the logic in account.
The internal/"strong" version of Löb [(▷ P → P) ⊢ P] is derived. It is provided
by the lemma [löb] in [derived_laws_later]. *)
Class
BiLöb
(
PROP
:
bi
)
:=
löb
(
P
:
PROP
)
:
(
▷
P
→
P
)
⊢
P
.
löb
_weak
(
P
:
PROP
)
:
(
▷
P
⊢
P
)
→
(
True
⊢
P
)
.
Hint
Mode
BiLöb
!
:
typeclass_instances
.
Arguments
löb
{_
_}
_
.
Arguments
löb
_weak
{_
_}
_
_
.
This diff is collapsed.
Click to expand it.
theories/bi/derived_laws_later.v
+
12
−
10
View file @
ee49d97b
...
...
@@ -88,8 +88,8 @@ Proof. intros ?. by rewrite /Absorbing -later_absorbingly absorbing. Qed.
(** We prove relations between the following statements:
1. [Contractive (▷)]
2. [(▷ P
→
P) ⊢ P], the
in
ternal
version
of Löb as expressed by [BiLöb].
3. [(▷ P
⊢
P)
→ (True
⊢ P
)
], the
ex
ternal
/"weak"
version
of Löb induction
.
2. [(▷ P
⊢
P)
→ (True
⊢ P
)
], the
ex
ternal
/"weak"
of Löb as expressed by [BiLöb].
3. [(▷ P
→
P) ⊢ P], the
in
ternal version
/"strong" of Löb
.
4. [□ (□ ▷ P -∗ P) ⊢ P], an internal version of Löb with magic wand instead of
implication.
5. [□ (▷ P -∗ P) ⊢ P], a weaker version of the former statement, which does not
...
...
@@ -98,19 +98,17 @@ Proof. intros ?. by rewrite /Absorbing -later_absorbingly absorbing. Qed.
We prove that:
- (1) implies (2) in all BI logics (lemma [later_contractive_bi_löb]).
- (2) and (3) are logically equivalent in all BI logics (lemma [löb_
weak
]).
- (2) and (3) are logically equivalent in all BI logics (lemma [löb_
alt_strong
]).
- (2) implies (4) and (5) in all BI logics (lemmas [löb_wand_intuitionistically]
and [löb_wand]).
- (5) and (2) are logically equivalent in affine BI logics (lemma [löb_alt]).
- (5) and (2) are logically equivalent in affine BI logics (lemma [löb_alt
_wand
]).
In particular, this gives that (2), (3), (4) and (5) are logically equivalent in
affine BI logics such as Iris. *)
Lemma
löb
_alt_weak
:
BiLöb
PROP
↔
∀
P
,
(
▷
P
⊢
P
)
→
(
True
⊢
P
)
.
Lemma
löb
`{
!
BiLöb
PROP
}
P
:
(
▷
P
→
P
)
⊢
P
.
Proof
.
split
;
intros
HLöb
P
.
{
by
intros
->%
entails_impl_True
.
}
apply
entails_impl_True
,
HLöb
.
apply
impl_intro_r
.
apply
entails_impl_True
,
löb_weak
.
apply
impl_intro_r
.
rewrite
-
{
2
}(
idemp
(
∧
)
(
▷
P
→
P
))
%
I
.
rewrite
{
2
}(
later_intro
(
▷
P
→
P
))
%
I
.
rewrite
later_impl
.
...
...
@@ -118,12 +116,15 @@ Proof.
rewrite
impl_elim_r
.
done
.
Qed
.
Lemma
löb_alt_strong
:
BiLöb
PROP
↔
∀
P
,
(
▷
P
→
P
)
⊢
P
.
Proof
.
split
;
intros
HLöb
P
.
apply
löb
.
by
intros
->%
entails_impl_True
.
Qed
.
(** Proof following https://en.wikipedia.org/wiki/L%C3%B6b's_theorem#Proof_of_L%C3%B6b's_theorem.
Their [Ψ] is called [Q] in our proof. *)
Global
Instance
later_contractive_bi_löb
:
Contractive
(
bi_later
(
PROP
:=
PROP
))
→
BiLöb
PROP
.
Proof
.
intros
.
apply
löb_alt_weak
=>
P
.
intros
=>
P
.
pose
(
flöb_pre
(
P
Q
:
PROP
)
:=
(
▷
Q
→
P
)
%
I
)
.
assert
(
∀
P
,
Contractive
(
flöb_pre
P
))
by
solve_contractive
.
set
(
Q
:=
fixpoint
(
flöb_pre
P
))
.
...
...
@@ -153,7 +154,8 @@ Qed.
is unclear how to generalize the lemma or proof to support non-affine BIs. *)
Lemma
löb_alt_wand
`{
!
BiAffine
PROP
}
:
BiLöb
PROP
↔
∀
P
,
□
(
▷
P
-∗
P
)
⊢
P
.
Proof
.
split
;
intros
Hlöb
P
;
[
by
apply
löb_wand
|]
.
split
;
intros
Hlöb
;
[
by
apply
löb_wand
|]
.
apply
löb_alt_strong
=>
P
.
rewrite
bi
.
impl_alt
.
apply
bi
.
exist_elim
=>
R
.
apply
impl_elim_r'
.
rewrite
-
(
Hlöb
(
R
→
P
)
%
I
)
-
intuitionistically_into_persistently
.
apply
intuitionistically_intro'
,
wand_intro_l
,
impl_intro_l
.
...
...
This diff is collapsed.
Click to expand it.
theories/bi/monpred.v
+
1
−
3
View file @
ee49d97b
...
...
@@ -404,9 +404,7 @@ Global Instance monPred_later_contractive :
Contractive
(
bi_later
(
PROP
:=
PROP
))
→
Contractive
(
bi_later
(
PROP
:=
monPredI
))
.
Proof
.
unseal
=>
?
n
P
Q
HPQ
.
split
=>
i
/=.
f_contractive
.
apply
HPQ
.
Qed
.
Global
Instance
monPred_bi_löb
:
BiLöb
PROP
→
BiLöb
monPredI
.
Proof
.
split
=>
i
.
unseal
.
by
rewrite
(
bi
.
forall_elim
i
)
bi
.
pure_True
//
left_id
löb
.
Qed
.
Proof
.
rewrite
{
2
}
/
BiLöb
;
unseal
=>
?
P
HP
;
split
=>
i
/=.
apply
löb_weak
,
HP
.
Qed
.
Global
Instance
monPred_bi_positive
:
BiPositive
PROP
→
BiPositive
monPredI
.
Proof
.
split
=>
?
.
unseal
.
apply
bi_positive
.
Qed
.
Global
Instance
monPred_bi_affine
:
BiAffine
PROP
→
BiAffine
monPredI
.
...
...
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