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
Jonas Kastberg
iris
Commits
94216199
Commit
94216199
authored
Mar 10, 2016
by
Robbert Krebbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Give the project a top-level name so it can be make installed.
Thanks to Amin Timany for the suggestion.
parent
d72200d0
Changes
92
Hide whitespace changes
Inline
Side-by-side
Showing
92 changed files
with
168 additions
and
168 deletions
+168
-168
_CoqProject
_CoqProject
+1
-1
algebra/agree.v
algebra/agree.v
+2
-2
algebra/auth.v
algebra/auth.v
+2
-2
algebra/base.v
algebra/base.v
+1
-1
algebra/cmra.v
algebra/cmra.v
+1
-1
algebra/cmra_big_op.v
algebra/cmra_big_op.v
+2
-2
algebra/cmra_tactics.v
algebra/cmra_tactics.v
+2
-2
algebra/cofe.v
algebra/cofe.v
+1
-1
algebra/cofe_solver.v
algebra/cofe_solver.v
+1
-1
algebra/dec_agree.v
algebra/dec_agree.v
+1
-1
algebra/dra.v
algebra/dra.v
+1
-1
algebra/excl.v
algebra/excl.v
+2
-2
algebra/fin_maps.v
algebra/fin_maps.v
+3
-3
algebra/frac.v
algebra/frac.v
+2
-2
algebra/iprod.v
algebra/iprod.v
+2
-2
algebra/option.v
algebra/option.v
+2
-2
algebra/sts.v
algebra/sts.v
+3
-3
algebra/upred.v
algebra/upred.v
+1
-1
algebra/upred_big_op.v
algebra/upred_big_op.v
+2
-2
algebra/upred_tactics.v
algebra/upred_tactics.v
+2
-2
barrier/barrier.v
barrier/barrier.v
+1
-1
barrier/client.v
barrier/client.v
+3
-3
barrier/proof.v
barrier/proof.v
+6
-6
barrier/protocol.v
barrier/protocol.v
+2
-2
barrier/specification.v
barrier/specification.v
+3
-3
heap_lang/derived.v
heap_lang/derived.v
+1
-1
heap_lang/heap.v
heap_lang/heap.v
+4
-4
heap_lang/lang.v
heap_lang/lang.v
+3
-3
heap_lang/lifting.v
heap_lang/lifting.v
+5
-5
heap_lang/notation.v
heap_lang/notation.v
+1
-1
heap_lang/par.v
heap_lang/par.v
+2
-2
heap_lang/spawn.v
heap_lang/spawn.v
+3
-3
heap_lang/substitution.v
heap_lang/substitution.v
+1
-1
heap_lang/tactics.v
heap_lang/tactics.v
+2
-2
heap_lang/tests.v
heap_lang/tests.v
+2
-2
heap_lang/wp_tactics.v
heap_lang/wp_tactics.v
+2
-2
prelude/bsets.v
prelude/bsets.v
+1
-1
prelude/co_pset.v
prelude/co_pset.v
+2
-2
prelude/collections.v
prelude/collections.v
+1
-1
prelude/countable.v
prelude/countable.v
+1
-1
prelude/decidable.v
prelude/decidable.v
+1
-1
prelude/error.v
prelude/error.v
+1
-1
prelude/fin_collections.v
prelude/fin_collections.v
+2
-2
prelude/fin_map_dom.v
prelude/fin_map_dom.v
+1
-1
prelude/fin_maps.v
prelude/fin_maps.v
+1
-1
prelude/finite.v
prelude/finite.v
+1
-1
prelude/functions.v
prelude/functions.v
+1
-1
prelude/gmap.v
prelude/gmap.v
+2
-2
prelude/hashset.v
prelude/hashset.v
+2
-2
prelude/lexico.v
prelude/lexico.v
+1
-1
prelude/list.v
prelude/list.v
+1
-1
prelude/listset.v
prelude/listset.v
+1
-1
prelude/listset_nodup.v
prelude/listset_nodup.v
+1
-1
prelude/mapset.v
prelude/mapset.v
+1
-1
prelude/natmap.v
prelude/natmap.v
+1
-1
prelude/nmap.v
prelude/nmap.v
+2
-2
prelude/numbers.v
prelude/numbers.v
+1
-1
prelude/option.v
prelude/option.v
+1
-1
prelude/orders.v
prelude/orders.v
+1
-1
prelude/pmap.v
prelude/pmap.v
+2
-2
prelude/prelude.v
prelude/prelude.v
+1
-1
prelude/pretty.v
prelude/pretty.v
+2
-2
prelude/proof_irrel.v
prelude/proof_irrel.v
+1
-1
prelude/relations.v
prelude/relations.v
+1
-1
prelude/sets.v
prelude/sets.v
+1
-1
prelude/streams.v
prelude/streams.v
+1
-1
prelude/stringmap.v
prelude/stringmap.v
+2
-2
prelude/strings.v
prelude/strings.v
+1
-1
prelude/tactics.v
prelude/tactics.v
+1
-1
prelude/vector.v
prelude/vector.v
+1
-1
prelude/zmap.v
prelude/zmap.v
+2
-2
program_logic/adequacy.v
program_logic/adequacy.v
+2
-2
program_logic/auth.v
program_logic/auth.v
+2
-2
program_logic/ghost_ownership.v
program_logic/ghost_ownership.v
+4
-4
program_logic/global_functor.v
program_logic/global_functor.v
+2
-2
program_logic/hoare.v
program_logic/hoare.v
+1
-1
program_logic/hoare_lifting.v
program_logic/hoare_lifting.v
+3
-3
program_logic/invariants.v
program_logic/invariants.v
+6
-6
program_logic/language.v
program_logic/language.v
+1
-1
program_logic/lifting.v
program_logic/lifting.v
+2
-2
program_logic/model.v
program_logic/model.v
+3
-3
program_logic/namespaces.v
program_logic/namespaces.v
+2
-2
program_logic/ownership.v
program_logic/ownership.v
+1
-1
program_logic/pviewshifts.v
program_logic/pviewshifts.v
+3
-3
program_logic/resources.v
program_logic/resources.v
+3
-3
program_logic/saved_prop.v
program_logic/saved_prop.v
+2
-2
program_logic/sts.v
program_logic/sts.v
+2
-2
program_logic/tactics.v
program_logic/tactics.v
+2
-2
program_logic/tests.v
program_logic/tests.v
+1
-1
program_logic/viewshifts.v
program_logic/viewshifts.v
+2
-2
program_logic/weakestpre.v
program_logic/weakestpre.v
+2
-2
program_logic/wsat.v
program_logic/wsat.v
+3
-3
No files found.
_CoqProject
View file @
94216199
-Q .
""
-Q .
iris
prelude/option.v
prelude/fin_map_dom.v
prelude/bsets.v
...
...
algebra/agree.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
upred
.
Local
Hint
Extern
10
(
_
≤
_
)
=>
omega
.
Record
agree
(
A
:
Type
)
:
Type
:
=
Agree
{
...
...
algebra/auth.v
View file @
94216199
From
algebra
Require
Export
excl
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
excl
.
From
iris
.
algebra
Require
Import
upred
.
Local
Arguments
valid
_
_
!
_
/.
Local
Arguments
validN
_
_
_
!
_
/.
...
...
algebra/base.v
View file @
94216199
From
mathcomp
Require
Export
ssreflect
.
From
prelude
Require
Export
prelude
.
From
iris
.
prelude
Require
Export
prelude
.
Global
Set
Bullet
Behavior
"Strict Subproofs"
.
Global
Open
Scope
general_if_scope
.
Ltac
done
:
=
prelude
.
tactics
.
done
.
\ No newline at end of file
algebra/cmra.v
View file @
94216199
From
algebra
Require
Export
cofe
.
From
iris
.
algebra
Require
Export
cofe
.
Class
Core
(
A
:
Type
)
:
=
core
:
A
→
A
.
Instance
:
Params
(@
core
)
2
.
...
...
algebra/cmra_big_op.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
prelude
Require
Import
gmap
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
prelude
Require
Import
gmap
.
Fixpoint
big_op
{
A
:
cmraT
}
`
{
Empty
A
}
(
xs
:
list
A
)
:
A
:
=
match
xs
with
[]
=>
∅
|
x
::
xs
=>
x
⋅
big_op
xs
end
.
...
...
algebra/cmra_tactics.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
cmra_big_op
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
cmra_big_op
.
(** * Simple solver for validity and inclusion by reflection *)
Module
ra_reflection
.
Section
ra_reflection
.
...
...
algebra/cofe.v
View file @
94216199
From
algebra
Require
Export
base
.
From
iris
.
algebra
Require
Export
base
.
(** This files defines (a shallow embedding of) the category of COFEs:
Complete ordered families of equivalences. This is a cartesian closed
...
...
algebra/cofe_solver.v
View file @
94216199
From
algebra
Require
Export
cofe
.
From
iris
.
algebra
Require
Export
cofe
.
Record
solution
(
F
:
cFunctor
)
:
=
Solution
{
solution_car
:
>
cofeT
;
...
...
algebra/dec_agree.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Export
cmra
.
Local
Arguments
validN
_
_
_
!
_
/.
Local
Arguments
valid
_
_
!
_
/.
Local
Arguments
op
_
_
_
!
_
/.
...
...
algebra/dra.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Export
cmra
.
(** From disjoint pcm *)
Record
validity
{
A
}
(
P
:
A
→
Prop
)
:
Type
:
=
Validity
{
...
...
algebra/excl.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
upred
.
Local
Arguments
validN
_
_
_
!
_
/.
Local
Arguments
valid
_
_
!
_
/.
...
...
algebra/fin_maps.v
View file @
94216199
From
algebra
Require
Export
cmra
option
.
From
prelude
Require
Export
gmap
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
option
.
From
iris
.
prelude
Require
Export
gmap
.
From
iris
.
algebra
Require
Import
upred
.
Section
cofe
.
Context
`
{
Countable
K
}
{
A
:
cofeT
}.
...
...
algebra/frac.v
View file @
94216199
From
Coq
.
QArith
Require
Import
Qcanon
.
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
upred
.
Local
Arguments
validN
_
_
_
!
_
/.
Local
Arguments
valid
_
_
!
_
/.
Local
Arguments
div
_
_
!
_
!
_
/.
...
...
algebra/iprod.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
upred
.
(** * Indexed product *)
(** Need to put this in a definition to make canonical structures to work. *)
...
...
algebra/option.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
upred
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
upred
.
(* COFE *)
Section
cofe
.
...
...
algebra/sts.v
View file @
94216199
From
prelude
Require
Export
sets
.
From
algebra
Require
Export
cmra
.
From
algebra
Require
Import
dra
.
From
iris
.
prelude
Require
Export
sets
.
From
iris
.
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Import
dra
.
Local
Arguments
valid
_
_
!
_
/.
Local
Arguments
op
_
_
!
_
!
_
/.
Local
Arguments
core
_
_
!
_
/.
...
...
algebra/upred.v
View file @
94216199
From
algebra
Require
Export
cmra
.
From
iris
.
algebra
Require
Export
cmra
.
Local
Hint
Extern
1
(
_
≼
_
)
=>
etrans
;
[
eassumption
|].
Local
Hint
Extern
1
(
_
≼
_
)
=>
etrans
;
[|
eassumption
].
Local
Hint
Extern
10
(
_
≤
_
)
=>
omega
.
...
...
algebra/upred_big_op.v
View file @
94216199
From
algebra
Require
Export
upred
.
From
prelude
Require
Import
gmap
fin_collections
.
From
iris
.
algebra
Require
Export
upred
.
From
iris
.
prelude
Require
Import
gmap
fin_collections
.
Import
uPred
.
(** * Big ops over lists *)
...
...
algebra/upred_tactics.v
View file @
94216199
From
algebra
Require
Export
upred
.
From
algebra
Require
Export
upred_big_op
.
From
iris
.
algebra
Require
Export
upred
.
From
iris
.
algebra
Require
Export
upred_big_op
.
Import
uPred
.
Module
uPred_reflection
.
Section
uPred_reflection
.
...
...
barrier/barrier.v
View file @
94216199
From
heap_lang
Require
Export
notation
.
From
iris
.
heap_lang
Require
Export
notation
.
Definition
newbarrier
:
val
:
=
λ
:
<>,
ref
#
0
.
Definition
signal
:
val
:
=
λ
:
"x"
,
'
"x"
<-
#
1
.
...
...
barrier/client.v
View file @
94216199
From
barrier
Require
Import
proof
.
From
heap_lang
Require
Import
par
.
From
program_logic
Require
Import
auth
sts
saved_prop
hoare
ownership
.
From
iris
.
barrier
Require
Import
proof
.
From
iris
.
heap_lang
Require
Import
par
.
From
iris
.
program_logic
Require
Import
auth
sts
saved_prop
hoare
ownership
.
Import
uPred
.
Definition
worker
(
n
:
Z
)
:
val
:
=
...
...
barrier/proof.v
View file @
94216199
From
prelude
Require
Import
functions
.
From
algebra
Require
Import
upred_big_op
.
From
program_logic
Require
Import
sts
saved_prop
tactics
.
From
heap_lang
Require
Export
heap
wp_tactics
.
From
barrier
Require
Export
barrier
.
From
barrier
Require
Import
protocol
.
From
iris
.
prelude
Require
Import
functions
.
From
iris
.
algebra
Require
Import
upred_big_op
.
From
iris
.
program_logic
Require
Import
sts
saved_prop
tactics
.
From
iris
.
heap_lang
Require
Export
heap
wp_tactics
.
From
iris
.
barrier
Require
Export
barrier
.
From
iris
.
barrier
Require
Import
protocol
.
Import
uPred
.
(** The CMRAs we need. *)
...
...
barrier/protocol.v
View file @
94216199
From
algebra
Require
Export
sts
.
From
program_logic
Require
Import
ghost_ownership
.
From
iris
.
algebra
Require
Export
sts
.
From
iris
.
program_logic
Require
Import
ghost_ownership
.
(** The STS describing the main barrier protocol. Every state has an index-set
associated with it. These indices are actually [gname], because we use them
...
...
barrier/specification.v
View file @
94216199
From
program_logic
Require
Export
hoare
.
From
barrier
Require
Export
barrier
.
From
barrier
Require
Import
proof
.
From
iris
.
program_logic
Require
Export
hoare
.
From
iris
.
barrier
Require
Export
barrier
.
From
iris
.
barrier
Require
Import
proof
.
Import
uPred
.
Section
spec
.
...
...
heap_lang/derived.v
View file @
94216199
From
heap_lang
Require
Export
lifting
.
From
iris
.
heap_lang
Require
Export
lifting
.
Import
uPred
.
(** Define some derived forms, and derived lemmas about them. *)
...
...
heap_lang/heap.v
View file @
94216199
From
heap_lang
Require
Export
lifting
.
From
algebra
Require
Import
upred_big_op
frac
dec_agree
.
From
program_logic
Require
Export
invariants
ghost_ownership
.
From
program_logic
Require
Import
ownership
auth
.
From
iris
.
heap_lang
Require
Export
lifting
.
From
iris
.
algebra
Require
Import
upred_big_op
frac
dec_agree
.
From
iris
.
program_logic
Require
Export
invariants
ghost_ownership
.
From
iris
.
program_logic
Require
Import
ownership
auth
.
Import
uPred
.
(* TODO: The entire construction could be generalized to arbitrary languages that have
a finmap as their state. Or maybe even beyond "as their state", i.e. arbitrary
...
...
heap_lang/lang.v
View file @
94216199
From
program_logic
Require
Export
language
.
From
prelude
Require
Export
strings
.
From
prelude
Require
Import
gmap
.
From
iris
.
program_logic
Require
Export
language
.
From
iris
.
prelude
Require
Export
strings
.
From
iris
.
prelude
Require
Import
gmap
.
Module
heap_lang
.
Open
Scope
Z_scope
.
...
...
heap_lang/lifting.v
View file @
94216199
From
program_logic
Require
Export
weakestpre
.
From
heap_lang
Require
Export
lang
.
From
program_logic
Require
Import
lifting
.
From
program_logic
Require
Import
ownership
.
(* for ownP *)
From
heap_lang
Require
Import
tactics
.
From
iris
.
program_logic
Require
Export
weakestpre
.
From
iris
.
heap_lang
Require
Export
lang
.
From
iris
.
program_logic
Require
Import
lifting
.
From
iris
.
program_logic
Require
Import
ownership
.
(* for ownP *)
From
iris
.
heap_lang
Require
Import
tactics
.
Import
uPred
.
Local
Hint
Extern
0
(
language
.
reducible
_
_
)
=>
do_step
ltac
:
(
eauto
2
).
...
...
heap_lang/notation.v
View file @
94216199
From
heap_lang
Require
Export
derived
.
From
iris
.
heap_lang
Require
Export
derived
.
Export
heap_lang
.
Arguments
wp
{
_
_
}
_
_
%
E
_
.
...
...
heap_lang/par.v
View file @
94216199
From
heap_lang
Require
Export
heap
spawn
.
From
heap_lang
Require
Import
wp_tactics
notation
.
From
iris
.
heap_lang
Require
Export
heap
spawn
.
From
iris
.
heap_lang
Require
Import
wp_tactics
notation
.
Import
uPred
.
Definition
par
:
val
:
=
...
...
heap_lang/spawn.v
View file @
94216199
From
program_logic
Require
Export
global_functor
.
From
heap_lang
Require
Export
heap
.
From
heap_lang
Require
Import
wp_tactics
notation
.
From
iris
.
program_logic
Require
Export
global_functor
.
From
iris
.
heap_lang
Require
Export
heap
.
From
iris
.
heap_lang
Require
Import
wp_tactics
notation
.
Import
uPred
.
Definition
spawn
:
val
:
=
...
...
heap_lang/substitution.v
View file @
94216199
From
heap_lang
Require
Export
lang
.
From
iris
.
heap_lang
Require
Export
lang
.
Import
heap_lang
.
(** The tactic [simpl_subst] performs substitutions in the goal. Its behavior
...
...
heap_lang/tactics.v
View file @
94216199
From
heap_lang
Require
Export
substitution
.
From
prelude
Require
Import
fin_maps
.
From
iris
.
heap_lang
Require
Export
substitution
.
From
iris
.
prelude
Require
Import
fin_maps
.
Import
heap_lang
.
(** The tactic [inv_step] performs inversion on hypotheses of the shape
...
...
heap_lang/tests.v
View file @
94216199
(** This file is essentially a bunch of testcases. *)
From
program_logic
Require
Import
ownership
hoare
auth
.
From
heap_lang
Require
Import
wp_tactics
heap
notation
.
From
iris
.
program_logic
Require
Import
ownership
hoare
auth
.
From
iris
.
heap_lang
Require
Import
wp_tactics
heap
notation
.
Import
uPred
.
Section
LangTests
.
...
...
heap_lang/wp_tactics.v
View file @
94216199
From
algebra
Require
Export
upred_tactics
.
From
heap_lang
Require
Export
tactics
derived
substitution
.
From
iris
.
algebra
Require
Export
upred_tactics
.
From
iris
.
heap_lang
Require
Export
tactics
derived
substitution
.
Import
uPred
.
(** wp-specific helper tactics *)
...
...
prelude/bsets.v
View file @
94216199
(* Copyright (c) 2012-2015, Robbert Krebbers. *)
(* This file is distributed under the terms of the BSD license. *)
(** This file implements bsets as functions into Prop. *)
From
prelude
Require
Export
prelude
.
From
iris
.
prelude
Require
Export
prelude
.
Record
bset
(
A
:
Type
)
:
Type
:
=
mkBSet
{
bset_car
:
A
→
bool
}.
Arguments
mkBSet
{
_
}
_
.
...
...
prelude/co_pset.v
View file @
94216199
...
...
@@ -2,8 +2,8 @@
(* This file is distributed under the terms of the BSD license. *)
(** This files implements an efficient implementation of finite/cofinite sets
of positive binary naturals [positive]. *)
From
prelude
Require
Export
collections
.
From
prelude
Require
Import
pmap
gmap
mapset
.
From
iris
.
prelude
Require
Export
collections
.
From
iris
.
prelude
Require
Import
pmap
gmap
mapset
.
Local
Open
Scope
positive_scope
.
(** * The tree data structure *)
...
...
prelude/collections.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file collects definitions and theorems on collections. Most
importantly, it implements some tactics to automatically solve goals involving
collections. *)
From
prelude
Require
Export
base
tactics
orders
.
From
iris
.
prelude
Require
Export
base
tactics
orders
.
Instance
collection_subseteq
`
{
ElemOf
A
C
}
:
SubsetEq
C
:
=
λ
X
Y
,
∀
x
,
x
∈
X
→
x
∈
Y
.
...
...
prelude/countable.v
View file @
94216199
(* Copyright (c) 2012-2015, Robbert Krebbers. *)
(* This file is distributed under the terms of the BSD license. *)
From
prelude
Require
Export
list
.
From
iris
.
prelude
Require
Export
list
.
Local
Open
Scope
positive
.
Class
Countable
A
`
{
∀
x
y
:
A
,
Decision
(
x
=
y
)}
:
=
{
...
...
prelude/decidable.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file collects theorems, definitions, tactics, related to propositions
with a decidable equality. Such propositions are collected by the [Decision]
type class. *)
From
prelude
Require
Export
proof_irrel
.
From
iris
.
prelude
Require
Export
proof_irrel
.
Hint
Extern
200
(
Decision
_
)
=>
progress
(
lazy
beta
)
:
typeclass_instances
.
...
...
prelude/error.v
View file @
94216199
(* Copyright (c) 2012-2015, Robbert Krebbers. *)
(* This file is distributed under the terms of the BSD license. *)
From
prelude
Require
Export
list
.
From
iris
.
prelude
Require
Export
list
.
Definition
error
(
S
E
A
:
Type
)
:
Type
:
=
S
→
E
+
(
A
*
S
).
...
...
prelude/fin_collections.v
View file @
94216199
...
...
@@ -4,8 +4,8 @@
importantly, it implements a fold and size function and some useful induction
principles on finite collections . *)
From
Coq
Require
Import
Permutation
.
From
prelude
Require
Import
relations
listset
.
From
prelude
Require
Export
numbers
collections
.
From
iris
.
prelude
Require
Import
relations
listset
.
From
iris
.
prelude
Require
Export
numbers
collections
.
Instance
collection_size
`
{
Elements
A
C
}
:
Size
C
:
=
length
∘
elements
.
Definition
collection_fold
`
{
Elements
A
C
}
{
B
}
...
...
prelude/fin_map_dom.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file provides an axiomatization of the domain function of finite
maps. We provide such an axiomatization, instead of implementing the domain
function in a generic way, to allow more efficient implementations. *)
From
prelude
Require
Export
collections
fin_maps
.
From
iris
.
prelude
Require
Export
collections
fin_maps
.
Class
FinMapDom
K
M
D
`
{
FMap
M
,
∀
A
,
Lookup
K
A
(
M
A
),
∀
A
,
Empty
(
M
A
),
∀
A
,
PartialAlter
K
A
(
M
A
),
...
...
prelude/fin_maps.v
View file @
94216199
...
...
@@ -5,7 +5,7 @@ finite maps and collects some theory on it. Most importantly, it proves useful
induction principles for finite maps and implements the tactic
[simplify_map_eq] to simplify goals involving finite maps. *)
From
Coq
Require
Import
Permutation
.
From
prelude
Require
Export
relations
vector
orders
.
From
iris
.
prelude
Require
Export
relations
vector
orders
.
(** * Axiomatization of finite maps *)
(** We require Leibniz equality to be extensional on finite maps. This of
...
...
prelude/finite.v
View file @
94216199
(* Copyright (c) 2012-2015, Robbert Krebbers. *)
(* This file is distributed under the terms of the BSD license. *)
From
prelude
Require
Export
countable
list
.
From
iris
.
prelude
Require
Export
countable
list
.
Class
Finite
A
`
{
∀
x
y
:
A
,
Decision
(
x
=
y
)}
:
=
{
enum
:
list
A
;
...
...
prelude/functions.v
View file @
94216199
From
prelude
Require
Export
base
tactics
.
From
iris
.
prelude
Require
Export
base
tactics
.
Section
definitions
.
Context
{
A
T
:
Type
}
`
{
∀
a
b
:
A
,
Decision
(
a
=
b
)}.
...
...
prelude/gmap.v
View file @
94216199
...
...
@@ -2,8 +2,8 @@
(* This file is distributed under the terms of the BSD license. *)
(** This file implements finite maps and finite sets with keys of any countable
type. The implementation is based on [Pmap]s, radix-2 search trees. *)
From
prelude
Require
Export
countable
fin_maps
fin_map_dom
.
From
prelude
Require
Import
pmap
mapset
sets
.
From
iris
.
prelude
Require
Export
countable
fin_maps
fin_map_dom
.
From
iris
.
prelude
Require
Import
pmap
mapset
sets
.
(** * The data structure *)
(** We pack a [Pmap] together with a proof that ensures that all keys correspond
...
...
prelude/hashset.v
View file @
94216199
...
...
@@ -3,8 +3,8 @@
(** This file implements finite set using hash maps. Hash sets are represented
using radix-2 search trees. Each hash bucket is thus indexed using an binary
integer of type [Z], and contains an unordered list without duplicates. *)
From
prelude
Require
Export
fin_maps
listset
.
From
prelude
Require
Import
zmap
.
From
iris
.
prelude
Require
Export
fin_maps
listset
.
From
iris
.
prelude
Require
Import
zmap
.
Record
hashset
{
A
}
(
hash
:
A
→
Z
)
:
=
Hashset
{
hashset_car
:
Zmap
(
list
A
)
;
...
...
prelude/lexico.v
View file @
94216199
...
...
@@ -2,7 +2,7 @@
(* This file is distributed under the terms of the BSD license. *)
(** This files defines a lexicographic order on various common data structures
and proves that it is a partial order having a strong variant of trichotomy. *)
From
prelude
Require
Import
numbers
.
From
iris
.
prelude
Require
Import
numbers
.
Notation
cast_trichotomy
T
:
=
match
T
with
...
...
prelude/list.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file collects general purpose definitions and theorems on lists that
are not in the Coq standard library. *)
From Coq Require Export Permutation.
From prelude Require Export numbers base option.
From
iris.
prelude Require Export numbers base option.
Arguments length {_} _.
Arguments cons {_} _ _.
...
...
prelude/listset.v
View file @
94216199
...
...
@@ -2,7 +2,7 @@
(* This file is distributed under the terms of the BSD license. *)
(** This file implements finite set as unordered lists without duplicates
removed. This implementation forms a monad. *)
From
prelude
Require
Export
collections
list
.
From
iris
.
prelude
Require
Export
collections
list
.
Record
listset
A
:
=
Listset
{
listset_car
:
list
A
}.
Arguments
listset_car
{
_
}
_
.
...
...
prelude/listset_nodup.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file implements finite as unordered lists without duplicates.
Although this implementation is slow, it is very useful as decidable equality
is the only constraint on the carrier set. *)
From
prelude
Require
Export
collections
list
.
From
iris
.
prelude
Require
Export
collections
list
.
Record
listset_nodup
A
:
=
ListsetNoDup
{
listset_nodup_car
:
list
A
;
listset_nodup_prf
:
NoDup
listset_nodup_car
...
...
prelude/mapset.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This files gives an implementation of finite sets using finite maps with
elements of the unit type. Since maps enjoy extensional equality, the
constructed finite sets do so as well. *)
From
prelude
Require
Export
fin_map_dom
.
From
iris
.
prelude
Require
Export
fin_map_dom
.
Record
mapset
(
M
:
Type
→
Type
)
:
Type
:
=
Mapset
{
mapset_car
:
M
(
unit
:
Type
)
}.
...
...
prelude/natmap.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This files implements a type [natmap A] of finite maps whose keys range
over Coq's data type of unary natural numbers [nat]. The implementation equips
a list with a proof of canonicity. *)
From
prelude
Require
Import
fin_maps
mapset
.
From
iris
.
prelude
Require
Import
fin_maps
mapset
.
Notation
natmap_raw
A
:
=
(
list
(
option
A
)).
Definition
natmap_wf
{
A
}
(
l
:
natmap_raw
A
)
:
=
...
...
prelude/nmap.v
View file @
94216199
...
...
@@ -2,8 +2,8 @@
(* This file is distributed under the terms of the BSD license. *)
(** This files extends the implementation of finite over [positive] to finite
maps whose keys range over Coq's data type of binary naturals [N]. *)
From
prelude
Require
Import
pmap
mapset
.
From
prelude
Require
Export
prelude
fin_maps
.
From
iris
.
prelude
Require
Import
pmap
mapset
.
From
iris
.
prelude
Require
Export
prelude
fin_maps
.
Local
Open
Scope
N_scope
.
...
...
prelude/numbers.v
View file @
94216199
...
...
@@ -5,7 +5,7 @@ natural numbers, and the type [Z] for integers. It also declares some useful
notations. *)
From
Coq
Require
Export
Eqdep
PArith
NArith
ZArith
NPeano
.
From
Coq
Require
Import
QArith
Qcanon
.
From
prelude
Require
Export
base
decidable
option
.
From
iris
.
prelude
Require
Export
base
decidable
option
.
Open
Scope
nat_scope
.
Coercion
Z
.
of_nat
:
nat
>->
Z
.
...
...
prelude/option.v
View file @
94216199
...
...
@@ -2,7 +2,7 @@
(* This file is distributed under the terms of the BSD license. *)
(** This file collects general purpose definitions and theorems on the option
data type that are not in the Coq standard library. *)
From
prelude
Require
Export
tactics
.
From
iris
.
prelude
Require
Export
tactics
.
Inductive
option_reflect
{
A
}
(
P
:
A
→
Prop
)
(
Q
:
Prop
)
:
option
A
→
Type
:
=
|
ReflectSome
x
:
P
x
→
option_reflect
P
Q
(
Some
x
)
...
...
prelude/orders.v
View file @
94216199
...
...
@@ -3,7 +3,7 @@
(** This file collects common properties of pre-orders and semi lattices. This
theory will mainly be used for the theory on collections and finite maps. *)
From
Coq
Require
Export
Sorted
.
From
prelude
Require
Export
tactics
list
.
From
iris
.
prelude
Require
Export
tactics
list
.
(** * Arbitrary pre-, parial and total orders *)
(** Properties about arbitrary pre-, partial, and total orders. We do not use
...
...
prelude/pmap.v
View file @
94216199
...
...
@@ -8,8 +8,8 @@ However, we extend Leroy's implementation by packing the trees into a Sigma
type such that canonicity of representation is ensured. This is necesarry for