package grenier
Module Binder_introducerSource
Source
type 'a graph = 'a Fastdom.graph = {memoize : 'b. ('a -> 'b) -> 'a -> 'b;(*Memoize a function on nodes
*)successors : 'b. ('b -> 'a -> 'b) -> 'b -> 'a -> 'b;(*Fold over successors of a node
*)
}Representation of a graph with nodes of type 'a
Rewrite a (possibly cyclic) directed graph by introducing let-binders at dominating nodes
Source
type ('term, 'var) binding_structure = {map_subterms : ('term -> 'term) -> 'term -> 'term;name_term : 'term -> 'var;var_term : 'var -> 'term;introduce_let : recursive:bool -> ('var * 'term) list -> 'term -> 'term;
}