T R O T T ' S C O R N E R

# Hierarchical Menus versus *Mathematica* Patterns

How should a mathematical search be specified? On the one hand, we are all used to a Google-style search box that specifies words or phrases to occur or to not occur. But specifying a mathematical formula through text is not standardized. Too few people are fluent enough to specify MathML-based searches. In addition, many of the more complicated special functions are not immediately available in the MathML markup language. Similar remarks hold for -based searches. *Mathematica* patterns are a natural way to specify semantic mathematics programmatically. While the deployed search page allows specifying a *Mathematica* pattern, even this turns out not to be optimal. While in principle one could specify any formula present on the Wolfram Functions site in this way, in practice there are two main disadvantages.

1. *Mathematica* patterns are primarily used for representing structural content. While for many functions there is a canonical isomorphism between the structure (say Sin) and the mathematical meaning (the function sin), for more complicated expressions the two worlds are no longer isomorphic.

There are typically many structurally inequivalent ways to encode the same expression (Sqrt[x] versus Power[x, 1/2], Exp[x] versus E^x, or D versus Derivative). Putting the burden of specifying all mathematically equivalent expressions on the searcher is inconvenient.

2. Specifying that a certain expression should (or should not) appear on one side of an equation, asymptotic expansion, or inequality leads to relatively large patterns.

To make searching convenient (without assuming prior knowledge of any computer language), we decided to construct a pull-down menu-driven interface. It allows users to specify functions that occur (or do not), constants, numbers, and operations on equations, which can appear on the left-hand side, right-hand side, or both sides. Functions are grouped according to the scheme already in use on the site, such as Elementary Functions, Bessel and Airy Functions, and so on.

Presently the following operations can be specified. About half of these operations are currently not represented as built-in functions in *Mathematica*.

Differentiation Series expansion Indefinite integration Definite integration Summation Product Limit Continued fractions Singularities Branch cuts Branch points Analyticity boundary Discontinuity sets Ramification indices Wronskian Fourier transform Inverse Fourier transform Fourier cos transform Fourier sin transform Laplace transform Inverse Laplace transform Mellin transform Inverse Mellin transform Hilbert transform Hankel transform