aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/environ.mli
blob: 4d979f0dc765b9a4382025c4e9a3044b2edaa14c (plain)
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

(* $Id$ *)

(*i*)
open Names
open Term
open Constant
open Inductive
open Abstraction
open Evd
open Univ
open Sign
(*i*)

(* Unsafe environments. We define here a datatype for environments. 
   Since typing is not yet defined, it is not possible to check the
   informations added in environments, and that is what we speak here
   of ``unsafe'' environments. *)

type 'a unsafe_env

val empty_env : 'a unsafe_env

val evar_map : 'a unsafe_env -> 'a evar_map
val universes : 'a unsafe_env -> universes
val metamap : 'a unsafe_env -> (int * constr) list
val context : 'a unsafe_env -> context

val push_var : identifier * typed_type -> 'a unsafe_env -> 'a unsafe_env
val push_rel : name * typed_type -> 'a unsafe_env -> 'a unsafe_env
val set_universes : universes -> 'a unsafe_env -> 'a unsafe_env
val add_constraints : constraints -> 'a unsafe_env -> 'a unsafe_env
val add_constant : 
  section_path -> constant_body -> 'a unsafe_env -> 'a unsafe_env
val add_mind : 
  section_path -> mutual_inductive_body -> 'a unsafe_env -> 'a unsafe_env
val add_abstraction : 
  section_path -> abstraction_body -> 'a unsafe_env -> 'a unsafe_env

val new_meta : unit -> int

val lookup_var : identifier -> 'a unsafe_env -> name * typed_type
val lookup_rel : int -> 'a unsafe_env -> name * typed_type
val lookup_constant : section_path -> 'a unsafe_env -> constant_body
val lookup_mind : section_path -> 'a unsafe_env -> mutual_inductive_body
val lookup_mind_specif : constr -> 'a unsafe_env -> mind_specif
val lookup_meta : int -> 'a unsafe_env -> constr

val id_of_global : 'a unsafe_env -> sorts oper -> identifier
val id_of_name_using_hdchar : 'a unsafe_env -> constr -> name -> identifier
val named_hd : 'a unsafe_env -> constr -> name -> name
val prod_name : 'a unsafe_env -> name * constr * constr -> constr

val translucent_abst : 'a unsafe_env -> constr -> bool
val evaluable_abst : 'a unsafe_env -> constr -> bool
val abst_value : 'a unsafe_env -> constr -> constr

val defined_const : 'a unsafe_env -> constr -> bool
val translucent_const : 'a unsafe_env -> constr -> bool
val evaluable_const : 'a unsafe_env -> constr -> bool

val is_existential : constr -> bool

(*s Modules. *)

type compiled_env

val export : 'a unsafe_env -> string -> compiled_env
val import : compiled_env -> 'a unsafe_env -> 'a unsafe_env

(*s Unsafe judgments. We introduce here the pre-type of judgments, which is
  actually only a datatype to store a term with its type and the type of its
  type. *)

type unsafe_judgment = { 
  uj_val : constr;
  uj_type : constr;
  uj_kind : constr }

val cast_of_judgment : unsafe_judgment -> constr