Module Projection

type project_closure = {
  1. set_of_closures : Variable.t;
  2. closure_id : Closure_id.t;
}
type move_within_set_of_closures = {
  1. closure : Variable.t;
  2. start_from : Closure_id.t;
  3. move_to : Closure_id.t;
}
type project_var = {
  1. closure : Variable.t;
  2. closure_id : Closure_id.t;
  3. var : Var_within_closure.t;
}
val print_project_closure : Format.formatter -> project_closure -> unit
val print_move_within_set_of_closures : Format.formatter -> move_within_set_of_closures -> unit
val print_project_var : Format.formatter -> project_var -> unit
val compare_project_var : project_var -> project_var -> int
val compare_project_closure : project_closure -> project_closure -> int
val compare_move_within_set_of_closures : move_within_set_of_closures -> move_within_set_of_closures -> int
type t =
  1. | Project_var of project_var
  2. | Project_closure of project_closure
  3. | Move_within_set_of_closures of move_within_set_of_closures
  4. | Field of int * Variable.t
module T : sig ... end
val equal : T.t -> T.t -> bool
val hash : T.t -> int
val compare : T.t -> T.t -> int
val output : out_channel -> T.t -> unit
val print : Format.formatter -> T.t -> unit
module Set : sig ... end
module Map : sig ... end
module Tbl : sig ... end
val projecting_from : t -> Variable.t
val map_projecting_from : t -> f:(Variable.t -> Variable.t) -> t