Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joshua Yanovski
iris-coq
Commits
2c69c726
Commit
2c69c726
authored
Feb 02, 2017
by
Robbert Krebbers
Browse files
Shorten some proofs, name some variables.
parent
60da0dab
Changes
3
Hide whitespace changes
Inline
Side-by-side
theories/algebra/cmra.v
View file @
2c69c726
...
...
@@ -541,9 +541,8 @@ Qed.
(
**
Cancelable
elements
*
)
Global
Instance
cancelable_proper
:
Proper
(
equiv
==>
iff
)
(
@
Cancelable
A
).
Proof
.
unfold
Cancelable
.
intros
??
EQ
.
by
setoid_rewrite
EQ
.
Qed
.
Lemma
cancelable
x
`
{!
Cancelable
x
}
y
z
:
✓
(
x
⋅
y
)
→
x
⋅
y
≡
x
⋅
z
→
y
≡
z
.
Proof
.
unfold
Cancelable
.
intros
x
x
'
EQ
.
by
setoid_rewrite
EQ
.
Qed
.
Lemma
cancelable
x
`
{!
Cancelable
x
}
y
z
:
✓
(
x
⋅
y
)
→
x
⋅
y
≡
x
⋅
z
→
y
≡
z
.
Proof
.
rewrite
!
equiv_dist
cmra_valid_validN
.
intros
.
by
apply
(
cancelableN
x
).
Qed
.
Lemma
discrete_cancelable
x
`
{
CMRADiscrete
A
}:
(
∀
y
z
,
✓
(
x
⋅
y
)
→
x
⋅
y
≡
x
⋅
z
→
y
≡
z
)
→
Cancelable
x
.
...
...
@@ -551,25 +550,22 @@ Proof. intros ????. rewrite -!timeless_iff -cmra_discrete_valid_iff. auto. Qed.
Global
Instance
cancelable_op
x
y
:
Cancelable
x
→
Cancelable
y
→
Cancelable
(
x
⋅
y
).
Proof
.
intros
??
???
??
.
apply
(
cancelableN
y
),
(
cancelableN
x
).
intros
??
n
z
z
'
??
.
apply
(
cancelableN
y
),
(
cancelableN
x
).
-
eapply
cmra_validN_op_r
.
by
rewrite
assoc
.
-
by
rewrite
assoc
.
-
by
rewrite
!
assoc
.
Qed
.
Global
Instance
exclusive_cancelable
(
x
:
A
)
:
Exclusive
x
→
Cancelable
x
.
Proof
.
intros
?
???
[]
%
(
exclusiveN_l
_
x
).
Qed
.
Proof
.
intros
?
n
z
z
'
[]
%
(
exclusiveN_l
_
x
).
Qed
.
(
**
Id
-
free
elements
*
)
Global
Instance
id_free_ne
:
Proper
(
dist
n
==>
iff
)
(
@
IdFree
A
).
Global
Instance
id_free_ne
n
:
Proper
(
dist
n
==>
iff
)
(
@
IdFree
A
).
Proof
.
unfold
IdFree
.
intros
???
EQ
%
(
dist_le
_
0
);
last
lia
.
split
;
intros
?
?
;
(
rewrite
-
EQ
||
rewrite
EQ
);
eauto
.
intros
x
x
'
EQ
%
(
dist_le
_
0
);
last
lia
.
rewrite
/
IdFree
.
split
=>
y
?
;
(
rewrite
-
EQ
||
rewrite
EQ
);
eauto
.
Qed
.
Global
Instance
id_free_proper
:
Proper
(
equiv
==>
iff
)
(
@
IdFree
A
).
Proof
.
unfold
IdFree
.
intros
??
EQ
.
split
;
intros
??
;
(
rewrite
-
EQ
||
rewrite
EQ
);
eauto
.
Qed
.
Proof
.
by
move
=>
P
Q
/
equiv_dist
/
(
_
0
)
=>
->
.
Qed
.
Lemma
id_freeN_r
n
n
'
x
`
{!
IdFree
x
}
y
:
✓
{
n
}
x
→
x
⋅
y
≡
{
n
'
}
≡
x
→
False
.
Proof
.
eauto
using
cmra_validN_le
,
dist_le
with
lia
.
Qed
.
Lemma
id_freeN_l
n
n
'
x
`
{!
IdFree
x
}
y
:
✓
{
n
}
x
→
y
⋅
x
≡
{
n
'
}
≡
x
→
False
.
...
...
@@ -579,16 +575,14 @@ Proof. move=> /cmra_valid_validN ? /equiv_dist. eauto. Qed.
Lemma
id_free_l
x
`
{!
IdFree
x
}
y
:
✓
x
→
y
⋅
x
≡
x
→
False
.
Proof
.
rewrite
comm
.
eauto
using
id_free_r
.
Qed
.
Lemma
discrete_id_free
x
`
{
CMRADiscrete
A
}:
(
∀
y
,
✓
x
→
x
⋅
y
≡
x
→
False
)
→
IdFree
x
.
(
∀
y
,
✓
x
→
x
⋅
y
≡
x
→
False
)
→
IdFree
x
.
Proof
.
repeat
intro
.
eauto
using
cmra_discrete_valid
,
cmra_discrete
,
timeless
.
Qed
.
Global
Instance
id_free_op_r
x
y
:
IdFree
y
→
Cancelable
x
→
IdFree
(
x
⋅
y
).
Global
Instance
id_free_op_r
x
y
:
IdFree
y
→
Cancelable
x
→
IdFree
(
x
⋅
y
).
Proof
.
intros
??
?
?
Hid
%
symmetry
.
revert
Hid
.
rewrite
-
assoc
=>/
(
cancelableN
x
)
?
.
intros
??
z
?
Hid
%
symmetry
.
revert
Hid
.
rewrite
-
assoc
=>/
(
cancelableN
x
)
?
.
eapply
(
id_free0_r
_
);
[
by
eapply
cmra_validN_op_r
|
symmetry
;
eauto
].
Qed
.
Global
Instance
id_free_op_l
x
y
:
IdFree
x
→
Cancelable
y
→
IdFree
(
x
⋅
y
).
Global
Instance
id_free_op_l
x
y
:
IdFree
x
→
Cancelable
y
→
IdFree
(
x
⋅
y
).
Proof
.
intros
.
rewrite
comm
.
apply
_.
Qed
.
Global
Instance
exclusive_id_free
x
:
Exclusive
x
→
IdFree
x
.
Proof
.
intros
?
z
?
Hid
.
apply
(
exclusiveN_l
0
x
z
).
by
rewrite
Hid
.
Qed
.
...
...
@@ -1038,10 +1032,10 @@ Section positive.
Global
Instance
pos_cmra_discrete
:
CMRADiscrete
positiveR
.
Proof
.
constructor
;
apply
_
||
done
.
Qed
.
Global
Instance
pos_cancelable
(
x
:
positive
)
:
Cancelable
x
.
Proof
.
intros
???
??
.
by
eapply
Pos
.
add_reg_l
,
leibniz_equiv
.
Qed
.
Proof
.
intros
n
y
z
??
.
by
eapply
Pos
.
add_reg_l
,
leibniz_equiv
.
Qed
.
Global
Instance
pos_id_free
(
x
:
positive
)
:
IdFree
x
.
Proof
.
intros
?
??
.
edestruct
Pos
.
add_no_neutral
.
rewrite
Pos
.
add_comm
.
intros
y
??
.
apply
(
Pos
.
add_no_neutral
x
y
)
.
rewrite
Pos
.
add_comm
.
by
apply
leibniz_equiv
.
Qed
.
End
positive
.
...
...
@@ -1354,12 +1348,10 @@ Section option.
Proof
.
intros
Hirr
??
[
y
|
]
[
z
|
]
?
EQ
;
inversion_clear
EQ
.
-
constructor
.
by
apply
(
cancelableN
x
).
-
edestruct
Hirr
.
+
eapply
(
cmra_validN_op_l
0
x
y
),
(
cmra_validN_le
n
).
done
.
lia
.
+
eapply
dist_le
.
done
.
lia
.
-
edestruct
Hirr
.
+
eapply
(
cmra_validN_le
n
).
done
.
lia
.
+
eapply
dist_le
.
done
.
lia
.
-
destruct
(
Hirr
y
);
[
|
eauto
using
dist_le
with
lia
].
by
eapply
(
cmra_validN_op_l
0
x
y
),
(
cmra_validN_le
n
);
last
lia
.
-
destruct
(
Hirr
z
);
[
|
symmetry
;
eauto
using
dist_le
with
lia
].
by
eapply
(
cmra_validN_le
n
);
last
lia
.
-
done
.
Qed
.
End
option
.
...
...
theories/algebra/gmap.v
View file @
2c69c726
...
...
@@ -291,12 +291,10 @@ Qed.
Global
Instance
singleton_cancelable
i
x
:
Cancelable
(
Some
x
)
→
Cancelable
{
[
i
:=
x
]
}
.
Proof
.
intros
????
Hv
EQ
j
.
specialize
(
EQ
j
).
specialize
(
Hv
j
).
rewrite
!
lookup_op
in
EQ
,
Hv
.
destruct
(
decide
(
i
=
j
)).
-
subst
.
rewrite
lookup_singleton
in
EQ
,
Hv
.
by
eapply
cancelableN
.
-
rewrite
lookup_singleton_ne
// in EQ, Hv.
by
rewrite
->!
(
left_id
None
_
)
in
EQ
.
intros
?
n
m1
m2
Hv
EQ
j
.
move
:
(
Hv
j
)
(
EQ
j
).
rewrite
!
lookup_op
.
destruct
(
decide
(
i
=
j
))
as
[
->|
].
-
rewrite
lookup_singleton
.
by
apply
cancelableN
.
-
by
rewrite
lookup_singleton_ne
// !(left_id None _).
Qed
.
Lemma
insert_updateP
(
P
:
A
→
Prop
)
(
Q
:
gmap
K
A
→
Prop
)
m
i
x
:
...
...
@@ -460,15 +458,12 @@ Lemma delete_local_update_cancelable m1 m2 i mx `{!Cancelable mx} :
m1
!!
i
≡
mx
→
m2
!!
i
≡
mx
→
(
m1
,
m2
)
~
l
~>
(
delete
i
m1
,
delete
i
m2
).
Proof
.
intros
EQ1
EQ2
.
destruct
mx
as
[
x
|
],
(
m1
!!
i
)
as
[
m1i
|
]
eqn
:?
,
(
m2
!!
i
)
as
[
m2i
|
]
eqn
:?
;
inversion_clear
EQ1
;
inversion_clear
EQ2
.
-
rewrite
-{
1
}
(
insert_id
m1
i
m1i
)
// -{1}(insert_id m2 i m2i) //
-
(
insert_delete
m1
)
-
(
insert_delete
m2
)
!
insert_singleton_op
;
try
by
apply
lookup_delete
.
assert
(
m1i
≡
x
)
as
->
by
done
.
assert
(
m2i
≡
x
)
as
->
by
done
.
apply
cancel_local_update
,
_.
-
rewrite
!
delete_notin
//.
intros
Hm1i
Hm2i
.
apply
local_update_unital
=>
n
mf
Hmv
Hm
;
simpl
in
*
.
split
;
[
eauto
using
delete_validN
|
].
intros
j
.
destruct
(
decide
(
i
=
j
))
as
[
->|
].
-
move
:
(
Hm
j
).
rewrite
!
lookup_op
Hm1i
Hm2i
!
lookup_delete
.
intros
Hmx
.
rewrite
(
cancelableN
mx
n
(
mf
!!
j
)
None
)
?
right_id
// -Hmx -Hm1i. apply Hmv.
-
by
rewrite
lookup_op
!
lookup_delete_ne
// Hm lookup_op.
Qed
.
Lemma
delete_singleton_local_update_cancelable
m
i
x
`
{!
Cancelable
(
Some
x
)
}
:
...
...
theories/algebra/local_updates.v
View file @
2c69c726
...
...
@@ -48,7 +48,7 @@ Section updates.
Lemma
cancel_local_update
x
y
z
`
{!
Cancelable
x
}
:
(
x
⋅
y
,
x
⋅
z
)
~
l
~>
(
y
,
z
).
Proof
.
intros
?
f
?
Heq
.
split
;
first
by
eapply
cmra_validN_op_r
.
intros
n
f
?
Heq
.
split
;
first
by
eapply
cmra_validN_op_r
.
apply
(
cancelableN
x
);
first
done
.
by
rewrite
-
cmra_opM_assoc
.
Qed
.
...
...
@@ -119,9 +119,7 @@ Section updates_unital.
Lemma
cancel_local_update_empty
x
y
`
{!
Cancelable
x
}
:
(
x
⋅
y
,
x
)
~
l
~>
(
y
,
∅
).
Proof
.
rewrite
-{
2
}
(
right_id
∅
op
x
).
by
apply
cancel_local_update
.
Qed
.
Proof
.
rewrite
-{
2
}
(
right_id
∅
op
x
).
by
apply
cancel_local_update
.
Qed
.
End
updates_unital
.
(
**
*
Product
*
)
...
...
Write
Preview
Supports
Markdown
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