Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Jeehoon Kang
iris-coq
Commits
3bdeb62f
Commit
3bdeb62f
authored
Mar 14, 2017
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Shorten a lemma.
parent
7047a278
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
18 deletions
+11
-18
theories/base_logic/big_op.v
theories/base_logic/big_op.v
+11
-18
No files found.
theories/base_logic/big_op.v
View file @
3bdeb62f
...
...
@@ -320,25 +320,18 @@ Section list2.
(
*
Some
lemmas
depend
on
the
generalized
versions
of
the
above
ones
.
*
)
Lemma
big_sepL_zip_with
{
B
C
}
Φ
f
(
l1
:
list
B
)
(
l2
:
list
C
)
:
([
∗
list
]
k
↦
x
∈
zip_with
f
l1
l2
,
Φ
k
x
)
⊣⊢
([
∗
list
]
k
↦
x
∈
l1
,
∀
y
,
⌜
l2
!!
k
=
Some
y
⌝
→
Φ
k
(
f
x
y
)).
([
∗
list
]
k
↦
x
∈
zip_with
f
l1
l2
,
Φ
k
x
)
⊣⊢
([
∗
list
]
k
↦
x
∈
l1
,
∀
y
,
⌜
l2
!!
k
=
Some
y
⌝
→
Φ
k
(
f
x
y
)).
Proof
.
revert
Φ
l2
;
induction
l1
;
intros
Φ
l2
;
first
by
rewrite
/=
big_sepL_nil
.
destruct
l2
;
simpl
.
{
rewrite
big_sepL_nil
.
apply
(
anti_symm
_
);
last
exact
:
True_intro
.
(
*
TODO
:
Can
this
be
done
simpler
?
*
)
rewrite
-
(
big_sepL_mono
(
λ
_
_
,
True
%
I
)).
-
rewrite
big_sepL_forall
.
apply
forall_intro
=>
k
.
apply
forall_intro
=>
b
.
apply
impl_intro_r
.
apply
True_intro
.
-
intros
k
b
_.
apply
forall_intro
=>
c
.
apply
impl_intro_l
.
rewrite
right_id
.
apply
pure_elim
'
.
done
.
}
rewrite
!
big_sepL_cons
.
apply
sep_proper
;
last
exact
:
IHl1
.
apply
(
anti_symm
_
).
-
apply
forall_intro
=>
c
'
.
simpl
.
apply
impl_intro_r
.
eapply
pure_elim
;
first
exact
:
and_elim_r
.
intros
[
=->
].
apply
and_elim_l
.
-
rewrite
(
forall_elim
c
).
simpl
.
eapply
impl_elim
;
first
done
.
apply
pure_intro
.
done
.
revert
Φ
l2
;
induction
l1
as
[
|
x
l1
IH
]
=>
Φ
[
|
y
l2
]
//=.
-
rewrite
big_sepL_nil
.
apply
(
anti_symm
_
),
True_intro
.
trans
([
∗
list
]
_
↦
_
∈
x
::
l1
,
True
:
uPred
M
)
%
I
.
+
rewrite
big_sepL_forall
.
auto
using
forall_intro
,
impl_intro_l
,
True_intro
.
+
apply
big_sepL_mono
=>
k
y
_.
apply
forall_intro
=>
z
.
by
apply
impl_intro_l
,
pure_elim_l
.
-
rewrite
!
big_sepL_cons
IH
.
apply
sep_proper
=>
//. apply (anti_symm _).
+
apply
forall_intro
=>
z
/=
.
by
apply
impl_intro_r
,
pure_elim_r
=>-
[
->
].
+
rewrite
(
forall_elim
y
)
/=
.
by
eapply
impl_elim
,
pure_intro
.
Qed
.
End
list2
.
...
...
Write
Preview
Markdown
is supported
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