Module Analysis_and_optimization.Partial_evaluator

exception Rejected of Middle.Location_span.t * string
val is_int : int -> 'a Middle.Expr.t -> bool
val apply_prefix_operator_int : string -> int -> 'a Middle.Expr.Pattern.t
val apply_prefix_operator_real : string -> float -> 'a Middle.Expr.Pattern.t
val apply_operator_int : string -> int -> int -> 'a Middle.Expr.Pattern.t
val apply_arithmetic_operator_real : string -> float -> float -> 'a Middle.Expr.Pattern.t
val apply_logical_operator_real : string -> 'a -> 'a -> 'b Middle.Expr.Pattern.t
val stan_math_return_type : string -> Middle.Expr.Typed.t list -> Middle.UnsizedType.returntype option
val is_multi_index : 'a Middle.Index.t -> bool
val eval_expr : ?preserve_stability:??? -> Middle.Expr.Typed.t -> Middle.Expr.Typed.t
val try_eval_expr : ?preserve_stability:??? -> Middle.Expr.Typed.t -> Middle.Expr.Typed.t
val remove_trailing_alls_expr : 'a Middle.Expr.Pattern.t -> 'a Middle.Expr.Pattern.t
type declsize_info = {
  1. known_sizes : Middle.Expr.Typed.t option Std.Array.t Std.String.Map.t;
  2. deps : (string * int) list Std.String.Map.t;
}
val empty_sizes : declsize_info
val copy_context : declsize_info -> declsize_info
val add_known_size : declsize_info -> string -> Middle.Expr.Typed.t list -> declsize_info
val erase_lval : declsize_info -> ('a Middle__Stmt.Pattern.lbase * 'a Middle.Index.t list) -> declsize_info
val erase_stmt : declsize_info -> ('a, 'b) Middle.Stmt.t -> declsize_info