sig
  val dfsearch :
    start:'->
    childgen:('-> 'a list) ->
    goaltest:('-> bool) ->
    combinator:('-> bool -> 'b option -> 'b option) -> 'b option
  val boundeddfsearch :
    start:'->
    childgen:('-> 'a list) ->
    goaltest:('-> bool) ->
    combinator:('-> bool -> 'b option -> 'b option) ->
    depth:int -> 'b option
  val iterativedfs :
    start:'->
    childgen:('-> 'a list) ->
    goaltest:('-> bool) ->
    combinator:('-> bool -> 'b option -> 'b option) -> 'b option
  val bfsearch :
    start:'->
    childgen:('-> 'a list) ->
    goaltest:('-> bool) ->
    combinator:('-> bool -> 'b option -> 'b option) -> 'b option
  val exhaustive_search :
    start:'->
    childgen:('-> 'a list) ->
    goaltest:('-> bool) ->
    combinator:('-> bool -> 'b option -> 'b option) -> 'b list
  val res_comb : '-> bool -> 'a option -> 'a option
  val path_comb : '-> bool -> 'a list option -> 'a list option
end