Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Simon Spies
Iris
Commits
beebaa6e
Commit
beebaa6e
authored
Apr 13, 2017
by
Robbert Krebbers
Browse files
Reorganize proofmode tests.
parent
2821e99e
Changes
1
Hide whitespace changes
Inline
Side-by-side
theories/tests/proofmode.v
View file @
beebaa6e
...
...
@@ -4,8 +4,9 @@ Set Default Proof Using "Type".
Section
tests
.
Context
{
M
:
ucmraT
}.
Lemma
demo_0
(
P
Q
:
uPred
M
)
:
□
(
P
∨
Q
)
-
∗
(
∀
x
,
⌜
x
=
0
⌝
∨
⌜
x
=
1
⌝
)
→
(
Q
∨
P
).
Implicit
Types
P
Q
R
:
uPred
M
.
Lemma
demo_0
P
Q
:
□
(
P
∨
Q
)
-
∗
(
∀
x
,
⌜
x
=
0
⌝
∨
⌜
x
=
1
⌝
)
→
(
Q
∨
P
).
Proof
.
iIntros
"#H #H2"
.
(* should remove the disjunction "H" *)
...
...
@@ -39,7 +40,7 @@ Proof.
-
done
.
Qed
.
Lemma
demo_2
(
P1
P2
P3
P4
Q
:
uPred
M
)
(
P5
:
nat
→
uPredC
M
)
:
Lemma
demo_2
P1
P2
P3
P4
Q
(
P5
:
nat
→
uPredC
M
)
:
P2
∗
(
P3
∗
Q
)
∗
True
∗
P1
∗
P2
∗
(
P4
∗
(
∃
x
:
nat
,
P5
x
∨
P3
))
∗
True
-
∗
P1
-
∗
(
True
∗
True
)
-
∗
(((
P2
∧
False
∨
P2
∧
⌜
0
=
0
⌝
)
∗
P3
)
∗
Q
∗
P1
∗
True
)
∧
...
...
@@ -57,17 +58,17 @@ Proof.
*
iSplitL
"HQ"
.
iAssumption
.
by
iSplitL
"H1"
.
Qed
.
Lemma
demo_3
(
P1
P2
P3
:
uPred
M
)
:
Lemma
demo_3
P1
P2
P3
:
P1
∗
P2
∗
P3
-
∗
▷
P1
∗
▷
(
P2
∗
∃
x
,
(
P3
∧
⌜
x
=
0
⌝
)
∨
P3
).
Proof
.
iIntros
"($ & $ & H)"
.
iFrame
"H"
.
iNext
.
by
iExists
0
.
Qed
.
Definition
foo
(
P
:
uPred
M
)
:
=
(
P
→
P
)%
I
.
Definition
bar
:
uPred
M
:
=
(
∀
P
,
foo
P
)%
I
.
Lemma
demo_4
:
True
-
∗
bar
.
Lemma
test_unfold_constants
:
True
-
∗
bar
.
Proof
.
iIntros
.
iIntros
(
P
)
"HP //"
.
Qed
.
Lemma
demo_5
(
x
y
:
M
)
(
P
:
uPred
M
)
:
Lemma
test_iRewrite
(
x
y
:
M
)
P
:
(
∀
z
,
P
→
z
≡
y
)
-
∗
(
P
-
∗
(
x
,
x
)
≡
(
y
,
x
)).
Proof
.
iIntros
"H1 H2"
.
...
...
@@ -76,7 +77,7 @@ Proof.
done
.
Qed
.
Lemma
demo_6
(
P
Q
:
uPred
M
)
:
Lemma
test_fast_iIntros
P
Q
:
(
∀
x
y
z
:
nat
,
⌜
x
=
plus
0
x
⌝
→
⌜
y
=
0
⌝
→
⌜
z
=
0
⌝
→
P
→
□
Q
→
foo
(
x
≡
x
))%
I
.
Proof
.
...
...
@@ -85,29 +86,14 @@ Proof.
iIntros
"# _ //"
.
Qed
.
Lemma
demo_7
(
P
Q1
Q2
:
uPred
M
)
:
P
∗
(
Q1
∧
Q2
)
-
∗
P
∗
Q1
.
Lemma
test_iDestruct_spatial_and
P
Q1
Q2
:
P
∗
(
Q1
∧
Q2
)
-
∗
P
∗
Q1
.
Proof
.
iIntros
"[H1 [H2 _]]"
.
by
iFrame
.
Qed
.
Section
iris
.
Context
`
{
invG
Σ
}.
Implicit
Types
E
:
coPset
.
Implicit
Types
P
Q
:
iProp
Σ
.
Lemma
demo_8
N
E
P
Q
R
:
↑
N
⊆
E
→
(
True
-
∗
P
-
∗
inv
N
Q
-
∗
True
-
∗
R
)
-
∗
P
-
∗
▷
Q
={
E
}=
∗
R
.
Proof
.
iIntros
(?)
"H HP HQ"
.
iApply
(
"H"
with
"[% //] [$] [> HQ] [> //]"
).
by
iApply
inv_alloc
.
Qed
.
End
iris
.
Lemma
demo_9
(
x
y
z
:
M
)
:
Lemma
test_iFrame_pure
(
x
y
z
:
M
)
:
✓
x
→
⌜
y
≡
z
⌝
-
∗
(
✓
x
∧
✓
x
∧
y
≡
z
:
uPred
M
).
Proof
.
iIntros
(
Hv
)
"Hxy"
.
by
iFrame
(
Hv
Hv
)
"Hxy"
.
Qed
.
Lemma
demo_10
(
P
Q
:
uPred
M
)
:
P
-
∗
Q
-
∗
True
.
Lemma
test_iAssert_persistent
P
Q
:
P
-
∗
Q
-
∗
True
.
Proof
.
iIntros
"HP HQ"
.
iAssert
True
%
I
as
"#_"
.
{
by
iClear
"HP HQ"
.
}
...
...
@@ -117,44 +103,43 @@ Proof.
done
.
Qed
.
Lemma
demo_11
(
P
Q
R
:
uPred
M
)
:
Lemma
test_iSpecialize_auto_frame
P
Q
R
:
(
P
-
∗
True
-
∗
True
-
∗
Q
-
∗
R
)
-
∗
P
-
∗
Q
-
∗
R
.
Proof
.
iIntros
"H HP HQ"
.
by
iApply
(
"H"
with
"[$]"
).
Qed
.
(* Check coercions *)
Lemma
demo_12
(
P
:
Z
→
uPred
M
)
:
(
∀
x
,
P
x
)
-
∗
∃
x
,
P
x
.
Lemma
test_iExist_coercion
(
P
:
Z
→
uPred
M
)
:
(
∀
x
,
P
x
)
-
∗
∃
x
,
P
x
.
Proof
.
iIntros
"HP"
.
iExists
(
0
:
nat
).
iApply
(
"HP"
$!
(
0
:
nat
)).
Qed
.
Lemma
demo_13
(
P
:
uPred
M
)
:
(|==>
False
)
-
∗
|==>
P
.
Lemma
test_iAssert_modality
P
:
(|==>
False
)
-
∗
|==>
P
.
Proof
.
iIntros
.
iAssert
False
%
I
with
"[> - //]"
as
%[].
Qed
.
Lemma
demo_14
(
P
:
uPred
M
)
:
False
-
∗
P
.
Lemma
test_iAssumption_False
P
:
False
-
∗
P
.
Proof
.
iIntros
"H"
.
done
.
Qed
.
(* Check instantiation and dependent types *)
Lemma
demo_15
(
P
:
∀
n
,
vec
nat
n
→
uPred
M
)
:
Lemma
test_iSpecialize_dependent_type
(
P
:
∀
n
,
vec
nat
n
→
uPred
M
)
:
(
∀
n
v
,
P
n
v
)
-
∗
∃
n
v
,
P
n
v
.
Proof
.
iIntros
"H"
.
iExists
_
,
[#
10
].
iSpecialize
(
"H"
$!
_
[#
10
]).
done
.
Qed
.
Lemma
demo_16
(
P
Q
R
:
uPred
M
)
`
{!
PersistentP
R
}
:
Lemma
test_eauto_iFramE
P
Q
R
`
{!
PersistentP
R
}
:
P
-
∗
Q
-
∗
R
-
∗
R
∗
Q
∗
P
∗
R
∨
False
.
Proof
.
eauto
with
iFrame
.
Qed
.
Lemma
demo_17
(
P
Q
R
:
uPred
M
)
`
{!
PersistentP
R
}
:
Lemma
test_iCombine_persistent
P
Q
R
`
{!
PersistentP
R
}
:
P
-
∗
Q
-
∗
R
-
∗
R
∗
Q
∗
P
∗
R
∨
False
.
Proof
.
iIntros
"HP HQ #HR"
.
iCombine
"HR HQ HP HR"
as
"H"
.
auto
.
Qed
.
Lemma
test_iNext_evar
(
P
:
uPred
M
)
:
P
-
∗
True
.
Lemma
test_iNext_evar
P
:
P
-
∗
True
.
Proof
.
iIntros
"HP"
.
iAssert
(
▷
_
-
∗
▷
P
)%
I
as
"?"
;
last
done
.
iIntros
"?"
.
iNext
.
iAssumption
.
Qed
.
Lemma
test_iNext_sep1
(
P
Q
:
uPred
M
)
Lemma
test_iNext_sep1
P
Q
(
R1
:
=
(
P
∗
Q
)%
I
)
(
R2
:
=
(
▷
P
∗
▷
Q
)%
I
)
:
(
▷
P
∗
▷
Q
)
∗
R1
∗
R2
-
∗
▷
(
P
∗
Q
)
∗
▷
R1
∗
R2
.
Proof
.
...
...
@@ -162,21 +147,33 @@ Proof.
rewrite
{
1
2
}(
lock
R1
).
(* check whether R1 has not been unfolded *)
done
.
Qed
.
Lemma
test_iNext_sep2
(
P
Q
:
uPred
M
)
:
▷
P
∗
▷
Q
-
∗
▷
(
P
∗
Q
).
Lemma
test_iNext_sep2
P
Q
:
▷
P
∗
▷
Q
-
∗
▷
(
P
∗
Q
).
Proof
.
iIntros
"H"
.
iNext
.
iExact
"H"
.
(* Check that the laters are all gone. *)
Qed
.
Lemma
test_
f
rame_persistent
(
P
Q
:
uPred
M
)
:
Lemma
test_
iF
rame_persistent
(
P
Q
:
uPred
M
)
:
□
P
-
∗
Q
-
∗
□
(
P
∗
P
)
∗
(
P
∧
Q
∨
Q
).
Proof
.
iIntros
"#HP"
.
iFrame
"HP"
.
iIntros
"$"
.
Qed
.
Lemma
test_split_box
(
P
Q
:
uPred
M
)
:
□
P
-
∗
□
(
P
∗
P
).
Lemma
test_iSplit_always
P
Q
:
□
P
-
∗
□
(
P
∗
P
).
Proof
.
iIntros
"#?"
.
by
iSplit
.
Qed
.
Lemma
test_
s
pecialize_persistent
(
P
Q
:
uPred
M
)
:
Lemma
test_
iS
pecialize_persistent
P
Q
:
□
P
-
∗
(
□
P
-
∗
Q
)
-
∗
Q
.
Proof
.
iIntros
"#HP HPQ"
.
by
iSpecialize
(
"HPQ"
with
"HP"
).
Qed
.
End
tests
.
Section
more_tests
.
Context
`
{
invG
Σ
}.
Implicit
Types
P
Q
R
:
iProp
Σ
.
Lemma
test_masks
N
E
P
Q
R
:
↑
N
⊆
E
→
(
True
-
∗
P
-
∗
inv
N
Q
-
∗
True
-
∗
R
)
-
∗
P
-
∗
▷
Q
={
E
}=
∗
R
.
Proof
.
iIntros
(?)
"H HP HQ"
.
iApply
(
"H"
with
"[% //] [$] [> HQ] [> //]"
).
by
iApply
inv_alloc
.
Qed
.
End
more_tests
.
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment