# 2 Invoking the Explorer

The Explorer is provided as an object `Explorer.object`. The Explorer can be applied to a script as follows.

`script`

  > > `{Explorer.object script(``+ScriptP``)}`

  > > `{Explorer.object script(``+ScriptP``` `+OrderP``)}`

  Initializes the Explorer with the script ScriptP (a unary procedure). If the binary procedure OrderP is given, the Explorer runs this script in branch and bound mode.

`one`

  > > `{Explorer.object one(``+ScriptP``)}`

  > > `{Explorer.object one(``+ScriptP``` `+OrderP``)}`

  Initializes the Explorer with the script ScriptP (a unary procedure) and starts exploration of the search tree up to the first solution. If the binary procedure OrderP is given, the Explorer runs this script in branch and bound mode.

`all`

  > > `{Explorer.object all(``+ScriptP``)}`

  > > `{Explorer.object all(``+ScriptP``` `+OrderP``)}`

  Initializes the Explorer with the script ScriptP (a unary procedure) and starts exploration of the entire search tree. If the binary procedure OrderP is given, the Explorer runs this script in branch and bound mode.

The following procedures are provided for convenience.

`one`

  > > `{Explorer.one` `+ScriptP``}`

  Initializes the Explorer with the script ScriptP (a unary procedure) and starts exploration of the search tree up to the first solution.

`all`

  > > `{Explorer.all` `+ScriptP``}`

  Initializes the Explorer with the script ScriptP (a unary procedure) and starts exploration of the entire search tree.

`best`

  > > `{Explorer.best` `+ScriptP``` `+OrderP``}`

  Initializes the Explorer with the script ScriptP (a unary procedure) and starts exploration of the entire search tree following a branch and bound strategy. Best solution is performed with respect to OrderP (a binary procedure).