Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Iris
Iris
Commits
ca0bc234
Commit
ca0bc234
authored
Feb 21, 2018
by
Ralf Jung
Browse files
strengthen sep_and
parent
de653fa6
Pipeline
#6971
passed with stage
in 20 minutes and 57 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
theories/bi/derived_laws.v
View file @
ca0bc234
...
@@ -648,11 +648,11 @@ Qed.
...
@@ -648,11 +648,11 @@ Qed.
Lemma
sep_elim_r
P
Q
`
{
H
:
TCOr
(
Affine
P
)
(
Absorbing
Q
)}
:
P
∗
Q
⊢
Q
.
Lemma
sep_elim_r
P
Q
`
{
H
:
TCOr
(
Affine
P
)
(
Absorbing
Q
)}
:
P
∗
Q
⊢
Q
.
Proof
.
by
rewrite
comm
sep_elim_l
.
Qed
.
Proof
.
by
rewrite
comm
sep_elim_l
.
Qed
.
Lemma
sep_and
P
Q
Lemma
sep_and
P
Q
:
`
{
HPQ
:
TCOr
(
TCAnd
(
Affine
P
)
(
A
ff
in
e
Q
)
)
(
TCAnd
(
Absorbing
P
)
(
A
bsorb
in
g
Q
)
)}
:
TCOr
(
Affine
P
)
(
A
bsorb
in
g
Q
)
→
TCOr
(
Absorbing
P
)
(
A
ff
in
e
Q
)
→
P
∗
Q
⊢
P
∧
Q
.
P
∗
Q
⊢
P
∧
Q
.
Proof
.
Proof
.
destruct
HPQ
a
s
[
[??]
|
[??
]
]
;
intro
s
[?
|
?]
[?
|
?]
;
apply
and_intro
;
apply
:
sep_elim_l
||
apply
:
sep_elim_r
.
apply
and_intro
;
apply
:
sep_elim_l
||
apply
:
sep_elim_r
.
Qed
.
Qed
.
...
...
theories/proofmode/class_instances.v
View file @
ca0bc234
...
@@ -477,7 +477,7 @@ Proof. intros. by rewrite /FromAnd big_opL_app persistent_and_sep_1. Qed.
...
@@ -477,7 +477,7 @@ Proof. intros. by rewrite /FromAnd big_opL_app persistent_and_sep_1. Qed.
Global
Instance
from_sep_sep
P1
P2
:
FromSep
(
P1
∗
P2
)
P1
P2
|
100
.
Global
Instance
from_sep_sep
P1
P2
:
FromSep
(
P1
∗
P2
)
P1
P2
|
100
.
Proof
.
by
rewrite
/
FromSep
.
Qed
.
Proof
.
by
rewrite
/
FromSep
.
Qed
.
Global
Instance
from_sep_and
P1
P2
:
Global
Instance
from_sep_and
P1
P2
:
TCOr
(
TCAnd
(
Affine
P1
)
(
A
ff
in
e
P2
)
)
(
TCAnd
(
Absorbing
P1
)
(
A
bsorb
in
g
P2
)
)
→
TCOr
(
Affine
P1
)
(
A
bsorb
in
g
P2
)
→
TCOr
(
Absorbing
P1
)
(
A
ff
in
e
P2
)
→
FromSep
(
P1
∧
P2
)
P1
P2
|
101
.
FromSep
(
P1
∧
P2
)
P1
P2
|
101
.
Proof
.
intros
.
by
rewrite
/
FromSep
sep_and
.
Qed
.
Proof
.
intros
.
by
rewrite
/
FromSep
sep_and
.
Qed
.
...
@@ -532,7 +532,7 @@ Proof.
...
@@ -532,7 +532,7 @@ Proof.
by
rewrite
/
IntoAnd
/=
persistently_sep
-
and_sep_persistently
persistently_and
.
by
rewrite
/
IntoAnd
/=
persistently_sep
-
and_sep_persistently
persistently_and
.
Qed
.
Qed
.
Global
Instance
into_and_sep_affine
P
Q
:
Global
Instance
into_and_sep_affine
P
Q
:
TCOr
(
TCAnd
(
Affine
P
)
(
A
ff
in
e
Q
)
)
(
TCAnd
(
Absorbing
P
)
(
A
bsorb
in
g
Q
)
)
→
TCOr
(
Affine
P
)
(
A
bsorb
in
g
Q
)
→
TCOr
(
Absorbing
P
)
(
A
ff
in
e
Q
)
→
IntoAnd
true
(
P
∗
Q
)
P
Q
.
IntoAnd
true
(
P
∗
Q
)
P
Q
.
Proof
.
intros
.
by
rewrite
/
IntoAnd
/=
sep_and
.
Qed
.
Proof
.
intros
.
by
rewrite
/
IntoAnd
/=
sep_and
.
Qed
.
...
@@ -621,10 +621,10 @@ Global Instance into_sep_plainly `{BiPositive PROP} P Q1 Q2 :
...
@@ -621,10 +621,10 @@ Global Instance into_sep_plainly `{BiPositive PROP} P Q1 Q2 :
Proof
.
rewrite
/
IntoSep
/=
=>
->.
by
rewrite
plainly_sep
.
Qed
.
Proof
.
rewrite
/
IntoSep
/=
=>
->.
by
rewrite
plainly_sep
.
Qed
.
Global
Instance
into_sep_plainly_affine
P
Q1
Q2
:
Global
Instance
into_sep_plainly_affine
P
Q1
Q2
:
IntoSep
P
Q1
Q2
→
IntoSep
P
Q1
Q2
→
TCOr
(
TCAnd
(
Affine
Q1
)
(
A
ff
in
e
Q2
)
)
(
TCAnd
(
Absorbing
Q1
)
(
A
bsorb
in
g
Q2
)
)
→
TCOr
(
Affine
Q1
)
(
A
bsorb
in
g
Q2
)
→
TCOr
(
Absorbing
Q1
)
(
A
ff
in
e
Q2
)
→
IntoSep
(
bi_plainly
P
)
(
bi_plainly
Q1
)
(
bi_plainly
Q2
).
IntoSep
(
bi_plainly
P
)
(
bi_plainly
Q1
)
(
bi_plainly
Q2
).
Proof
.
Proof
.
rewrite
/
IntoSep
/=
=>
->
?.
by
rewrite
sep_and
plainly_and
plainly_and_sep_l_1
.
rewrite
/
IntoSep
/=
=>
->
?
?.
by
rewrite
sep_and
plainly_and
plainly_and_sep_l_1
.
Qed
.
Qed
.
Global
Instance
into_sep_persistently
`
{
BiPositive
PROP
}
P
Q1
Q2
:
Global
Instance
into_sep_persistently
`
{
BiPositive
PROP
}
P
Q1
Q2
:
...
@@ -633,18 +633,18 @@ Global Instance into_sep_persistently `{BiPositive PROP} P Q1 Q2 :
...
@@ -633,18 +633,18 @@ Global Instance into_sep_persistently `{BiPositive PROP} P Q1 Q2 :
Proof
.
rewrite
/
IntoSep
/=
=>
->.
by
rewrite
persistently_sep
.
Qed
.
Proof
.
rewrite
/
IntoSep
/=
=>
->.
by
rewrite
persistently_sep
.
Qed
.
Global
Instance
into_sep_persistently_affine
P
Q1
Q2
:
Global
Instance
into_sep_persistently_affine
P
Q1
Q2
:
IntoSep
P
Q1
Q2
→
IntoSep
P
Q1
Q2
→
TCOr
(
TCAnd
(
Affine
Q1
)
(
A
ff
in
e
Q2
)
)
(
TCAnd
(
Absorbing
Q1
)
(
A
bsorb
in
g
Q2
)
)
→
TCOr
(
Affine
Q1
)
(
A
bsorb
in
g
Q2
)
→
TCOr
(
Absorbing
Q1
)
(
A
ff
in
e
Q2
)
→
IntoSep
(
bi_persistently
P
)
(
bi_persistently
Q1
)
(
bi_persistently
Q2
).
IntoSep
(
bi_persistently
P
)
(
bi_persistently
Q1
)
(
bi_persistently
Q2
).
Proof
.
Proof
.
rewrite
/
IntoSep
/=
=>
->
?.
rewrite
/
IntoSep
/=
=>
->
?
?.
by
rewrite
sep_and
persistently_and
persistently_and_sep_l_1
.
by
rewrite
sep_and
persistently_and
persistently_and_sep_l_1
.
Qed
.
Qed
.
Global
Instance
into_sep_affinely_persistently_affine
P
Q1
Q2
:
Global
Instance
into_sep_affinely_persistently_affine
P
Q1
Q2
:
IntoSep
P
Q1
Q2
→
IntoSep
P
Q1
Q2
→
TCOr
(
TCAnd
(
Affine
Q1
)
(
A
ff
in
e
Q2
)
)
(
TCAnd
(
Absorbing
Q1
)
(
A
bsorb
in
g
Q2
)
)
→
TCOr
(
Affine
Q1
)
(
A
bsorb
in
g
Q2
)
→
TCOr
(
Absorbing
Q1
)
(
A
ff
in
e
Q2
)
→
IntoSep
(
□
P
)
(
□
Q1
)
(
□
Q2
).
IntoSep
(
□
P
)
(
□
Q1
)
(
□
Q2
).
Proof
.
Proof
.
rewrite
/
IntoSep
/=
=>
->
?.
rewrite
/
IntoSep
/=
=>
->
?
?.
by
rewrite
sep_and
affinely_persistently_and
and_sep_affinely_persistently
.
by
rewrite
sep_and
affinely_persistently_and
and_sep_affinely_persistently
.
Qed
.
Qed
.
...
...
Write
Preview
Supports
Markdown
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