aboutsummaryrefslogtreecommitdiffhomepage
path: root/engine
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-10-19 18:47:50 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-10-19 19:39:37 +0200
commit94502de7ecf7db3830b2e419f43627fa2c8c1c87 (patch)
tree42c0330deb0776736b81e695d5505c71835a99f9 /engine
parentc7dcb76ffff6b12b031e906b002b4d76c1aaea50 (diff)
Removing some unsafe uses of monotonicity.
Diffstat (limited to 'engine')
-rw-r--r--engine/sigma.ml10
-rw-r--r--engine/sigma.mli16
2 files changed, 26 insertions, 0 deletions
diff --git a/engine/sigma.ml b/engine/sigma.ml
index e6189e29c..e3e83b602 100644
--- a/engine/sigma.ml
+++ b/engine/sigma.ml
@@ -23,6 +23,8 @@ let lift_evar evk () = evk
let to_evar_map evd = evd
let to_evar evk = evk
+let here x s = Sigma (x, s, ())
+
(** API *)
type 'r fresh = Fresh : 's evar * 's t * ('r, 's) le -> 'r fresh
@@ -34,6 +36,14 @@ let new_evar sigma ?naming info =
let define evk c sigma =
Sigma ((), Evd.define evk c sigma, ())
+let fresh_constructor_instance env sigma pc =
+ let (sigma, c) = Evd.fresh_constructor_instance env sigma pc in
+ Sigma (c, sigma, ())
+
+let fresh_global ?rigid ?names env sigma r =
+ let (sigma, c) = Evd.fresh_global ?rigid ?names env sigma r in
+ Sigma (c, sigma, ())
+
(** Run *)
type 'a run = { run : 'r. 'r t -> ('a, 'r) sigma }
diff --git a/engine/sigma.mli b/engine/sigma.mli
index f4c47e08c..6ac56bb3e 100644
--- a/engine/sigma.mli
+++ b/engine/sigma.mli
@@ -6,6 +6,9 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
+open Names
+open Constr
+
(** Monotonous state enforced by typing.
This module allows to constrain uses of evarmaps in a monotonous fashion,
@@ -37,6 +40,11 @@ type ('a, 'r) sigma = Sigma : 'a * 's t * ('r, 's) le -> ('a, 'r) sigma
type 'r evar
(** Stage-indexed evars *)
+(** {5 Constructors} *)
+
+val here : 'a -> 'r t -> ('a, 'r) sigma
+(** [here x s] is a shorthand for [Sigma (x, s, refl)] *)
+
(** {5 Postponing} *)
val lift_evar : 'r evar -> ('r, 's) le -> 's evar
@@ -56,6 +64,14 @@ val new_evar : 'r t -> ?naming:Misctypes.intro_pattern_naming_expr ->
val define : 'r evar -> Constr.t -> 'r t -> (unit, 'r) sigma
+(** Polymorphic universes *)
+
+val fresh_constructor_instance : Environ.env -> 'r t -> constructor ->
+ (pconstructor, 'r) sigma
+
+val fresh_global : ?rigid:Evd.rigid -> ?names:Univ.Instance.t -> Environ.env ->
+ 'r t -> Globnames.global_reference -> (constr, 'r) sigma
+
(** FILLME *)
(** {5 Run} *)