Context-sensitive language

From HandWiki

In formal language theory, a context-sensitive language is a language that can be defined by a context-sensitive grammar (and equivalently by a noncontracting grammar). Context-sensitive is one of the four types of grammars in the Chomsky hierarchy.

Computational properties

Computationally, a context-sensitive language is equivalent to a linear bounded nondeterministic Turing machine, also called a linear bounded automaton. That is a non-deterministic Turing machine with a tape of only [math]\displaystyle{ kn }[/math] cells, where [math]\displaystyle{ n }[/math] is the size of the input and [math]\displaystyle{ k }[/math] is a constant associated with the machine. This means that every formal language that can be decided by such a machine is a context-sensitive language, and every context-sensitive language can be decided by such a machine.

This set of languages is also known as NLINSPACE or NSPACE(O(n)), because they can be accepted using linear space on a non-deterministic Turing machine.[1] The class LINSPACE (or DSPACE(O(n))) is defined the same, except using a deterministic Turing machine. Clearly LINSPACE is a subset of NLINSPACE, but it is not known whether LINSPACE = NLINSPACE.[2]

Examples

One of the simplest context-sensitive but not context-free languages is [math]\displaystyle{ L = \{ a^nb^nc^n : n \ge 1 \} }[/math]: the language of all strings consisting of n occurrences of the symbol "a", then n "b"s, then n "c"s (abc, aabbcc, aaabbbccc, etc.). A superset of this language, called the Bach language,[3] is defined as the set of all strings where "a", "b" and "c" (or any other set of three symbols) occurs equally often (aabccb, baabcaccb, etc.) and is also context-sensitive.[4][5]

L can be shown to be a context-sensitive language by constructing a linear bounded automaton which accepts L. The language can easily be shown to be neither regular nor context-free by applying the respective pumping lemmas for each of the language classes to L.

Similarly:

[math]\displaystyle{ L_\textit{Cross} = \{ a^mb^nc^{m}d^{n} : m \ge 1, n \ge 1 \} }[/math] is another context-sensitive language; the corresponding context-sensitive grammar can be easily projected starting with two context-free grammars generating sentential forms in the formats [math]\displaystyle{ a^mC^m }[/math] and [math]\displaystyle{ B^nd^n }[/math] and then supplementing them with a permutation production like [math]\displaystyle{ CB\rightarrow BC }[/math], a new starting symbol and standard syntactic sugar.

[math]\displaystyle{ L_{MUL3} = \{ a^mb^nc^{mn} : m \ge 1, n \ge 1 \} }[/math] is another context-sensitive language (the "3" in the name of this language is intended to mean a ternary alphabet); that is, the "product" operation defines a context-sensitive language (but the "sum" defines only a context-free language as the grammar [math]\displaystyle{ S\rightarrow aSc|R }[/math] and [math]\displaystyle{ R\rightarrow bRc|bc }[/math] shows). Because of the commutative property of the product, the most intuitive grammar for [math]\displaystyle{ L_\textit{MUL3} }[/math] is ambiguous. This problem can be avoided considering a somehow more restrictive definition of the language, e.g. [math]\displaystyle{ L_\textit{ORDMUL3} = \{ a^mb^nc^{mn} : 1 \lt m \lt n \} }[/math]. This can be specialized to [math]\displaystyle{ L_\textit{MUL1} = \{ a^{mn} : m \gt 1, n \gt 1 \} }[/math] and, from this, to [math]\displaystyle{ L_{m^2} = \{ a^{m^2} : m \gt 1 \} }[/math], [math]\displaystyle{ L_{m^3} = \{ a^{m^3} : m \gt 1 \} }[/math], etc.

[math]\displaystyle{ L_{REP} = \{ w^{|w|} : w \in \Sigma^* \} }[/math] is a context-sensitive language. The corresponding context-sensitive grammar can be obtained as a generalization of the context-sensitive grammars for [math]\displaystyle{ L_\textit{Square} = \{ w^2 : w \in \Sigma^* \} }[/math], [math]\displaystyle{ L_\textit{Cube} = \{ w^3 : w \in \Sigma^* \} }[/math], etc.

[math]\displaystyle{ L_\textit{EXP} = \{ a^{2^n} : n \ge 1 \} }[/math] is a context-sensitive language.[6]

[math]\displaystyle{ L_\textit{PRIMES2} = \{ w : |w| \mbox { is prime } \} }[/math] is a context-sensitive language (the "2" in the name of this language is intended to mean a binary alphabet). This was proved by Hartmanis using pumping lemmas for regular and context-free languages over a binary alphabet and, after that, sketching a linear bounded multitape automaton accepting [math]\displaystyle{ L_{PRIMES2} }[/math].[7]

[math]\displaystyle{ L_\textit{PRIMES1} = \{ a^p : p \mbox { is prime } \} }[/math] is a context-sensitive language (the "1" in the name of this language is intended to mean an unary alphabet). This was credited by A. Salomaa to Matti Soittola by means of a linear bounded automaton over an unary alphabet[8] (pages 213-214, exercise 6.8) and also to Marti Penttonen by means of a context-sensitive grammar also over an unary alphabet (See: Formal Languages by A. Salomaa, page 14, Example 2.5).

An example of recursive language that is not context-sensitive is any recursive language whose decision is an EXPSPACE-hard problem, say, the set of pairs of equivalent regular expressions with exponentiation.

Properties of context-sensitive languages

  • The union, intersection, concatenation of two context-sensitive languages is context-sensitive, also the Kleene plus of a context-sensitive language is context-sensitive.[9]
  • The complement of a context-sensitive language is itself context-sensitive[10] a result known as the Immerman–Szelepcsényi theorem.
  • Membership of a string in a language defined by an arbitrary context-sensitive grammar, or by an arbitrary deterministic context-sensitive grammar, is a PSPACE-complete problem.

See also

References

  1. Rothe, Jörg (2005), Complexity theory and cryptology, Texts in Theoretical Computer Science. An EATCS Series, Berlin: Springer-Verlag, p. 77, ISBN 978-3-540-22147-0 .
  2. Odifreddi, P. G. (1999), Classical recursion theory. Vol. II, Studies in Logic and the Foundations of Mathematics, 143, Amsterdam: North-Holland Publishing Co., p. 236, ISBN 978-0-444-50205-6 .
  3. Pullum, Geoffrey K. (1983). "Context-freeness and the computer processing of human languages". Proc. 21st Annual Meeting of the ACL. http://www.aclweb.org/anthology/P83-1001. 
  4. Bach, E. (1981). "Discontinuous constituents in generalized categorial grammars" . NELS, vol. 11, pp. 1–12.
  5. Joshi, A.; Vijay-Shanker, K.; and Weir, D. (1991). "The convergence of mildly context-sensitive grammar formalisms". In: Sells, P., Shieber, S.M. and Wasow, T. (Editors). Foundational Issues in Natural Language Processing. Cambridge MA: Bradford.
  6. Example 9.5 (p. 224) of Hopcroft, John E.; Ullman, Jeffrey D. (1979). Introduction to Automata Theory, Languages, and Computation. Addison-Wesley
  7. J. Hartmanis and H. Shank (Jul 1968). "On the Recognition of Primes by Automata". Journal of the ACM 15 (3): 382–389. doi:10.1145/321466.321470. https://ecommons.cornell.edu/bitstream/1813/5864/1/68-1.pdf. 
  8. Salomaa, Arto (1969), Theory of Automata, ISBN:978-0-08-013376-8, Pergamon, 276 pages. doi:10.1016/C2013-0-02221-9
  9. John E. Hopcroft; Jeffrey D. Ullman (1979). Introduction to Automata Theory, Languages, and Computation. Addison-Wesley. ISBN 9780201029888. https://archive.org/details/introductiontoau00hopc. ; Exercise 9.10, p.230. In the 2000 edition, the chapter on context-sensitive languages has been omitted.
  10. Immerman, Neil (1988). "Nondeterministic space is closed under complementation". SIAM J. Comput. 17 (5): 935–938. doi:10.1137/0217058. http://www.cs.umass.edu/~immerman/pub/space.pdf. 
  • Sipser, M. (1996), Introduction to the Theory of Computation, PWS Publishing Co.