sig
type 'v var = Local of int | NonLocal of 'v
type 'v env
exception KindError of (Buffer.t -> unit -> unit)
val implication_only_on_arrow : 'v KindCheck.env -> 'a
val empty : Module.name -> 'v KindCheck.env
val module_name : 'v KindCheck.env -> Module.name
val location : 'v KindCheck.env -> SurfaceSyntax.location
val find_variable :
'v KindCheck.env ->
Variable.name SurfaceSyntax.maybe_qualified -> 'v KindCheck.var
val find_kind :
'v KindCheck.env ->
Variable.name SurfaceSyntax.maybe_qualified -> Kind.kind
val find_nonlocal_variable : 'v KindCheck.env -> Variable.name -> 'v
val resolve_datacon :
'v KindCheck.env ->
SurfaceSyntax.datacon_reference ->
'v KindCheck.var * Datacon.name * DataTypeFlavor.flavor
val get_exports : 'v KindCheck.env -> (Variable.name * 'v) list
val locate : 'v KindCheck.env -> SurfaceSyntax.location -> 'v KindCheck.env
val enter_module : 'v KindCheck.env -> Module.name -> 'v KindCheck.env
val extend :
'v KindCheck.env -> SurfaceSyntax.type_binding list -> 'v KindCheck.env
val bind_nonlocal :
'v KindCheck.env -> Variable.name * Kind.kind * 'v -> 'v KindCheck.env
val dissolve : 'v KindCheck.env -> Module.name -> 'v KindCheck.env
val bindings_data_group_types :
SurfaceSyntax.data_type_def list -> SurfaceSyntax.type_binding list
val bind_data_group_datacons :
'v KindCheck.env -> SurfaceSyntax.data_type_def list -> 'v KindCheck.env
val bind_nonlocal_datacon :
'v KindCheck.env ->
Datacon.name -> SurfaceSyntax.datacon_info -> 'v -> 'v KindCheck.env
val bind_external_name :
'v KindCheck.env ->
Module.name -> Variable.name -> Kind.kind -> 'v -> 'v KindCheck.env
val bind_external_datacon :
'v KindCheck.env ->
Module.name ->
Datacon.name -> SurfaceSyntax.datacon_info -> 'v -> 'v KindCheck.env
val bv : SurfaceSyntax.pattern -> SurfaceSyntax.type_binding list
val names : SurfaceSyntax.typ -> SurfaceSyntax.type_binding list
val infer_reset : 'v KindCheck.env -> SurfaceSyntax.typ -> Kind.kind
val check_implementation :
'v KindCheck.env -> SurfaceSyntax.implementation -> unit
val check_interface : 'v KindCheck.env -> SurfaceSyntax.interface -> unit
val p : Buffer.t -> 'a KindCheck.env -> unit
end