sig
  class type composer =
    object
      method descr : string
      method get_value : Tactical.selection
      method is_valid : Tactical.selection -> bool
      method ranged : bool
      method set_value : Tactical.selection -> unit
      method target : Tactical.selection
      method title : string
    end
  class type browser =
    object
      method choose : string option -> unit
      method descr : string
      method search : (unit Tactical.named -> unit) -> int -> bool
      method target : Tactical.selection
      method title : string
    end
  class tactic :
    Tactical.t ->
    (Stdlib.Format.formatter -> Tactical.selection -> unit) ->
    object
      method clear : unit
      method clear_action : unit
      method coerce : GObj.widget
      method get_title : string
      method has_action : bool
      method has_error : bool
      method interactive : bool
      method is_active : bool
      method on_active : (bool -> unit) -> unit
      method pool : Lang.F.pool
      method select :
        process:(Tactical.tactical ->
                 Tactical.selection -> Tactical.process -> unit) ->
        browser:(GuiTactic.browser -> unit) ->
        composer:(GuiTactic.composer -> unit) ->
        tree:ProofEngine.tree -> Tactical.selection -> unit
      method set_action :
        ?icon:Widget.icon ->
        ?tooltip:string -> ?callback:(unit -> unit) -> unit -> unit
      method set_active : bool -> unit
      method set_content : Widget.widget -> unit
      method set_descr : 'Tactical.formatter
      method set_enabled : bool -> unit
      method set_error : 'Tactical.formatter
      method set_label : string -> unit
      method set_status : Widget.icon -> unit
      method set_title : 'Tactical.formatter
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method targeted : bool
      method tool : Wpalette.tool
      method update_field :
        ?enabled:bool ->
        ?title:string ->
        ?tooltip:string ->
        ?range:bool ->
        ?vmin:int ->
        ?vmax:int ->
        ?filter:(Lang.F.term -> bool) -> 'Tactical.field -> unit
      method widget : Widget.widget
    end
  type callback = depth:int -> width:int -> Strategy.heuristic list -> unit
  class strategies :
    unit ->
    object
      method clear_action : unit
      method coerce : GObj.widget
      method connect : GuiTactic.callback option -> unit
      method has_action : bool
      method is_active : bool
      method on_active : (bool -> unit) -> unit
      method register : Strategy.heuristic -> unit
      method set_action :
        ?icon:Widget.icon ->
        ?tooltip:string -> ?callback:(unit -> unit) -> unit -> unit
      method set_active : bool -> unit
      method set_content : Widget.widget -> unit
      method set_enabled : bool -> unit
      method set_label : string -> unit
      method set_status : Widget.icon -> unit
      method set_tooltip : string -> unit
      method set_visible : bool -> unit
      method tool : Wpalette.tool
      method widget : Widget.widget
    end
end