Różnica języków regularnych
Kapitoly: Domkniętość języków regularnych, Suma, Przecięcie, Różnica, Dopełnienie, Konkatenacja, Domknięcie Kleene’ego
Weźmy dwa języki regularne L1, L2. Udowodnimy, że ich różnica L = L1 ∖ L2 też jest językiem regularnym.
Idea
Właściwie nie ma tu wiele do udowadniania. Dla różnicy dwóch zbiorów zachodzi bowiem taka zależność:
$$ L_1 \setminus L_2 = L_1 \cap L_2^\prime, $$
gdzie $L_2^\prime$ jest dopełnieniem języka L2. Z rozdziałów o przecięciu języków regularnych i o dopełnieniu języka regularnego wiemy, że języki regularne są domknięte ze względu na obie te operacje. Oznacza to, że potrafimy zbudować automat, który akceptuje przecięcie języków, i automat, który akceptuje dopełnienie języka. Te automaty możemy więc wykorzystać do zbudowania automatu, który będzie akceptował język $L_1 \cap L_2^\prime$, a to jest przecież jednocześnie język L1 ∖ L2.
Przykład
Weźmy taki automat A1, który akceptuje wszystkie słowa zawierające parzystą liczbę jedynek:
i automat A2, który akceptuje słowa zawierające nieparzystą liczbę zer:
Zbudujemy automat, który będzie akceptował różnicę tych języków. Potrzebujemy więc automatu $A_2^\prime$, który będzie akceptował dopełnienie języka automatu A2. Wystarczy zamienić stany akceptujące i nieakceptujące:
Teraz już tylko zbudujemy automat A, który będzie akceptował przecięcie języków L(A1) i $L(A_2^\prime)$: