forked from DeepSpec/InteractionTrees
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Events.v
89 lines (72 loc) · 1.15 KB
/
Events.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
(** * Standard event types *)
(* begin hide *)
From ITree.Events Require
State
Reader
Writer
Exception
Nondeterminism
Map
Concurrency
Dependent.
(* end hide *)
(** ** State *)
(**
[[
Variant stateE (S : Type) : Type -> Type :=
| Get : stateE S S
| Put : S -> stateE S unit.
]]
*)
(** ** Reader *)
(**
[[
Variant readerE (R : Type) : Type -> Type :=
| Ask : readerE R R.
]]
*)
(** ** Writer *)
(**
[[
Variant writerE (W : Type) : Type -> Type :=
| Tell : W -> writerE W unit.
]]
*)
(** ** Exception *)
(**
[[
Variant exceptE (Err : Type) : Type -> Type :=
| Throw : Err -> exceptE Err void.
]]
*)
(** ** Nondeterminism *)
(**
[[
Variant nondetE : Type -> Type :=
| Or : nondetE bool.
]]
*)
(** ** Map *)
(**
[[
Variant mapE (K V : Type) : Type -> Type :=
| Insert : K -> V -> mapE unit
| Lookup : K -> mapE (option V)
| Remove : K -> mapE unit
.
]]
*)
(** ** Concurrency *)
(**
[[
Inductive spawnE (E : Type -> Type) : Type -> Type :=
| Spawn : itree (spawnE E +' E) unit -> spawnE E unit.
]]
*)
(** ** Dependent *)
(**
[[
Variant depE {I : Type} (F : I -> Type) : Type -> Type :=
| Dep (i : I) : depE F (F i).
]]
*)