sig
  val iter : (Lang.F.term -> unit) -> Lang.F.term -> unit
  val once : (Lang.F.term -> unit) -> Lang.F.term -> unit
  val head : Lang.F.term -> string
  val pattern : Lang.F.term -> string
  val matches : string -> Lang.F.term -> bool
  type occurrence = int * string
  val locate :
    select:Lang.F.term -> inside:Lang.F.term -> Footprint.occurrence
  val lookup :
    occur:Footprint.occurrence -> inside:Lang.F.term -> Lang.F.term
end