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
1fa70657
Commit
1fa70657
authored
Feb 04, 2016
by
Robbert Krebbers
Browse files
Make functor stuff more consistent.
parent
1cfbdb17
Changes
8
Hide whitespace changes
Inline
Side-by-side
algebra/agree.v
View file @
1fa70657
...
...
@@ -167,9 +167,9 @@ Section agree_map.
Qed
.
End
agree_map
.
Definition
agree
RA
_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
agree
RA
A
-
n
>
agree
RA
B
:
=
CofeMor
(
agree_map
f
:
agree
RA
A
→
agree
RA
B
).
Instance
agree
RA
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
agree
RA
_map
A
B
).
Definition
agree
C
_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
agree
C
A
-
n
>
agree
C
B
:
=
CofeMor
(
agree_map
f
:
agree
C
A
→
agree
C
B
).
Instance
agree
C
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
agree
C
_map
A
B
).
Proof
.
intros
f
g
Hfg
x
;
split
;
simpl
;
intros
;
first
done
.
by
apply
dist_le
with
n
;
try
apply
Hfg
.
...
...
algebra/auth.v
View file @
1fa70657
...
...
@@ -177,7 +177,7 @@ Proof. by destruct x; rewrite /= excl_fmap_id. Qed.
Lemma
excl_fmap_compose
{
A
B
C
}
(
f
:
A
→
B
)
(
g
:
B
→
C
)
(
x
:
auth
A
)
:
g
∘
f
<$>
x
=
g
<$>
f
<$>
x
.
Proof
.
by
destruct
x
;
rewrite
/=
excl_fmap_compose
.
Qed
.
Instance
auth_fmap_cmra_ne
{
A
B
:
c
mra
T
}
n
:
Instance
auth_fmap_cmra_ne
{
A
B
:
c
ofe
T
}
n
:
Proper
((
dist
n
==>
dist
n
)
==>
dist
n
==>
dist
n
)
(@
fmap
auth
_
A
B
).
Proof
.
intros
f
g
Hf
[??]
[??]
[??]
;
split
;
[
by
apply
excl_fmap_cmra_ne
|
by
apply
Hf
].
...
...
@@ -192,7 +192,7 @@ Proof.
*
intros
n
[[
a
|
|]
b
]
;
rewrite
/=
/
cmra_validN
;
naive_solver
eauto
using
@
includedN_preserving
,
@
validN_preserving
.
Qed
.
Definition
auth
RA
_map
{
A
B
:
cmraT
}
(
f
:
A
-
n
>
B
)
:
auth
RA
A
-
n
>
auth
RA
B
:
=
CofeMor
(
fmap
f
:
auth
RA
A
→
auth
RA
B
).
Lemma
auth
RA
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
auth
RA
_map
A
B
).
Definition
auth
C
_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
auth
C
A
-
n
>
auth
C
B
:
=
CofeMor
(
fmap
f
:
auth
C
A
→
auth
C
B
).
Lemma
auth
C
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
auth
C
_map
A
B
).
Proof
.
intros
f
f'
Hf
[[
a
|
|]
b
]
;
repeat
constructor
;
apply
Hf
.
Qed
.
algebra/cmra.v
View file @
1fa70657
...
...
@@ -522,11 +522,6 @@ Proof.
by
split
;
apply
includedN_preserving
.
*
by
intros
n
x
[??]
;
split
;
simpl
;
apply
validN_preserving
.
Qed
.
Definition
prodRA_map
{
A
A'
B
B'
:
cmraT
}
(
f
:
A
-
n
>
A'
)
(
g
:
B
-
n
>
B'
)
:
prodRA
A
B
-
n
>
prodRA
A'
B'
:
=
CofeMor
(
prod_map
f
g
:
prodRA
A
B
→
prodRA
A'
B'
).
Instance
prodRA_map_ne
{
A
A'
B
B'
}
n
:
Proper
(
dist
n
==>
dist
n
==>
dist
n
)
(@
prodRA_map
A
A'
B
B'
)
:
=
prodC_map_ne
n
.
(** ** Indexed product *)
Section
iprod_cmra
.
...
...
@@ -631,7 +626,3 @@ Proof.
rewrite
/
iprod_map
;
apply
includedN_preserving
,
Hf
.
*
intros
n
g
Hg
x
;
rewrite
/
iprod_map
;
apply
validN_preserving
,
Hg
.
Qed
.
Definition
iprodRA_map
{
A
}
{
B1
B2
:
A
→
cmraT
}
(
f
:
iprod
(
λ
x
,
B1
x
-
n
>
B2
x
))
:
iprodRA
B1
-
n
>
iprodRA
B2
:
=
CofeMor
(
iprod_map
f
).
Instance
laterRA_map_ne
{
A
}
{
B1
B2
:
A
→
cmraT
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
iprodRA_map
A
B1
B2
)
:
=
_
.
algebra/excl.v
View file @
1fa70657
...
...
@@ -174,7 +174,7 @@ Proof.
by
destruct
x
,
z
;
constructor
.
*
by
intros
n
[
a
|
|].
Qed
.
Definition
excl
RA
_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
excl
RA
A
-
n
>
excl
RA
B
:
=
Definition
excl
C
_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
excl
C
A
-
n
>
excl
C
B
:
=
CofeMor
(
fmap
f
:
exclRA
A
→
exclRA
B
).
Lemma
excl
RA
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
excl
RA
_map
A
B
).
Instance
excl
C
_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
excl
C
_map
A
B
).
Proof
.
by
intros
f
f'
Hf
[]
;
constructor
;
apply
Hf
.
Qed
.
algebra/fin_maps.v
View file @
1fa70657
...
...
@@ -226,18 +226,10 @@ Lemma map_updateP_alloc' m x :
Proof
.
eauto
using
map_updateP_alloc
.
Qed
.
End
properties
.
(** Functor *)
Instance
map_fmap_ne
`
{
Countable
K
}
{
A
B
:
cofeT
}
(
f
:
A
→
B
)
n
:
Proper
(
dist
n
==>
dist
n
)
f
→
Proper
(
dist
n
==>
dist
n
)
(
fmap
(
M
:
=
gmap
K
)
f
).
Proof
.
by
intros
?
m
m'
Hm
k
;
rewrite
!
lookup_fmap
;
apply
option_fmap_ne
.
Qed
.
Definition
mapC_map
`
{
Countable
K
}
{
A
B
}
(
f
:
A
-
n
>
B
)
:
mapC
K
A
-
n
>
mapC
K
B
:
=
CofeMor
(
fmap
f
:
mapC
K
A
→
mapC
K
B
).
Instance
mapC_map_ne
`
{
Countable
K
}
{
A
B
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
mapC_map
K
_
_
A
B
).
Proof
.
intros
f
g
Hf
m
k
;
rewrite
/=
!
lookup_fmap
.
destruct
(
_
!!
k
)
eqn
:
?
;
simpl
;
constructor
;
apply
Hf
.
Qed
.
Instance
map_fmap_cmra_monotone
`
{
Countable
K
}
{
A
B
:
cmraT
}
(
f
:
A
→
B
)
`
{!
CMRAMonotone
f
}
:
CMRAMonotone
(
fmap
f
:
gmap
K
A
→
gmap
K
B
).
Proof
.
...
...
@@ -246,9 +238,11 @@ Proof.
by
rewrite
!
lookup_fmap
;
apply
:
includedN_preserving
.
*
by
intros
n
m
?
i
;
rewrite
lookup_fmap
;
apply
validN_preserving
.
Qed
.
Definition
mapRA_map
`
{
Countable
K
}
{
A
B
:
cmraT
}
(
f
:
A
-
n
>
B
)
:
mapRA
K
A
-
n
>
mapRA
K
B
:
=
CofeMor
(
fmap
f
:
mapRA
K
A
→
mapRA
K
B
).
Instance
mapRA_map_ne
`
{
Countable
K
}
{
A
B
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
mapRA_map
K
_
_
A
B
)
:
=
mapC_map_ne
n
.
Instance
mapRA_map_monotone
`
{
Countable
K
}
{
A
B
:
cmraT
}
(
f
:
A
-
n
>
B
)
`
{!
CMRAMonotone
f
}
:
CMRAMonotone
(
mapRA_map
f
)
:
=
_
.
Definition
mapC_map
`
{
Countable
K
}
{
A
B
}
(
f
:
A
-
n
>
B
)
:
mapC
K
A
-
n
>
mapC
K
B
:
=
CofeMor
(
fmap
f
:
mapC
K
A
→
mapC
K
B
).
Instance
mapC_map_ne
`
{
Countable
K
}
{
A
B
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
mapC_map
K
_
_
A
B
).
Proof
.
intros
f
g
Hf
m
k
;
rewrite
/=
!
lookup_fmap
.
destruct
(
_
!!
k
)
eqn
:
?
;
simpl
;
constructor
;
apply
Hf
.
Qed
.
algebra/option.v
View file @
1fa70657
...
...
@@ -57,10 +57,6 @@ End cofe.
Arguments
optionC
:
clear
implicits
.
Instance
option_fmap_ne
{
A
B
:
cofeT
}
(
f
:
A
→
B
)
n
:
Proper
(
dist
n
==>
dist
n
)
f
→
Proper
(
dist
n
==>
dist
n
)
(
fmap
(
M
:
=
option
)
f
).
Proof
.
by
intros
Hf
;
destruct
1
;
constructor
;
apply
Hf
.
Qed
.
(* CMRA *)
Section
cmra
.
Context
{
A
:
cmraT
}.
...
...
@@ -158,6 +154,10 @@ End cmra.
Arguments
optionRA
:
clear
implicits
.
(** Functor *)
Instance
option_fmap_ne
{
A
B
:
cofeT
}
(
f
:
A
→
B
)
n
:
Proper
(
dist
n
==>
dist
n
)
f
→
Proper
(
dist
n
==>
dist
n
)
(
fmap
(
M
:
=
option
)
f
).
Proof
.
by
intros
Hf
;
destruct
1
;
constructor
;
apply
Hf
.
Qed
.
Instance
option_fmap_cmra_monotone
{
A
B
:
cmraT
}
(
f
:
A
→
B
)
`
{!
CMRAMonotone
f
}
:
CMRAMonotone
(
fmap
f
:
option
A
→
option
B
).
Proof
.
...
...
@@ -166,3 +166,7 @@ Proof.
intros
[->|[->|(
x
&
y
&->&->&?)]]
;
simpl
;
eauto
10
using
@
includedN_preserving
.
*
by
intros
n
[
x
|]
?
;
rewrite
/
cmra_validN
/=
;
try
apply
validN_preserving
.
Qed
.
Definition
optionC_map
{
A
B
}
(
f
:
A
-
n
>
B
)
:
optionC
A
-
n
>
optionC
B
:
=
CofeMor
(
fmap
f
:
optionC
A
→
optionC
B
).
Instance
optionC_map_ne
A
B
n
:
Proper
(
dist
n
==>
dist
n
)
(@
optionC_map
A
B
).
Proof
.
by
intros
f
f'
Hf
[]
;
constructor
;
apply
Hf
.
Qed
.
program_logic/model.v
View file @
1fa70657
...
...
@@ -6,7 +6,7 @@ Definition F (Λ : language) (Σ : iFunctor) (A B : cofeT) : cofeT :=
uPredC
(
resRA
Λ
Σ
(
laterC
A
)).
Definition
map
{
Λ
:
language
}
{
Σ
:
iFunctor
}
{
A1
A2
B1
B2
:
cofeT
}
(
f
:
(
A2
-
n
>
A1
)
*
(
B1
-
n
>
B2
))
:
F
Λ
Σ
A1
B1
-
n
>
F
Λ
Σ
A2
B2
:
=
uPredC_map
(
res
RA
_map
(
laterC_map
(
f
.
1
))).
uPredC_map
(
res
C
_map
(
laterC_map
(
f
.
1
))).
Definition
result
Λ
Σ
:
solution
(
F
Λ
Σ
).
Proof
.
apply
(
solver
.
result
_
(@
map
Λ
Σ
)).
...
...
@@ -18,7 +18,7 @@ Proof.
rewrite
-
res_map_compose
.
apply
res_map_ext
=>{
r
}
r
/=.
by
rewrite
-
later_map_compose
.
*
intros
A1
A2
B1
B2
n
f
f'
[??]
P
.
by
apply
upredC_map_ne
,
res
RA
_map_ne
,
laterC_map_contractive
.
by
apply
upredC_map_ne
,
res
C
_map_ne
,
laterC_map_contractive
.
Qed
.
End
iProp
.
...
...
program_logic/resources.v
View file @
1fa70657
...
...
@@ -39,9 +39,7 @@ Proof. by destruct 1. Qed.
Global
Instance
pst_ne
n
:
Proper
(
dist
n
==>
dist
n
)
(@
pst
Λ
Σ
A
).
Proof
.
by
destruct
1
.
Qed
.
Global
Instance
pst_ne'
n
:
Proper
(
dist
(
S
n
)
==>
(
≡
))
(@
pst
Λ
Σ
A
).
Proof
.
intros
σ
σ
'
[???]
;
apply
(
timeless
_
),
dist_le
with
(
S
n
)
;
auto
with
lia
.
Qed
.
Proof
.
destruct
1
;
apply
(
timeless
_
),
dist_le
with
(
S
n
)
;
auto
with
lia
.
Qed
.
Global
Instance
pst_proper
:
Proper
((
≡
)
==>
(=))
(@
pst
Λ
Σ
A
).
Proof
.
by
destruct
1
;
unfold_leibniz
.
Qed
.
Global
Instance
gst_ne
n
:
Proper
(
dist
n
==>
dist
n
)
(@
gst
Λ
Σ
A
).
...
...
@@ -164,6 +162,8 @@ Qed.
Global
Instance
Res_timeless
e
σ
m
:
Timeless
m
→
Timeless
(
Res
∅
e
σ
m
).
Proof
.
by
intros
?
?
[???]
;
constructor
;
apply
(
timeless
_
).
Qed
.
End
res
.
Arguments
resC
:
clear
implicits
.
Arguments
resRA
:
clear
implicits
.
Definition
res_map
{
Λ
Σ
A
B
}
(
f
:
A
-
n
>
B
)
(
r
:
res
Λ
Σ
A
)
:
res
Λ
Σ
B
:
=
...
...
@@ -196,8 +196,6 @@ Proof.
*
by
apply
map_fmap_setoid_ext
=>
i
x
?
;
apply
agree_map_ext
.
*
by
apply
ifunctor_map_ext
.
Qed
.
Definition
resRA_map
{
Λ
Σ
A
B
}
(
f
:
A
-
n
>
B
)
:
resRA
Λ
Σ
A
-
n
>
resRA
Λ
Σ
B
:
=
CofeMor
(
res_map
f
:
resRA
Λ
Σ
A
→
resRA
Λ
Σ
B
).
Instance
res_map_cmra_monotone
{
Λ
Σ
}
{
A
B
:
cofeT
}
(
f
:
A
-
n
>
B
)
:
CMRAMonotone
(@
res_map
Λ
Σ
_
_
f
).
Proof
.
...
...
@@ -206,10 +204,12 @@ Proof.
intros
(?&?&?)
;
split_ands'
;
simpl
;
try
apply
includedN_preserving
.
*
by
intros
n
r
(?&?&?)
;
split_ands'
;
simpl
;
try
apply
validN_preserving
.
Qed
.
Instance
resRA_map_ne
{
Λ
Σ
A
B
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
resRA_map
Λ
Σ
A
B
).
Definition
resC_map
{
Λ
Σ
A
B
}
(
f
:
A
-
n
>
B
)
:
resC
Λ
Σ
A
-
n
>
resC
Λ
Σ
B
:
=
CofeMor
(
res_map
f
:
resRA
Λ
Σ
A
→
resRA
Λ
Σ
B
).
Instance
resC_map_ne
{
Λ
Σ
A
B
}
n
:
Proper
(
dist
n
==>
dist
n
)
(@
resC_map
Λ
Σ
A
B
).
Proof
.
intros
f
g
Hfg
r
;
split
;
simpl
;
auto
.
*
by
apply
(
map
RA
_map_ne
_
(
agree
RA
_map
f
)
(
agree
RA
_map
g
)),
agree
RA
_map_ne
.
*
by
apply
(
map
C
_map_ne
_
(
agree
C
_map
f
)
(
agree
C
_map
g
)),
agree
C
_map_ne
.
*
by
apply
ifunctor_map_ne
.
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