sig   type test   val tests : OASISExpr.test list   val string_of_test : OASISExpr.test -> string   val test_of_string : string -> OASISExpr.test   type flag = string   type t =       EBool of bool     | ENot of OASISExpr.t     | EAnd of OASISExpr.t * OASISExpr.t     | EOr of OASISExpr.t * OASISExpr.t     | EFlag of OASISExpr.flag     | ETest of OASISExpr.test * string   type 'a choices = (OASISExpr.t * 'a) list   val eval : (string -> string) -> OASISExpr.t -> bool   val choose :     ?printer:('-> string) ->     ?name:string -> (string -> string) -> 'OASISExpr.choices -> 'a   val check : OASISExpr.flag list -> OASISExpr.t -> unit   val reduce : OASISExpr.t -> OASISExpr.t   val reduce_choices : (OASISExpr.t * 'a) list -> (OASISExpr.t * 'a) list   val if_then_else :     OASISExpr.t ->     (OASISExpr.t * 'a) list ->     (OASISExpr.t * 'a) list -> (OASISExpr.t * 'a) list   val odn_of_t : OASISExpr.t -> ODN.t   val odn_of_choices : ('-> ODN.t) -> 'OASISExpr.choices -> ODN.t   val to_string : OASISExpr.t -> string   val string_of_choices : ('-> string) -> 'OASISExpr.choices -> string end