`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:('a -> string) ->
?name:string -> (string -> string) -> 'a OASISExpr.choices -> 'a
val check : OASISExpr.flag list -> OASISExpr.t -> unit
val reduce : OASISExpr.t -> OASISExpr.t
val reduce_choices : 'a OASISExpr.choices -> 'a OASISExpr.choices
val if_then_else :
OASISExpr.t ->
'a OASISExpr.choices -> 'a OASISExpr.choices -> 'a OASISExpr.choices
val odn_of_choices :
('a -> OASISDataNotation.t) ->
'a OASISExpr.choices -> OASISDataNotation.t
val to_string : OASISExpr.t -> string
val string_of_choices : ('a -> string) -> 'a OASISExpr.choices -> string
end`