Definition

Fooling Set ^definition

Let be a language. Then a set of formulae, , is a fooling set for iff:

Warning does not need to be in !!!

Strategies For Constructing Fooling Sets

  1. Construct fooling set using prefixes of strings in .

  2. To construct ​, consider strings for which it seems a counter that can count up to at least is needed to distinguish between them.

  3. Often, it is possible to construct a fooling set​ such that for every string , there is a string such that distinguishes from the other strings in​ , i.e. either is in but is not in for every other in ​, or vice versa.

Theorem

T1: The fooling set for a language is a lower bound for the states of a DFA that recognises that language ^t1

Let be a language, and let be a fooling set for of size (i.e. ). Then:

C1: If the fooling set for a language is infinite, then the language is non-regular ^c1

This follows from the previous theorem. Let be a language and be a fooling set for . Then:

  • Another way of saying that is infinite is saying that for every natural number , there is a fooling set of size . Mathematically, this is:

  • Equivalently, has no finite state automaton that recognises it.

C2: Myhill–Nerode Theorem ^c2

This is simply the contrapositive of the previous corollary. If a language is regular, then it must have a fooling set of finite length. Let be a language, and be a fooling set for . Then:

Examples

1: Simple Fooling Set

Construct a fooling set of size 3 for the given language below:

2: Fooling Set for a non-regular language ^e2

Find the infinite fooling set for the language below:

#todo example for fooling set for language of palindromes.