Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
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
Abel Nieto
Iris
Commits
9901a12d
Commit
9901a12d
authored
5 years ago
by
Jacques-Henri Jourdan
Browse files
Options
Downloads
Patches
Plain Diff
Use &&& from lazy_bool_scope instead of redefining the && notation.
parent
523432b4
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
theories/proofmode/base.v
+6
-5
6 additions, 5 deletions
theories/proofmode/base.v
theories/proofmode/coq_tactics.v
+3
-1
3 additions, 1 deletion
theories/proofmode/coq_tactics.v
theories/proofmode/environments.v
+4
-5
4 additions, 5 deletions
theories/proofmode/environments.v
with
13 additions
and
11 deletions
theories/proofmode/base.v
+
6
−
5
View file @
9901a12d
...
@@ -8,12 +8,13 @@ Set Default Proof Using "Type".
...
@@ -8,12 +8,13 @@ Set Default Proof Using "Type".
(* Directions of rewrites *)
(* Directions of rewrites *)
Inductive
direction
:=
Left
|
Right
.
Inductive
direction
:=
Left
|
Right
.
Local
Open
Scope
lazy_bool_scope
.
(* Some specific versions of operations on strings, booleans, positive for the
(* Some specific versions of operations on strings, booleans, positive for the
proof mode. We need those so that we can make [cbv] unfold just them, but not
proof mode. We need those so that we can make [cbv] unfold just them, but not
the actual operations that may appear in users' proofs. *)
the actual operations that may appear in users' proofs. *)
Local
Notation
"b1 && b2"
:=
(
if
b1
then
b2
else
false
)
:
bool_scope
.
Lemma
lazy_andb_true
(
b1
b2
:
bool
)
:
b1
&&
b2
=
true
↔
b1
=
true
∧
b2
=
true
.
Lemma
lazy_andb_true
(
b1
b2
:
bool
)
:
b1
&&
&
b2
=
true
↔
b1
=
true
∧
b2
=
true
.
Proof
.
destruct
b1
,
b2
;
intuition
congruence
.
Qed
.
Proof
.
destruct
b1
,
b2
;
intuition
congruence
.
Qed
.
Fixpoint
Pos_succ
(
x
:
positive
)
:
positive
:=
Fixpoint
Pos_succ
(
x
:
positive
)
:
positive
:=
...
@@ -32,13 +33,13 @@ Definition beq (b1 b2 : bool) : bool :=
...
@@ -32,13 +33,13 @@ Definition beq (b1 b2 : bool) : bool :=
Definition
ascii_beq
(
x
y
:
ascii
)
:
bool
:=
Definition
ascii_beq
(
x
y
:
ascii
)
:
bool
:=
let
'
Ascii
x1
x2
x3
x4
x5
x6
x7
x8
:=
x
in
let
'
Ascii
x1
x2
x3
x4
x5
x6
x7
x8
:=
x
in
let
'
Ascii
y1
y2
y3
y4
y5
y6
y7
y8
:=
y
in
let
'
Ascii
y1
y2
y3
y4
y5
y6
y7
y8
:=
y
in
beq
x1
y1
&&
beq
x2
y2
&&
beq
x3
y3
&&
beq
x4
y4
&&
beq
x1
y1
&&
&
beq
x2
y2
&&
&
beq
x3
y3
&&
&
beq
x4
y4
&&
&
beq
x5
y5
&&
beq
x6
y6
&&
beq
x7
y7
&&
beq
x8
y8
.
beq
x5
y5
&&
&
beq
x6
y6
&&
&
beq
x7
y7
&&
&
beq
x8
y8
.
Fixpoint
string_beq
(
s1
s2
:
string
)
:
bool
:=
Fixpoint
string_beq
(
s1
s2
:
string
)
:
bool
:=
match
s1
,
s2
with
match
s1
,
s2
with
|
""
,
""
=>
true
|
""
,
""
=>
true
|
String
a1
s1
,
String
a2
s2
=>
ascii_beq
a1
a2
&&
string_beq
s1
s2
|
String
a1
s1
,
String
a2
s2
=>
ascii_beq
a1
a2
&&
&
string_beq
s1
s2
|
_,
_
=>
false
|
_,
_
=>
false
end
.
end
.
...
...
This diff is collapsed.
Click to expand it.
theories/proofmode/coq_tactics.v
+
3
−
1
View file @
9901a12d
...
@@ -5,6 +5,8 @@ Set Default Proof Using "Type".
...
@@ -5,6 +5,8 @@ Set Default Proof Using "Type".
Import
bi
.
Import
bi
.
Import
env_notations
.
Import
env_notations
.
Local
Open
Scope
lazy_bool_scope
.
(* Coq versions of the tactics *)
(* Coq versions of the tactics *)
Section
bi_tactics
.
Section
bi_tactics
.
Context
{
PROP
:
bi
}
.
Context
{
PROP
:
bi
}
.
...
@@ -269,7 +271,7 @@ Lemma tac_specialize remove_intuitionistic Δ i p j q P1 P2 R Q :
...
@@ -269,7 +271,7 @@ Lemma tac_specialize remove_intuitionistic Δ i p j q P1 P2 R Q :
let
Δ'
:=
envs_delete
remove_intuitionistic
i
p
Δ
in
let
Δ'
:=
envs_delete
remove_intuitionistic
i
p
Δ
in
envs_lookup
j
Δ'
=
Some
(
q
,
R
)
→
envs_lookup
j
Δ'
=
Some
(
q
,
R
)
→
IntoWand
q
p
R
P1
P2
→
IntoWand
q
p
R
P1
P2
→
match
envs_replace
j
q
(
p
&&
q
)
(
Esnoc
Enil
j
P2
)
Δ'
with
match
envs_replace
j
q
(
p
&&
&
q
)
(
Esnoc
Enil
j
P2
)
Δ'
with
|
Some
Δ''
=>
envs_entails
Δ''
Q
|
Some
Δ''
=>
envs_entails
Δ''
Q
|
None
=>
False
|
None
=>
False
end
→
envs_entails
Δ
Q
.
end
→
envs_entails
Δ
Q
.
...
...
This diff is collapsed.
Click to expand it.
theories/proofmode/environments.v
+
4
−
5
View file @
9901a12d
...
@@ -24,12 +24,11 @@ Module env_notations.
...
@@ -24,12 +24,11 @@ Module env_notations.
Notation
"x ← y ; z"
:=
(
y
≫=
λ
x
,
z
)
.
Notation
"x ← y ; z"
:=
(
y
≫=
λ
x
,
z
)
.
Notation
"' x1 .. xn ← y ; z"
:=
(
y
≫=
(
λ
x1
,
.
.
(
λ
xn
,
z
)
.
.
)).
Notation
"' x1 .. xn ← y ; z"
:=
(
y
≫=
(
λ
x1
,
.
.
(
λ
xn
,
z
)
.
.
)).
Notation
"Γ !! j"
:=
(
env_lookup
j
Γ
)
.
Notation
"Γ !! j"
:=
(
env_lookup
j
Γ
)
.
(* andb will not be simplified by pm_reduce *)
Notation
"b1 && b2"
:=
(
if
b1
then
b2
else
false
)
:
bool_scope
.
End
env_notations
.
End
env_notations
.
Import
env_notations
.
Import
env_notations
.
Local
Open
Scope
lazy_bool_scope
.
Inductive
env_wf
{
A
}
:
env
A
→
Prop
:=
Inductive
env_wf
{
A
}
:
env
A
→
Prop
:=
|
Enil_wf
:
env_wf
Enil
|
Enil_wf
:
env_wf
Enil
|
Esnoc_wf
Γ
i
x
:
Γ
!!
i
=
None
→
env_wf
Γ
→
env_wf
(
Esnoc
Γ
i
x
)
.
|
Esnoc_wf
Γ
i
x
:
Γ
!!
i
=
None
→
env_wf
Γ
→
env_wf
(
Esnoc
Γ
i
x
)
.
...
@@ -307,7 +306,7 @@ Fixpoint envs_lookup_delete_list {PROP} (remove_intuitionistic : bool)
...
@@ -307,7 +306,7 @@ Fixpoint envs_lookup_delete_list {PROP} (remove_intuitionistic : bool)
|
j
::
js
=>
|
j
::
js
=>
''
(
p
,
P
,
Δ'
)
←
envs_lookup_delete
remove_intuitionistic
j
Δ
;
''
(
p
,
P
,
Δ'
)
←
envs_lookup_delete
remove_intuitionistic
j
Δ
;
''
(
q
,
Ps
,
Δ''
)
←
envs_lookup_delete_list
remove_intuitionistic
js
Δ'
;
''
(
q
,
Ps
,
Δ''
)
←
envs_lookup_delete_list
remove_intuitionistic
js
Δ'
;
Some
((
p
:
bool
)
&&
q
,
P
::
Ps
,
Δ''
)
Some
((
p
:
bool
)
&&
&
q
,
P
::
Ps
,
Δ''
)
end
.
end
.
Definition
envs_snoc
{
PROP
}
(
Δ
:
envs
PROP
)
Definition
envs_snoc
{
PROP
}
(
Δ
:
envs
PROP
)
...
@@ -545,7 +544,7 @@ Qed.
...
@@ -545,7 +544,7 @@ Qed.
Lemma
envs_lookup_delete_list_cons
Δ
Δ'
Δ''
rp
j
js
p1
p2
P
Ps
:
Lemma
envs_lookup_delete_list_cons
Δ
Δ'
Δ''
rp
j
js
p1
p2
P
Ps
:
envs_lookup_delete
rp
j
Δ
=
Some
(
p1
,
P
,
Δ'
)
→
envs_lookup_delete
rp
j
Δ
=
Some
(
p1
,
P
,
Δ'
)
→
envs_lookup_delete_list
rp
js
Δ'
=
Some
(
p2
,
Ps
,
Δ''
)
→
envs_lookup_delete_list
rp
js
Δ'
=
Some
(
p2
,
Ps
,
Δ''
)
→
envs_lookup_delete_list
rp
(
j
::
js
)
Δ
=
Some
(
p1
&&
p2
,
(
P
::
Ps
),
Δ''
)
.
envs_lookup_delete_list
rp
(
j
::
js
)
Δ
=
Some
(
p1
&&
&
p2
,
(
P
::
Ps
),
Δ''
)
.
Proof
.
rewrite
//=
=>
->
//=
->
//=.
Qed
.
Proof
.
rewrite
//=
=>
->
//=
->
//=.
Qed
.
Lemma
envs_lookup_delete_list_nil
Δ
rp
:
Lemma
envs_lookup_delete_list_nil
Δ
rp
:
...
...
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