Module Analysis_and_optimization

module Dataflow_types : sig ... end
module Dataflow_utils : sig ... end
module Debug_data_generation : sig ... end
module Dependence_analysis : sig ... end

~~~~~ TODO ~~~~~ * The interfaces are currently messed up. I think part of the solution is to change the signature of reaching_definitions_mfp in Monotone_framework, which currently requires the full program but shouldn't need the full program. As it stands, stmt_map_dependency_graph does not include data dependencies at all, since it can't use reaching deps, and prog_dependency graph only builds the graph for log_prob, but the user isn't guaranteed to be using the same labeling scheme. * Currently, dependencies on global or uninitialized data are written as depending on node '0'. This should probably be option or some type that indicates global dependence. * Indexed variables are currently handled as monoliths * No probabilistic dependency, I'll do that elsewhere *

module Factor_graph : sig ... end
module Memory_patterns : sig ... end
module Mir_utils : sig ... end
module Monotone_framework : sig ... end

The common elements of a monotone framework

module Monotone_framework_sigs : sig ... end
module Optimize : sig ... end
module Partial_evaluator : sig ... end
module Pedantic_analysis : sig ... end
module Pedantic_dist_warnings : sig ... end