This file contains the formalisation of exercise 2.3 c and d which deals with simulations between NFAs. The exercise sheet is available at https://iccl.inf.tu-dresden.de/w/images/2/28/FS2025-Blatt-02.pdf.
How about the other direction - does language inclusion also imply a simulation between the NFAs recognising the languages? We can show that this is not true by giving a counterexample. In order to define NFAs we first need Fintypes for Q and Sigma. We cannot just use strings because there are infinitely many of those. Instead we use a subtype of String defined by a list of strings (statesList and sigma).
Instances For
Equations
- instFintypeQ = { elems := statesList.attach, complete := ⋯ }
Equations
- instDecidableEqQ a b = a.instDecidableEq b
Equations
- instFintype⅀ = { elems := instFintype⅀._aux_1, complete := instFintype⅀._proof_3 }
Equations
For our counterexample we will use 𝓜 and its powerset DFA 𝓜'. Their languages are equal but there is not simulation between 𝓜 and 𝓜'. Simulations are defined for NFAs so we convert 𝓜' back into an NFA 𝓜''.