Middle.ProgramDefines the core of the MIR
type fun_arg_decl = (UnsizedType.autodifftype * string * UnsizedType.t) listval fun_arg_decl_of_sexp : Sexplib0.Sexp.t -> fun_arg_declval sexp_of_fun_arg_decl : fun_arg_decl -> Sexplib0.Sexp.tval hash_fold_fun_arg_decl :
Ppx_hash_lib.Std.Hash.state ->
fun_arg_decl ->
Ppx_hash_lib.Std.Hash.stateval hash_fun_arg_decl : fun_arg_decl -> Ppx_hash_lib.Std.Hash.hash_valuetype 'a fun_def = {fdrt : UnsizedType.returntype;fdname : string;fdsuffix : unit Fun_kind.suffix;fdargs : (UnsizedType.autodifftype * string * UnsizedType.t) list;fdbody : 'a option;fdloc : Location_span.t;}val fold_fun_def : ('a -> 'b -> 'a) -> 'a -> 'b fun_def -> 'aval hash_fold_fun_def :
'a. (Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'a fun_def ->
Ppx_hash_lib.Std.Hash.stateval fun_def_of_sexp :
'a. (Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a fun_defval sexp_of_fun_def :
'a. ('a -> Sexplib0.Sexp.t) ->
'a fun_def ->
Sexplib0.Sexp.tval io_block_of_sexp : Sexplib0.Sexp.t -> io_blockval sexp_of_io_block : io_block -> Sexplib0.Sexp.tval hash_fold_io_block :
Ppx_hash_lib.Std.Hash.state ->
io_block ->
Ppx_hash_lib.Std.Hash.stateval hash_io_block : io_block -> Ppx_hash_lib.Std.Hash.hash_valuetype 'e outvar = {out_unconstrained_st : 'e SizedType.t;out_constrained_st : 'e SizedType.t;out_block : io_block;out_trans : 'e Transformation.t;}val fold_outvar : ('a -> 'b -> 'a) -> 'a -> 'b outvar -> 'aval outvar_of_sexp :
'e. (Sexplib0.Sexp.t -> 'e) ->
Sexplib0.Sexp.t ->
'e outvarval sexp_of_outvar :
'e. ('e -> Sexplib0.Sexp.t) ->
'e outvar ->
Sexplib0.Sexp.tval hash_fold_outvar :
'e. (Ppx_hash_lib.Std.Hash.state -> 'e -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'e outvar ->
Ppx_hash_lib.Std.Hash.statetype ('a, 'b, 'm) t = {functions_block : 'b fun_def list;input_vars : (string * 'm * 'a SizedType.t) list;prepare_data : 'b list;log_prob : 'b list;reverse_mode_log_prob : 'b list;generate_quantities : 'b list;transform_inits : 'b list;unconstrain_array : 'b list;output_vars : (string * 'm * 'a outvar) list;prog_name : string;prog_path : string;}val fold :
('a -> 'b -> 'a) ->
('a -> 'c -> 'a) ->
('a -> 'd -> 'a) ->
'a ->
('b, 'c, 'd) t ->
'aval t_of_sexp :
'a 'b 'm. (Sexplib0.Sexp.t -> 'a) ->
(Sexplib0.Sexp.t -> 'b) ->
(Sexplib0.Sexp.t -> 'm) ->
Sexplib0.Sexp.t ->
('a, 'b, 'm) tval sexp_of_t :
'a 'b 'm. ('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
('m -> Sexplib0.Sexp.t) ->
('a, 'b, 'm) t ->
Sexplib0.Sexp.tval pp_fun_arg_decl :
Stdlib.Format.formatter ->
(UnsizedType.autodifftype * string * UnsizedType.t) ->
unitval pp_fun_def :
(Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter ->
'a fun_def ->
unitval pp_io_block : Stdlib.Format.formatter -> io_block -> unitval pp_output_var :
'a Fmt.t ->
Stdlib.Format.formatter ->
(string * 'b * 'a outvar) ->
unitval pp_input_var :
'a Fmt.t ->
Stdlib.Format.formatter ->
(string * 'b * 'a SizedType.t) ->
unitval pp_input_vars :
'a Fmt.t ->
Stdlib.Format.formatter ->
(string * 'b * 'a SizedType.t) list ->
unitval pp_output_vars :
'a Fmt.t ->
Stdlib.Format.formatter ->
(string * 'b * 'a outvar) list ->
unitval pp :
'a Fmt.t ->
'b Fmt.t ->
Stdlib.Format.formatter ->
('a, 'b, 'c) t ->
unitmodule Typed : sig ... endPrograms with typed expressions and locations
module Numbered : sig ... end