Elpi_runtime.DataSourceUsed 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.unittype overlap_clause = {overlap_loc : Elpi_util.Util.Loc.t option;has_cut : bool;mutable timestamp : int list;}val pp_overlap_clause :
Ppx_deriving_runtime.Format.formatter ->
overlap_clause ->
Ppx_deriving_runtime.unitval pp_overlap :
Ppx_deriving_runtime.Format.formatter ->
overlap ->
Ppx_deriving_runtime.unittype pred_info = {indexing : indexing;mode : Elpi_util.Util.Mode.hos;overlap : overlap;has_local_without_cut : Elpi_util.Util.Loc.t option;}val pp_pred_info :
Ppx_deriving_runtime.Format.formatter ->
pred_info ->
Ppx_deriving_runtime.unitinclude module type of struct include Term endtype 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 ttypetype 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 show_builtin_predicate :
?table:'a ->
(?table:'a -> Elpi_util.Util.constant -> string) ->
builtin_predicate ->
stringval 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_body * int * int| AppUVar of uvar_body * int * term list| Arg of int * int| AppArg of int * term listval pp_uvar_body :
Ppx_deriving_runtime.Format.formatter ->
uvar_body ->
Ppx_deriving_runtime.unittype clause = Term.clause = {depth : int;args : term list;hyps : term list;vars : int;mode : Elpi_util.Util.Mode.hos;loc : Elpi_util.Util.Loc.t option;mutable timestamp : int list;}val pp_grafting_time :
Ppx_deriving_runtime.Format.formatter ->
grafting_time ->
Ppx_deriving_runtime.unittype stuck_goal = Term.stuck_goal = {mutable blockers : blockers;kind : unification_def stuck_goal_kind;}and first_lvl_idx = Term.first_lvl_idx = {idx : second_lvl_idx Ptmap.t;time : int;times : times;}and 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 pp_blockers :
Ppx_deriving_runtime.Format.formatter ->
blockers ->
Ppx_deriving_runtime.unitval pp_unification_def :
Ppx_deriving_runtime.Format.formatter ->
unification_def ->
Ppx_deriving_runtime.unitval pp_clause_src :
Ppx_deriving_runtime.Format.formatter ->
clause_src ->
Ppx_deriving_runtime.unitval pp_prolog_prog :
Ppx_deriving_runtime.Format.formatter ->
prolog_prog ->
Ppx_deriving_runtime.unitval pp_clause_list :
Ppx_deriving_runtime.Format.formatter ->
clause_list ->
Ppx_deriving_runtime.unitval pp_first_lvl_idx :
Ppx_deriving_runtime.Format.formatter ->
index ->
Ppx_deriving_runtime.unitval pp_second_lvl_idx :
Ppx_deriving_runtime.Format.formatter ->
second_lvl_idx ->
Ppx_deriving_runtime.unitval pp_core_symbol :
Ppx_deriving_runtime.Format.formatter ->
core_symbol ->
Ppx_deriving_runtime.unittype clause_w_info = {clloc : Elpi_util.Util.CData.t;clargsname : string list;clbody : clause;}val pp_clause_w_info :
Ppx_deriving_runtime.Format.formatter ->
clause_w_info ->
Ppx_deriving_runtime.unittype 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.unittype 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;}