In formal language theory, weak equivalence of two grammars means they generate the same set of strings, i.e. that the formal language they generate is the same. In compiler theory, where only context-free grammars are considered, weak equivalence is distinguished from strong (or structural) equivalence, which additionally means that the two parse trees are reasonably similar in that the same semantic interpretation can be assigned to both.
Two grammar formalisims are weakly equivalent if they define the same set of string languages. This notion is an instance of weak equivalence in homotopy theory. Vijay-Shanker and Weir (1994) demonstrated that linear indexed grammars, combinatory categorial grammars, tree-adjoining grammars, and head grammars are weakly equivalent formalisms in that meaning.
On the other hand, if two grammars generate the same set of derivation trees (or more generally, the same set of abstract syntactic objects), then the two grammars are strongly equivalent. Chomsky (1963) introduces the notion of strong equivalence, and argues that only strong equivalence is relevant when comparing grammar formalisms. Kornai and Pullum (1990)Kornai, A. and Pullum, G. K. 1990. The X-bar Theory of Phrase Structure. Language, 66:24-50. and Miller (1994)Miller, Philip H. 1999. Strong Generative Capacity. CSLI publications. offer a refined notion of strong equivalence that allows for isomorphic relationships between the syntactic analyses given by different formalisms. Yoshinaga, Miyao, and Tsujii (2002) offers a proof that for any LTAG formalism, there is a strongly equivalent HPSG one.
Context-free grammar example
As an example, consider the following two context-free grammars,with the start symbol "<expression>" given in Backus-Naur form:
<expression> ::= <expression> "+" <expression> | <expression> "-" <expression> | <expression> "*" <expression> | <expression> "/" <expression> | "x" | "y" | "z" | "1" | "2" | "3" | "(" <expression> ")"
<expression> ::= <term> | <expression> "+" <term> | <expression> "-" <term> <term> ::= <factor> | <term> "*" <factor> | <term> "/" <factor> <factor> ::= "x" | "y" | "z" | "1" | "2" | "3" | "(" <expression> ")"
Both grammars generate the same set of strings, viz. the set of all arithmetical expressions that can be built from the variables "x", "y", "z", the constants "1", "2", "3", the operators "+", "-", "*", "/", and parentheses "(" and ")". However, a concrete syntax tree of the second grammar always reflects the usual order of operations, while a tree from the first grammar need not.
For the example string "1+2*3", the right part of the picture shows its unique parse tree with the second grammar;using the abbreviation "E", "T", and "F" for <expression>, <term>, and <factor>, respectively evaluating this tree in postfix order will yield the proper value, 7. In contrast, the left picture part shows one of the parse trees for that string with the first grammar; evaluating it in postfix order will yield 9.
Since the second grammar cannot generate a tree corresponding to the left picture part, while the first grammar can, both grammars are not strongly equivalent.
Generative capacity In linguistics, the weak generative capacity of a grammar is defined as the set of all strings generated by it,for context-free grammars: see Context-free grammar#Context-free language for a formal definition while a grammar's strong generative capacity refers to the set of "structural descriptions"for context-free grammars: concrete syntax trees generated by it. As a consequence, two grammars are considered weakly equivalent if their weak generative capacities coincide; similar for strong equivalence. The notion of generative capacity was introduced by Noam Chomsky in 1963.
Notes
References