package diffast-core

  1. Overview
  2. Docs
exception Abort
exception Break
exception Found
exception Certain
type node_t = Spec.node_t
type tree_t = Spec.tree_t
val get_orig_name : < data : < get_name : string ; get_orig_name : string ; get_stripped_name : string.. >.. > -> string
val is_ghost_node : < data : < src_loc : Diffast_core.Triple.Loc.t.. >.. > -> bool
val getlab : < data : < _label : Obj.t.. >.. > -> Label.t
val get_bn : < _replace_children : ?initial:bool -> (int * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array) list -> unit ; _set_is_collapsed : bool -> unit ; add_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_child_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_child_rightmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_children_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; add_children_rightmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; add_substance : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; apath : Diffast_misc.Path.t ; begin_mutation : unit -> unit ; children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; children_indexes : int list ; children_uids : Diffast_misc.UID.t list ; clear_collapsible : unit ; clear_in_path : unit ; collapse : int -> Diffast_misc.Xhash.t -> unit ; collapse_locked : bool ; collapse_not_locked : bool ; collapsible : bool ; data : Spec.node_data_t ; decide_collapsible_or_not : unit ; del_leftmost_child : unit -> unit ; del_rightmost_child : unit -> unit ; end_mutation : ?overwrite:bool -> unit -> unit ; expand : unit ; get_substances : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list ; gindex : Diffast_core.Delta_common.SB.Otree.GI.t ; has_hidden_parent : bool ; has_initial_parent : bool ; has_later_mutation : bool ; has_parent : bool ; hash : int ; hidden_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; hidden_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; hide_parent : unit ; in_path : bool ; index : int ; init_mutation : unit -> unit ; initial_ancestor_nodes : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list ; initial_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; initial_children_uids : Diffast_misc.UID.t list ; initial_nchildren : int ; initial_parent : 'b ; initial_pos : int ; initial_to_string : string ; insert_path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; is_collapsed : bool ; is_contracted : bool ; is_leaf : bool ; is_valid : bool ; iter_initial_ancestor_nodes : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> unit ; lock_collapse : unit ; nchildren : int ; nth_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; parent_edge : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 option ; path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Diffast_core.Delta_common.SB.Otree.path ; pos : int ; preorder_index : int ; print : unit ; prune : unit ; prune_all_children : unit ; prune_children : int list -> unit ; prune_initial_children : int list -> unit ; prune_nth_child : int -> unit ; replace_children : (int * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array) list -> unit ; replace_nth_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_apath : Diffast_misc.Path.t -> unit ; set_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_collapsible : unit ; set_data : Spec.node_data_t -> unit ; set_digest : Diffast_misc.Xhash.t -> unit ; set_gindex : Diffast_core.Delta_common.SB.Otree.GI.t -> unit ; set_hidden_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_in_path : unit ; set_index : int -> unit ; set_initial_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_initial_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; set_initial_pos : int -> unit ; set_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; set_parent_edge : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 option -> unit ; set_path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; set_pos : int -> unit ; set_preorder_index : int -> unit ; to_dot : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str_ini : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_qualified_string : string ; to_rep : string ; to_string : string ; uid : Diffast_misc.UID.t ; unhide_parent : unit ; unlock_collapse : unit ; v_delete_child : int -> unit ; v_delete_children : int list -> unit ; v_insert_child : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; v_insert_children : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; v_update_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; v_update_children : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit > as 'a -> 'b
val can_be_keyroot : < initial_ancestor_nodes : Diffast_core__Spec.node_data_t Spec_base.node_t -> 'a list.. > -> Diffast_core__Spec.node_data_t Spec_base.node_t -> bool
val printf : ('a, out_channel, unit) format -> 'a
val sprintf : ('a, unit, string) format -> 'a
val mkinfo : < data : < src_loc : Diffast_core.Info.Loc.t.. >.. > as 'a -> 'a Info.t
val _is_map : 'a -> 'b -> < find : 'c -> 'd.. > -> 'c -> 'd -> bool
val pmap_add : 'a list Node.Tbl.t -> Node.Tbl.key -> 'a -> unit
val left_to_right : 'a -> < gindex : 'b.. > -> < gindex : 'b.. > -> int
val estimate_cost_of_move : < fast_scan_whole_initial_subtree : 'a -> ('b -> unit) -> 'c.. > -> < initial_leftmost : < gindex : 'e.. > as 'd -> < gindex : 'e.. >.. > -> < find : 'b -> < gindex : 'e.. >.. > -> 'a -> 'd -> int
val detect_permutation : < gen : Edit.move_id.. > -> < select_compatible_pairs : ('a * 'b * 'c) list -> (< data : < src_loc : Diffast_core.Info.Loc.t.. > ; gindex : 'e.. > as 'd * 'd * Comparison.weight_t) list * ('d * 'd * 'f) list ; tree1 : 'g ; tree2 : 'h.. > -> < set_kind : 'd -> 'd -> Pruned.kind -> 'i.. > -> < mem_mov12 : 'd -> 'd -> bool.. > -> < add_edit : 'd Edit.t -> 'j ; find12 : 'd -> 'd -> 'd Edit.t list ; find_mov12 : 'd -> 'd -> 'k Edit.t ; remove_edit : 'd Edit.t -> 'l.. > -> ('a * 'b * 'm * 'c) list Node.Tbl.t -> unit
val is_pseudo_match : < data : < _anonymized2_label : 'a ; get_name : 'b.. >.. > -> < data : < _anonymized2_label : 'a ; get_name : 'b.. >.. > -> bool
val check_relabel : < pp_relabel_criteria : float.. > -> ?exact:bool -> ?matches: (< data : < _anonymized2_label : 'b ; eq : < _anonymized2_label : 'b.. > as 'c -> bool ; relabel_allowed : 'c -> bool.. >.. > as 'a * < data : 'c.. > as 'd) list -> 'e -> 'f -> < has_initial_parent : bool ; initial_children : 'a array ; initial_parent : 'a.. > -> < has_initial_parent : bool ; initial_children : 'd array ; initial_parent : 'd.. > -> < find : 'a -> 'd.. > -> bool
val generate_moves : < delta_compression : Diffast_misc.Compression.c ; dump_size_threshold : int ; fact_algo : Diffast_core.Triple.Xhash.algo ; fact_compression : Diffast_core.Triple.C.c ; fact_enc : Entity.encoding ; fact_for_delta_flag : bool ; fact_into_directory : string ; fact_into_virtuoso : string ; fact_proj : string ; fact_size_threshold : int ; fact_virtuoso_temp_dir : string ; ignore_move_of_unordered_flag : bool ; ignore_non_orig_relabel_flag : bool ; irreversible_flag : bool ; local_cache_name : string ; match_algo_threshold : int ; minimize_delta_flag : bool ; moveid_generator : < gen : Edit.move_id.. > ; recover_orig_ast_flag : bool ; sort_unordered_flag : bool ; verbose_flag : bool ; viewer_flag : bool ; weak_eq_flag : bool.. > -> < is_crossing_or_incompatible : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; select_compatible_pairs : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 * Comparison.weight_t) list -> (Diffast_core.Edit.Nodetbl.key * Diffast_core.Edit.Nodetbl.key * Comparison.weight_t) list * (Diffast_core.Edit.Nodetbl.key * Diffast_core.Edit.Nodetbl.key * 'a) list ; tree1 : < fast_scan_whole_initial_subtree : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> 'b ; initial_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> < gindex : Diffast_core.Delta_common.SB.Otree.GI.t.. >.. > ; tree2 : < initial_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> < gindex : Diffast_core.Delta_common.SB.Otree.GI.t.. >.. >.. > -> < set_kind : Diffast_core.Edit.Nodetbl.key -> Diffast_core.Edit.Nodetbl.key -> Pruned.kind -> 'c.. > -> < add_edits : Edit.seq -> 'd ; find12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'e Edit.t list ; mem_mov12 : Diffast_core.Edit.Nodetbl.key -> Diffast_core.Edit.Nodetbl.key -> bool.. > -> < find : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; inv_find : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; iter : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> 'f ; mem_cod : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_dom : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool.. > -> (< data : < is_statement : bool.. > ; gindex : Diffast_core.Delta_common.SB.Otree.GI.t ; initial_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2.. > * < data : < is_statement : bool.. > ; gindex : Diffast_core.Delta_common.SB.Otree.GI.t ; initial_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2.. > * int) Diffast_misc.Xset.t -> 'd
val make_move_region_tbl : < initial_leftmost : < gindex : 'b.. > as 'a -> < gindex : 'b.. >.. > -> < initial_leftmost : 'a -> < gindex : 'b.. >.. > -> < iter_moves : ('a Edit.t -> unit) -> 'c.. > -> (Edit.move_id, 'b * 'b * 'b * 'b) Hashtbl.t
val make_move_member_tbl : < iter_moves : ('a Edit.t -> unit) -> 'b.. > -> (Edit.move_id, ('a * 'a) list) Hashtbl.t
val make_parent_move_tbl : < is_crossing_or_incompatible : < gindex : 'b.. > as 'a -> 'a -> < data : < binding : Diffast_misc.Binding.t ; is_op : bool ; is_statement : bool.. >.. > as 'c -> 'c -> bool ; tree1 : < search_node_by_uid : Diffast_misc.UID.t -> 'c.. > ; tree2 : < search_node_by_uid : Diffast_misc.UID.t -> 'c.. >.. > -> (Edit.move_id, 'b * 'b * 'b * 'b) Hashtbl.t -> < iter_moves : ('c Edit.t -> unit) -> 'd ; iter_moves_bottomup : ('a Edit.t -> unit) -> 'e.. > -> (Edit.move_id, Edit.move_id * 'b * 'b) Hashtbl.t
val make_child_move_tbl : ('a, 'b * 'c * 'd) Hashtbl.t -> ('b, 'a list) Hashtbl.t
val group_moves : < moveid_generator : < gen : Edit.move_id.. >.. > -> < fast_scan_whole_initial_subtree : < data : < is_sequence : bool ; is_statement : bool ; src_loc : Diffast_core.Info.Loc.t.. > ; gindex : int ; initial_children : 'a array ; initial_parent : 'a ; is_collapsed : bool.. > as 'a -> ('a -> unit) -> 'b ; in_subtree_mutually : 'a -> 'a -> bool ; is_initial_ancestor : 'a -> 'a -> bool.. > -> < in_subtree_mutually : 'a -> 'a -> bool ; is_initial_ancestor : 'a -> 'a -> bool.. > -> < add_edit : 'a Edit.t -> unit ; find1 : 'a -> 'c Edit.t list ; find_mov1 : 'a -> 'd Edit.t ; find_mov12 : 'a -> 'a -> 'a Edit.t ; get_nmoves_of_move_id : Edit.move_id -> int ; iter_moves_bottomup : (< initial_children : 'a array.. > Edit.t -> unit) -> 'e.. > -> < find : 'a -> 'a ; inv_find : 'a -> 'a.. > -> (Edit.move_id, Edit.move_id) Hashtbl.t
val find_keyroots : < match_algo_threshold : int.. > -> ?relax:bool -> ?ignore_sequence:bool -> ?filt: (Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> bool) -> tree_t -> tree_t -> node_t Node_mapping.c -> (Spec.node_t * Spec.node_t) list * (Spec.node_t * Spec.node_t) list
val eliminate_enclaves : < match_algo_threshold : int ; trust_tree_matcher_flag : bool ; verbose_flag : bool.. > -> (node_t, tree_t) Comparison.c -> (Spec.node_t * Spec.node_t) list -> tree_t -> tree_t -> node_t Node_mapping.c -> node_t Node_mapping.c -> unit
val is_crossing_with_untouched : < is_crossing_with_untouched : ?full_scan:bool -> ?mask:'a list -> ?incompatible_only:bool -> ?weak:bool -> 'b -> 'c.. > -> 'b -> ?full_scan:bool -> ?mask:'a list -> ?incompatible_only:bool -> ?weak:bool -> 'c
val has_crossing_descendant : < fast_scan_whole_initial_subtree : < initial_parent : 'a.. > as 'a -> ('a -> unit) -> 'b ; is_initial_ancestor : 'a -> 'c -> bool.. > -> < fast_scan_whole_initial_subtree : < initial_parent : 'd.. > as 'd -> ('d -> unit) -> 'e ; is_initial_ancestor : 'd -> 'f -> bool.. > -> < find : 'a -> 'f ; inv_find : 'd -> 'c.. > -> 'a -> 'd -> bool
val is_extendable_move : < fast_scan_whole_initial_subtree : < data : < get_ordinal : int -> int ; has_ordinal : bool.. > ; gindex : int ; initial_children : 'a array ; initial_parent : 'a ; initial_pos : int.. > as 'a -> ('a -> unit) -> 'b ; is_initial_ancestor : 'a -> 'c -> bool.. > -> < fast_scan_whole_initial_subtree : < data : < get_ordinal : int -> int ; has_ordinal : bool.. > ; gindex : int ; initial_children : 'd array ; initial_parent : 'd ; initial_pos : int.. > as 'd -> ('d -> unit) -> 'e ; is_initial_ancestor : 'd -> < gindex : int ; initial_parent : 'd.. > as 'f -> bool.. > -> < find : 'a -> 'f ; inv_find : 'd -> 'c.. > -> 'a -> 'd -> bool
val glue_deletes_and_inserts : ?first:bool -> ?record_conflicted_pairs:bool -> < conflicting_pairs_threshold : int ; conservative_flag : bool ; dump_delta_flag : bool ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; match_algo_threshold : int ; multi_node_match_flag : bool ; pp_anonymized_match_threshold : float ; pp_relabel_criteria : float ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; simple_glue_flag : bool ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> (node_t, tree_t) Comparison.c -> tree_t -> tree_t -> ?override:bool -> ?no_mapping_override:bool -> ?no_moves:bool -> ?last:bool -> ?is_move: (Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> bool) -> ?extend_move: (Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> unit -> unit) -> ?add_move: (Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> unit -> unit) -> ?downward:bool -> ?glue_filt:(node_t -> node_t -> bool) -> ?use_binding_info:bool -> ?rely_on_binding_info:bool -> ?rely_on_context:bool -> ?ignore_common:bool -> ?edits_opt: < is_crossing_with_untouched : ?full_scan:bool -> ?mask:'a list -> ?incompatible_only:bool -> ?weak:bool -> node_t Node_mapping.c -> Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> bool.. > option -> node_t Node_mapping.c -> node_t Node_mapping.c -> (Diffast_core.Node_mapping.Nodetbl.key * Diffast_core.Node_mapping.Nodetbl.key) list * (Diffast_core.Node_mapping.Nodetbl.key * Diffast_core.Node_mapping.Nodetbl.key) list * (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 * Spec.node_data_t Diffast_core.Spec.SB.Otree.node2) Diffast_misc.Xset.t
val sync_edits : < moveid_generator : < gen : Edit.move_id.. >.. > -> ?is_mov: (< data : < eq : 'b -> bool ; src_loc : Diffast_core.Info.Loc.t.. > as 'b ; is_collapsed : bool.. > as 'a -> 'a -> bool * Edit.move_id option) -> ?check_conflicts:bool -> < is_crossing_or_incompatible : 'a -> 'a -> 'a -> 'a -> bool.. > -> < add_edit : 'a Edit.t -> unit ; find12 : 'a -> 'a -> 'c list ; find_del : 'a -> 'c ; find_ins : 'a -> 'c ; mem_mov12 : 'a -> 'a -> bool ; remove_edit : 'c -> unit.. > -> ('a * 'a) list -> ('a * 'a) list -> unit
val generate_edits : ?simple:bool -> < conflicting_pairs_threshold : int ; conservative_flag : bool ; delta_compression : Diffast_misc.Compression.c ; dump_delta_flag : bool ; dump_size_threshold : int ; fact_algo : Diffast_core.Triple.Xhash.algo ; fact_compression : Diffast_core.Triple.C.c ; fact_enc : Entity.encoding ; fact_for_delta_flag : bool ; fact_into_directory : string ; fact_into_virtuoso : string ; fact_proj : string ; fact_size_threshold : int ; fact_virtuoso_temp_dir : string ; ignore_move_of_unordered_flag : bool ; ignore_non_orig_relabel_flag : bool ; irreversible_flag : bool ; local_cache_name : string ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; match_algo_threshold : int ; minimize_delta_flag : bool ; moveid_generator : < gen : Edit.move_id.. > ; multi_node_match_flag : bool ; no_glue_flag : bool ; no_moves_flag : bool ; pp_anonymized_match_threshold : float ; pp_relabel_criteria : float ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; recover_orig_ast_flag : bool ; rename_rectification_level : int ; simple_glue_flag : bool ; sort_unordered_flag : bool ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool ; viewer_flag : bool ; weak_eq_flag : bool.. > as 'a -> < elaborate_edits : ('a -> (node_t, tree_t) Comparison.c -> node_t Node_mapping.c -> < add_edit : Spec.node_t Editop.t -> unit ; add_edits : Edit.seq -> 'c ; find1 : Spec.node_t -> Spec.node_t Edit.t list ; find12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_t Edit.t list ; find2 : Spec.node_t -> Spec.node_t Edit.t list ; find_del : Diffast_core.Node_mapping.Nodetbl.key -> Spec.node_t Edit.t ; find_ins : Diffast_core.Node_mapping.Nodetbl.key -> Spec.node_t Edit.t ; is_crossing_with_untouched : ?full_scan:bool -> ?mask:'d list -> ?incompatible_only:bool -> ?weak:bool -> node_t Node_mapping.c -> Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> bool ; iter_deletes : (Diffast_core.Edit.Nodetbl.key Edit.t -> unit) -> 'e ; iter_inserts : (Diffast_core.Edit.Nodetbl.key Edit.t -> unit) -> 'f ; iter_moves : (Diffast_core.Edit.Nodetbl.key Edit.t -> unit) -> 'g ; iter_relabels : (Diffast_core.Edit.Nodetbl.key Edit.t -> unit) -> 'h ; mem12 : Diffast_core.Edit.Nodetbl.key -> Diffast_core.Edit.Nodetbl.key -> bool ; mem_mov12 : Diffast_core.Edit.Nodetbl.key -> Diffast_core.Edit.Nodetbl.key -> bool ; remove_edit : Spec.node_t Edit.t -> unit.. > as 'b -> 'i) option.. > -> (node_t, tree_t) Comparison.c -> < set_kind : Diffast_core.Edit.Nodetbl.key -> Diffast_core.Edit.Nodetbl.key -> Pruned.kind -> 'j.. > -> 'b -> node_t Node_mapping.c -> 'c
val postprocess : < conflicting_pairs_threshold : int ; conservative_flag : bool ; dump_delta_flag : bool ; lock_matches_flag : bool ; lower_ee_flag : bool ; mapped_neighbours_difference_threshold : float ; match_algo_threshold : int ; multi_node_match_flag : bool ; no_enclave_elim_flag : bool ; no_glue_flag : bool ; no_odd_relabel_elim_flag : bool ; pp_anonymized_match_threshold : float ; pp_relabel_criteria : float ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; simple_glue_flag : bool ; subtree_match_ratio_threshold : float ; trust_tree_matcher_flag : bool ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> (node_t, tree_t) Comparison.c -> 'a -> 'b -> node_t Node_mapping.c -> < aborted1 : Spec.node_t list ; aborted2 : Spec.node_t list ; para_iso1 : Spec.node_t list ; para_iso2 : Spec.node_t list.. > -> node_t Node_mapping.c -> unit
type edtag =
  1. | Edel
  2. | Eins
  3. | Erel
  4. | Emov
val edtag_to_string : edtag -> string
val eliminate_odd_relabels : < moveid_generator : < gen : Edit.move_id.. >.. > -> tree_t -> tree_t -> < add_edit : Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit ; filter : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> bool) -> 'a ; find_mov12 : Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> 'b Edit.t ; iter_moves : (< data : < _anonymized_label : Obj.t ; eq : 'c -> bool.. > as 'c ; gindex : int.. > Edit.t -> unit) -> 'd ; iter_moves_topdown : (Spec.node_t Edit.t -> unit) -> 'e ; iter_relabels : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit) -> 'f.. > -> node_t Node_mapping.c -> (Edit.move_id, Spec.node_t * Spec.node_t) Hashtbl.t
class mid_data : Editop.move_id -> float -> Spec.node_t -> object ... end
val handle_movrels : < movrel_ratio_threshold : float ; movrel_stability_threshold : float ; no_movrels_flag : bool.. > -> < add_bad_pair : < data : < _anonymized2_label : 'b ; binding : Diffast_core.Edit.B.t ; get_orig_name : 'c ; is_sequence : bool.. > ; initial_parent : 'a.. > as 'a -> 'a -> unit ; child_has_use_rename : 'd -> 'e -> bool ; get_use1 : Diffast_core.Edit.B.ID.t -> 'a list ; get_use2 : Diffast_core.Edit.B.ID.t -> 'a list ; has_use_rename : 'f -> 'g -> bool.. > -> < fast_scan_whole_initial_subtree : 'a -> ('h -> unit) -> 'i ; is_initial_ancestor : 'a -> 'a -> bool.. > -> < fast_scan_whole_initial_subtree : 'a -> ('j -> unit) -> 'k ; is_initial_ancestor : 'a -> 'a -> bool.. > -> < add_edit : 'a Edit.t -> 'l ; find1 : 'a -> 'm Edit.t list ; find12 : 'a -> 'a -> 'n list ; find2 : 'a -> 'o Edit.t list ; find_mid12 : 'a -> 'a -> Edit.move_id ; find_rel12 : 'a -> 'a -> 'a Edit.t ; get_nmoves_of_move_id_filt : (< data : < _label : Obj.t ; eq : < _label : Obj.t.. > as 'p -> bool.. >.. > -> < data : 'p.. > -> bool) -> Edit.move_id -> int ; is_crossing_with_untouched : ?full_scan:'q -> ?mask:'r -> ?incompatible_only:'s -> ?weak:'t -> < find : 'a -> 'a ; inv_find : 'a -> 'a ; is_final_mapping : 'v -> 'w -> bool ; is_locked_node : 'x -> bool ; mem_cod : 'j -> bool ; mem_dom : 'h -> bool ; remove : 'a -> 'a -> 'y ; unlock_node : 'z -> unit.. > as 'u -> 'a -> 'a -> bool ; iter_moves : ('a Edit.t -> unit) -> 'a1 ; iter_moves_bottomup : ('a Edit.t -> unit) -> 'a1 ; mem_mov12 : 'a -> 'a -> bool ; remove_edit : 'a Edit.t -> 'b1.. > -> 'u -> (Edit.move_id, Edit.move_id * 'c1 * 'd1) Hashtbl.t -> (Edit.move_id, Edit.move_id list) Hashtbl.t -> ('a * 'a) Diffast_misc.Xset.t
val get_subtree_similarity : < scan_whole_initial_subtree : 'a -> (< data : < equals : 'c -> bool.. >.. > as 'b -> unit) -> 'd ; whole_initial_subtree_size : 'a -> int.. > -> < initial_subtree_mem : 'e -> < data : 'c.. > as 'f -> bool ; whole_initial_subtree_size : 'e -> int.. > -> ('b -> 'f) -> 'a -> 'e -> float
val find_nearest_anc_stmt : < _replace_children : ?initial:bool -> (int * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array) list -> unit ; _set_is_collapsed : bool -> unit ; add_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_child_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_child_rightmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; add_children_leftmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; add_children_rightmost : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; add_substance : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; apath : Diffast_misc.Path.t ; begin_mutation : unit -> unit ; children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; children_indexes : int list ; children_uids : Diffast_misc.UID.t list ; clear_collapsible : unit ; clear_in_path : unit ; collapse : int -> Diffast_misc.Xhash.t -> unit ; collapse_locked : bool ; collapse_not_locked : bool ; collapsible : bool ; data : < _annotation : Obj.t ; _anonymized2_label : Obj.t ; _anonymized3_label : Obj.t ; _anonymized_label : Obj.t ; _digest : Diffast_misc.Xhash.t option ; _digest_string : string ; _label : Obj.t ; _set_digest : Diffast_core.Spec.SB.Xhash.t -> unit ; _stripped_label : Obj.t ; _stripped_orig_label : Obj.t ; add_binding : Diffast_core.Spec.Binding.t -> unit ; add_successor : Spec.node_data_t Diffast_core.Spec.Otree.node2 -> unit ; add_to_ordinal_list : int list -> unit ; anonymized2_label : string ; anonymized3_label : string ; anonymized_label : string ; binding : Diffast_core.Spec.SB.Binding.t ; bindings : Diffast_core.Spec.SB.Binding.t list ; change_attr : string -> string -> unit ; char : char ; delete_attr : string -> unit ; digest : Diffast_misc.Xhash.t option ; digest_string : string ; elem_attrs_for_delta : (string * string) list ; elem_name_for_delta : string ; eq : Spec.node_data_t -> bool ; equals : Spec.node_data_t -> bool ; feature : Obj.t * Diffast_core.Spec.SB.Xhash.t option ; frommacro : string ; get_category : string ; get_ident_use : string ; get_name : string ; get_ordinal : int -> int ; get_orig_name : string ; get_prefix : string ; get_stripped_name : string ; get_suffix : string ; get_value : string ; gid : Diffast_core.Spec.SB.Otree.GI.t ; has_non_trivial_tid : bool ; has_non_trivial_value : bool ; has_ordinal : bool ; has_value : bool ; id_loc : Diffast_core.Spec.Loc.t ; insert_attr : string -> string -> unit ; is_anonymous : bool ; is_anonymous_orig : bool ; is_block : bool ; is_boundary : bool ; is_common : bool ; is_compatible_with : ?weak:bool -> Spec.node_data_t -> bool ; is_frommacro : bool ; is_int_literal : bool ; is_literal : bool ; is_named : bool ; is_named_orig : bool ; is_ntuple : bool ; is_op : bool ; is_order_insensitive : bool ; is_partition : bool ; is_phantom : bool ; is_primary : bool ; is_real_literal : bool ; is_scope_creating : bool ; is_sequence : bool ; is_special : bool ; is_statement : bool ; is_string_literal : bool ; label : string ; mid : Diffast_core.Spec.SB.MID.t ; more_anonymized_label : string ; move_disallowed : bool ; not_frommacro : bool ; orig_elem_attrs_for_delta : (string * string) list ; orig_elem_name_for_delta : string ; orig_lab_opt : Obj.t option ; orig_to_elem_data_for_delta : string * (string * string) list * string ; orig_to_elem_data_for_eq : string * (string * string) list * string ; quasi_eq : Spec.node_data_t -> bool ; relabel_allowed : Spec.node_data_t -> bool ; reset_digest : unit ; scope_node : Spec.node_data_t Diffast_core.Spec.Otree.node2 ; set_binding : Diffast_core.Spec.Binding.t -> unit ; set_bindings : Diffast_core.Spec.Binding.t list -> unit ; set_digest : Diffast_misc.Xhash.t -> unit ; set_frommacro : string -> unit ; set_gid : Diffast_core.Spec.SB.Otree.GI.t -> unit ; set_loc : Diffast_core.Spec.SB.Loc.t -> unit ; set_mid : Diffast_core.Spec.SB.MID.t -> unit ; set_prefix : string -> unit ; set_scope_node : Spec.node_data_t Diffast_core.Spec.Otree.node2 -> unit ; set_source_fid : string -> unit ; set_suffix : string -> unit ; set_weight : int -> unit ; source_fid : string ; src_loc : Diffast_core.Spec.SB.Loc.t ; stripped_label : string ; subtree_equals : Spec.node_data_t -> bool ; successors : Spec.node_data_t Diffast_core.Spec.Otree.node2 Diffast_core.Spec.Xset.t ; to_be_notified : bool ; to_elem_data : string * (string * string) list * string ; to_elem_data_for_delta : string * (string * string) list * string ; to_rep : string ; to_short_string : string ; to_simple_string : string ; to_string : string ; weight : int > ; decide_collapsible_or_not : unit ; del_leftmost_child : unit -> unit ; del_rightmost_child : unit -> unit ; end_mutation : ?overwrite:bool -> unit -> unit ; expand : unit ; get_substances : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list ; gindex : Diffast_core.Delta_common.SB.Otree.GI.t ; has_hidden_parent : bool ; has_initial_parent : bool ; has_later_mutation : bool ; has_parent : bool ; hash : int ; hidden_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; hidden_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; hide_parent : unit ; in_path : bool ; index : int ; init_mutation : unit -> unit ; initial_ancestor_nodes : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list ; initial_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array ; initial_children_uids : Diffast_misc.UID.t list ; initial_nchildren : int ; initial_parent : 'a ; initial_pos : int ; initial_to_string : string ; insert_path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; is_collapsed : bool ; is_contracted : bool ; is_leaf : bool ; is_valid : bool ; iter_initial_ancestor_nodes : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> unit ; lock_collapse : unit ; nchildren : int ; nth_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; parent_edge : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 option ; path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Diffast_core.Delta_common.SB.Otree.path ; pos : int ; preorder_index : int ; print : unit ; prune : unit ; prune_all_children : unit ; prune_children : int list -> unit ; prune_initial_children : int list -> unit ; prune_nth_child : int -> unit ; replace_children : (int * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array) list -> unit ; replace_nth_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_apath : Diffast_misc.Path.t -> unit ; set_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_collapsible : unit ; set_data : Spec.node_data_t -> unit ; set_digest : Diffast_misc.Xhash.t -> unit ; set_gindex : Diffast_core.Delta_common.SB.Otree.GI.t -> unit ; set_hidden_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_in_path : unit ; set_index : int -> unit ; set_initial_children : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 array -> unit ; set_initial_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; set_initial_pos : int -> unit ; set_parent : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; set_parent_edge : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 option -> unit ; set_path : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; set_pos : int -> unit ; set_preorder_index : int -> unit ; to_dot : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str_ini : ?mklab: (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> string) -> unit -> string ; to_qualified_string : string ; to_rep : string ; to_string : string ; uid : Diffast_misc.UID.t ; unhide_parent : unit ; unlock_collapse : unit ; v_delete_child : int -> unit ; v_delete_children : int list -> unit ; v_insert_child : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; v_insert_children : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit ; v_update_child : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit ; v_update_children : int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 list -> unit > as 'a -> 'a
type upairs_kind =
  1. | LocalVariableInliningOrExtraction
  2. | StableContext
val decompose_moves : < get_similarity_score : ?ignore_cache:bool -> ?bonus_named:bool -> ?flat:bool -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> float ; has_uniq_match : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; has_use_mapping : < add_unsettled : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'b ; find : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; inv_find : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; is_final_mapping : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_cod : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_dom : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; remove : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'c.. > as 'a -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; is_matched_subtree : 'a -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; is_rename_pat : (string * string) -> bool ; weak_node_eq : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool.. > -> < fast_scan_whole_initial_subtree : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> 'd ; is_initial_ancestor : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; scan_whole_initial_subtree : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> 'e ; search_node_by_uid : Diffast_misc.UID.t -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2.. > -> < fast_scan_whole_initial_subtree : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> unit) -> 'f ; is_initial_ancestor : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; search_node_by_uid : Diffast_misc.UID.t -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 ; whole_initial_subtree_size : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> int.. > -> ?force:bool -> ?weak:bool -> ?thresh:float -> (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool) -> 'g -> < add_edit : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit ; add_indivisible_move : Edit.move_id -> unit ; find1 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'h Edit.t list ; find2 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'i Edit.t list ; find_del : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; find_ins : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; find_mov12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> 'j Edit.t ; find_rel12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; is_crossing_with_untouched : ?full_scan:'k -> ?mask:'l -> ?incompatible_only:'m -> ?weak:'n -> 'a -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; iter_moves : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit) -> 'o ; mem_del : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_ins : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov1 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov2 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; remove_edit : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit.. > -> 'a -> int -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Diffast_misc.Xset.t * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Diffast_misc.Xset.t * (Edit.move_id * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2) Diffast_misc.Xset.t * ((Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 * Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2) * upairs_kind) Diffast_misc.Xset.t
val elaborate_edits_for_delta : < verbose_flag : bool.. > -> ?sim_thresh:float -> < is_crossing_or_incompatible : < data : < _digest : 'c option ; _label : Obj.t ; equals : 'b -> bool ; get_name : 'd ; is_boundary : bool ; is_common : bool ; is_named_orig : bool ; orig_lab_opt : Obj.t option ; subtree_equals : 'b -> bool ; to_string : string.. > as 'b ; initial_children : 'a array ; initial_nchildren : int ; initial_parent : 'a.. > as 'a -> 'a -> 'a -> 'a -> bool.. > -> < initial_subtree_mem : 'a -> 'a -> bool ; is_initial_ancestor : 'a -> 'a -> bool ; scan_whole_initial : ('a -> unit) -> 'e ; scan_whole_initial_subtree : 'a -> ('a -> unit) -> 'f ; whole_initial_subtree_size : 'a -> int.. > -> < initial_subtree_mem : 'a -> 'a -> bool ; is_initial_ancestor : 'a -> 'a -> bool ; whole_initial_subtree_size : 'a -> int.. > -> < find : 'a -> 'a ; remove : 'a -> 'a -> 'g.. > -> < add_edit : 'a Edit.t -> 'h ; find_rel12 : 'a -> 'a -> 'a Edit.t ; iter_moves : (< data : < eq : 'i -> bool.. > as 'i.. > Edit.t -> unit) -> 'j ; iter_moves_topdown : ('a Edit.t -> unit) -> unit ; mem_del : 'a -> bool ; mem_ins : 'a -> bool ; remove_edit : 'a Edit.t -> unit.. > -> 'a Diffast_misc.Xset.t * 'a Diffast_misc.Xset.t
val is_mid : Moveid.t -> bool
val get_level : < parent : 'a.. > as 'a -> int
val make_level_mid : < parent : 'a.. > as 'a -> Moveid.t
val eliminate_false_moves : < hard_tree_size_limit : int ; verbose_flag : bool.. > -> < is_crossing_or_incompatible : Spec.node_t -> Spec.node_t -> Spec.node_t -> Spec.node_t -> bool ; tree1 : < in_subtree_mutually : Spec.node_t -> Spec.node_t -> bool ; initial_ancestor_nodes : Spec.node_t -> 'a list ; initial_leftmost : Spec.node_t -> < gindex : Diffast_core.Spec.SB.Otree.GI.t.. > ; is_initial_ancestor : Spec.node_t -> Spec.node_t -> bool ; root : Spec.node_t.. > ; tree2 : < in_subtree_mutually : Spec.node_t -> Spec.node_t -> bool ; initial_ancestor_nodes : Spec.node_t -> 'b list ; initial_leftmost : Spec.node_t -> < gindex : Diffast_core.Spec.SB.Otree.GI.t.. > ; is_initial_ancestor : Spec.node_t -> Spec.node_t -> bool ; root : Spec.node_t.. >.. > -> < find12 : < data : < src_loc : Diffast_core.Triple.Loc.t.. >.. > as 'c -> < data : < src_loc : Diffast_core.Triple.Loc.t.. >.. > as 'd -> Spec.node_t Edit.t list ; iter_moves : (Spec.node_t Edit.t -> unit) -> 'e ; remove_edit : Spec.node_t Edit.t -> unit.. > -> < find : Spec.node_t -> Spec.node_t ; iter_crossing_or_incompatible_mapping : Spec.node_t -> Spec.node_t -> ('c -> 'd -> unit) -> 'f ; mem_cod : Spec.node_t -> bool ; mem_dom : Spec.node_t -> bool.. > -> unit
val examine_moves : < iter_moves : ('a Edit.t -> unit) -> 'b.. > -> 'b
val fixup_edits : < conflicting_pairs_threshold : int ; conservative_flag : bool ; dump_delta_flag : bool ; group_relabels_flag : bool ; hard_tree_size_limit : int ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; match_algo_threshold : int ; moveid_generator : < gen : Edit.move_id.. > ; movrel_ratio_threshold : float ; movrel_stability_threshold : float ; multi_node_match_flag : bool ; no_glue_flag : bool ; no_moves_flag : bool ; no_movrels_flag : bool ; no_unnamed_node_move_flag : bool ; pp_anonymized_match_threshold : float ; pp_relabel_criteria : float ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; rename_rectification_level : int ; shrink_moves_flag : bool ; simple_glue_flag : bool ; split_hunk_flag : bool ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> < elaborate_edits : 'a option.. > -> (node_t, tree_t) Comparison.c -> tree_t -> tree_t -> 'b -> < add_edit : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit ; add_indivisible_move : Edit.move_id -> unit ; filter : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> bool) -> 'c ; find1 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 Edit.t list ; find12 : Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> Spec.node_t Edit.t list ; find2 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; has_initial_parent : bool ; initial_parent : Diffast_core.Node_mapping.Nodetbl.key ; initial_pos : int ; is_collapsed : bool ; uid : Diffast_core.Info.UID.t.. > Edit.t list ; find_del : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; find_ins : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; find_mid12 : Spec.node_t -> Spec.node_t -> Edit.move_id ; find_mov1 : Spec.node_t -> Spec.node_t Edit.t ; find_mov12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_t Edit.t ; find_mov2 : Diffast_core.Node_mapping.Nodetbl.key -> 'd ; find_rel12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t ; get_nmoves_of_move_id : Edit.move_id -> int ; get_nmoves_of_move_id_filt : (< data : < _label : Obj.t ; eq : < _label : Obj.t.. > as 'e -> bool.. >.. > -> < data : 'e.. > -> bool) -> Edit.move_id -> int ; is_crossing_with_untouched : ?full_scan:bool -> ?mask: (Diffast_core.Node_mapping.Nodetbl.key * Diffast_core.Node_mapping.Nodetbl.key) list -> ?incompatible_only:bool -> ?weak:bool -> Diffast_core.Node_mapping.Nodetbl.key Node_mapping.c -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; iter : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit) -> 'f ; iter_deletes : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit) -> 'g ; iter_deletes_and_inserts : ('h Edit.t -> unit) -> 'i ; iter_moves : (Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit) -> unit ; iter_moves_bottomup : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit) -> unit ; iter_moves_topdown : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit) -> unit ; iter_relabels : (Diffast_core.Node_mapping.Nodetbl.key Edit.t -> unit) -> 'j ; iter_topdown : (Node.Tbl.key Edit.t -> unit) -> 'k ; mem_del : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_ins : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov1 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov12 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov2 : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 -> bool ; mem_mov21 : Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> bool ; remove_edit : Spec.node_data_t Diffast_core.Delta_common.SB.Otree.node2 Edit.t -> unit ; shrink_moves : (node_t, tree_t) Comparison.c -> tree_t -> tree_t -> node_t Node_mapping.c -> (Edit.move_id, Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t) Hashtbl.t -> 'l -> unit ; shrink_moves_rp : (node_t, tree_t) Comparison.c -> tree_t -> tree_t -> node_t Node_mapping.c -> (Edit.move_id, Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t * Diffast_core.Spec.SB.Otree.GI.t) Hashtbl.t -> 'l.. > -> node_t Node_mapping.c -> node_t Node_mapping.c -> unit
OCaml

Innovation. Community. Security.