Literal movement grammar

In linguistics and theoretical computer science, literal movement grammars (LMGs) are a grammar formalism intended to characterize certain extraposition phenomena of natural language such as topicalization and cross-serial dependency. LMGs extend the class of context free grammars (CFGs) by adding introducing pattern-matched function-like rewrite semantics, as well as the operations of variable binding and slash deletion. LMGs were introduced by A.V. Groenink in 1995.

Description
The basic rewrite operation of an LMG is very similar to that of a CFG, with the addition of arguments to the non-terminal symbols. Where a context-free rewrite rule obeys the general schema $$S \to \alpha$$ for some non-terminal $$S$$ and some string of terminals and/or non-terminals $$\alpha$$, an LMG rewrite rule obeys the general schema $$X(x_1, ..., x_n) \to \alpha$$, where X is a non-terminal with arity n (called a predicate in LMG terminology), and $$\alpha$$ is a string of "items", as defined below. The arguments $$x_i$$ are strings of terminal symbols and/or variable symbols defining an argument pattern. In the case where an argument pattern has multiple adjacent variable symbols, the argument pattern will match any and all partitions of the actual value that unify. Thus, if the predicate is $$f(xy)$$ and the actual pattern is $$f(ab)$$, there are three valid matches: $$x = \epsilon,\ y = ab;\ x = a,\ y = b;\ x = ab,\ y = \epsilon$$. In this way, a single rule is actually a family of alternatives.

An "item" in a literal movement grammar is one of


 * $$f(x_1, \ldots, x_n)$$, a predicate of arity n,
 * $$x \text{:}f(x_1, \ldots, x_n)$$, a variable binding x to the string produced by $$f(x_1, ..., x_n)$$, or
 * $$f(x_1, \ldots, x_n)/\alpha$$, a slash deletion of $$f(x_1, ..., x_n)$$ by the string of terminals and/or variables $$\alpha$$.

In a rule like $$f(x_1, ..., x_m) \to \alpha\ y \text{:} g(z_1, ... z_n)\ \beta$$, the variable y is bound to whatever terminal string the g predicate produces, and in $$\alpha$$ and $$\beta$$, all occurrences of y are replaced by that string, and $$\alpha$$ and $$\beta$$ are produced as if terminal string had always been there.

An item $$x/y$$, where x is something that produces a terminal string (either a terminal string itself or some predicate), and y is a string of terminals and/or variables, is rewritten as the empty string ($$\epsilon$$) if and only if $$g(y_1, ..., y_n) = z$$, and otherwise cannot be rewritten at all.

Example
LMGs can characterize the non-CF language $$\{ a^n b^n c^n : n \geq 1 \}$$ as follows:


 * $$S \to x\text{:}A\ B(x)$$
 * $$A \to a\ A$$
 * $$A \to \epsilon$$
 * $$B(xy) \to a/x\ b\ B(y) c$$
 * $$B(\epsilon) \to \epsilon$$

The derivation for aabbcc, using parentheses also for grouping, is therefore

$$S \to x\text{:}A\ B(x) \to x\text{:}(a\ A)\ B(x) \to x\text{:}(aa\ A)\ B(x) \to x\text{:}aa\ B(x) \to aa\ B(aa)$$
 * $$\to aa\ a/a\ b\ B(a)\ c \to aab\ B(a)\ c \to aab\ a/a\ b\ B\ cc \to aabb\ B\ cc\ \to aabbcc$$

Computational power
Languages generated by LMGs contain the context-free languages as a proper subset, as every CFG is an LMG where all predicates have arity 0 and no production rule contains variable bindings or slash deletions.