Module Compiler_data.ScopedTerm

module SimpleTerm : sig ... end
type 'scope w_ty_loc = {
  1. scope : 'scope;
  2. name : F.t;
  3. ty : TypeAssignment.t MutableOnce.t;
  4. loc : Elpi_util.Util.Loc.t;
}
type const = Scope.t w_ty_loc
type uvar = unit w_ty_loc
type binder = string w_ty_loc
val show_binder : binder -> Ppx_deriving_runtime.string
val mk_w_ty_loc : ?ty:TypeAssignment.t MutableOnce.t -> scope:'a -> F.t -> loc:Elpi_util.Util.Loc.t -> 'a w_ty_loc
val mk_global_const : ?ty:TypeAssignment.t MutableOnce.t -> ?escape_ns:bool -> loc:Elpi_util.Util.Loc.t -> F.t -> const
val mk_uvar : ?ty:TypeAssignment.t MutableOnce.t -> F.t -> loc:Elpi_util.Util.Loc.t -> unit w_ty_loc
val mk_binder : ?ty:TypeAssignment.t MutableOnce.t -> lang:'a -> F.t -> loc:Elpi_util.Util.Loc.t -> 'a w_ty_loc
val bind_const : binder -> const
val const_of_symb : types:TypingEnv.t -> Symbol.t -> loc:Elpi_util.Util.Loc.t -> const
val clone_const : ?clone_scope:('a -> 'a) -> 'a w_ty_loc -> 'a w_ty_loc
type spill_info =
  1. | NoInfo
  2. | Main of int
  3. | Phantom of int
val show_spill_info : spill_info -> Ppx_deriving_runtime.string
type t_ =
  1. | Impl of SimpleTerm.impl_kind * Elpi_util.Util.Loc.t * t * t
  2. | Discard of {
    1. mutable heapify : bool;
    }
  3. | UVar of uvar * t list
  4. | App of const * t list
  5. | Lam of binder option * ScopedTypeExpression.e option * t
  6. | CData of Elpi_util.Util.CData.t
  7. | Spill of t * spill_info ref
  8. | Cast of t * ScopedTypeExpression.e
val mkGlobalApp : ?ty:TypeAssignment.t MutableOnce.t -> ?escape_ns:bool -> loc:Elpi_util.Util.Loc.t -> F.t -> t list -> t_
val mkBoundApp : ?ty:TypeAssignment.t MutableOnce.t -> lang:Scope.language -> loc:Elpi_util.Util.Loc.t -> F.t -> t list -> t_
val mkUVar : ?ty:TypeAssignment.t MutableOnce.t -> loc:Elpi_util.Util.Loc.t -> F.t -> t list -> t_
val type_of : t -> TypeAssignment.ty
val lam : int
val app : int
val lvl_of : t_ -> int
val get_lam_name : (F.t * 'a) option -> F.t
val mk_empty_lam_type : (F.t * Elpi_util.Util.Loc.t * 'a) option -> 'a w_ty_loc option
val build_infix_constant : const -> Elpi_util.Util.Loc.t -> t
val is_infix_constant : F.t -> bool
val intersperse : (Elpi_util.Util.Loc.t -> t) -> t list -> t list
val pretty_lam : Format.formatter -> binder option -> ScopedTypeExpression.e option -> t -> unit
val pretty : Format.formatter -> t -> unit
val pretty_ : Format.formatter -> t_ -> unit
val pretty_parens : lvl:int -> Format.formatter -> t -> unit
val pretty_parens_lam : lvl:int -> Format.formatter -> t -> unit
val equal : TypingEnv.t -> ?types:bool -> t -> t -> bool
val compare : 'a -> 'b -> 'c
val in_scoped_term : t -> Elpi_util.Util.CData.t
val out_scoped_term : Elpi_util.Util.CData.t -> t
val is_scoped_term : Elpi_util.Util.CData.t -> bool
val of_simple_term : loc:Elpi_util.Util.Loc.t -> SimpleTerm.t_ -> t_
val of_simple_term_loc : SimpleTerm.t -> t
val unlock : t -> t_
val fresh : unit -> F.t
val rename : Scope.language -> F.t -> F.t -> t_ -> t_
val rename_loc : Scope.language -> F.t -> F.t -> t -> t
val clone_loc : loc:Elpi_util.Util.Loc.t -> t -> t
val clone : loc:Elpi_util.Util.Loc.t -> t_ -> t_
val beta : t -> t list -> t_
module QTerm : sig ... end
val is_var : t_ -> bool