Module Compiler_data.TypeAssignment

type tmode =
  1. | MRef of tmode MutableOnce.t
  2. | MVal of Elpi_util.Util.Mode.t
val pp_tmode : Ppx_deriving_runtime.Format.formatter -> tmode -> Ppx_deriving_runtime.unit
val show_tmode : tmode -> Ppx_deriving_runtime.string
val deref_tmode : tmode -> tmode
val compare_tmode : tmode -> tmode -> Ppx_deriving_runtime.int
val is_tmode_set : tmode -> bool
val pretty_tmode : Stdlib.Format.formatter -> tmode -> unit
type 'a overloaded =
  1. | Single of 'a
  2. | Overloaded of 'a list
val pp_overloaded : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> Ppx_deriving_runtime.Format.formatter -> 'a overloaded -> Ppx_deriving_runtime.unit
val show_overloaded : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> 'a overloaded -> Ppx_deriving_runtime.string
val fold_overloaded : ('a -> 'b -> 'a) -> 'a -> 'b overloaded -> 'a
val iter_overloaded : ('a -> unit) -> 'a overloaded -> unit
type ('uvar, 'mode) t__ =
  1. | Prop of Elpi_parser.Ast.Structured.functionality
  2. | Any
  3. | Cons of F.t
  4. | App of F.t * ('uvar, 'mode) t__ * ('uvar, 'mode) t__ list
  5. | Arr of 'mode * Elpi_parser.Ast.Structured.variadic * ('uvar, 'mode) t__ * ('uvar, 'mode) t__
  6. | UVar of 'uvar
val pp_t__ : 'uvar 'mode. (Ppx_deriving_runtime.Format.formatter -> 'uvar -> Ppx_deriving_runtime.unit) -> (Ppx_deriving_runtime.Format.formatter -> 'mode -> Ppx_deriving_runtime.unit) -> Ppx_deriving_runtime.Format.formatter -> ('uvar, 'mode) t__ -> Ppx_deriving_runtime.unit
val show_t__ : 'uvar 'mode. (Ppx_deriving_runtime.Format.formatter -> 'uvar -> Ppx_deriving_runtime.unit) -> (Ppx_deriving_runtime.Format.formatter -> 'mode -> Ppx_deriving_runtime.unit) -> ('uvar, 'mode) t__ -> Ppx_deriving_runtime.string
val fold_t__ : ('a -> 'b -> 'a) -> ('a -> 'c -> 'a) -> 'a -> ('b, 'c) t__ -> 'a
val compare_t__ : 'uvar 'mode. ('uvar -> 'uvar -> Ppx_deriving_runtime.int) -> ('mode -> 'mode -> Ppx_deriving_runtime.int) -> ('uvar, 'mode) t__ -> ('uvar, 'mode) t__ -> Ppx_deriving_runtime.int
type 'a t_ = ('a, tmode) t__
val pp_t_ : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> Ppx_deriving_runtime.Format.formatter -> 'a t_ -> Ppx_deriving_runtime.unit
val show_t_ : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> 'a t_ -> Ppx_deriving_runtime.string
val fold_t_ : ('a -> 'b -> 'a) -> 'a -> ('b, 'c) t__ -> 'a
exception InvalidMode
val cmp_aux : int -> (unit -> int) -> int
val (&&&) : int -> int -> int
type skema =
  1. | Lam of F.t * skema
  2. | Ty of F.t t_
val pp_skema : Ppx_deriving_runtime.Format.formatter -> skema -> Ppx_deriving_runtime.unit
val show_skema : skema -> Ppx_deriving_runtime.string
type type_abbrevs = (skema * Elpi_parser.Ast.Loc.t) F.Map.t
val pp_type_abbrevs : Ppx_deriving_runtime.Format.formatter -> type_abbrevs -> Ppx_deriving_runtime.unit
val show_type_abbrevs : type_abbrevs -> Ppx_deriving_runtime.string
type overloaded_symbol = Symbol.t overloaded
val pp_overloaded_symbol : Ppx_deriving_runtime.Format.formatter -> overloaded_symbol -> Ppx_deriving_runtime.unit
val show_overloaded_symbol : overloaded_symbol -> Ppx_deriving_runtime.string
type t =
  1. | Val of t MutableOnce.t t_
val pp : Ppx_deriving_runtime.Format.formatter -> t -> Ppx_deriving_runtime.unit
val show : t -> Ppx_deriving_runtime.string
type ty = t MutableOnce.t t_
val pp_ty : Ppx_deriving_runtime.Format.formatter -> ty -> Ppx_deriving_runtime.unit
val show_ty : ty -> Ppx_deriving_runtime.string
val create : t MutableOnce.t t_ -> t MutableOnce.t
val unval : t -> t MutableOnce.t t_
val deref_opt : t MutableOnce.t -> t MutableOnce.t t_ option
val pretty_raw : (Stdlib.Format.formatter -> (Stdlib.Format.formatter -> 'a t_ -> unit) -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t_ -> unit
val pretty : (Stdlib.Format.formatter -> (Stdlib.Format.formatter -> 'a t_ -> unit) -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t_ -> unit
val pretty_mut_once : Stdlib.Format.formatter -> t MutableOnce.t t_ -> unit
val pretty_mut_once_raw : Stdlib.Format.formatter -> t MutableOnce.t t_ -> unit
val pretty_ft : ?raw:bool -> Stdlib.Format.formatter -> F.t t_ -> unit
val pretty_skema_raw : Stdlib.Format.formatter -> skema -> unit
val pretty_skema : Stdlib.Format.formatter -> skema -> unit
val pretty_skema_w_id : Stdlib.Format.formatter -> ('a * skema) -> unit
val pretty_overloaded_skema : Stdlib.Format.formatter -> ('a * skema) overloaded -> unit
val set : t MutableOnce.t -> t MutableOnce.t t_ -> unit
val new_ty : unit -> t MutableOnce.t
val mkList : (t MutableOnce.t, tmode) t__ -> t MutableOnce.t
val nparams : skema -> int
val subst : ('a -> ('b, 'c) t__ option) -> ('a, 'c) t__ -> ('b, 'c) t__
val fresh : skema -> ('a MutableOnce.t, tmode) t__ * ('a MutableOnce.t, tmode) t__ F.Map.t
val map_overloaded : ('a -> 'b) -> 'a overloaded -> 'b overloaded
val fresh_overloaded : skema overloaded -> ('a MutableOnce.t, tmode) t__ overloaded
val apply : skema -> ('a, tmode) t__ list -> ('a, tmode) t__
val is_prop : type_abbrevs:(skema * 'a) F.Map.t -> ('b, tmode) t__ -> Elpi_parser.Ast.Structured.functionality option
val eq_skema_w_id : F.t -> (Symbol.t * skema) -> (Symbol.t * skema) -> bool
val check_same_mode : loc1:Elpi_util.Util.Loc.t -> loc2:Elpi_util.Util.Loc.t -> skema -> skema -> unit
val undup_skemas : (Symbol.t -> skema) -> Symbol.t list -> (Symbol.t * Symbol.t) list * Symbol.t overloaded
val merge_skema : skema -> skema -> skema
val compare_t_ : ('a -> 'a -> Ppx_deriving_runtime.int) -> ('a, tmode) t__ -> ('a, tmode) t__ -> Ppx_deriving_runtime.int
val compare_skema : skema -> skema -> Ppx_deriving_runtime.int
exception Not_monomorphic
val is_monomorphic : t -> skema option
val vars_of : t -> t MutableOnce.t list * tmode MutableOnce.t list
val to_func_mode : type_abbrevs:type_abbrevs -> ('a, tmode) t__ -> Elpi_parser.Ast.Structured.functionality option * Elpi_util.Util.Mode.ho list
val skema_to_func_mode : type_abbrevs:type_abbrevs -> skema -> Elpi_parser.Ast.Structured.functionality option * Elpi_util.Util.Mode.ho list