sig
type bop = Plus | Minus | Times | Div
type expr =
Int of Location.t * int
| Var of Location.t * Name.t
| Binop of Location.t * Ast.bop * Ast.expr * Ast.expr
| Rand of Location.t * int * int
type stm =
Asn of Location.t * Name.t * Ast.expr
| Seq of Location.t * Ast.stm * Ast.stm
| Ite of Location.t * Ast.expr * Ast.stm * Ast.stm
| While of Location.t * Ast.expr * Ast.stm
val loc_of_expr : Ast.expr -> Location.t
val loc_of_stm : Ast.stm -> Location.t
val neg_guard : Ast.expr -> Ast.expr
val vars_of_stm : Ast.stm -> Name.Set.t
val char_of_bop : Ast.bop -> char
val fprint_expr : Format.formatter -> Ast.expr -> unit
val fprint_stm : Format.formatter -> Ast.stm -> unit
end