We often ask our students about languages like { w | na(w) = 2nb(w) } (CFL but not REG). Lets formally define languages that are like that.
A COUNTING DESCRIPTION is a boolean combination of linear equations and inequalities involving nσ(w). For example
(na(w) ≤ 2nb(w)+3) AND NOT( nc(w) = nb(w) ).
We denote a counting description by E. Let L(E) = { w : E(w) is true } A lang L is CD if there exists an E such that L=L(E). What to make of the class CD?
The following items came out of emails between myself and Eric Allender, Dave Barrington, and Neil Immerman.
- CD is contained in 1-way log space and in uniform TC0.
- CD is incomparable to REG since (1) from above we see there are langs in CD that are not REG, and (2) ba* is not in CD.
- CD intersect REG is in uniform AC0
- Parikh's Theorem yields a large class of CD's that produce context free languages.
- If E is a Boolean combination of threshold and mod statement, each about a single nσ(w), then L(E) is regular
- The following papers may help answer some of the questions one could ask: here and here.
- Given a counting description E, is L(E) regular?
- Given a counting description E, is L(E) context free?
- Do not allow negation.
- Do not allow intersection.
- Do not allow inequalities.
- Do not allow additive constants.
- Do not allow multiplicative constants.
- Only allow a bounded alphabet size.
- Allow other types of equations, for example n_a(w) = n_b(w)2.
- Allow other primitives such ast n_a(w) == n_b(w) mod 9.
- Have a non-uniform version of Counting Descriptions and bound the size of the formula as a function of n.
In problem 7 if you allow any poly then the problem is undecidable by the solution to Hilbert's tenth problem.