Elpi_runtime.Datamodule Fmt = Formatmodule F = Elpi_parser.Ast.FuncUsed to index the parameters of a predicate P
MapOn N -> N-th argument at depth 1 (head symbol only)Hash L -> L is the list of depths given by the urer for the parameters of P. Indexing is done by hashing all the parameters with a non zero depth and comparing it with the hashing of the parameters of the queryDiscriminationTree L -> we use the same logic of Hash, except we use DiscriminationTree to discriminate clausesval pp_indexing :
Ppx_deriving_runtime.Format.formatter ->
indexing ->
Ppx_deriving_runtime.unitval show_indexing : indexing -> Ppx_deriving_runtime.stringval compare_indexing : indexing -> indexing -> Ppx_deriving_runtime.inttype overlap_clause = {overlap_loc : Elpi_util.Util.Loc.t option;has_cut : bool;mutable timestamp : int list;arg_nb : int;}val pp_overlap_clause :
Ppx_deriving_runtime.Format.formatter ->
overlap_clause ->
Ppx_deriving_runtime.unitval show_overlap_clause : overlap_clause -> Ppx_deriving_runtime.stringval pp_overlap :
Ppx_deriving_runtime.Format.formatter ->
overlap ->
Ppx_deriving_runtime.unitval show_overlap : overlap -> Ppx_deriving_runtime.stringtype pred_info = {indexing : indexing;mode : Elpi_util.Util.Mode.hos;overlap : overlap;has_local_without_cut : Elpi_util.Util.Loc.t option;occur_check : bool;}val pp_pred_info :
Ppx_deriving_runtime.Format.formatter ->
pred_info ->
Ppx_deriving_runtime.unitval show_pred_info : pred_info -> Ppx_deriving_runtime.stringmodule Term : sig ... endinclude module type of struct include Term endval pp_oref : (Elpi_util.Util.UUID.t * Obj.t) Elpi_util.Util.spaghetti_printerval id_term : Elpi_util.Util.UUID.ttype 'unification_def stuck_goal_kind = 'unification_def Term.stuck_goal_kind = ..type ttype = Term.ttype = | TConst of Elpi_util.Util.constant| TApp of Elpi_util.Util.constant * ttype * ttype list| TPred of bool * (Elpi_util.Util.Mode.t * ttype) list| TArr of ttype * ttype| TCData of Elpi_util.Util.CData.t| TLam of ttypeval pp_ttype :
Ppx_deriving_runtime.Format.formatter ->
ttype ->
Ppx_deriving_runtime.unitval show_ttype : ttype -> Ppx_deriving_runtime.stringval compare_ttype : ttype -> ttype -> Ppx_deriving_runtime.inttype builtin_predicate = Term.builtin_predicate = | Cut| And| Impl| ImplBang| RImpl| Pi| Sigma| Eq| Match| Findall| Delay| Host of Elpi_util.Util.constantval compare_builtin_predicate :
builtin_predicate ->
builtin_predicate ->
Ppx_deriving_runtime.intval pp_builtin_predicate :
Ppx_deriving_runtime.Format.formatter ->
builtin_predicate ->
Ppx_deriving_runtime.unitval builtin_predicates : builtin_predicate listval func_of_builtin_predicate :
(Elpi_util.Util.constant -> F.t) ->
builtin_predicate ->
F.tval show_builtin_predicate :
?table:'a ->
(?table:'a -> Elpi_util.Util.constant -> string) ->
builtin_predicate ->
stringval const_of_builtin_predicate : builtin_predicate -> Elpi_util.Util.constantval builtin_predicate_of_const : int -> builtin_predicateval map_builtin_predicate :
(Elpi_util.Util.constant -> Elpi_util.Util.constant) ->
builtin_predicate ->
builtin_predicatetype term = Term.term = | Const of Elpi_util.Util.constant| Lam of term| App of Elpi_util.Util.constant * term * term list| Cons of term * term| Nil| Discard| Builtin of builtin_predicate * term list| CData of Elpi_util.Util.CData.t| UVar of uvar * int| AppUVar of uvar * term list| Arg of int * int| AppArg of int * term listval pp_term :
Ppx_deriving_runtime.Format.formatter ->
term ->
Ppx_deriving_runtime.unitval show_term : term -> Ppx_deriving_runtime.stringval pp_uvar :
Ppx_deriving_runtime.Format.formatter ->
uvar ->
Ppx_deriving_runtime.unitval show_uvar : uvar -> Ppx_deriving_runtime.stringval compare_term : term -> term -> Ppx_deriving_runtime.intval compare_uvar : uvar -> uvar -> Ppx_deriving_runtime.intval cons2tcons : ?loc:Elpi_util.Util.Loc.t -> term -> ttypeval uvar_id : uvar -> intval uvar_is_a_blocker : uvar -> boolval uvar_isnt_a_blocker : uvar -> boolval uvar_set_blocker : uvar -> unitval uvar_unset_blocker : uvar -> unittype clause = Term.clause = {depth : int;args : term list;hyps : term list;vars : int;oc : bool;mode : Elpi_util.Util.Mode.hos;loc : Elpi_util.Util.Loc.t option;mutable timestamp : int list;}val pp_clause :
Ppx_deriving_runtime.Format.formatter ->
clause ->
Ppx_deriving_runtime.unitval show_clause : clause -> Ppx_deriving_runtime.stringval compare_clause : clause -> clause -> Ppx_deriving_runtime.intval pp_grafting_time :
Ppx_deriving_runtime.Format.formatter ->
grafting_time ->
Ppx_deriving_runtime.unitval show_grafting_time : grafting_time -> Ppx_deriving_runtime.stringval compare_grafting_time :
grafting_time ->
grafting_time ->
Ppx_deriving_runtime.intval compare_constant :
Elpi_util.Util.constant ->
Elpi_util.Util.constant ->
inttype times = (grafting_time * Elpi_util.Util.constant) Elpi_util.Util.StrMap.tval pp_times :
Ppx_deriving_runtime.Format.formatter ->
times ->
Ppx_deriving_runtime.unitval show_times : times -> Ppx_deriving_runtime.stringval compare_times : times -> times -> Ppx_deriving_runtime.inttype stuck_goal = Term.stuck_goal = {mutable blockers : blockers;kind : unification_def stuck_goal_kind;}and blockers = uvar listand index = first_lvl_idxand second_lvl_idx = Term.second_lvl_idx = | TwoLevelIndex of {mode : Elpi_util.Util.Mode.hos;argno : int;all_clauses : clause_list;flex_arg_clauses : clause_list;arg_idx : clause_list Ptmap.t;}| BitHash of {mode : Elpi_util.Util.Mode.hos;args : int list;args_idx : clause_list Ptmap.t;}| IndexWithDiscriminationTree of {mode : Elpi_util.Util.Mode.hos;arg_depths : int list;args_idx : clause Discrimination_tree.t;}val pp_stuck_goal :
Ppx_deriving_runtime.Format.formatter ->
stuck_goal ->
Ppx_deriving_runtime.unitval show_stuck_goal : stuck_goal -> Ppx_deriving_runtime.stringval pp_blockers :
Ppx_deriving_runtime.Format.formatter ->
blockers ->
Ppx_deriving_runtime.unitval show_blockers : blockers -> Ppx_deriving_runtime.stringval pp_unification_def :
Ppx_deriving_runtime.Format.formatter ->
unification_def ->
Ppx_deriving_runtime.unitval show_unification_def : unification_def -> Ppx_deriving_runtime.stringval pp_clause_src :
Ppx_deriving_runtime.Format.formatter ->
clause_src ->
Ppx_deriving_runtime.unitval show_clause_src : clause_src -> Ppx_deriving_runtime.stringval pp_prolog_prog :
Ppx_deriving_runtime.Format.formatter ->
prolog_prog ->
Ppx_deriving_runtime.unitval show_prolog_prog : prolog_prog -> Ppx_deriving_runtime.stringval pp_clause_list :
Ppx_deriving_runtime.Format.formatter ->
clause_list ->
Ppx_deriving_runtime.unitval show_clause_list : clause_list -> Ppx_deriving_runtime.stringval pp_index :
Ppx_deriving_runtime.Format.formatter ->
index ->
Ppx_deriving_runtime.unitval show_index : index -> Ppx_deriving_runtime.stringval pp_first_lvl_idx :
Ppx_deriving_runtime.Format.formatter ->
index ->
Ppx_deriving_runtime.unitval show_first_lvl_idx : index -> Ppx_deriving_runtime.stringval pp_second_lvl_idx :
Ppx_deriving_runtime.Format.formatter ->
second_lvl_idx ->
Ppx_deriving_runtime.unitval show_second_lvl_idx : second_lvl_idx -> Ppx_deriving_runtime.stringval stop : bool reftype constraints = stuck_goal listtype hyps = clause_src listval mkApp : Elpi_util.Util.constant -> term -> term list -> termval mkNil : termval mkDiscard : termval mkBuiltin : builtin_predicate -> term list -> termval mkCData : Elpi_util.Util.CData.t -> termval mkArg : int -> int -> termmodule C = Term.Cval destConst : term -> Elpi_util.Util.constanttype env = term arraymodule State : sig ... endval elpi_state_descriptor : State.descriptorval core_symbol_to_enum : core_symbol -> intval core_symbol_of_enum : int -> core_symbol optionval compare_core_symbol :
core_symbol ->
core_symbol ->
Ppx_deriving_runtime.intval pp_core_symbol :
Ppx_deriving_runtime.Format.formatter ->
core_symbol ->
Ppx_deriving_runtime.unitval show_core_symbol : core_symbol -> Ppx_deriving_runtime.stringval func_of_core_symbol : core_symbol -> F.tval is_core_symbol : F.t -> boolmodule Symbol : sig ... endmodule Global_symbols : sig ... endval dummy : termval dummy_uvar_body : uvarmodule CHR : sig ... endval pp_clause_w_info :
Ppx_deriving_runtime.Format.formatter ->
clause_w_info ->
Ppx_deriving_runtime.unitval show_clause_w_info : clause_w_info -> Ppx_deriving_runtime.stringmodule Conversion : sig ... endmodule ContextualConversion : sig ... endval while_compiling : bool State.componentmodule HoasHooks : sig ... endmodule CalcHooks : sig ... endmodule BuiltInPredicate : sig ... endtype symbol_table = {mutable c2s : Symbol.t Elpi_util.Util.Constants.Map.t;c2t : (Elpi_util.Util.constant, term) Elpi_util.Util.Hashtbl.t;mutable frozen_constants : int;}val pp_symbol_table :
Ppx_deriving_runtime.Format.formatter ->
symbol_table ->
Ppx_deriving_runtime.unitval show_symbol_table : symbol_table -> Ppx_deriving_runtime.stringtype executable = {compiled_program : prolog_prog;chr : CHR.t;initial_depth : int;initial_goal : term;initial_runtime_state : State.t;symbol_table : symbol_table;builtins : BuiltInPredicate.builtin_table;assignments : term Elpi_util.Util.StrMap.t;}type solution = {assignments : term Elpi_util.Util.StrMap.t;constraints : constraints;state : State.t;pp_ctx : pp_ctx;state_for_relocation : int * symbol_table;}exception CannotDeclareClauseForBuiltin of Elpi_util.Util.Loc.t option
* builtin_predicate