## Searchers and Optimisers

Haskell commentary on the implementation of Tractable and Practicable Inducers/Searchers and Optimisers

The *searchers* and *optimisers* defined in the *practicable inducers* below are discussed in appendix â€˜Search and optimisationâ€™ P1139. *Searchers*, $\mathrm{searchers}(\mathcal{X})$, encapsulate partial or complete traversal of some search set by neighbourhood. There are two sub-types of *searcher*, (i) *tree searchers* and (ii) *list searchers*.
Both types have (i) some set $X \subset \mathcal{X}$ to search, (ii) an initial subset of the search set $R \subseteq X$, and (iii) a total neighbourhood function $N$ on the search set. *Tree searchers* have a total neighbourhood function having a domain equal to the search set and a range of subsets of the search set, $N \in X :\to \mathrm{P}(X)$. *List searchers* have a neighbourhood function having a domain equal to the powerset of the search set and a range of subsets of the search set, $P \in \mathrm{P}(X) :\to \mathrm{P}(X)$. Both types generate a searched set $\mathrm{elements}(Z) \subseteq X$ where $Z \in \mathrm{searchers}(X)$.

The set of *optimisers* is a subset of *searchers*, $\mathrm{optimisers}(\mathcal{X}) \subset \mathrm{searchers}(\mathcal{X})$, which constrain the application of the neighbourhood function, $N$, by post-applying an inclusion function $I \in \mathrm{P}(X) :\to \mathrm{P}(X)$.

The *maximisers* is a subset of the *optimisers*, $\mathrm{maximisers}(\mathcal{X}) \subset \mathrm{optimisers}(\mathcal{X} \times \mathbf{R})$, which constrain the search set to real-valued functions. Examples of *maximiser* inclusion functions are $I =\mathrm{max}$ and $I = \mathrm{top}(n)$.