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
Marianna Rapoport
iris-coq
Commits
1270ae08
Commit
1270ae08
authored
Sep 28, 2016
by
Robbert Krebbers
Browse files
Leibniz equality variants of the commute lemmas for big ops.
parent
61761380
Changes
1
Hide whitespace changes
Inline
Side-by-side
algebra/cmra_big_op.v
View file @
1270ae08
...
...
@@ -427,3 +427,30 @@ Proof.
-
by
rewrite
!
big_opS_insert
//
!
big_opS_empty
!
right_id
.
-
by
rewrite
!
big_opS_insert
//
cmra_homomorphism
-
IH
//.
Qed
.
Lemma
big_opL_commute_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
UCMRAHomomorphism
h
}
(
f
:
nat
→
A
→
M1
)
l
:
h
([
⋅
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([
⋅
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opL_commute
.
Qed
.
Lemma
big_opL_commute1_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
CMRAHomomorphism
h
}
(
f
:
nat
→
A
→
M1
)
l
:
l
≠
[]
→
h
([
⋅
list
]
k
↦
x
∈
l
,
f
k
x
)
=
([
⋅
list
]
k
↦
x
∈
l
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opL_commute1
.
Qed
.
Lemma
big_opM_commute_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
,
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
UCMRAHomomorphism
h
}
(
f
:
K
→
A
→
M1
)
m
:
h
([
⋅
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([
⋅
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opM_commute
.
Qed
.
Lemma
big_opM_commute1_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
,
Countable
K
}
{
A
}
(
h
:
M1
→
M2
)
`
{!
CMRAHomomorphism
h
}
(
f
:
K
→
A
→
M1
)
m
:
m
≠
∅
→
h
([
⋅
map
]
k
↦
x
∈
m
,
f
k
x
)
=
([
⋅
map
]
k
↦
x
∈
m
,
h
(
f
k
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opM_commute1
.
Qed
.
Lemma
big_opS_commute_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
,
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
UCMRAHomomorphism
h
}
(
f
:
A
→
M1
)
X
:
h
([
⋅
set
]
x
∈
X
,
f
x
)
=
([
⋅
set
]
x
∈
X
,
h
(
f
x
)).
Proof
.
unfold_leibniz
.
by
apply
big_opS_commute
.
Qed
.
Lemma
big_opS_commute1_L
{
M1
M2
:
ucmraT
}
`
{!
LeibnizEquiv
M2
,
Countable
A
}
(
h
:
M1
→
M2
)
`
{!
CMRAHomomorphism
h
}
(
f
:
A
→
M1
)
X
:
X
≠
∅
→
h
([
⋅
set
]
x
∈
X
,
f
x
)
=
([
⋅
set
]
x
∈
X
,
h
(
f
x
)).
Proof
.
intros
.
rewrite
<-
leibniz_equiv_iff
.
by
apply
big_opS_commute1
.
Qed
.
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