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
Rodolphe Lepigre
Iris
Commits
156cbaba
Commit
156cbaba
authored
Oct 10, 2017
by
Ralf Jung
Browse files
Merge branch 'ci/primproj' into 'master'
use primitive projections for our mixins See merge request FP/iris-coq!69
parents
7db2fb65
a19d201e
Changes
2
Hide whitespace changes
Inline
Side-by-side
theories/algebra/cmra.v
View file @
156cbaba
...
...
@@ -39,27 +39,30 @@ Notation "x ≼{ n } y" := (includedN n x y)
Instance
:
Params
(@
includedN
)
4
.
Hint
Extern
0
(
_
≼
{
_
}
_
)
=>
reflexivity
.
Record
CMRAMixin
A
`
{
Dist
A
,
Equiv
A
,
PCore
A
,
Op
A
,
Valid
A
,
ValidN
A
}
:
=
{
(* setoids *)
mixin_cmra_op_ne
(
x
:
A
)
:
NonExpansive
(
op
x
)
;
mixin_cmra_pcore_ne
n
x
y
cx
:
x
≡
{
n
}
≡
y
→
pcore
x
=
Some
cx
→
∃
cy
,
pcore
y
=
Some
cy
∧
cx
≡
{
n
}
≡
cy
;
mixin_cmra_validN_ne
n
:
Proper
(
dist
n
==>
impl
)
(
validN
n
)
;
(* valid *)
mixin_cmra_valid_validN
x
:
✓
x
↔
∀
n
,
✓
{
n
}
x
;
mixin_cmra_validN_S
n
x
:
✓
{
S
n
}
x
→
✓
{
n
}
x
;
(* monoid *)
mixin_cmra_assoc
:
Assoc
(
≡
)
(
⋅
)
;
mixin_cmra_comm
:
Comm
(
≡
)
(
⋅
)
;
mixin_cmra_pcore_l
x
cx
:
pcore
x
=
Some
cx
→
cx
⋅
x
≡
x
;
mixin_cmra_pcore_idemp
x
cx
:
pcore
x
=
Some
cx
→
pcore
cx
≡
Some
cx
;
mixin_cmra_pcore_mono
x
y
cx
:
x
≼
y
→
pcore
x
=
Some
cx
→
∃
cy
,
pcore
y
=
Some
cy
∧
cx
≼
cy
;
mixin_cmra_validN_op_l
n
x
y
:
✓
{
n
}
(
x
⋅
y
)
→
✓
{
n
}
x
;
mixin_cmra_extend
n
x
y1
y2
:
✓
{
n
}
x
→
x
≡
{
n
}
≡
y1
⋅
y2
→
∃
z1
z2
,
x
≡
z1
⋅
z2
∧
z1
≡
{
n
}
≡
y1
∧
z2
≡
{
n
}
≡
y2
}.
Section
mixin
.
Local
Set
Primitive
Projections
.
Record
CMRAMixin
A
`
{
Dist
A
,
Equiv
A
,
PCore
A
,
Op
A
,
Valid
A
,
ValidN
A
}
:
=
{
(* setoids *)
mixin_cmra_op_ne
(
x
:
A
)
:
NonExpansive
(
op
x
)
;
mixin_cmra_pcore_ne
n
x
y
cx
:
x
≡
{
n
}
≡
y
→
pcore
x
=
Some
cx
→
∃
cy
,
pcore
y
=
Some
cy
∧
cx
≡
{
n
}
≡
cy
;
mixin_cmra_validN_ne
n
:
Proper
(
dist
n
==>
impl
)
(
validN
n
)
;
(* valid *)
mixin_cmra_valid_validN
x
:
✓
x
↔
∀
n
,
✓
{
n
}
x
;
mixin_cmra_validN_S
n
x
:
✓
{
S
n
}
x
→
✓
{
n
}
x
;
(* monoid *)
mixin_cmra_assoc
:
Assoc
(
≡
)
(
⋅
)
;
mixin_cmra_comm
:
Comm
(
≡
)
(
⋅
)
;
mixin_cmra_pcore_l
x
cx
:
pcore
x
=
Some
cx
→
cx
⋅
x
≡
x
;
mixin_cmra_pcore_idemp
x
cx
:
pcore
x
=
Some
cx
→
pcore
cx
≡
Some
cx
;
mixin_cmra_pcore_mono
x
y
cx
:
x
≼
y
→
pcore
x
=
Some
cx
→
∃
cy
,
pcore
y
=
Some
cy
∧
cx
≼
cy
;
mixin_cmra_validN_op_l
n
x
y
:
✓
{
n
}
(
x
⋅
y
)
→
✓
{
n
}
x
;
mixin_cmra_extend
n
x
y1
y2
:
✓
{
n
}
x
→
x
≡
{
n
}
≡
y1
⋅
y2
→
∃
z1
z2
,
x
≡
z1
⋅
z2
∧
z1
≡
{
n
}
≡
y1
∧
z2
≡
{
n
}
≡
y2
}.
End
mixin
.
(** Bundeled version *)
Structure
cmraT
:
=
CMRAT'
{
...
...
theories/algebra/ofe.v
View file @
156cbaba
...
...
@@ -33,11 +33,14 @@ Tactic Notation "ofe_subst" :=
|
H
:
@
dist
?A
?d
?n
_
?x
|-
_
=>
symmetry
in
H
;
setoid_subst_aux
(@
dist
A
d
n
)
x
end
.
Record
OfeMixin
A
`
{
Equiv
A
,
Dist
A
}
:
=
{
mixin_equiv_dist
x
y
:
x
≡
y
↔
∀
n
,
x
≡
{
n
}
≡
y
;
mixin_dist_equivalence
n
:
Equivalence
(
dist
n
)
;
mixin_dist_S
n
x
y
:
x
≡
{
S
n
}
≡
y
→
x
≡
{
n
}
≡
y
}.
Section
mixin
.
Local
Set
Primitive
Projections
.
Record
OfeMixin
A
`
{
Equiv
A
,
Dist
A
}
:
=
{
mixin_equiv_dist
x
y
:
x
≡
y
↔
∀
n
,
x
≡
{
n
}
≡
y
;
mixin_dist_equivalence
n
:
Equivalence
(
dist
n
)
;
mixin_dist_S
n
x
y
:
x
≡
{
S
n
}
≡
y
→
x
≡
{
n
}
≡
y
}.
End
mixin
.
(** Bundeled version *)
Structure
ofeT
:
=
OfeT'
{
...
...
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