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
Dan Frumin
iris-coq
Commits
280d91b0
Commit
280d91b0
authored
Jul 01, 2016
by
Robbert Krebbers
Browse files
Clean up some ndisjoint stuff in the proofmode tactics.
parent
4f918d4a
Changes
4
Hide whitespace changes
Inline
Side-by-side
heap_lang/proofmode.v
View file @
280d91b0
...
...
@@ -105,7 +105,7 @@ Tactic Notation "wp_alloc" ident(l) "as" constr(H) :=
[
let
e
'
:=
match
goal
with
|-
to_val
?
e
'
=
_
=>
e
'
end
in
wp_done
||
fail
"wp_alloc:"
e
'
"not a value"
|
iAssumption
||
fail
"wp_alloc: cannot find heap_ctx"
|
done
||
eauto
with
ndisj
|
solve_
ndisj
|
apply
_
|
first
[
intros
l
|
fail
1
"wp_alloc:"
l
"not fresh"
];
eexists
;
split
;
...
...
@@ -126,7 +126,7 @@ Tactic Notation "wp_load" :=
|
fail
1
"wp_load: cannot find 'Load' in"
e
];
eapply
tac_wp_load
;
[
iAssumption
||
fail
"wp_load: cannot find heap_ctx"
|
done
||
eauto
with
ndisj
|
solve_
ndisj
|
apply
_
|
let
l
:=
match
goal
with
|-
_
=
Some
(
_
,
(
?
l
↦
{
_
}
_
)
%
I
)
=>
l
end
in
iAssumptionCore
||
fail
"wp_cas_fail: cannot find"
l
"↦ ?"
...
...
@@ -145,7 +145,7 @@ Tactic Notation "wp_store" :=
[
let
e
'
:=
match
goal
with
|-
to_val
?
e
'
=
_
=>
e
'
end
in
wp_done
||
fail
"wp_store:"
e
'
"not a value"
|
iAssumption
||
fail
"wp_store: cannot find heap_ctx"
|
done
||
eauto
with
ndisj
|
solve_
ndisj
|
apply
_
|
let
l
:=
match
goal
with
|-
_
=
Some
(
_
,
(
?
l
↦
{
_
}
_
)
%
I
)
=>
l
end
in
iAssumptionCore
||
fail
"wp_store: cannot find"
l
"↦ ?"
...
...
@@ -167,7 +167,7 @@ Tactic Notation "wp_cas_fail" :=
|
let
e
'
:=
match
goal
with
|-
to_val
?
e
'
=
_
=>
e
'
end
in
wp_done
||
fail
"wp_cas_fail:"
e
'
"not a value"
|
iAssumption
||
fail
"wp_cas_fail: cannot find heap_ctx"
|
done
||
eauto
with
ndisj
|
solve_
ndisj
|
apply
_
|
let
l
:=
match
goal
with
|-
_
=
Some
(
_
,
(
?
l
↦
{
_
}
_
)
%
I
)
=>
l
end
in
iAssumptionCore
||
fail
"wp_cas_fail: cannot find"
l
"↦ ?"
...
...
@@ -189,7 +189,7 @@ Tactic Notation "wp_cas_suc" :=
|
let
e
'
:=
match
goal
with
|-
to_val
?
e
'
=
_
=>
e
'
end
in
wp_done
||
fail
"wp_cas_suc:"
e
'
"not a value"
|
iAssumption
||
fail
"wp_cas_suc: cannot find heap_ctx"
|
done
||
eauto
with
ndisj
|
solve_
ndisj
|
apply
_
|
let
l
:=
match
goal
with
|-
_
=
Some
(
_
,
(
?
l
↦
{
_
}
_
)
%
I
)
=>
l
end
in
iAssumptionCore
||
fail
"wp_cas_suc: cannot find"
l
"↦ ?"
...
...
program_logic/namespaces.v
View file @
280d91b0
...
...
@@ -67,3 +67,5 @@ Hint Resolve ndisj_subseteq_difference : ndisj.
Hint
Extern
0
(
_
.
@
_
⊥
_
.
@
_
)
=>
apply
ndot_ne_disjoint
;
congruence
:
ndisj
.
Hint
Resolve
ndot_preserve_disjoint_l
:
ndisj
.
Hint
Resolve
ndot_preserve_disjoint_r
:
ndisj
.
Ltac
solve_ndisj
:=
eauto
with
ndisj
.
proofmode/invariants.v
View file @
280d91b0
...
...
@@ -39,7 +39,7 @@ Tactic Notation "iInvCore" constr(N) "as" constr(H) :=
[
let
P
:=
match
goal
with
|-
IsFSA
?
P
_
_
_
_
=>
P
end
in
apply
_
||
fail
"iInv: cannot viewshift in goal"
P
|
try
fast_done
(
*
atomic
*
)
|
done
||
eauto
with
ndisj
(
*
[
eauto
with
ndisj
]
is
slow
*
)
|
solve_ndisj
|
iAssumption
||
fail
"iInv: invariant"
N
"not found"
|
env_cbv
;
reflexivity
|
simpl
(
*
get
rid
of
FSAs
*
)].
...
...
@@ -65,7 +65,7 @@ Tactic Notation "iInvCore>" constr(N) "as" constr(H) :=
[
let
P
:=
match
goal
with
|-
IsFSA
?
P
_
_
_
_
=>
P
end
in
apply
_
||
fail
"iInv: cannot viewshift in goal"
P
|
try
fast_done
(
*
atomic
*
)
|
done
||
eauto
with
ndisj
(
*
[
eauto
with
ndisj
]
is
slow
*
)
|
solve_ndisj
|
iAssumption
||
fail
"iOpenInv: invariant"
N
"not found"
|
let
P
:=
match
goal
with
|-
TimelessP
?
P
=>
P
end
in
apply
_
||
fail
"iInv:"
P
"not timeless"
...
...
proofmode/sts.v
View file @
280d91b0
...
...
@@ -41,6 +41,6 @@ Tactic Notation "iSts" constr(H) "as"
|
try
fast_done
(
*
atomic
*
)
|
iAssumptionCore
||
fail
"iSts:"
H
"not found"
|
iAssumption
||
fail
"iSts: invariant not found"
|
done
||
eauto
with
ndisj
(
*
[
eauto
with
ndisj
]
is
slow
*
)
|
solve_ndisj
|
intros
s
Hs
;
eexists
;
split
;
[
env_cbv
;
reflexivity
|
simpl
]].
Tactic
Notation
"iSts"
constr
(
H
)
"as"
simple_intropattern
(
s
)
:=
iSts
H
as
s
?
.
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